【目标检测】(6) YOLOV2 目标检测在V1基础上的改进
各位同學好,今天和大家分享一下 YOLOV2 目標檢測算法的原理,建議大家先學習一下 YOLOV1,可以看我的上一篇文章:https://blog.csdn.net/dgvv4/article/details/123767854
YOLOV1 盡管速度非常快,但精度低,定位性能較差,召回率低,檢測小目標和密集目標的效果較差。因此 YOLOV2 做了如下的改進
1. Batch Normalization
Batch Normalization 將神經元的輸出減去均值除以標準差,變成以0為均值,標準差為1的分布。由于很多激活函數,如 sigmoid 和 tanh 函數在0附近是非飽和區,如果激活函數的輸入太大獲太小的話,就陷入了激活函數的飽和區,導致梯度消失,難以訓練。使用 Batch Normalization 強行將神經元的輸出集中到0附近。
Batch Normalization 在模型訓練階段和測試階段不同。
在訓練階段,如果batch_size=32時,即每個batch處理32張圖片,每張圖片經過一個神經元都會輸出一個響應值,那么某層的某個神經元就會輸出32個響應值;對這32個響應值求均值、標準差、再做標準化;將標準化之后的響應乘以再加上,其中每個神經元都需要訓練一組。這樣就將神經元的輸出限制在以0為均值且1為標準差的分布中,輸出限制在非飽和區加快收斂,防止過擬合。
在測試階段,均值、方差、、?都使用訓練階段全局求出的結果。例如測試的均值使用訓練階段很多batch的均值的期望
公式如下,?是一個很小的數,防止分母為0,
2. 高分辨率的分類器
一般的圖像分類網絡都是以較小的分辨率在imagenet數據集上訓練的,如224*224。而YOLOV1的模型輸入圖像的分辨率是448*448,那么在較小分辨率下訓練的網絡再拿到大分辨率的目標檢測模型中去訓練,網絡訓練時就需要從小分辨率切換到大分辨率,導致性能的降低。YOLOV2直接在448*448的圖像分類數據集上訓練骨干網絡,使網絡適應大分辨率,提高了3.5%的map
3. 先驗框
在YOLOV1中,圖像被劃分成7x7的網格,每個網格生成2個預測框,哪個預測框和真實檢測框的IOU交并比大,那個預測框就負責擬合真實檢測框,交并比小的預測框就被淘汰了。兩個預測框沒有長寬限制,都是隨機變化的。而在YOLOV2中,預測框有了初始的參考框,預測框只需要在原有的位置上微調,調整偏移量就可以了。
在YOLOV2中一張圖片被劃分成13*13個網格,每個網格有5種長寬尺度大小不同的先驗框,即5種不同的長寬比。每個先驗框對應一個預測框,預測只需要輸出預測框相對于先驗框的偏移量。
人工標注的真實檢測框的中心點落在哪個網格內,就應該由該網格中產生的先驗框中與真實檢測框IOU交并比最大的那個先驗框來預測,預測結果是預測框相較于自己的先驗框的偏移量
4. 模型輸出結果
在YOLOV1中沒有使用先驗框,圖片被劃分成7*7的網格,每個網格生成2個預測框,每個預測框包含4個位置參數和1個置信度參數,每個網格有包含20個分類類別的條件概率。因此每個網格有5+5+20個參數。模型輸出特征圖的shape就是[7,7,30]
在YOLOV2中,圖片被劃分成13*13的網格,每個網格生成5個先驗框,每個先驗框包含4個位置參數、1個置信度參數、20個類別的條件概率。因此每個網格有5*(4+1+20)=125個參數。模型輸出特征圖的shape就是[13,13,125]
如下圖,模型輸入圖像shape為[416,416,3],經過一系列卷積操作,輸出 13*13*125 的tensor,每個網格包含5個先驗框,每個先驗框有(5+20)*5個參數
5. 預測框微調
模型輸出 預測框相較于先驗框的偏移量,坐標偏移量(tx,ty),寬高偏移量(tw,th)。其中(tx,ty)可以是從負無窮到正無窮的任何數,為了防止坐標偏移過大,給偏移量添加sigmoid函數?,將坐標偏移量限制在0-1之間,將預測框的中心點限制在它所在的網格內。
如下圖,(cx,cy)是先驗框中心點所在的網格的左上坐標(歸一化后的坐標),(pw,ph)是和真實框交并比最大的先驗框的寬高。由于目標物體可能很大,預測框也很大,將先驗框的寬高乘以指數ex
6. 損失函數
YOLOV2 遍歷了13*13個網格的所有預測框,
(1)第一項是置信度誤差。先驗框和真實檢測框的IOU交并比是否小于閾值。小于則為1,否則為0。將先驗框和檢測框的中心點重合計算交并比。讓不負責預測物體的先驗框的置信度越接近0越好
(2)第二項是預測框與先驗框的位置誤差。判斷是否是前12800次迭代,是否是模型訓練的早期。滿足則為1,否則為0。讓先驗框的位置參數(x,y,w,h)與預測框的位置參數盡量接近
(3)第三項是IOU最大的先驗框負責檢測物體。是為1,否為0。這里假設真實檢測框由IOU最大的先驗框預測。對于那些IOU大于閾值但非最大值的先驗框,就忽略它的損失。定位誤差要求真實檢測框的位置和預測框的位置盡可能接近,置信度誤差要求先驗框與真實框的IOU和預測框的置信度盡可能一致,分類誤差要求真實框的類別和預測框的類別盡可能一致。
7. 細粒度特征
把淺層的網絡輸出的特征圖分成兩個分支,一個分支卷積操作,另一個分支將特征圖拆分成四份并在通道維度上堆疊,將兩個分支疊加,那么該特征圖既包含了底層的細粒度信息,以及經過卷積后的高層的信息。整合了不同尺度的信息,有利于小目標的檢測。
拆分方法等同于YOLOV5的focus方法,如下圖,將一張特征圖變成四張,每張特征圖的長寬縮減為原來的一半,通道數變成了原來的四倍
總結
以上是生活随笔為你收集整理的【目标检测】(6) YOLOV2 目标检测在V1基础上的改进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【目标检测】(5) YOLOV1 目标检
- 下一篇: 【神经网络】(19) ConvNeXt