[net] # [xxx]開始的行表示網絡的一層,其後的內容爲該層的參數配置,[net]爲特殊的層,配置整個網絡
# Testing # 測試模式,batch 和 subdivisions 通常都爲1
batch=1
subdivisions=1
# Training # 訓練模式,batch 和 subdivisions 須要本身選取。
# batch=64 # batch 爲每一次迭代送到網絡的圖片數量,也叫批數量。
# 增大 batch 可讓網絡在較少的迭代次數內完成一個 epoch。
# 1個 epoch 就是使用訓練集中的所有樣本訓練一次。
# 在固定最大迭代次數的前提下,增長 batch 會延長訓練時間,但會更好的尋找到梯度降低的方向。
# 顯存容許的狀況下,能夠適當增大 batch 來提升內存利用率和訓練效果,一般 batch 越大越好。
# 這個值是須要你們不斷嘗試選取的,太小的話會讓訓練不夠收斂,過大會陷入局部最優。
# subdivisions=16 # 表示將一個 batch 的圖片分 subdivisions 份放進網絡裏,
# 一份一份的跑完後,再一塊兒打包算做完成一次 iteration。
# 1個 iteration 就是使用 batch 個樣本訓練一次。
# 注意 batch 要是 subdivisions 的整數倍
# subdivisions 越大,能夠減輕 CPU/GPU 的壓力。
# (分組數目越多,每組樣本數量則會更少,顯卡壓力也會相應減小)
----------------------------------------------------------------------------------------------------------------
width=416 # 輸入圖像的寬
height=416 # 輸入圖像的高
# 如顯存容許,width 和 height 的值越大,對於小目標的識別效果越好。
# width 和 height 影響網絡對輸入圖像的分辨率,從而影響precision,只能夠設置成32的倍數,
# 因下采樣參數是32,故不一樣尺寸的圖像也選擇爲 32 的倍數(320,352…608),最小320,最大608。
# width 和 height 能夠不相等。
channels=3 # 輸入圖像的通道數,3爲RGB彩色圖片,1爲灰度圖,4爲RGBA圖,A通道表示透明度
----------------------------------------------------------------------------------------------------------------
momentum=0.9 # DeepLearning1中最優化方法中的動量參數,這個值影響着梯度降低到最優值得速度
# 注:SGD方法的一個缺點是其更新方向徹底依賴於當前 batch 計算出的梯度,於是十分不穩定。
# momentum 算法借用了物理中的動量概念,它模擬的是物體運動時的慣性,
# 即更新的時候在必定程度上保留以前更新的方向,同時利用當前batch的梯度微調最終的更新方向。
# 這樣一來,能夠在必定程度上增長穩定性,從而學習地更快,而且還有必定擺脫局部最優的能力。
decay=0.0005 # 權重衰減正則項,防止過擬合。大的權值會使得系統出現overfitting,下降其泛化性能。
# 所以,爲了不出現 overfitting,會給偏差函數添加一個懲罰項,
# 經常使用的懲罰項是全部權重的平方乘以一個衰減常量之和。用來懲罰大的權值。
# 權值衰減懲罰項使得權值收斂到較小的絕對值,從而懲罰大的權值。
# decay參數越大對過擬合的抑制能力越強
----------------------------------------------------------------------------------------------------------------
angle=0 # 數據加強參數,經過隨機旋轉[-angle,angle]度來生成更多訓練樣本
saturation = 1.5 # 數據加強參數,經過調整飽和度來生成更多訓練樣本
exposure = 1.5 # 數據加強參數,經過調整曝光度來生成更多訓練樣本
hue=.1 # 數據加強參數,經過調整色調來生成更多訓練樣本
# 每次迭代中,會基於角度、飽和度、曝光度、色調產生新的訓練樣本,能夠防止過擬合。
----------------------------------------------------------------------------------------------------------------
learning_rate=0.001 # 學習率,決定着權值更新的速度,設置得太大會使結果超過最優值,過小會使降低速度過慢。
# 學習率決定了參數移動到最優值的速度快慢,若是學習率過大,
# 極可能會越過最優值致使函數沒法收斂,甚至發散;反之,若是學習率太小,優化的效率可能太低,
# 算法長時間沒法收斂,也易使算法陷入局部最優(非凸函數不能保證達到全局最優)。
# 合適的學習率應該是在保證收斂的前提下,能儘快收斂。
# 設置較好的learning rate,須要不斷嘗試。在一開始的時候,能夠將其設大一點,
# 這樣可使weights快一點發生改變,在迭代必定的epochs以後人工減少學習率,
# 通常根據訓練輪數設置動態變化的學習率。在yolo訓練中,網絡訓練160epoches,
# 初始學習率爲0.001,在60和90epochs時將學習率除以10。
# 接近訓練結束:學習速率的衰減應該在100倍以上。
# 學習率調整不要太死,實際訓練過程當中根據loss的變化和其餘指標動態調整,手動ctrl+c結束這次訓練後,
# 修改學習率,再加載剛纔保存的模型繼續訓練便可完成手動調參,調整的依據是根據訓練日誌來,
# 若是loss波動太大,說明學習率過大,適當減少,變爲1/5,1/10都可,若是loss幾乎不變,
# 可能網絡已經收斂或者陷入了局部極小,此時能夠適當增大學習率,注意每次調整學習率後必定要訓練久一點,
# 充分觀察,調參是個細活,屢次實踐體會,慢慢琢磨。
# 實際學習率與GPU的個數有關,例如你的學習率設置爲0.001,若是你有4塊GPU,那真實學習率爲0.001/4。
burn_in=1000 # 在迭代次數小於burn_in時,其學習率的更新有一種方式,大於burn_in時,採用policy的更新方式
#***這裏以前的更新方式不知道什麼*****************************************
max_batches = 50200 # 訓練次數達到max_batches後中止學習,一次爲跑完一個batch
policy=steps # 學習率調整的策略:constant, steps, exp, poly, step, sig, RANDOM,constant等方式
steps=40000,45000
scales=.1,.1 # steps和scale是設置學習率的變化,好比迭代到40000次時,學習率衰減10倍,
# 45000次迭代時,學習率又會在前一個學習率的基礎上衰減10倍。
----------------------------------------------------------------------------------------------------------------
[convolutional] # 一層卷積層的配置說明,直到下一個[XXX],都是該層的配置
batch_normalize=1 # 是否進行BN處理,關於BN,https:
filters=32 # 卷積核個數,也是輸出通道數,輸出特徵圖數量
size=3 # 卷積核尺寸,這裏是3*3
stride=1 # 卷積步長
pad=1 # 若是 pad 爲0,padding由 padding 參數指定。
# 若是 pad 爲1,padding大小爲size/2向下取整,如3/2=1。
activation=leaky # 網絡層激活函數,常見激活函數以下:
# logistic,loggy,relu,elu,relie,plse,
# hardtan,lhtan,linear,ramp,leaky,tanh,stair
[convolutional]
batch_normalize=1
filters=64
size=3
stride=2
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=32
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky
----------------------------------------------------------------------------------------------------------------
[shortcut] # shotcut 層配置說明
# shortcut 部分是卷積的跨層鏈接,就像 Resnet 中使用的同樣,
# 本層的輸入與輸出通常保持一致,而且不進行其餘操做,只是求差。
from=-3 # 參數 from 是 −3,意思是 shortcut 層前面倒數第3層網絡的輸出做爲本層的輸入。
activation=linear # 層次激活函數
# 關於 shortcut,https:
----------------------------------------------------------------------------------------------------------------
...... # 這裏還有若干層,參數同樣,不贅述
......
......
----------------------------------------------------------------------------------------------------------------
[convolutional] # YOLO層前面一層卷積層配置說明
size=1
stride=1
pad=1
filters=75 # 這一層的filters須要根據公式設置
# filters = (classes + 5) * anchors_num
# classes 爲類別數,與下面yolo層的classes一致,
# 5 的意義是4個座標加一個置信率,論文中的tx,ty,tw,th,to
# anchors_num 表示YOLO中每一個cell預測框的個數,YOLOV3中爲3
# 此處 filters = (20 + 5) * 3 = 75
activation=linear
----------------------------------------------------------------------------------------------------------------
[yolo] # [yolo/region]層配置說明,在yoloV2中yolo層叫region層
mask = 6,7,8 # 使用 anchor 的索引,從0開始,6,7,8表示使用下面定義的anchors中的最後三個 anchor
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 # 預測框的初始寬高,
# 第一個是w,第二個是h
classes=20 # 類別數目
num=9 # 每一個grid cell總共預測幾個box,和anchors的數量一致。當想要使用更多anchors時須要調大num
jitter=.3 # 利用抖動產生更多訓練樣本,YOLOv2中使用的是crop,filp,以及net層的angle
ignore_thresh = .5 # ignore_thresh 指得是參與計算的IOU的閾值大小。
# 當IOU大於ignore_thresh,不會參與loss的計算,不然,檢測框將會參與損失計算。
# 關於 IOU,https:
# 參數目的和理解:目的是控制參與loss計算的檢測框的規模,當ignore_thresh過大,
# 接近於1的時候,那麼參與檢測框迴歸loss的個數就會比較少,同時也容易形成過擬合;
# 而若是ignore_thresh設置的太小,那麼參與計算的檢測框迴歸loss數量規模就會很大。
# 同時也容易在進行檢測框迴歸的時候形成欠擬合。
# 參數設置:通常選取0.5-0.7之間的一個值
truth_thresh = 1
random=1 # 爲1打開隨機多尺度訓練,爲 0 則關閉
# 提示:當打開隨機多尺度訓練時,前面設置的網絡輸入尺寸width和height其實就不起做用了,
# width會在320到608之間隨機取值,且width=height,
# 每10輪隨機改變一次,能夠根據本身須要修改隨機尺度訓練的範圍,這樣能夠增大batch
----------------------------------------------------------------------------------------------------------------
[route] # 看到有人講這一層是融合層,就是把層進行合併,而後輸出到下一層
layers = -4 # 將本層前面倒數第4層的輸出做爲本層的輸出
# 若是layers = -1, 61 則表示將本層的上一層與整個網絡的第61層的輸出相做爲本層輸出
# 相加規則爲:如上一層的輸出爲52 x 52 x 128,第61層的輸出爲52 x 52 x 256
# 則本層輸出爲52 x 52 x (128+256),因此route的兩層的 weight 和 height 必須相等
# 若不相等,則本層輸出爲 0 x 0 x 0,下一層得不到有效輸入,
# 就會報 Layer before convolutional must output image. 而後中止
**********************************************************
[upsample] # 上採樣層
stride=2 # 卷積步長
# 參考:
# https:
# https:
# https:
複製代碼