前言
前一篇说明 YOLO v8 的安装与预测,预设的模型可辨识COCO资料集的80种物件类别,如果要辨识其他物件类别,就必须準备自订资料集(Custom dataset),训练专属的模型。
準备自订资料集
Roboflow提供许多公用资料集,适用各种类别的辨识,涵盖物件侦测(object detection)、分类(classification)、实例分割(instance segmentation)及语义分割(semantic segmentation),这里採用『美元纸钞』(Dollar bill)资料集,包括1、5、10、20、50元的正反面的图片,共10个类别,部分图片含多张纸钞。
自这里下载后,解压缩至一目录,假设为 Dollar_Bill,需先进行以下前置处理:
在Dollar_Bill目录建一子目录datasets,并将train、valid、test目录移放在datasets下。修改data.yaml,将前3行的『..』改为『.』。模型训练
在Dollar_Bill目录执行下列指令,可进行模型训练:
yolo task=detect mode=train model=yolov8s.pt data=./data.yaml epochs=5 imgsz=640
笔者PC配备GTX1050Ti GPU,每一执行週期(Epoch)约训练3分钟,5个执行週期约15分钟,準确率(mAP)还不错。
训练成功后,最佳模型会存为 Dollar_Bill\runs\detect\train\weights\best.pt,另外还有一个最新的模型last.pt。
模型评分
在Dollar_Bill目录执行下列指令,可进行模型训练:
yolo task=detect mode=val model=./runs/detect/train/weights/best.pt data=./data.yaml
结果如下,準确率(mAP)还不错:
侦测图片的结果存在 Dollar_Bill/runs/detect/val目录,可观察每一个jpg档案,大部分都可把纸钞加框,结果如下:
预测
在Dollar_Bill目录执行下列指令,可进行模型预测,以下指令预测./datasets/test/images目录下所有档案:
yolo task=detect mode=predict model=./runs/detect/train/weights/best.pt conf=0.25 source=./datasets/test/images
结果如下:
也可以使用前一篇的程式:
from ultralytics import YOLOfrom PIL import Imageimport cv2model = YOLO("./runs/detect/train/weights/best.pt")# from PILim1 = Image.open(r".\Dollar_Bill\datasets\test\images\IMG_1909_jpg.rf.3f2bde8dc899b141a4361677e55242e4.jpg")# save=True:存档results = model.predict(source=im1, save=True)
结果会存档位置预设在 runs\detect\predict 资料夹下。
结语
整体而言,YOLO v8 的测试比前面版本方便,训练时间也缩短很多,準确率也不错,无特殊异常状况需处理。
除了物件侦测外,YOLO v8 还提供分类(Classification)、语义分割(Semantic segmentation)及物件追蹤(Object tracking)功能,可参阅官方文件,下次再试试看。
以下为工商广告:)。
深度学习PyTorch入门到实战应用影音课程:
PyTorch:
开发者传授 PyTorch 秘笈
TensorFlow:
深度学习 -- 最佳入门迈向 AI 专题实战。