1、 相比之前的兩個版本,網(wǎng)絡(luò)在對小目標的檢檢測效果要好,對于大目標的檢測效果相對來說要差一些;
2、 Bounding box
沿用YOLO9000方法,采用維度聚類,根據(jù)訓練集合的分類目標邊框信息,使用k-means算法進行聚類,生成anchor的邊框信息。因此不同的任務(wù)會有不同anchor信息,最優(yōu)anchor需要在實驗中確定。
最終的預測出的bounding box的坐標值,會跟anchor、gred cell相對整張圖的頂點坐標聯(lián)系起來。如下圖:

其中tx、ty、tw、th為網(wǎng)絡(luò)的直接預測值,bx、by、bw、bh為最終獲得的目標邊框坐標值,cx、cy為目標中心點所在grid cell的左上角點相對于整張圖像的坐標值,pw、ph為anchor的寬和高,σ(tx)為sigmoid函數(shù),可以將tx的值壓縮到0到1的范圍,利于網(wǎng)絡(luò)收斂。推理時,使用該公式計算最終的bbox坐標值;訓練時,對ground truth(gx,gy,gw,gh)的坐標值使用該公式的逆運算得到對應(yīng)的t值,然后跟預測的t值計算loss,使用的是均方誤差。在求逆運算的過程中sigmoid函數(shù)的逆運算較難計算,轉(zhuǎn)而計算對應(yīng)t值的sigmoid函數(shù),具體如何計算和為什么等價有待繼續(xù)學習。
3、 類別分類
Yolov3沒有使用softmax計算分類的loss,softmax函數(shù)會使得各個類別之間有互斥的影響,這也是其在適合分類任務(wù)的原因之一,在yolov3中卻對性能沒有提升。Yolov3對每個bbox的類別信息使用的是二值的交叉熵損失函數(shù),這樣會使得每個框預測出的類別信息不只是一個。在一個對象有多個標簽時,該方法很好用。此處不是很理解
4、 跨尺度預測
基于FPN的結(jié)構(gòu),對不同層的特圖進行目標預測。使用了三種尺度的特征圖。將上層特征圖先進行上采樣,上采樣在keras版本的代碼中使用的是UpSampling2D,最近近鄰插值的方式,做到跟底層特征圖同樣大小,然后使用concatenation的方式,即在通道上拼接。然后對組合后的特征圖再次進行卷積和預測分類。