Yolov8目标检测

Yolov8目标检测


一、准备数据集

Yolov8只支持yolo格式的数据,所以,需要将数据集格式调整为

datasets
     |
      images
            |
            train
            	|
            	000000.jpg
            	000001.jpg
            test
            	|
            	100000.jpg
            	100001.jpg
       labels
            |
             train
            	|
            	000000.txt
            	000001.txt
            test
            	|
            	100000.txt
            	100001.txt

二、源码下载配置

2.1 下载库

pip install ultralytics

2.2 修改配置

新建一个模型配置文件yolov8.yaml,里面添加数据路径和类别:

train: "/home/dxfcv/workspace/sunsirui/label/dataset/train/images"
val: "/home/dxfcv/workspace/sunsirui/label/dataset/test/images"
nc: 3
names: ["cement","metal","plastics"]

2.3 训练

具体参数可参看链接

yolo task=detect mode=train model=yolov8s.pt data=yolov8.yaml batch=8 epochs=100 imgsz=640 workers=16 device=0

训练完会生成一个文件夹存放所有结果

2.4 验证

yolo task=detect mode=val model=runs/detect/train/weights/best.pt data=yolov8.yaml device=0

2.5 测试

yolo task=detect mode=predict model=runs/detect/train/weights/best.pt source=/home/dxfcv/workspace/sunsirui/label/dataset/images device=0

在生成的predict文件夹下就能看到效果了(像标注的效果)

2.6 模型导出

yolo task=detect mode=export model=runs/detect/train/weights/best.pt format=onnx

2.7 本地测试

使用不同方式(比如opencv)调图片去检测,结果会在对应文件夹下出现

from ultralytics import YOLO
from PIL import Image
import cv2
 
model = YOLO("/home/dxfcv/workspace/sunsirui/label/dataset/runs/detect/train/weights/best.onnx")
# accepts all formats - image/dir/Path/URL/video/PIL/ndarray. 0 for webcam
# results = model.predict(source="0")
# results = model.predict(source="folder", show=True) # Display preds. Accepts all YOLO predict arguments
 
# # from PIL
# im1 = Image.open("bus.jpg")
# results = model.predict(source=im1, save=True)  # save plotted images
 
# from ndarray
im2 = cv2.imread("/home/dxfcv/workspace/sunsirui/label/dataset/images/camera2_200025.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # save predictions as labels
 
# from list of PIL/ndarray
# results = model.predict(source=[im1, im2]

猜你喜欢

转载自blog.csdn.net/qq_37249793/article/details/131975060