?一、Ultralytics安裝
網址:主頁 -Ultralytics YOLO 文檔
????????Ultralytics提供了各種安裝方法,包括pip、conda和Docker。通過 ultralytics pip包安裝最新穩定版本的YOLOv8,或克隆Ultralytics GitHub 存儲庫以獲取最新版本。可以使用Docker在隔離的容器中執行包,避免本 地安裝。
pip install ultralytics==8.2.28 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install git+https://github.com/ultralytics/ultralytics.git@main
注意:ultralytics需要PyTorch支持。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
二、目錄
dataset├─train│ ├─images│ └─labels├─test│ ├─images│ └─labels└─mydata.yaml
?配置文件
# peach
train: /home/YoloV_/ultralytics-main/dataset/train
val: /home/YoloV_/ultralytics-main/dataset/valid# Classes
names:0: face
三、訓練模型?
指令訓練
yolo train model=yolov8n.pt data=./dataset/mydata.yaml epochs=50 batch=32 imgsz=640
訓練結果?
?
?
?
四、訓練參數??
論據 | 默認值 | 說明 |
---|---|---|
model | None | 指定用于訓練的模型文件。接受指向預訓練模型 .pt 文件或 .yaml 配置文件的路徑。對于定義模型結構或初始化權重至關重要。 |
data | None | 數據集配置文件的路徑(例如 coco8.yaml )。該文件包含特定于數據集的參數,包括訓練數據和驗證數據的路徑、類名和類數。 |
epochs | 100 | 訓練歷元總數。每個歷元代表對整個數據集進行一次完整的訓練。調整該值會影響訓練時間和模型性能。 |
time | None | 最長訓練時間(小時)。如果設置了該值,則會覆蓋 epochs 參數,允許訓練在指定的持續時間后自動停止。對于時間有限的訓練場景非常有用。 |
patience | 0 | 在驗證指標沒有改善的情況下,提前停止訓練所需的歷元數。當性能趨于平穩時停止訓練,有助于防止過擬合。 |
batch | 16 | Batch size, with three modes: set as an integer (e.g., batch=16), auto mode for 60% GPU memory utilization (batch=-1), or auto mode with specified utilization fraction (batch=0.70). |
imgsz | 640 | 用于訓練的目標圖像尺寸。所有圖像在輸入模型前都會被調整到這一尺寸。影響模型精度和計算復雜度。 |
save | True | 可保存訓練檢查點和最終模型權重。這對恢復訓練或模型部署非常有用。 |
save_period | -1 | 保存模型檢查點的頻率,以 epochs 為單位。值為 -1 時將禁用此功能。該功能適用于在長時間訓練過程中保存臨時模型。 |
cache | False | 在內存中緩存數據集圖像 (True/ram )、磁盤 (disk ),或禁用它 (False )。通過減少磁盤 I/O 提高訓練速度,但代價是增加內存使用量。 |
device | None | 指定用于訓練的計算設備:單個 GPU (device=0 )、多個 GPU (device=0,1 )、CPU (device=cpu ),或蘋果芯片的 MPS (device=mps ). |
workers | 8 | 加載數據的工作線程數(每個 RANK 多 GPU 訓練)。影響數據預處理和輸入模型的速度,尤其適用于多 GPU 設置。 |
project | None | 保存訓練結果的項目目錄名稱。允許有組織地存儲不同的實驗。 |
name | None | 訓練運行的名稱。用于在項目文件夾內創建一個子目錄,用于存儲訓練日志和輸出結果。 |
exist_ok | False | 如果為 True,則允許覆蓋現有的項目/名稱目錄。這對迭代實驗非常有用,無需手動清除之前的輸出。 |
pretrained | True | 決定是否從預處理模型開始訓練。可以是布爾值,也可以是加載權重的特定模型的字符串路徑。提高訓練效率和模型性能。 |
optimizer | 'auto' | 為培訓選擇優化器。選項包括 SGD, Adam, AdamW, NAdam, RAdam, RMSProp 等, 或 auto 用于根據模型配置進行自動選擇。影響收斂速度和穩定性。 |
verbose | False | 在訓練過程中啟用冗長輸出,提供詳細日志和進度更新。有助于調試和密切監控培訓過程。 |
seed | 0 | 為訓練設置隨機種子,確保在相同配置下運行的結果具有可重復性。 |
deterministic | True | 強制使用確定性算法,確保可重復性,但由于對非確定性算法的限制,可能會影響性能和速度。 |
single_cls | False | 在訓練過程中將多類數據集中的所有類別視為單一類別。適用于二元分類任務,或側重于對象的存在而非分類。 |
rect | False | 可進行矩形訓練,優化批次組成以減少填充。這可以提高效率和速度,但可能會影響模型的準確性。 |
cos_lr | False | 利用余弦學習率調度器,根據歷時的余弦曲線調整學習率。這有助于管理學習率,實現更好的收斂。 |
close_mosaic | 10 | 在訓練完成前禁用最后 N 個歷元的馬賽克數據增強以穩定訓練。設置為 0 則禁用此功能。 |
resume | False | 從上次保存的檢查點恢復訓練。自動加載模型權重、優化器狀態和歷時計數,無縫繼續訓練。 |
amp | True | 啟用自動混合精度 (AMP) 訓練,可減少內存使用量并加快訓練速度,同時將對精度的影響降至最低。 |
fraction | 1.0 | 指定用于訓練的數據集的部分。允許在完整數據集的子集上進行訓練, 這對實驗或資源有限的情況非常有用。 |
profile | False | 在訓練過程中, 可對 ONNX 和 TensorRT 速度進行剖析, 有助于優化模型部署。 |
freeze | None | 凍結模型的前 N 層或按索引指定的層, 從而減少可訓練參數的數量。微調或遷移學習非常有用。 |
lr0 | 0.01 | 初始學習率 (即 SGD=1E-2, Adam=1E-3). 調整這個值對優化過程至關重要, 會影響模型權重的更新速度。 |
lrf | 0.01 | 最終學習率占初始學習率的百分比 = (lr0 * lrf), 與調度程序結合使用, 隨著時間的推移調整學習率。 |
momentum | 0.937 | 用于 SGD 的動量因子, 或用于 Adam 優化器的 beta1, 用于將過去的梯度納入當前更新。 |
weight_decay | 0.0005 | L2 正則化項, 對大權重進行懲罰, 以防止過度擬合。 |
warmup_epochs | 3.0 | 學習率預熱的歷元數, 學習率從低值逐漸增加到初始學習率, 以在早期穩定訓練。 |
warmup_momentum | 0.8 | 熱身階段的初始動力, 在熱身期間逐漸調整到設定動力。 |
warmup_bias_lr | 0.1 | 熱身階段的偏置參數學習率,有助于 穩定初始歷元的模型訓練。 |
box | 7.5 | 損失函數中邊框損失部分的權重,影 響對準確預測邊框坐標的重視程度 |
cls | 0.5 | 分類損失在總損失函數中的權重,影 響正確分類預測相對于其他部分的重 要性。 |
dfl | 1.5 | 分布焦點損失權重,在某些YOLO 版 本中用于精細分類。 |
pose | 12.0 | 姿態損失在姿態估計模型中的權重, 影響著準確預測姿態關鍵點的重點。 |
kobj | 2.0 | 姿態估計模型中關鍵點對象性損失的 權重,平衡檢測可信度與姿態精度。 |
label_smoothing | 0.0 | 應用標簽平滑,將硬標簽軟化為目標 標簽和標簽均勻分布的混合標簽,可 以提高泛化效果。 |
nbs | 64 | 用于損耗正常化的標稱批量大小。 |
overlap_mask | True | 決定在訓練過程中分割掩碼是否應該 重疊,適用于實例分割任務。 |
mask_ratio | 4 | 分割掩碼的下采樣率,影響訓練時使用的掩碼分辨率。 |
dropout | 0.0 | 分類任務中正則化的丟棄率,通過在 訓練過程中隨機省略單元來防止過擬 合。 |
val | True | 可在訓練過程中進行驗證,以便在單 獨的數據集上對模型性能進行定期評 估。 |
plots | False | 生成并保存訓練和驗證指標圖以及預 測示例圖,以便直觀地了解模型性能 和學習進度。 |
batch大小設置方案:?
????????固定 Batch Size:設置固定值 (例如: batch=16)。
????????自動模式 (60%的GPU顯存占用):使用 batch=-1 自動調整batch 大小,實現大約60%的CUDA內存占用。
????????帶有使用分數值的自動模式:通過設置一個分數值(例如, batch=0.70),來根據指定的GPU內存使用分數調整批處理大小
五、增強設置和超參數?
????????增強技術通過在訓練數據中引入可變性,幫助模型更好地泛化到未見數據 中,對提高YOLO 模型的穩健性和性能至關重要。下表概述了每種增強參 數的目的和效果:
論據 | 默認值 | 說明 |
---|---|---|
hsv_h | 0.015 | 圖像色調中的最大變化。 |
hsv_s | 0.7 | 圖像飽和度的最大變化。 |
hsv_v | 0.4 | 圖像值 (亮度) 的最大變化。 |
degrees | 0.0 | 圖像旋轉的最大角度。 |
translate | 0.1 | 圖像平移的最大比例 (按圖像尺寸)。 |
scale | 0.5 | 圖像比例的最大變化。 |
shear | 0.0 | 圖像剪切的最大量。 |
perspective | 0.0 | 圖像透視變換的最大失真。 |
mosaic | 1.0 | 啟用馬賽克數據增強,這是一種將多個訓練圖像組合成一個圖像以提高對象變化的方法。 |
mixup | 0.0 | 啟用 mixup 數據增強,這是一種將圖像和標簽混合在一起以正則化模型的方法。 |
copy_paste | 0.0 | 啟用復制粘貼數據增強,這是一種將對象從一個圖像隨機復制到另一個圖像的方法。 |
????????這些設置可根據數據集和手頭任務的具體要求進行調整。試驗不同的值有 助于找到最佳的增強策略,從而獲得最佳的模型性能。?