全部參數表
首先羅列一下官網提供的全部參數。
1. model ?????
model: 模型文件的路徑。這個參數指定了所使用的模型文件的位置,例如 yolov8n.pt 或 yolov8n.yaml。
選擇.pt和.yaml的區(qū)別
- 若我們選擇 yolov8n.pt這種.pt類型的文件,其實里面是包含了模型的結構和訓練好的參數的,也就是說拿來就可以用,就已經具備了檢測目標的能力了,yolov8n.pt能檢測coco中的80個類別。但如果你需要檢測的類別不在其中,例如口罩檢測,那么就需要重新訓練。
- 訓練自己的數據集,我們一般采用yolov8n.yaml這種.yaml文件的形式,在文件中指定類別,以及一些別的參數。
2. data ?????
data: 數據文件的路徑。該參數指定了數據集文件的位置,例如 coco128.yaml。數據集文件包含了訓練和驗證所需的圖像、標簽。
3. epochs ???
epochs: 訓練的輪數。這個參數確定了模型將會被訓練多少次,每一輪都遍歷整個訓練數據集。訓練的輪數越多,模型對數據的學習就越充分,但也增加了訓練時間。
選取策略
默認是100輪數。但一般對于新數據集,我們還不知道這個數據集學習的難易程度,可以加大輪數,例如300,來找到更佳性能。
4. patience
patience: 早停的等待輪數。在訓練過程中,如果在一定的輪數內沒有觀察到模型性能的明顯提升,就會停止訓練。這個參數確定了等待的輪數,如果超過該輪數仍沒有改進,則停止訓練。
早停
早停能減少過擬合。過擬合(overfitting)指的是只能擬合訓練數據, 但不能很好地擬合不包含在訓練數據中的其他數據的狀態(tài)。
5. batch ?????
batch: 每個批次中的圖像數量。在訓練過程中,數據被分成多個批次進行處理,每個批次包含一定數量的圖像。這個參數確定了每個批次中包含的圖像數量。特殊的是,如果設置為**-1**,則會自動調整批次大小,至你的顯卡能容納的最多圖像數量。
選取策略
一般認為batch越大越好。因為我們的batch越大我們選擇的這個batch中的圖片更有可能代表整個數據集的分布,從而幫助模型學習。但batch越大占用的顯卡顯存空間越多,所以還是有上限的。
6. imgsz ?????
imgsz: 輸入圖像的尺寸。這個參數確定了輸入圖像的大小??梢灾付ㄒ粋€整數值表示圖像的邊長,也可以指定寬度和高度的組合。例如640表示圖像的寬度和高度均為640像素。
選取策略
如果數據集中存在大量小對象,增大輸入圖像的尺寸imgsz可以使得這些小對象從高分辨率中受益,更好的被檢測出。從官網放出的性能表也可以看出。
7. save、save_period ???
- save: 是否保存訓練的檢查點和預測結果。當訓練過程中保存檢查點時,模型的權重和訓練狀態(tài)會被保存下來,以便在需要時進行恢復或繼續(xù)訓練。預測結果也可以被保存下來以供后續(xù)分析和評估。
- save_period: 保存檢查點的間隔。這個參數確定了保存檢查點的頻率,例如設置為10表示每隔10個訓練輪數保存一次檢查點。如果設置為負數(如-1),則禁用保存檢查點功能。
和resume配合
和resume配合可以在訓練不穩(wěn)定中斷后再進行接著訓練。例如大家白嫖Colab這個平臺訓練網絡時,一般是有時間限制,會出現時間到了我們還沒訓練完的情況。通過save然后再resume重新啟動可以進行接著訓練。
8. cache
cache: 數據加載時是否使用緩存。這個參數控制是否將數據加載到緩存中,以加快訓練過程中的數據讀取速度??梢赃x擇在 RAM 內存中緩存數據(True/ram)、在磁盤上緩存數據(disk)或不使用緩存(False)。
9. device ?????
device: 訓練運行的設備。該參數指定了模型訓練所使用的設備,例如使用 GPU 運行可以指定為 cuda device=0,或者使用多個 GPU 運行可以指定為 device=0,1,2,3,如果沒有可用的 GPU,可以指定為 device=cpu 使用 CPU 進行訓練。
注意別選擇錯了。
10. workers
workers: 數據加載時的工作線程數。在數據加載過程中,可以使用多個線程并行地加載數據,以提高數據讀取速度。這個參數確定了加載數據時使用的線程數,具體的最佳值取決于硬件和數據集的大小。
11. project
project: 項目名稱。這個參數用于標識當前訓練任務所屬的項目,方便管理和組織多個訓練任務。
12. name
name: 實驗名稱。該參數為當前訓練任務指定一個名稱,以便于標識和區(qū)分不同的實驗。
13. exist_ok
exist_ok: 是否覆蓋現有的實驗。如果設置為 True,當實驗名稱已經存在時,將會覆蓋現有實驗。如果設置為 False,當實驗名稱已經存在時,將會報錯。
14. pretrained
pretrained: 是否使用預訓練模型。如果設置為 True,將加載預訓練的模型權重進行訓練,這有助于加快訓練過程和提高模型性能。
15. optimizer
optimizer: 選擇要使用的優(yōu)化器。優(yōu)化器是深度學習中用于調整模型參數以最小化損失函數的算法??梢赃x擇不同的優(yōu)化器,如 ‘SGD’、‘Adam’、‘AdamW’、‘RMSProp’,根據任務需求選擇適合的優(yōu)化器。
16. verbose
verbose: 是否打印詳細輸出。如果設置為 True,訓練過程中會輸出更詳細的信息和日志。如果設置為 False,只會輸出關鍵信息和結果。
17. seed
seed: 隨機種子,用于實現可重復性。通過設置相同的隨機種子,可以使得每次運行時的隨機過程保持一致,以便于結果的復現。
18. deterministic
deterministic: 是否啟用確定性模式。啟用確定性模式后,保證在相同的輸入下,每次運行的結果是確定的,不會受到隨機性的影響。
19. single_cls
single_cls: 將多類數據訓練為單類。如果設置為 True,將會將多類數據視為單一類別進行訓練。
20. rect
rect: 使用矩形訓練,每個批次進行最小填充。設置為 True 后,訓練過程中使用矩形形狀的圖像批次,并進行最小化填充。
21. cos_lr
cos_lr: 使用余弦學習率調度器。如果設置為 True,將使用余弦函數調整學習率的變化情況。
22. close_mosaic
close_mosaic: 禁用mosaic增強的最后第幾個輪次??梢灾付ㄒ粋€整數值,表示在訓練的最后第幾個輪次中禁用mosaic增強。
mosaic是什么
Mosaic數據增強方法是YOLOV4論文中提出來的,主要思想是將四張圖片進行隨機裁剪,再拼接到一張圖上作為訓練數據。這樣做的好處是豐富了圖片的背景,并且四張圖片拼接在一起變相地提高了batch_size,在進行batch normalization的時候也會計算四張圖片,所以對本身batch_size不是很依賴,單塊GPU就可以訓練YOLOV4。
YOLOV4論文YOLOv4: Optimal Speed and Accuracy of Object Detection
23. resume
resume: 從最后一個檢查點恢復訓練。如果設置為 True,將從最后一個檢查點的狀態(tài)繼續(xù)訓練。
24. amp
amp: 是否使用自動混合精度(Automatic Mixed Precision,AMP)訓練。AMP 是一種深度學習訓練技術,利用半精度浮點數加速訓練過程,可以減少顯存占用。
25. lr0
lr0: 初始學習率。學習率是控制模型參數更新步幅的超參數,初始學習率確定了訓練開始時的參數更新速度。
26. lrf
lrf: 最終學習率。最終學習率是通過初始學習率乘以一個比例系數得到的,用于控制訓練過程中學習率的衰減。
注意lrf其實是系數,最終學習率相較于初始學習率的系數。
27. momentum
momentum: SGD 優(yōu)化器的動量/Adam 優(yōu)化器的 beta1。動量是一種加速梯度下降過程的技術,用于增加參數更新的穩(wěn)定性。
28. weight_decay
weight_decay: 優(yōu)化器的權重衰減(weight decay)。權重衰減是一種正則化技術,用于減小模型復雜度,防止過擬合。
29. warmup_epochs
warmup_epochs: 熱身階段的輪數。熱身階段是訓練過程中初始階段的一部分,在此階段內,學習率和動量等參數逐漸增加,以幫助模型更好地適應訓練數據。
30. warmup_momentum
warmup_momentum: 熱身階段的初始動量。在熱身階段開始時,動量的初始值。
31. warmup_bias_lr
warmup_bias_lr: 熱身階段的初始偏置學習率。在熱身階段開始時,偏置學習率的初始值。
32. box、cls
- box: 邊界框損失權重。用于調整邊界框損失的權重,以控制其在總損失中的貢獻程度。
- cls: 類別損失權重。用于調整類別損失的權重,以控制其在總損失中的貢獻程度(按像素進行縮放)。
調整策略
如果你想更強調一些分類也就是更精準的類別判斷你可以增加cls的值;如果你想更強調一些邊界框的定位你可以增加box的值。
這個兩個權重我認為也可以根據你目前訓練輸出的邊界框損失數值和分類損失數值來判斷。
33. dfl
dfl: DFL(Dynamic Freezing Loss)損失權重。用于調整 DFL 損失的權重,以控制其在總損失中的貢獻程度。
dfl定義
參考這里的定義雙焦點損失 (DFL)雙焦點損失(DFL)緩解了分類和語義分割中的類不平衡問題。此損失函數的靈感來自焦點損失 (FL)函數的特性,該函數加劇了數據點的損失,在預測輸出和實際輸出之間產生較大差異。因此,如果由于類不平衡或其他一些原因,數據點難以分類,FL 使神經網絡更多地關注該數據點以及類似的數據點。DFL采用了這一思路,并通過增強梯度條件提高了FL的性能。
通俗解釋
DFL損失函數在訓練神經網絡時考慮了類別不平衡的問題。當某些類別出現頻率過高,而另一些類別出現頻率較低時,就會出現類別不平衡的情況。例如,在街景圖像中,假設有100張照片,其中有200輛汽車和只有10輛自行車。我們希望同時檢測汽車和自行車。這就是類別不平衡的情況,在訓練神經網絡時,由于汽車數量較多,網絡會學習準確地定位汽車,而自行車數量較少,網絡可能無法正確地定位自行車。通過使用DFL損失函數,每當神經網絡試圖對自行車進行分類時,損失會增加。因此,現在神經網絡會更加重視出現頻率較低的類別。更多信息,可以參考有關Focal Loss和DFL的論文。
焦點損失文章Focal Loss for Dense Object Detection[https://arxiv.org/abs/1708.02002]
調整策略
類別不平衡時使用,也就是當某些類別出現頻率過高,而另一些類別出現頻率較低時。
34. pose
pose: 姿態(tài)損失權重(僅姿態(tài))。用于調整姿態(tài)損失的權重,以控制其在總損失中的貢獻程度(僅應用于姿態(tài)相關任務)。
35. kobj
kobj: 關鍵點目標損失權重(僅姿態(tài))。用于調整關鍵點目標損失的權重,以控制其在總損失中的貢獻程度(僅應用于姿態(tài)相關任務)。
36. label_smoothing
label_smoothing: 標簽平滑(label smoothing)。標簽平滑是一種正則化技術,用于減少模型對訓練數據的過擬合程度。
標簽平滑
label smoothing就是把原來的one-hot表示的標簽,在每一維上都添加了一個隨機噪音。
37. nbs
nbs: 標準批次大?。╪ominal batch size)。指定訓練過程中每個批次的大小。
38. overlap_mask
overlap_mask: 訓練時是否要求蒙版重疊(僅用于分割訓練)。如果設置為 True,要求訓練過程中的蒙版(mask)重疊。
39. mask_ratio
mask_ratio: 蒙版下采樣比例(僅用于分割訓練)。用于控制蒙版下采樣的比例。
40. dropout
dropout: 是否使用丟棄正則化(dropout regularization)(僅用于分類訓練)。如果設置為非零值,則在訓練過程中使用丟棄正則化來減少模型的過擬合。文章來源:http://www.zghlxwxcb.cn/news/detail-576491.html
41. val
val: 是否在訓練過程中進行驗證/測試。如果設置為 True,將在訓練過程中進行驗證或測試,以評估模型的性能。文章來源地址http://www.zghlxwxcb.cn/news/detail-576491.html
到了這里,關于YOLOv8訓練參數詳解的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!