北京網(wǎng)站建設(shè)價(jià)格網(wǎng)站注冊(cè)查詢
YOLOv8訓(xùn)練自己的目標(biāo)檢測(cè)數(shù)據(jù)集
目錄標(biāo)題
- 源碼下載
- 環(huán)境配置
- 安裝包
- 訓(xùn)練自己的數(shù)據(jù)集
- 數(shù)據(jù)集文件格式
- 數(shù)據(jù)集文件配置
- 超參數(shù)文件配置
- 訓(xùn)練數(shù)據(jù)集
- 命令行訓(xùn)練
- 腳本.py文件訓(xùn)練
- 進(jìn)行detect
- 顯示detect的效果
源碼下載
YOLOv8官方的GitHub代碼,同時(shí)上面也有基礎(chǔ)環(huán)境的配置要求以及代碼運(yùn)行的教程。下載后的源碼文件名應(yīng)該是ultralytics-main。
環(huán)境配置
這里可參考YOLOv5,YOLO v7的代碼環(huán)境配置。
安裝包
需要額外的安裝一些包,因?yàn)楹竺嫘枰玫健?/p>
pip install ultralytics
訓(xùn)練自己的數(shù)據(jù)集
數(shù)據(jù)集文件格式
- 數(shù)據(jù)集文件格式是txt的yolo格式,整體數(shù)據(jù)集文件格式如下:
- 同時(shí)images下的文件格式如下: train(訓(xùn)練集圖片),val(測(cè)試集圖片),test(測(cè)試集圖片)
- 同時(shí)labels下的文件格式如下: train(訓(xùn)練集圖片對(duì)應(yīng)的標(biāo)簽),val(測(cè)試集圖片對(duì)應(yīng)的標(biāo)簽),test(測(cè)試集圖片對(duì)應(yīng)的標(biāo)簽)
- 整體數(shù)據(jù)集格式文件如下
├── linhuo
│ ├── images
│ │ ├── train
│ │ ├── val
│ │ ├── test
│ ├── labels
│ │ ├── train
│ │ ├── val
│ │ ├── test
數(shù)據(jù)集文件配置
數(shù)據(jù)集文件配置的位置如下:
ultralytics-main/ultralytics/cfg/datasets/
在該文件下創(chuàng)建數(shù)據(jù)自己數(shù)據(jù)集文件配置的yaml文件,這是我創(chuàng)建自己數(shù)據(jù)集配置的yaml文件。同時(shí)yaml文件內(nèi)要說(shuō)明以下內(nèi)容:
- 索引到數(shù)據(jù)集文件images下的train、val
- 數(shù)據(jù)集標(biāo)注的類別數(shù)目
- 數(shù)據(jù)集標(biāo)注的類別名稱
- 如我的數(shù)據(jù)集只有1類, 標(biāo)注類別是fire
超參數(shù)文件配置
超參數(shù)文件配置的路徑:
ultralytics-main/ultralytics/cfg/default.yaml
具體的超參數(shù)說(shuō)明可以看看網(wǎng)上的教程,這里主要配置model,data,patience。
- model: 可以配置yolov8n.pt, yolov8n.yaml(這里填寫(xiě)配置yolov8n.pt, yolov8n.yaml的具體路徑),如果配置yolov8n.yaml需要將類別數(shù)目改為1。
model: './weights/yolov8n.pt' # (str, optional) path to model file, i.e. yolov8n.pt, yolov8n.yaml
- data: 這里是填寫(xiě)數(shù)據(jù)集文件配置的地址。
data: 'ultralytics/cfg/datasets/linhuo.yaml' # (str, optional) path to data file, i.e. coco128.yaml
- patience: epochs to wait for no observable improvement for early stopping of training(就是多少次沒(méi)有訓(xùn)練一個(gè)好的結(jié)果就會(huì)提前停止訓(xùn)練)。
訓(xùn)練數(shù)據(jù)集
命令行訓(xùn)練
- task=detect:目標(biāo)檢測(cè)
- mode=train:訓(xùn)練模式
- model=yolov8n.pt:模型預(yù)訓(xùn)練權(quán)重的地址,我是默認(rèn)放到ultralytics-main目錄下
yolo task=detect mode=train model=yolov8n.pt data=ultralytics/cfg/datasets/linhuo.yaml batch=16 epochs=500
腳本.py文件訓(xùn)練
- 新建立一個(gè)python腳本文件 mytrain.py
代碼為:直接運(yùn)行即可。
from ultralytics import YOLO
# 權(quán)重網(wǎng)絡(luò)模型加載權(quán)重模型
model = YOLO('ultralytics/cfg/models/v8/yolov8.yaml').load('./weights/yolov8n.pt') # build from YAML and transfer weights# Train the model: 數(shù)據(jù)集配置yaml
results = model.train(data='ultralytics/cfg/datasets/linhuo.yaml', epochs=500, batch=16)
進(jìn)行detect
- 新建立一個(gè)python腳本文件 mypre.py上面圖片有
from ultralytics import YOLO
model = YOLO('runs/detect/train/weights/best.pt')# 檢測(cè)的圖片的路徑
source = 'ultralytics/assets/2708.jpg'# 預(yù)測(cè)結(jié)果
results = model.predict(source, save=True)