YOLOv8已至,精度大漲!教你如何在自定義數(shù)據(jù)集上訓(xùn)練它
還是YOLOv5官方出品
豐色 發(fā)自 凹非寺
量子位 | 公眾號 QbitAI
很快啊——
目標(biāo)檢測經(jīng)典模型YOLO的第八個(gè)版本就已經(jīng)發(fā)布了。
這次升級不少,包括命令行界面、Python API、backbone結(jié)構(gòu)等,精度相比YOLOv5高了一大截(速度官方還沒公布)。
下面是網(wǎng)友實(shí)測,幾個(gè)不同規(guī)模的變體在目標(biāo)檢測、實(shí)例分割和圖像分類三項(xiàng)任務(wù)上的漲點(diǎn)最高達(dá)到了33.21%。
不知道YOLOv8這一出,v5版本還會“茍”多久?
oh我們還發(fā)現(xiàn)已經(jīng)有人用它在自定義數(shù)據(jù)集上完成了一波訓(xùn)練,效果是這樣滴:
這精準(zhǔn)度和穩(wěn)定性,讓網(wǎng)友狠狠夸贊了一波。
具體怎么玩?我們把教程也搬來了。
在自定義數(shù)據(jù)集上訓(xùn)練YOLOv8
正式教程開始之前,我們還是先來認(rèn)識一下這個(gè)新版本。
它的出品公司還是Ultralytics,也就是發(fā)布YOLOv5的那家。
本次的升級主要包括:
- 用戶友好的API(命令行+Python)
- 更快更準(zhǔn)確(由于正式的論文還沒發(fā)表,它和SOTA模型的具體對比數(shù)據(jù)現(xiàn)在還沒有)
- 同時(shí)支持目標(biāo)檢測、實(shí)例分割和圖像分類三種任務(wù)
- 可擴(kuò)展到以前所有的版本
- 新的backbone網(wǎng)絡(luò)(CSP結(jié)構(gòu)不變,但C2f模塊替換了C3模塊,每個(gè)stage的blocks數(shù)改為[3,6,6,3]等)
- 新的Anchor-Free?head
- 新的損失函數(shù)
其中重點(diǎn)說一下第一條。
首先,YOLOv8的開發(fā)者脫離了標(biāo)準(zhǔn)YOLO項(xiàng)目的設(shè)計(jì),將train.py、detect.py、val.py和export.py這四個(gè)腳本進(jìn)行了分離。
短期來看,這種改變可能會引起混亂,因?yàn)樗鼜腨OLOv3就一直沒有變過;但原來這種看起來就好理解的模式在實(shí)時(shí)處理和跟蹤場景中進(jìn)行部署實(shí)在是比較麻煩。
所以還是改用了更加靈活的新設(shè)計(jì),讓YOLOv8可以通過終端獨(dú)立使用。
其次,這次新增的CLI可以讓你在各種任務(wù)和版本上進(jìn)行更加方便的模型訓(xùn)練、驗(yàn)證或推理。
在終端的操作方式與我們熟悉的腳本非常相似,比如利用CLI檢測給定圖像中的對象,這樣就行:
yolo task=detect \
mode=predict \
model=yolov8n.pt \
conf=0.25 \
source='https://media.roboflow.com/notebooks/examples/dog.jpeg'
最后,Ultralytics YOLO這次配備的Pythonic模型和訓(xùn)練接口,讓我們用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
)
是不是很簡單,再也不用像以前那樣改一堆了。
那么接下來,我們就正式開始教程部分了——
在自定義數(shù)據(jù)集上訓(xùn)練YOLOv8。
1、首先,安裝上我們的新YOLOv8,“pip”或者“git clone”一下。
>pip install ultralytics(推薦)
or
>git clone https://github.com/ultralytics/ultralytics
>cd ultralytics
>pip install -e ultralytics
2、然后開始構(gòu)建自定義數(shù)據(jù)集。
為了不讓這個(gè)過程那么痛苦和耗時(shí),我們可以用上Roboflow這個(gè)工具(本教程也是由它提供的)。
操作步驟如下:
(1)創(chuàng)建賬戶,新建項(xiàng)目,項(xiàng)目類型選擇“目標(biāo)檢測(Object Detection)”。
(2)上傳圖片將數(shù)據(jù)集導(dǎo)入到項(xiàng)目之中。如果你沒有準(zhǔn)備數(shù)據(jù)集,可以用它們官方提供的(從Roboflow Universe中下載)。
如果你的圖片已經(jīng)帶標(biāo)注,系統(tǒng)可以自動讀??;如果沒有,可以用它提供的這個(gè)非??旖莸臉?biāo)注工具現(xiàn)標(biāo)。
(3)然后就能生成數(shù)據(jù)集了?!邦A(yù)處理”和“數(shù)據(jù)增強(qiáng)”兩個(gè)選項(xiàng)可以勾上,讓你的模型魯棒性更強(qiáng)。
(4)現(xiàn)在我們就擁有了自己的一個(gè)托管數(shù)據(jù)集,將它導(dǎo)出就能直接加載到電腦中進(jìn)行訓(xùn)練了。
記住從Roboflow Universe中下載數(shù)據(jù)集時(shí)選擇“YOLO v5 PyTorch”格式,然后在彈出的窗口中看到一段代碼,簡單修改各個(gè)參數(shù)即可。
from roboflow import Roboflow
rf = Roboflow(api_key='YOUR_API_KEY')
project = rf.workspace('WORKSPACE').project('PROJECT')
dataset = project.version(1).download('yolov8')
3、開始訓(xùn)練
使用下面的命令將數(shù)據(jù)集下載片段(snippet)粘貼到你的YOLOv8 Colab notebook中,開始訓(xùn)練。
yolo task=detect \
mode=train \
model=yolov8s.pt \
data={dataset.location}/data.yaml \
epochs=100 \
imgsz=640
取決于數(shù)據(jù)集大小和訓(xùn)練方法,過程將持續(xù)幾分鐘或幾小時(shí)。
以下是上述足球數(shù)據(jù)集的訓(xùn)練結(jié)果:
(1)返回的混淆矩陣;
(2)跟蹤的關(guān)鍵指標(biāo);
(3)驗(yàn)證batch上的推理示例。
是不是還不錯(cuò)?
4、用測試集驗(yàn)證模型
訓(xùn)練好后開始驗(yàn)證。創(chuàng)建數(shù)據(jù)集時(shí)分成三部分,其中一部分用來當(dāng)測試集:
yolo task=detect \
mode=val \
model={HOME}/runs/detect/train/weights/best.pt \
data={dataset.location}/data.yaml
評估結(jié)果如下:
5、使用自定義模型進(jìn)行預(yù)測
命令如下:
yolo task=detect \
mode=predict \
model={HOME}/runs/detect/train/weights/best.pt \
conf=0.25 \
source={dataset.location}/test/images
結(jié)果示例:
6、最后一步:導(dǎo)出和上傳權(quán)重
現(xiàn)在我們擁有了一組訓(xùn)練好的權(quán)重,可用于托管API端點(diǎn),就在項(xiàng)目的“/runs/detect/train/weights/best.pt”文件夾中。
當(dāng)然,也可以使用Roboflow pip包中的Deploy()函數(shù)將它上傳到Roboflow Deploy中,方便自己和他人共享。
單擊Roboflow儀表板側(cè)欄中的“部署(Deploy)”,查看可用的選項(xiàng),然后就能直接在瀏覽器中測試你的模型了。要共享給他人,發(fā)送一個(gè)URL就行。
測試素材可以直接用你測試集里的圖片,也可以上傳新的圖片或視頻,或者粘貼YouTube鏈接、直接用攝像頭。
全部結(jié)束!是不是還不麻煩?
趕緊去檢驗(yàn)一番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/