一、模型介绍
- 模型基于 yolov8
- 数据集采用SKU-110k,这数据集太大了十几个 G,所以只训练了 10 轮左右就拿来微调了
- 原木数据微调:纯手工标注 200 张左右原木图片,训练 20 轮的效果
PS:因为训练时间比较长 Google 的 Colab 老是自动断开,所以一直在 CPU上训练,截止文章发布已经连续训练了 24h,平均 1h40m 一轮(GPU 估计也就 5 分钟左右)
如果想要更高精度的模型,可以关注领取
10 轮SKU-110k + 20 轮原木微调模型下载地址:
https://wwxd.lanzouu.com/ilUyp1gd9dfi
密码:a67b下载完把模型格式修改为 pt
二、模型测试
- 废话不多说上代码:
import cv2
from ultralytics import YOLO
# 加载模型
model = YOLO('原木.pt') # 预训练的 YOLOv8n 模型
image_url = '123.jpeg'
# 在图片列表上运行批量推理
results = model([image_url]) # 返回 Results 对象列表
image = cv2.imread(image_url) # 替换成实际图像路径
# 处理结果列表
for result in results:
boxes = result.boxes # 边界框输出的 Boxes 对象
probs = result.probs # 分类输出的 Probs 对象
boxes_np = boxes.xyxy.numpy()
for i in range(boxes_np.shape[0]):
box_coordinates = boxes_np[i]
x1, y1, x2, y2 = box_coordinates.astype(int)
image = cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绿色框
# 计算边界框中心点坐标
center_x = (x1 + x2) // 2
center_y = (y1 + y2) // 2
# if i == boxes_np.shape[0]-1:
cv2.putText(image, str(i + 1), (center_x, center_y), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2,
cv2.LINE_AA) # 红色数字
# 创建窗口并展示图像
cv2.namedWindow('Bounding Boxes', cv2.WINDOW_NORMAL)
cv2.imshow('Bounding Boxes', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、模型效果
此外,也可以考虑对圆管进行微调,相信在相同数据集下,模型效果会更加出色。