YOLOv8已至,精度大漲!教你如何在自定義資料集上訓練它
2023-01-14由 量子位 發表于 林業
計算機判讀是什麼工作
豐色 發自 凹非寺
量子位 | 公眾號 QbitAI
很快啊——
目標檢測經典模型
YOLO的第八個版本
就已經發布了。
這次升級不少,包括命令列介面、Python API、backbone結構等,精度相比YOLOv5高了一大截(速度官方還沒公佈)。
下面是網友實測,幾個不同規模的變體在目標檢測、例項分割和影象分類三項任務上的漲點最高達到了
33.21%
。
不知道YOLOv8這一出,v5版本還會“苟”多久?
oh我們還發現已經有人用它在
自定義資料集
上完成了一波訓練,效果是這樣滴:
這精準度和穩定性,讓網友狠狠誇讚了一波。
具體怎麼玩?我們把教程也搬來了。
在自定義資料集上訓練YOLOv8
正式教程開始之前,我們還是先來認識一下這個新版本。
它的出品公司還是
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 YOLOmodel = 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(推薦)
or
>git clone https://github。com/ultralytics/ultralytics>cd ultralytics>pip install -e ultralytics
2、然後開始構建自定義資料集。
為了不讓這個過程那麼痛苦和耗時,我們可以用上Roboflow這個工具(本教程也是由它提供的)。
操作步驟如下:
(1)建立賬戶,新建專案,專案型別選擇“目標檢測(Object Detection)”。
(2)上傳圖片將資料集匯入到專案之中。如果你沒有準備資料集,可以用它們官方提供的(從Roboflow Universe中下載)。
如果你的圖片已經帶標註,系統可以自動讀取;如果沒有,可以用它提供的這個非常快捷的標註工具現標。
(3)然後就能生成資料集了。“預處理”和“資料增強”兩個選項可以勾上,讓你的模型魯棒性更強。
(4)現在我們就擁有了自己的一個託管資料集,將它匯出就能直接載入到電腦中進行訓練了。
記住從Roboflow Universe中下載資料集時選擇“YOLO v5 PyTorch”格式,然後在彈出的視窗中看到一段程式碼,簡單修改各個引數即可。
from roboflow import Roboflowrf = Roboflow(api_key=‘YOUR_API_KEY’)project = rf。workspace(‘WORKSPACE’)。project(‘PROJECT’)dataset = project。version(1)。download(‘yolov8’)
3、開始訓練
使用下面的命令將資料集下載片段(snippet)貼上到你的YOLOv8 Colab notebook中,開始訓練。
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!