yolo強化理解隨筆加感悟D3

中路殺豬發表於2020-09-23

本文邏輯不通,僅供自己閱讀
yolo強化理解隨筆加感悟D1
yolo強化理解隨筆加感悟D2

Day3 pipeline:

1.特徵提取器的改進:多尺度思路的全面應用
2.YOLOv4-v5的backbone neck head 對比分析
3.V5程式碼解讀與應用:進行消融實驗

一、例子

在這裡插入圖片描述

反響傳播原理,梯度下降
在這裡插入圖片描述

反響傳播就是主要更新backbone引數,可以看做更加複雜的一些方程而已。

二、檢測頭複習

在這裡插入圖片描述

正是由於backbone能力的提升,才導致檢測頭的進化,實現更復雜的檢測。
在這裡插入圖片描述

V5檢測頭也是這樣

三、backbone變化

在這裡插入圖片描述

V2的 passthroug 技術點比較特別,v3v4捨棄了,V5中用了,其實就是focus層作用,v3/v4/v5 cspdarknet53 但是v5更簡潔了。

四、一個很重要的公式

在這裡插入圖片描述

五、Yolov2的backbone變化

V1
在這裡插入圖片描述

圖片縮小4倍 s-2,可以改變尺寸
卷積核大小77 33 1*1,網路逐漸變寬 v1沒有neck沒有sparse prediction

對比
在這裡插入圖片描述

V2
在這裡插入圖片描述

為和不用77了?VGG試驗過後,33 完全可以代替
1.優點計算量小
2.網路可以做的更深,conv層可以更深,非線效能力更強,可以更好提取特徵
Bottleneck結構
在這裡插入圖片描述

33負責擴大感受野,相鄰畫素之間關係的建立
1
1負責通道的減少,再進行3*3計算量減少

為什麼沒有fc了?
根據多尺度思路 24224 與 256256 320*320 仍然可以訓練。而fc確固定了輸入圖片的尺寸。
在這裡插入圖片描述

就是因為 global avgpool 作用。Global就是最後整體不一定是77,最後都是所有的求均值,變成11000.對提高檢測器的效能非常重要。

Backbone是單獨train的,就得到一個分類而非檢測,用的資料集是imagenet他有1000個類別,這就是darknet19

Bottleneck思想
在這裡插入圖片描述

E=0.5 c2 = 256

在這裡插入圖片描述

最後是檢測頭
Concat技巧,passtrough 做了一個多尺度特徵融合
在yolov5中叫focus

2626512 與13131024 concat,就需要2626 變成1313
在這裡插入圖片描述

相當於切了四片,隔一個取一個畫素
V2backbone改進的原則,計算量減少,網路加深

六、Yolov2訓練的過程

在這裡插入圖片描述

Imagenet用224*224訓練,就因為gap層的作用,訓練效果更好。
所有的檢測模型都需要重新設計backbone,也大多遵循以上訓練原則,效能才會提升。

七、Yolov3 baackbone
在這裡插入圖片描述

Residual 殘差網路。Conv有53層
Pooling層的丟掉了,利用步長為2的conv層替代了,pooling會丟失特徵
在這裡插入圖片描述

上取樣後特徵圖進行融合

八、Yolov4 baackbone

在這裡插入圖片描述

Mish 是啟用函式,與relu leaky relu都是
Resnet換成了csp下采樣
為什麼要融合con兩次?V3只做了一次而已,反應至
在這裡插入圖片描述

就是neck這個結構
就是PAN模組起作用,在後面會提

九、Yolov5 baackbone

結構要簡單,速度相對快,三個檢測頭
在這裡插入圖片描述

Cbl不見了變成了csp。
Focus結構
在這裡插入圖片描述

V5結構

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

注意backbone中的csp與neck中的csp結構並不相同

Spp結構
在這裡插入圖片描述

作用是將特徵圖分成不同的格子去pooling,就是對不同的多尺度提特徵
在這裡插入圖片描述

PAN v4 v5 都用
在這裡插入圖片描述

小目標的資訊丟失的比較厲害
在這裡插入圖片描述

V4中改動
在這裡插入圖片描述

V5中也是這種。
Mish函式
在這裡插入圖片描述
可以做的更深還保持相對不錯的效果在這裡插入圖片描述
在這裡插入圖片描述

十、資料增強

在這裡插入圖片描述

Mixup 不同透明度放在一起,cutmix前置mosaic拼接
在這裡插入圖片描述

十一、Yolov4 /v5 backbone、neck、head對比

backbone
V5:focus 兩個新型csp結構 ssp pan
V4:csp結構+san空間注意力機制
Neck
V5:FPN+PAN+SSP+CSP 又考慮多尺度
V4:fpn+pan+ssp
Prediction
V5:giou__loss 自適應縮放
V4:ciou__loss
自適應縮放 輸入416416 那麼給定800600就需要填充黑邊。自己匹配 黑邊儘量少一點。
十二、消融實驗
訓練分兩步
訓練backbone
訓練detector

1.訓練backbone

在這裡插入圖片描述

可以參照yolov4,主要是多尺度思路
San 比如一些sota模型該用的都用上,包括class label smoothing

2.訓練檢測網路整體

在這裡插入圖片描述

3.注意力機制

Spatial attention module
在特徵圖中,有些比較重要的畫素,比如包含目標,會產生一個權重,就相當於對空間注意力進行了一個篩選。比較大的權重更容易被篩選到
Channel 就是對channel產生權重被注意到。
在這裡插入圖片描述

用max pooling 與average pooling 產生兩個feature map,然後做一個con經過sigmoid產生
在這裡插入圖片描述

4.Cmbn

在這裡插入圖片描述

Bn batch normalizing 標準化歸一化就是把一個集合中的資料標準到正態分佈上,便於後續處理。Relu啟用函式
在這裡插入圖片描述

標準化後*r+b,就是讓方差變成r^2,均值為b,這樣做是因為像sigmoid在0附近是線性的,我們比較想要一個非線性結果,那麼通過r,b訓練得到就比較合適了動態更新就比較合適了。
在這裡插入圖片描述

Cbn如下
在這裡插入圖片描述

每次迭代時,不僅用當前時刻來更新,而且包含了之前所有時刻的資訊,求的是一個平均值,可以減少迭代次數,更符合資料的預期。Bn要求batchsize要大,cbn則解決了這個問題。
Cmbn如下
在這裡插入圖片描述

最初的bn是ecohs更新一次,cbn是啥時候都更新,cmbn是每個mini batch更新一次,相當於是bn與cbn的一個折中

十三、補充

Dropupout v4使用了
在這裡插入圖片描述

有v1v2v3程式碼,還有騰訊youtu各個版本的實驗