anchor和anchor free方法---關於目標(類別)分類、坐標框回歸、置信度處理方法的差異


anchor方法:

    代替滑窗方法取到目標周圍可能的目標框

    通過將真實標注、認為正確的坐標框與預測的結果進行對比、計算損失,損失包括目標類別、目標框位置、特征圖相應位置是否有目標,通過將三者的損失進行加權求和反向傳播,反向傳播求出每一層權重對形成這些誤差的貢獻(偏導),並進行權重糾正。

    在訓練時的損失計算:

    目標類別損失,如果訓練圖像中有target,則找到target的類別,特征圖中找到對應圖像索引、對應網格位置的信息,如該網格處對應的類別信息,將網格對應的類別信息與target類別信息進行交叉熵計算求得損失(變換target中的類別格式,使與prediction的類別格式相同,除了正樣本的,其余都應該標志為負樣本)。

 

 

 目標框坐標回歸損失,如果訓練圖像中有target,則找到target的類別,特征圖中找到對應圖像索引、對應網格位置的信息,把網格坐標進行回歸(激活函數和anchor處理)與target坐標框計算iou,(1-iou)作為目標框回歸損失。

    特征圖相應位置是否有目標損失,已知模型輸出的特征圖尺寸,將target初始化為特征圖obiness尺寸,然后根據真實target的目標所在img_index, anchor,網格位置,將重新賦值的target的位置賦值為與預測框相應的iou值,其余值為0,與預測結果的objness計算交叉熵損失。

 

objness存在的意義是為了區別正樣本和負樣本兩種大類,增加模型的泛化能力,不因修改了背景就誤檢。

clsness是為了區別具體的正樣本的眾多類別

boxness是為了更新權重、使坐標回歸

以上以yolov5為例

 

anchor free 方法:

    模型輸出特征圖與原圖尺寸相差倍數較小,通過特征圖映射原圖,特征圖上的每個點位置視為目標中心點,每個點的值用於判斷是否有目標,特征圖所在通道決定目標所屬類別。另起額外的分支用來判斷目標中心的偏移量和寬高。

    以centernet為例,圖像從backbone出來后,經過三個分支class(64->80),wh(64->2),xy(64->2),需要計算類別損失、目標框寬高損失、目標點中心坐標偏移量損失。

    損失計算:

    目標類別損失,centernet將原圖中target bbox的中點映射到heatmap中的某一高斯核區域內,高斯核中心位置,賦值為1,次中心位置賦值依次遞減,然后利用focal loss(按照類別,即通道)計算損失

 

 

 其中為網絡輸出的heatmap,為ground_truth信息

    目標寬高損失,將target bbox的寬高信息按照該映射關系,等同地映射到Height&Width特征圖中,利用L1Loss計算損失

 

 目標點中心坐標偏移量損失,類別損失的特征圖代表中心點坐標,通過計算偏移量損失准確目標中心點位置。將target bbox的偏移信息等同地映射到Offset特征圖中,利用L1Loss計算損失

 

 

 

總結:

    anchor和anchor free方法,候選目標框的選取和設定、類別判斷方法不同,使最后使用的損失函數不同,從而達到最后功能完善。

 

anchor free方法中截取的圖像參考網址:

https://zhuanlan.zhihu.com/p/187577938


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM