很快啊——
目标檢測經典模型YOLO 的第八個版本就已經發布了。
這次升級不少,包括命令行界面、Python API、backbone 結構等,精度相比 YOLOv5 高了一大截(速度官方還沒公布)。
下面是網友實測,幾個不同規模的變體在目标檢測、實例分割和圖像分類三項任務上的漲點最高達到了33.21%。
不知道 YOLOv8 這一出,v5 版本還會 " 苟 " 多久?
oh 我們還發現已經有人用它在自定義數據集上完成了一波訓練,效果是這樣滴:
這精準度和穩定性,讓網友狠狠誇贊了一波。
具體怎麼玩?我們把教程也搬來了。
正式教程開始之前,我們還是先來認識一下這個新版本。
它的出品公司還是Ultralytics,也就是發布 YOLOv5 的那家。
本次的升級主要包括:
用戶友好的 API(命令行 +Python)
更快更準确(由于正式的論文還沒發表,它和 SOTA 模型的具體對比數據現在還沒有)
同時支持目标檢測、實例分割和圖像分類三種任務
可擴展到以前所有的版本
新的 backbone 網絡(CSP 結構不變,但 C2f 模塊替換了 C3 模塊,每個 stage 的 blocks 數改為 [ 3,6,6,3 ] 等)
新的Anchor-Free head
新的損失函數
其中重點說一下第一條。
首先,YOLOv8 的開發者脫離了标準 YOLO 項目的設計,将 train.py、detect.py、val.py 和 export.py 這四個腳本進行了分離。
短期來看,這種改變可能會引起混亂,因為它從 YOLOv3 就一直沒有變過;但原來這種看起來就好理解的模式在實時處理和跟蹤場景中進行部署實在是比較麻煩。
所以還是改用了更加靈活的新設計,讓 YOLOv8 可以通過終端獨立使用。
其次,這次新增的 CLI 可以讓你在各種任務和版本上進行更加方便的模型訓練、驗證或推理。
在終端的操作方式與我們熟悉的腳本非常相似,比如利用 CLI 檢測給定圖像中的對象,這樣就行:
yolo task=detect
mode=predict
model=yolov8n.pt
conf=0.25
source='https://media.roboflow.com/notebooks/examples/dog.jpeg'
最後,Ultralytics YOLO 這次配備的 Pythonic 模型和訓練接口,讓我們用 6 行代碼就能在自定義 Python 腳本中用上 YOLO 模型,操作方式就像這樣:
from ultralytics import YOLO
model = YOLO ( 'yolov8n.pt' )
model.predict (
source='https://media.roboflow.com/notebooks/examples/dog.jpeg',
conf=0.25
)
是不是很簡單,再也不用像以前那樣改一堆了。
那麼接下來,我們就正式開始教程部分了——
在自定義數據集上訓練 YOLOv8。
1、首先,安裝上我們的新 YOLOv8,"pip" 或者 "git clone" 一下。
>pip install ultralytics(推薦)
>git clone https://github.com/ultralytics/ultralytics
>cd ultralytics
>pip install -e ultralytics
2、然後開始構建自定義數據集。
為了不讓這個過程那麼痛苦和耗時,我們可以用上 Roboflow 這個工具(本教程也是由它提供的)。
操作步驟如下:
(1)創建賬戶,新建項目,項目類型選擇 " 目标檢測(Object Detection)"。
如果你的圖片已經帶标注,系統可以自動讀取;如果沒有,可以用它提供的這個非常快捷的标注工具現标。
(3)然後就能生成數據集了。" 預處理 " 和 " 數據增強 " 兩個選項可以勾上,讓你的模型魯棒性更強。
(4)現在我們就擁有了自己的一個托管數據集,将它導出就能直接加載到電腦中進行訓練了。
from roboflow import Roboflow
rf = Roboflow ( api_key='YOUR_API_KEY' )
project = rf.workspace ( 'WORKSPACE' ) .project ( 'PROJECT' )
dataset = project.version ( 1 ) .download ( 'yolov8' )
3、開始訓練
yolo task=detect
mode=train
model=yolov8s.pt
data={dataset.location}/data.yaml
epochs=100
imgsz=640
取決于數據集大小和訓練方法,過程将持續幾分鐘或幾小時。
以下是上述足球數據集的訓練結果:
(1)返回的混淆矩陣;
(2)跟蹤的關鍵指标;
(3)驗證 batch 上的推理示例。
是不是還不錯?
4、用測試集驗證模型
訓練好後開始驗證。創建數據集時分成三部分,其中一部分用來當測試集:
yolo task=detect
mode=val
model={HOME}/runs/detect/train/weights/best.pt
data={dataset.location}/data.yaml
評估結果如下:
5、使用自定義模型進行預測
命令如下:
yolo task=detect
mode=predict
model={HOME}/runs/detect/train/weights/best.pt
conf=0.25
source={dataset.location}/test/images
結果示例:
6、最後一步:導出和上傳權重
現在我們擁有了一組訓練好的權重,可用于托管 API 端點,就在項目的 "/runs/detect/train/weights/best.pt" 文件夾中。
當然,也可以使用 Roboflow pip 包中的 Deploy()函數将它上傳到 Roboflow Deploy 中,方便自己和他人共享。
單擊 Roboflow 儀表闆側欄中的 " 部署(Deploy)",查看可用的選項,然後就能直接在浏覽器中測試你的模型了。要共享給他人,發送一個 URL 就行。
測試素材可以直接用你測試集裡的圖片,也可以上傳新的圖片或視頻,或者粘貼 YouTube 鍊接、直接用攝像頭。
全部結束!是不是還不麻煩?
趕緊去檢驗一番 YOLOv8 的真本事吧~
需要的鍊接都在下面,Have fun!
YOLOv8 官方倉庫:
https://github.com/ultralytics/ultralytics
教程原文:
https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/
參考鍊接:
[ 1 ] https://www.reddit.com/r/computervision/comments/108616o/train_yolov8_objectdetection_on_custom_dataset/
[ 2 ] https://learnopencv.com/ultralytics-yolov8/