# YOLO介紹 ## 甚麼是YOLO? 1. YOLO (You Only Look Once) 是**One stage**的物件偵測方法,也就是只需要對圖片作一次 CNN架構便能夠判斷圖形內的物體位置與類別。 1. 除了YOLO之外,還有很多其他的深度學習物件偵測方法,如R-CNN、Fast R-CNN、Faster R-CNN和Mask R-CNN等。這些方法各有特點和優勢,但YOLO的最大特色在於速度和精確度。YOLO可以在短時間內檢測到影像中的多個物體,並且具有很高的準確性,這使得YOLO在**邊緣運算**中非常受歡迎。 > **Two stage**: 假設一張圖選出一千個物件,後面的辨識就用重複做一千次,這種無法做及時運算。Example: R-CNN(Regions with CNN features),fast R-CNN,faster R-CNN。 > **One stage**:YOLO、SSD。SSD: Google在2015年12月提出 Single Shot Detector (SSD) *「We present a method for detecting objects in images using **a single deep neural network**.」* ## 名詞介紹  * Precision:精準度,代表預測為正的樣本有多少正確。  * Recall:召回率,代表真正為正的樣本中有多少被預測為正。  * AP(Average Precision):平均精度,綜合參考Precision和Recall。 * mAP(mean Average Precision):多個類別下,平均精度AP的均值。 * mAPval (mean Average Precision on the validation set):在驗證集上的mAP。 * IoU((Intersection overUnion)):IOU=area of overlap/area of union,IoU就等於 交集的面積/聯集的面積。換個意思,預測邊框(predicted box)和真實邊框(ground truth box)的交集/並集,這個值會介於0~1之間,越接近 1,表示預測越準確。  Generally, IoU > 0.5 為合格預測框。 Unusually, IoU>0.7 高準確水準。 * mAPval 50-95:代表驗證集上的IoU =50-95之間的mAP。 https://claire-chang.com/2023/08/16/yolov8%E6%A8%A1%E5%9E%8B%E8%A8%93%E7%B7%B4%E5%8F%8A%E5%85%B6%E6%8C%87%E6%A8%99%E6%84%8F%E7%BE%A9/ ## 版本差異 YOLOv8與YOLOv5同樣是Ultralytics 這家公司所製作 YOLOv8 跟以往不同的地方是: * 無錨檢測(Anchor Free Detection) * 新的卷積層(New Convolutions) * 關閉馬賽克增強(Closing the Mosaic Augmentation) 在 YOLO 系列模型(如 YOLOv5 或 YOLOv8)中,mosaic 是一種資料增強技術,用於將 4 張圖片拼接成一張圖,幫助提升模型的泛化能力。Mosaic 能夠在訓練期間同時增加背景的多樣性和縮放變化,使模型在各種場景下表現得更好。  由下方圖片可以看到,Yolov8 目前推論的效果是贏過其他 Yolo 系列,並且提供五種模型大小 : YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x  ## YOLOv8介紹  YOLOv8系列提供很多模式的模型 * Detection 偵測 * Instance Segmentation 實例分割 * Pose/Keypoints 姿態/關鍵點 * Oriented Detection 定向檢測 * Classification 分類  * YOLOv8模型n、s、m、l、x由小排到大,模型越大處理速度越慢但越準確。 * params(M):參數,模型的參數數量,以百萬為單位。參數數量通常與模型複雜度和計算需求成正比。 * FLOPs(B):浮點運算數,以十億為單位。指標反應模型運算一次所需的計算量。 ## 訓練參數說明 | 參數 | 默認值 | 描述 | 設置建議 | | ----------- | ------ | ---------------------------------- | --------------------------------------------------------------------------------------------------- | | model | None | 模型文件路徑 | 選擇適合任務的預訓練模型 | | data | None | 數據文件路徑 | 選擇適合的數據集配置 | | epochs | 100 | 訓練週期數 | 考慮數據集和模型規畫調整 | | time | None | 訓練時間 | 適用於有時間限制的訓練。 | | patience | 50 | 早停等待週期 | 若驗證指標在指定回合數內無提升,則停止訓練(早停法)。防止過度擬合。 | | batch | 16 | 批次大小 | 可設為整數(例如batch=16)、自動模式(batch=-1,使用60% GPU記憶體)或指定占用比例(如batch=0.70)。 | | imgsz | 640 | 圖像尺寸 | 適應模型和硬件設置 | | save | True | 是否儲存檢查點和最終模型權重。 | 方便中斷後繼續訓練或模型部署。 | | save_period | -1 | 檢查點保存頻率 | 需要設定時間週期(設為-1則不啟用此功能。) | | cache | False | 使用數據加載緩存 | (記憶體:True/ram,磁碟:disk)。能加快訓練,但會增加記憶體使用量。 | | device | None | 指定訓練所用設備| 單GPU(device=0)、多GPU(device=0,1)、CPU(device=cpu)或Apple Silicon(device=mps)。 | | workers | 8 |加載數據的工作線程數 | 多GPU時,增加此數值可提升數據預處理速度。 | | project | None | 設置專案目錄名稱 |自訂義區分的項目 | | exist_ok | False | 是否覆蓋現有實驗 | 如果為True,對迭代實驗有用| | pretrained | True | 使用預訓練模型| 可為布林值或指定模型的路徑,能提高訓練效率和模型表現。| | optimizer |'auto' | 優化器選擇 | 選擇訓練優化器,如SGD、Adam、RMSProp等,或使用auto根據模型自動選擇。影響收斂速度與穩定性。| | verbose | False|詳細輸出|提供詳細日誌和進度更新 | | seed | 0 | 設置隨機種子|可以是任意整數| | deterministic | True|強制使用確定性算法,確保可重複性。|結果一致時啟用| | single_cls | False | 單類訓練 |適用於二元分類或只關注目標物是否存在的情況。| | rect | False| 啟用矩形訓練,優化批次組合以減少填充量。| 提升效率但可能影響模型準確度。 | | cos_lr |False | 余弦學習率調度 | 隨回合調整學習率,有助於收斂。| |close_mosaic | 10 | 關閉馬賽克數據增強 |close_mosaic=0不關閉 Mosaic | * close_mosaic close_mosaic 參數的作用是 在訓練的最後幾個 epoch 停用 Mosaic 增強,以穩定模型的最終性能。雖然 Mosaic 在訓練初期非常有幫助,但在訓練的最後幾個 epoch,模型更需要在單一圖像上微調(Fine-tune)。提升模型收斂效果,減少過擬合。 (1) Mosaic 拼接會影響圖片的真實性,可能導致邊界框預測不精確。 (2)關閉 Mosaic 有助於模型在最後階段更準確地學習真實場景中的物體。 參數設置: close_mosaic=N:表示在訓練的最後 N 個 epoch 關閉 Mosaic 增強。 close_mosaic=0:表示不關閉 Mosaic,一直使用到訓練結束。 範例close_mosaic =10,表示在訓練的最後 10 個 epoch 關閉 Mosaic 增強。也就是第90個epoch(黃色的區域)。  所有參數顯示  ## 訓練指標 ### result.png  #### loss functions 損失函數是用來衡量模型預測值和真實值的誤差,越小越準。 * box_loss(Box Regression Loss):預測框位置的損失函數。 * cls_loss(Class Classification Loss):預測目標類別。 * dfl_loss(Detection Focal Loss):焦點損失的主要目標是應對樣本不平衡問題。 通常我會看loss functions,有沒有收斂(就是趨近於平緩為止),或是達到我要的loss值。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up