3综述 yolo_Onestage目标检测算法综述
轉(zhuǎn)自 | AI開發(fā)者
? ?YOLO-v1
YOLO 就是使用回歸這種做法的典型算法。
首先將圖片 Resize 到固定尺寸,然后通過一套卷積神經(jīng)網(wǎng)絡(luò),最后接上 FC 直接輸出結(jié)果,這就他們整個網(wǎng)絡(luò)的基本結(jié)構(gòu)。
更具體地做法,是將輸入圖片劃分成一個 SxS 的網(wǎng)格,每個網(wǎng)格負(fù)責(zé)檢測網(wǎng)格里面的物體是啥,并輸出 Bbox Info 和 置信度。這里的置信度指的是 該網(wǎng)格內(nèi)含有什么物體 和 預(yù)測這個物體的準(zhǔn)確度。
更具體的是如下定義:
我們可以從這個定義得知,當(dāng)框中沒有物體的時候,整個置信度都會變?yōu)?0 。
這個想法其實就是一個簡單的分而治之想法,將圖片卷積后提取的特征圖分為 SxS 塊,然后利用優(yōu)秀的分類模型對每一塊進(jìn)行分類,將每個網(wǎng)格處理完使用 NMS (非極大值抑制)的算法去除重疊的框,最后得到我們的結(jié)果。
? ?SSD
YOLO 這樣做的確非常快,但是問題就在于這個框有點大,就會變得粗糙——小物體就容易從這個大網(wǎng)中漏出去,因此對小物體的檢測效果不好。
所以 SSD 就在 YOLO 的主意上添加了 Faster R-CNN 的 Anchor 概念,并融合不同卷積層的特征做出預(yù)測。
我們從上圖就可以很明顯的看出這是 YOLO 分治網(wǎng)絡(luò)?和 Faster R-CNN Anchor 的融合,這就大大提高了對小物體的檢測。這里作者做實驗也提到和 Faster R-CNN 一樣的結(jié)果,這個 Anchor的數(shù)量和形狀會對性能造成較大的影響。
除此之外,由于這個 Anchor 是規(guī)整形狀的,但是有些物體的擺放位置是千奇百怪的,所以沒有?數(shù)據(jù)增強?前的效果比增強后的效果差 7 個百分點。直觀點理解,做輕微地角度扭曲讓 Anchor背后的神經(jīng)元“看到”更多的信息。
還有一個重大的進(jìn)步是結(jié)合了不同尺寸大小 Feature Maps 所提取的特征,然后進(jìn)行預(yù)測。這是 FPN 網(wǎng)絡(luò)提出前的第一次做 Feature Pyramid 的嘗試,這個特征圖金字塔結(jié)合了不同層的信息,從而結(jié)合了不同?尺寸?和?大小?的特征信息。
這個嘗試就大大地提高了識別的精度,且高分辨率(尺寸大)的 Feature Map 中含有更多小物體的信息,也是因為這個原因 SSD 能夠較好的識別小物體。
除此之外,和 YOLO 最大的區(qū)別是,SSD 沒有接 FC 減少了大量的參數(shù)量、提高了速度。
?? DSSD
DSSD檢測算法的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,DSSD也是使用不同階段不同分辨率的feature maps進(jìn)行預(yù)測,在不考慮Backbone網(wǎng)絡(luò)結(jié)構(gòu)差別的情況下,可以發(fā)現(xiàn)DSSD相比于SSD多了一系列的后續(xù)上采樣操作,SSD是使用下采樣過程中的feature maps進(jìn)行預(yù)測,而DSSD是使用上采樣過程中的feature maps進(jìn)行預(yù)測。顯而易見的是,SSD用于檢測的feature maps位于網(wǎng)絡(luò)的較低層,表征能力較弱,而DSSD用于檢測的feature maps位于網(wǎng)絡(luò)的較高層,表征能力較強,同時DSSD在反卷積的過程中通過Skip-Connection引入了較低層的feature maps,實現(xiàn)了一定程度的特征融合。所以DSSD的效果要優(yōu)于SSD檢測算法。
? ?FSSD
FSSD檢測算法的網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,同樣,FSSD也是使用不同階段不同分辨率的feature maps進(jìn)行預(yù)測,相比于SSD,FSSD多了一個特征融合處理,將網(wǎng)絡(luò)較低層的特征引入到網(wǎng)絡(luò)的較高層,在檢測的時候能夠同時考慮不同尺度的信息,使得檢測更加準(zhǔn)確。
? ?YOLO9000
到了 SSD ,回歸方法的目標(biāo)檢測應(yīng)該一統(tǒng)天下了,但是 YOLO 的作者不服氣,升級做了一個 YOLO9000 ——號稱可以同時識別 9000 類物體的實時監(jiān)測算法。
講道理,YOLO9000 更像是 SSD 加了一些 Trick ,而并沒有什么本質(zhì)上的進(jìn)步:
Batch Normalization
High resolution classifier 448*448 pretrain
Convolution with anchor boxes
Dimension clusters
Multi-Scale Training every 10 batch {320,…..608}
Direct location prediction
Fine-Grained Features
加了 BN 層,擴(kuò)大輸入維度,使用了?Anchor,訓(xùn)練的時候數(shù)據(jù)增強…
所以強是強,但沒啥新意,SSD 和 YOLO9000 可以歸為一類。
?? YOLO-v3
yolo-v3主要的改進(jìn)有:調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu);利用多尺度特征進(jìn)行對象檢測;對象分類用Logistic取代了softmax。
Yolo_v3使用了darknet-53的前面的52層(沒有全連接層),yolo_v3這個網(wǎng)絡(luò)是一個全卷積網(wǎng)絡(luò),大量使用殘差的跳層連接,并且為了降低池化帶來的梯度負(fù)面效果,作者直接摒棄了POOLing,用conv的stride來實現(xiàn)降采樣。在這個網(wǎng)絡(luò)結(jié)構(gòu)中,使用的是步長為2的卷積來進(jìn)行降采樣。
為了加強算法對小目標(biāo)檢測的精確度,YOLO v3中采用類似FPN的upsample和融合做法(最后融合了3個scale,其他兩個scale的大小分別是26×26和52×52),在多個scale的feature map上做檢測。
作者在3條預(yù)測支路采用的也是全卷積的結(jié)構(gòu),其中最后一個卷積層的卷積核個數(shù)是255,是針對COCO數(shù)據(jù)集的80類:3*(80+4+1)=255,3表示一個grid cell包含3個bounding box,4表示框的4個坐標(biāo)信息,1表示objectness score。
先驗眶在特征圖尺寸上的分配:
// 填坑中。。。
? ?參考文獻(xiàn)
SIGAI:目標(biāo)檢測最新進(jìn)展總結(jié)與展望(https://zhuanlan.zhihu.com/p/46595846)
小綠葉:一文看懂YOLO v3(https://zhuanlan.zhihu.com/p/60944510)
Dave:基于深度學(xué)習(xí)的「目標(biāo)檢測」算法綜述(https://zhuanlan.zhihu.com/p/33981103)
“12306”的架構(gòu)到底有多牛逼?
中國程序員34歲生日當(dāng)天在美國遭搶筆記本電腦,追擊歹徒被拖行后身亡,為什么會發(fā)生此類事件?
阿里如何抗住90秒100億?看這篇你就明白了!
60個Chrome神器插件大收集:助你快速成為老司機,一鍵分析網(wǎng)站技術(shù)棧
深度學(xué)習(xí)必懂的13種概率分布
總結(jié)
以上是生活随笔為你收集整理的3综述 yolo_Onestage目标检测算法综述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32串口通信(初学者对于串口通信的
- 下一篇: 什么是目标检测?有哪些应用?终于有人讲明