(1) mAP:mean average precision,每個類別各自的AP求和之后的平均值
VOC2010官方給出了如何計算mAP:
1). Compute a version of the measured precision/recall curve with precision monotonically decreasing, by setting the precision for recall r to the maximum precision obtained for any recall r′ ≥ r.
2). Compute the AP as the area under this curve by numerical integration. No approximation is involved since the curve is piecewise constant.
翻譯:
1). 計算PR曲線林螃,precision的取值為任意recall(r')大于或等于某個recall(r)對應(yīng)的precision最大值;
2). PR曲線的積分面積就是要計算的AP。
(2) Grid cell:用網(wǎng)格劃分圖片,也是一種先驗知識,即如果一個物體的中心落在某個cell中娩梨,那么這個cell就負(fù)責(zé)檢測該物體。也就是說每個cell要預(yù)測B個bounding box及其對應(yīng)的物體置信度和C個類別概率览徒。假設(shè)有個cell,那么共有個輸出颂龙。4是4個坐標(biāo)(bounding box的左上角x习蓬,y,和bounding box的高措嵌,寬)躲叼,1是物體置信度(cell是否包含物體中心)。
在YOLOv1中企巢,網(wǎng)格劃分為枫慷;在YOLOv2中,網(wǎng)格劃分為浪规;在YOLOv3中或听,網(wǎng)格劃分為,笋婿,誉裆。輸入圖片的尺寸為,那么對應(yīng)的就是32倍缸濒,16倍足丢,8倍下采樣,分別可以預(yù)測大庇配,中斩跌,小目標(biāo)物體。
(3) Bounding box的坐標(biāo)預(yù)測:方法還是沿用了YOLOv2捞慌,如下:
網(wǎng)絡(luò)對每個bounding box的四個坐標(biāo)進行預(yù)測(tx, ty, tw, th)耀鸦,再根據(jù)物體中心所在grid cell的左上角坐標(biāo)(cx, cy)以及bounding box的先驗寬和高(pw, ph)修正。這里再補充說明一下bounding box的先驗啸澡,其實就是anchor box揭糕。大家想一想,我們的bounding box要擬合的對象就明白作者指的先驗就是anchor box了锻霎。
這里有兩個trick:
a. sigmoid函數(shù)著角,將tx和ty轉(zhuǎn)換后限制到[0, 1]范圍內(nèi),這樣bx和by的值自然也就還是在當(dāng)前這個grid cell旋恼,不會跳到旁邊的cell中造成矛盾吏口;
b. exp(t?) 奄容,我比較同意參考1博主的觀點:主要是為了求導(dǎo)的計算。如果選擇類似p?*t?的方式产徊,可能后期會造成梯度消失或梯度不再更新昂勒。指數(shù)函數(shù)就不會出現(xiàn)這個問題,而且exp的導(dǎo)數(shù)是它自己舟铜,實在是我們的最佳選擇戈盈。指數(shù)函數(shù)還有個優(yōu)點就是它的值大于0,這樣我們就不用去要求預(yù)測的w和h要大于0谆刨。帶不等式約束的優(yōu)化問題塘娶,不能直接用SGD,還要用拉格朗日痊夭,個人認(rèn)為對深度學(xué)習(xí)不友好刁岸。
來看看原論文的示意圖,更加直觀:
論文中提到訓(xùn)練過程中的一個trick:在數(shù)值預(yù)測中的損失函數(shù)梯度肯定是真實值減去預(yù)測值tgt-tpred她我。但是標(biāo)注并沒有tgt虹曙,我們可以通過計算bgt和tgt的反函數(shù),也就是用tgt與tpred來計算誤差番舆。
參考[1]提到我們可以不計算sigmoid的反函數(shù)酝碳,而是直接用sigmoid計算誤差,即:(tgt)=bgt-cgt恨狈。
(4) a. 論文提到的objectness score击敌,是用來判斷bounding box是否包含物體中心。也就是在測試的時候所說某個bounding box包含物體中心的置信度拴事。這里沿用YOLOv1的損失函數(shù)
b. YOLOv3相較于YOLOv2還有一個大的改變就是每個bounding box可以預(yù)測多個類別沃斤,就是說一個box內(nèi)如果存在多個類別,也是可以識別出來的刃宵。作者僅僅使用了多個獨立的邏輯回歸來進行類別分析衡瓶。這么做的原因,作者在后面也說是因為某些數(shù)據(jù)本身就含有多標(biāo)簽牲证,比如woman和person哮针。如果使用softmax,那么就會認(rèn)為所有的類別是互斥的坦袍,結(jié)果上就會造成一個bounding box只能識別一個物體十厢。
好了,這是目前我想到的YOLOv3論文中的一些關(guān)鍵點的理解捂齐,如果大家還有什么疑惑蛮放,請給我留言。
接下來奠宜,我會一步一步搭建并解釋YOLOv3的pytorch代碼包颁,敬請期待瞻想!