本文看了YOLOv8已至,精度大涨!教你如何在自定义数据集上训练它 来的灵感,
先去Roboflow: Give your software the power to see objects in images and video注册一个账号,按照上文的内容进行图片注释和创建,你也可以下载别人已经弄好的图片:
环境和数据准备工作
点击然后下载滑动验证码图片
如果你安装了coda环境的话,可以创建一个环境,没有的忽略
conda create --name yolo python=3.10 #创建环境
conda activate yolo #进入环境
安装YOLOv8
pip install ultralytics
安装roboflow
pip install roboflow
新建目录yolo8
下载yolov8模型:yolov8n.pt
把下载好的验证码图片文件解压后放入captcha 目录,解压后的文件应该有以下内容:
训练
在终端cd 到yolo8目录下,然后运行训练:
yolo task=detect \
mode=train \
model=yolov8s.pt \
data=/chat/yolo8/captcha/data.yaml \
epochs=100 \
imgsz=640
model和data一定要指定正确,不然模型会重新下载
用测试集验证模型
yolo task=detect \
mode=val \
model=/chat/yolo8/runs/detect/train2/weights/best.pt \
data=/chat/yolo8/captcha/data.yaml
model就是刚刚运行后生成的模型,一般在你当前目录下runs
使用自定义模型进行预测
创建一个images目录,把一些你想要验证的图片放上去,然后运行
yolo task=detect \
mode=predict \
model=/chat/yolo8/runs/detect/train2/weights/best.pt \
conf=0.25 \
source=./images
结果也是在runs/detect/predict下面
用python代码进行验证,后续可以写接口
import cv2
import matplotlib.pyplot as plt
from ultralytics import YOLO
# 加载模型
model = YOLO('/chat/yolo8/runs/detect/train2/weights/best.pt')#训练好的模型地址
# 在图片列表上运行批量推理
results = model(['jOvJH7qa.png'])
# 遍历每个结果对象
for i, result in enumerate(results):
# 获取原始图片和边界框
orig_img = result.orig_img
boxes = result.boxes
# 为每个检测到的对象绘制边界框
for box in boxes.xywh:
print(box)
x, y, w, h = box
x1, y1, x2, y2 = int(x - w / 2), int(y - h / 2), int(x + w / 2), int(y + h / 2)
cv2.rectangle(orig_img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# 保存修改后的图片
plt.imshow(cv2.cvtColor(orig_img, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.savefig(f'detected_{i}.png', bbox_inches='tight', pad_inches=0.0)
plt.close()