yolo強化理解隨筆加感悟D3
本文邏輯不通,僅供自己閱讀
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負責擴大感受野,相鄰畫素之間關係的建立
11負責通道的減少,再進行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各個版本的實驗
相關文章
- 【筆者感悟】筆者的學習感悟【十】
- 【筆者感悟】筆者的學習感悟【九】
- 對軟體工程的理解(隨筆版)軟體工程
- Android 隨筆—— 最強大的佈局 ConstraintLayoutAndroidAI
- D3視覺化:(1)初次見面,SVG與D3的魅力視覺化SVG
- python自動化框架pytest隨筆Python框架
- 強化學習筆記強化學習筆記
- 強化初學筆記筆記
- Java基礎加強筆記——測試、反射、註解Java筆記反射
- 演算法隨筆——DP最佳化演算法
- 【Java】弱項強化筆記Java筆記
- 隨筆
- yoloYOLO
- C語言加強C語言
- 真:隨筆
- 2024.11.7隨筆
- 10.1隨筆
- 隨筆0907
- 隨筆(1)
- 2024.8.20隨筆
- 2024.8.23隨筆
- 真隨筆
- vue隨筆Vue
- 2024.7.31隨筆
- 2024.7.29隨筆
- 2024.7.30隨筆
- 隨筆1
- 隨筆3
- 隨筆2
- 4.11隨筆
- 4.12隨筆
- MySQL隨筆MySql
- docker隨筆Docker
- 隨筆哦
- 隨筆(二)
- AOP隨筆
- 隨筆(一)
- IDE隨筆IDE