yolov3參數詳解


前段時間模型訓練出來了,現在需要寫報告了,打開配置文件,嗯,一大堆參數:

 

 

 

所以,行吧,重頭仔細看一遍參數具體含義

先放一篇參考博客:

https://blog.csdn.net/weixin_42731241/article/details/81474920

稍加整理:

batch=64                 單批訓練樣本的樣本數量,每batch個樣本更新一次參數

subdivisions=32 batch/subdivisions    作為一次性送入訓練器的樣本數量,如果內存不夠大,將batch分割為subdivisions個子batch(實驗室內存應該足夠)

                   上面這兩個參數如果電腦內存小,則把batch改小一點,batch越大,訓練效果越好
subdivisions              越大,可以減輕顯卡壓力(顯卡不大懂,不過應該也沒壓力)


width=416        input圖像的寬
height=416       input圖像的高
channels=3         input圖像的通道數(這仨參數應該很好理解,通道就是顏色數)

           以上三個參數為輸入圖像的參數信息 width和height影響網絡對輸入圖像的分辨率,
           從而影響precision,只可以設置成32的倍數(32*13=416)

momentum=0.9     DeepLearning1中最優化方法中的動量參數,這個值影響着梯度下降到最優值得速度

decay=0.0005       權重衰減正則項,防止過擬合.每一次學習的過程中,將學習后的參數按照固定比例進行降低,為了防止過擬合,                         decay參數越大對過擬合的抑制能力越強。

angle=0         通過旋轉角度來生成更多訓練樣本

saturation = 1.5     通過調整飽和度來生成更多訓練樣本
exposure = 1.5      通過調整曝光量來生成更多訓練樣本
hue=.1           通過調整色調來生成更多訓練樣本
learning_rate=0.001   學習率決定着權值更新的速度,設置得太大會使結果超過最優值,太小會使下降速度過慢。開始訓練時可以將學習率設置的高一點。

            以 0.01 ~ 0.001 為宜。接近訓練結束:學習速率的衰減應該在100倍以上。

            學習率的調整參考https://blog.csdn.net/qq_33485434/article/details/80452941
burn_in=1000      在迭代次數小於burn_in時,其學習率的更新有一種方式,大於burn_in時,才采用policy的更新方式
max_batches = 20200   訓練達到max_batches后停止學習
policy=steps         這個是學習率調整的策略,有policy:constant, steps, exp, poly, step, sig, RANDOM,constant等方式
             參考https://nanfei.ink/2018/01/23/YOLOv2%E8%B0%83%E5%8F%82%E6%80%BB%E7%BB%93/#more
steps=40000,45000     下面這兩個參數steps和scale是設置學習率的變化,比如迭代到40000次時,學習率衰減十倍。
scales=.1,.1       45000次迭代時,學習率又會在前一個學習率的基礎上衰減十倍

[convolutional]
batch_normalize=1      是否做BN
filters=32         輸出特征圖的數量
size=3           卷積核的尺寸
stride=1         做卷積運算的步長
pad=1            如果pad為0,padding由 padding參數指定;

            如果pad為1,padding大小為size/2,padding應該是對輸入圖像左邊緣拓展的像素數量
activation=leaky       激活函數的類型

。。。。。。。。。。。。此處省略若干行
[convolutional]
size=1
stride=1
pad=1
filters=45          每一個[region/yolo]層前的最后一個卷積層中的 filters=(classes+1+coords)*anchors_num,
              其中anchors_num 是該層mask的一個值.如果沒有mask則 anchors_num=num是這層的ancho
              5的意義是5個坐標,論文中的tx,ty,tw,th,to
activation=linear

[yolo]           在yoloV2中yolo層叫region層

mask = 6,7,8         這一層預測第6、7、8個 anchor boxes ,每個yolo層實際上只預測3個由mask定義的anchors

anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
             anchors是可以事先通過cmd指令計算出來的,是和圖片數量,width,height

             以及cluster(應該就是下面的num的值,即想要使用的anchors的數量)相關的預選框,

             可以手工挑選,也可以通過kmeans 從訓練樣本中學出
classes=10           網絡需要識別的物體種類數
num=9             每個grid cell預測幾個box,和anchors的數量一致。當想要使用更多anchors時需要調大num,且如果調大num后訓練時Obj趨近0的話可以嘗試調大object_scale
jitter=.3             [?]利用數據抖動產生更多數據,YOLOv2中使用的是crop,filp,以及net層的angle,flip是隨機的,
              jitter就是crop的參數,tiny-yolo-voc.cfg中jitter=.3,就是在0~0.3中進行crop


ignore_thresh = .5      決定是否需要計算IOU誤差的參數,大於thresh,IOU誤差不會夾在cost function中 
truth_thresh = 1
random=0           如果為1,每次迭代圖片大小隨機從320到608,步長為32,如果為0,每次訓練大小與輸入大小一致
              據說random設置成1,可以增加檢測精度precision
[route]
layers = -4

#可以添加沒有標注框的圖片和其空的txt文件,作為negative數據
#可以在第一個[yolo]層之前的倒數第二個[convolutional]層末尾添加 stopbackward=1,以此提升訓練速度
#即使在用416*416訓練完之后,也可以在cfg文件中設置較大的width和height,增加網絡對圖像的分辨率,從而更可能檢測出圖像中的小目標,而不需要重新訓練
#Out of memory的錯誤需要通過增大subdivisions來解決

差不多這些了,看網上的參數大同小異。

然后是語句整理:

 

 

修改之后:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM