損失函數
- coordinate loss
- class predictions loss
使用多標籤分類損失。(使用 binary cross-entropy loss) - objectness loss
默認框和真實目標的匹配策略
- 與真實目標重疊度最大的默認框爲正樣本。
- 與真實目標重疊度大於閾值的默認框爲正樣本。(Faster RCNN中閾值爲0.7,YOLO-V3閾值爲0.5)。
- 每一個真實目標只會指定與一個默認框匹配,其餘的框只會有objectness loss(即是否存在物體的損失)
多尺度預測
- 在三種不同的尺度上進行預測。
評價指標
- 使用MAP0.5時,yolov3和其他方法差異不大。按照COCO那樣的標準,明顯的差異就出來了。作者認爲從肉眼觀察角度上講,0.5和0.3的重疊差異不大,反對COCO那種評價標準。
嘗試了其他策略,發現沒效果
- 採取普通的錨框預測機制,預測錨框相對於真實框中心位置的偏移量(以真實框的w和h,預測值爲w和h值的倍數),採取線性激活的方式。
w = prediction[..., 2]
,預測的pred_w和pred_h,w和h的倍數,不過是取了對數後的。pred_boxes[..., 2] = torch.exp(w.data) * anchor_w pred_boxes[..., 3] = torch.exp(h.data) * anchor_h
- 採取線性激活的方式來預測x,y的偏移量,而不是邏輯迴歸激活函數。
- Focal loss沒效果,yolov3將目標存在得分預測和類別預測分開了。(正負樣本失衡會得到減輕)。
- 同Faster RCNN一樣,採取兩個閾值。
作者對COCO數據的認識
- MAP指標不恰當。PASCAL VOC數據將閾值設爲0.5,這也是爲了適應實際標註過程中存在不確定性這一情況。
2.COCO數據更精確,還有語義分割的標籤。COCO的評價指標更強調框的準確性,降低了對分類準確性的重視。但作者認爲錯誤的分類比預測框存在很小的偏移更嚴重。 - MAP指標已經被玩壞了,因爲其唯一在意的是每一類的結果框排序。(如果某個物體有一個預測正確的框,即使這個物體還沒預測爲其他類別,而且重合度很高,最終在MAP指標上也不會造成影響)
上圖中,上下兩個檢測器預測結果視覺上看起來差別很大,很明顯上一個預測結果更好,但是在MAP指標上,兩個檢測器的效果是差不多的。
作者認爲現有的MAP檢測指標與人們關心的內容差異很大,新的指標應該關注這些差異。
檢測任務人們關心的核心
重點:給定一張圖片和檢測器,檢測器在一張圖片中,找到物體並正確分類的能力如何?
建議:需要擺脫每一類的AP(per-class AP),做一個global average precision(擺脫類別的依賴),或者對每張圖片做一個AP,然後在整個數據集上做平均!