深度学习算法-YOLO
轉載:https://blog.csdn.net/zfq740695564/article/details/79754578
yolo系列整理
| yoloV1 | 點擊打開 | 點擊打開 | 點擊打開 |
| yoloV2 | 點擊打開 | 點擊打開 | 點擊打開 |
| yoloV3 | 點擊打開 | 點擊打開 | 點擊打開 |
改進
V2 VS V1:
增加BN層:
- 解決問題:每層的輸入分布一直在改變,訓練難度增加;
- 采取措施:在每層卷積層后,添加batch normalization;
- 改進效果:
1.mAP獲得了2%的提升;
2.規范化模型,可以在舍棄dropout優化后依然不會過擬合;
##High Resolution Classifier - 解決問題:由于現有的特征提取網絡局限,導致圖片被resize到不足256 * 256,導致分辨率不夠高,給檢測帶來困難;
- 采取措施:
1.提高分辨力到448 * 448;
2.改變原來特征網絡的輸入分辨率,在ImageNet數據集上對分類網絡進行fine tune訓練10輪(10 epochs),使得網絡適應高分辨率的輸入;然后,對檢測網絡進行fine tune。 - 改進效果:mAP獲得了4%的提升;
##Convolutional With Anchor Boxes - 解決問題:全連接層的數據完成邊框的預測,導致丟失較多的空間信息,定位不準;
- 采取措施:
1.借鑒了Faster R-CNN中的anchor思想
2.在卷積特征圖上進行滑窗操作,每一個中心可以預測9種不同大小的建議框。
3.去掉了后面的一個池化層以確保輸出的卷積特征圖有更高的分辨率;
4.縮減網絡,輸入分辨力為416416,使得輸出的feature map寬高為基數,產生一個center cell(大物體通常占據了圖像的中間位置),用一個中心cell預測大物體,否則就要用中間的4個cell來進行預測,有利于提高效率。
5.卷積層降采樣(factor為32),輸入大小:416416;輸出大小:13*13 - 改進效果:召回率上升,準確率下降。
1.改進后:預測13 * 13 * 9 = 1521個boxes,recall為88%,mAP為69.2%
2.改進前:預測7 * 7 * 2 = 98個boxes,recall為81%,mAP為69.5%
3.準確率只有小幅度的下降,而召回率則提升了7%。
##Dimension Clusters - 解決問題:
1.anchor boxes的寬高維度往往是精選的先驗框,如果一開始就選擇了更好的、更有代表性的先驗boxes維度,那么網絡就更容易學到準確的預測位置;
2.傳統的K-means聚類方法使用的是歐氏距離函數,也就意味著較大的boxes會比較小的boxes產生更多的error,聚類結果可能會偏離; - 采取措施:
1.距離函數:error就和box的尺度無關
聚類結果:扁長的框較少,而瘦高的框更多
- 改進效果:使用聚類方法,僅僅5種boxes的召回率就和Faster R-CNN的9種相當
##Direct location prediction - 模型不穩定,尤其是在早期迭代的時候,大部分的不穩定現象出現在預測box的 (x,y)(x,y) 坐標上;
這個公式的理解為:當預測 tx=1tx=1,就會把box向右邊移動一定距離(具體為anchor box的寬度),預測 tx=?1tx=?1,就會把box向左邊移動相同的距離。
符號含義:
1.x是坐標預測值
2.xa 是anchor坐標(預設固定值)
3.x?是坐標真實值(標注信息)
4.其他變量 y,w,h 以此類推,t 變量是偏移量;
這個公式沒有任何限制,使得無論在什么位置進行預測,任何anchor boxes可以在圖像中任意一點結束。模型隨機初始化后,需要花很長一段時間才能穩定預測敏感的物體位置。- 采取措施:
1.采用預測相對于grid cell坐標位置的方法。
2.13*13的grid,每個cell對應5個anchors box,每個anchors box對應5個值(分別是坐標和置信度),如下所示:
(cx,cy):這個cell距離圖像左上角的cell數;
(pw,ph):cell對應的anchors box的寬高;
tx,ty 經sigmod函數處理過,取值限定在了0~1,實際意義就是使anchor只負責周圍的box,有利于提升效率和網絡收斂。
e的冪函數是因為前面做了 lnln 計算;
σ(tx):bounding box的中心相對柵格左上角的橫坐標;
σ(ty):bounding box的中心相對柵格左上角的縱坐標;
σ(to)是bounding box的confidence score。 - 改進效果:定位預測值被歸一化后,參數就更容易得到學習,模型就更穩定。使用Dimension Clusters和Direct location prediction這兩項anchor boxes改進方法,mAP獲得了5%的提升。
創新
將目標檢測作為回歸問題,實現end-to-end訓練和檢測。
#V3
##改進
多尺度檢測 改動基礎分類網絡和分類器
尺度1:在基礎特征網絡后添加幾層卷積層后,再輸出box信息,負責預測較大目標
尺度2:從尺度1網絡的倒數第二層2倍上采樣后與最后一個1616大小的featuremap相加,再通過幾層卷積層后,輸出box,相比尺度1變大size變大兩倍,負責預測中等大小的目標。
尺度3:與尺度2類似,使用3232大小的featuremap作為輸出,負責預測較小目標。
對比
1.與RCNN和Fast RCNN對比:yolo沒有求取proposal region,而RCNN系列需要通過selective research提取候選框,導致訓練過程分為多個階段完成。
與Faster RCNN對比:盡管用RPN 網絡代替selective research,將RPN集成到Fast RCNN中,形成了一個統一的網絡,實現卷積層參數的共享。但是在訓練過程中還是需要反復訓練RPN和Fast RCNN網絡。
因此RCNN系列的檢測,都屬于two-stage策略。
2.YOLO通過一次inference,同時得出目標位置和分類scores,而RCNN系列將目標檢測任務分成:檢測和回歸。
#基礎網絡
仿ResNet, 與ResNet-101或ResNet-152準確率接近,但速度更快.
##邊框預測
仍采用之前的logistic方式:
KaTeX parse error: Expected group after '\begin' at position 68: …ition 7: \begin{???a?l?i?g?n?}? b_…
其中:
cx,cycx,cycx,cycx,cycx,cy c_x,c_ycx,cycx,cycx?,cy?λnoobj實現兩者之間對梯度平衡作用。
3.含有object的bbox的confidence loss (上圖紅色框) 和類別的loss (上圖紫色框)的loss weight正常取1。
4.**不同大小box對IoU影響:**對不同大小的bbox,相同的偏離,大bbox對IOU的影響若于小box。通過sum-square error loss對該問題進行緩和。
調整的目標:相同的偏離,增強對小bbox的IOU的影響,減弱打的bbox的IOU的影響。為了緩和這個問題,作者用了一個巧妙的辦法,就是將box的width和height取平方根代替原本的height和width。 如下圖:small bbox的橫軸值較小,發生偏移時,反應到y軸上的loss(下圖綠色)比big box(下圖紅色)要大。
如下圖所示:
每個grid有多個boxes,最終的結果,采用IoU最大的box predictor預測,因此,不同box之間存在競爭,因此,隨著訓練輪數的增加,特定box predictor越來越好的,負責預測不同尺寸的物體。
#參考網址
YOLO詳解
圖解YOLO
YOLOv1論文理解
目標檢測網絡之 YOLOv3
darknet+win+linux接口
yolov3論文解析
總結
以上是生活随笔為你收集整理的深度学习算法-YOLO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式之--原型模式
- 下一篇: 人脸识别库-于仕琪老师库地址