YOLOv3學(xué)習(xí)筆記

圖片出自YOLO作者個人博客

YOLOv3與YOLOv2和YOLOv1相比最大的改善就是對boundingbox進(jìn)行了跨尺度預(yù)測(Prediction Across Scales),提高YOLO模型對不同尺度對象的預(yù)測精度。

image.png
YOLOv3 Architectrue

網(wǎng)絡(luò)結(jié)構(gòu)解析:

Darknet-53

YOLOv3的骨干網(wǎng)絡(luò)(backbone)Darknet-53是從YOLOv2中的Darknet-19中進(jìn)化而來的,Darknet-53是全卷積網(wǎng)絡(luò)和殘差網(wǎng)絡(luò)的結(jié)合體。殘差網(wǎng)絡(luò)的優(yōu)勢在KaiMing He等人的論文中有所論述,而且殘差網(wǎng)絡(luò)的另一種變體DenseNet網(wǎng)絡(luò)通過將淺層的feature map堆疊到深層來防止信息丟失。尤其對于YOLOv3而言由于其最中終的輸出為不同尺度的3個feature map,對于尺度大的feature map中用來預(yù)測小物體的bbox而言由于池化層的下采樣丟失的信息可能就會影響預(yù)測的準(zhǔn)確度,因此YOLO作者Joseph Redmon不僅采用殘差學(xué)習(xí)來降低模型的訓(xùn)練難度而且使用其減少信息的損失。
仔細(xì)看來Darknet-53就是一個使用了殘差塊的FCN網(wǎng)絡(luò),Darnet-53提取的特征不僅僅只用來輸出一個尺度的特征圖,而且用它不同卷積層輸出的feature map來保留一部分信息,然后將骨干網(wǎng)絡(luò)之后的feature map進(jìn)行上采樣之后以與其對應(yīng)的尺度骨干網(wǎng)絡(luò)中的feature map進(jìn)行堆疊減少由于池化層丟失掉的一部分信息,最后輸出三個尺度的特征圖。

網(wǎng)絡(luò)輸入輸出:

Input And output

由于YOLOv3的網(wǎng)絡(luò)模型是沒有使用全連接層的是一個完全由卷積層構(gòu)成的網(wǎng)絡(luò),因此網(wǎng)絡(luò)對與圖片輸入的分辨率是不敏感的,這里以輸入大小為416x416的分辨率為例子。同過32倍下采樣輸出的張量大小為其中3為anchor數(shù)目,4為預(yù)測box的四個參數(shù)1為致信度,80為對象類別數(shù)。也就是說每個feature map的每個中心有獨(dú)立的三個box對對象類別和邊框進(jìn)行預(yù)測,因?yàn)閷?yīng)到原圖中的感受野比較大因此這個尺度負(fù)責(zé)預(yù)測大的對象,負(fù)責(zé)預(yù)測中等大小的對象,負(fù)責(zé)預(yù)測小對象。模型也使用了anchor機(jī)制,論文中使用了9個 不同尺度的anchor,這9個anchor都是從COCO數(shù)據(jù)集GT中通過聚類算法的出來的,其尺度分別為(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373 ×326)。前三個應(yīng)用于對小物體的預(yù)測,中間三個用于對中等大小的物體,后面三個應(yīng)用于大物體。

網(wǎng)絡(luò)預(yù)測

網(wǎng)絡(luò)對于邊框的預(yù)測和YOLOv2是一樣的,置信度采用的的是Sigmoid激活函數(shù),輸出的概率分布也不是通過softmax而是通過Sigmoid,因?yàn)閟oftmax適用于多分類,而Sigmoid適用于多標(biāo)簽分類,置信度和類概率損失函數(shù)也是采用的交叉熵。

網(wǎng)絡(luò)正負(fù)例區(qū)分

在前向傳播的時候輸出三個尺度特征圖中所有的bbox然后遍歷每個bbox選出與每個GT的IOU最大的那個將其標(biāo)記為正例。設(shè)置一個閾值如果正例之外的bbox的IOU大于閾值則忽略小于則設(shè)置為負(fù)例。正例需要計(jì)算置信度和邊框以及中心的損失值,負(fù)例計(jì)算置信度。

網(wǎng)絡(luò)損失函數(shù)

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。