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