爱笑的小姐姐 · 11月29日

YOLOv8 与 YOLO11 自定义数据集迁移学习效果对比

数据集说明

数据集来自工业相机采集 10 张原始图像,然后通过 OpenMV 工具软件数据增强以后得到 170 张,基于 OpenMV 完成数据标注

image.png

其中 150 张作为训练集,20 张作为验证集,完成数据集制作以后,图像数据如下:

Image

模型训练

安装 YOLOv8 与 YOLO11 框架

pip install ultralytics

YOLOv8n 训练命令行

yolo train data=nut_dataset.yaml model=yolov8n.pt epochs=25 batch=4

Image

YOLO11n 训练命令行

yolo train data=nut_dataset.yaml model=yolo11n.pt epochs=25 batch=4

Image

结果对比

针对我当前这种需求,保持数据集,参数完全一致的情况下,对比如下:

YOLOv8 训练结果截图如下

Image

Image

YOLO11 训练结果截图如下

Image

Image

可以看出 mAP(0.5)的结果都是 0.995,但是在 mAP(0.5~0.95)这个区间 YOLOv8 迁移学习效果居然比 YOLO11 迁移学习效果好那么一点点。可能我的比较不够全面,数据不够多,但是也说明针对自定义数据集的迁移学习其实 YOLOv8 跟 YOLO11 没有什么区别。

导出模型

yolo export model=nut_yolo8_best.pt format=onnx
yolo export model=nut_yolo11_best.pt format=onnx

执行推理运行 YOLOv8

Image

执行推理运行 YOLO11

Image

都导出了 ONNX 格式执行推理,发现 YOLO11 得分置信度比较高!

YOLOv8、YOLO11 ONNX 格式模型的 OpenVINO C++ 推理结果比较

cv::Mat frame = cv::imread("D:/python/my_yolov8_train_demo/31.png");
std::vector<YOLODetBox> results;

std::shared_ptr<YOLO11OpenVINODetector> detector(new YOLO11OpenVINODetector());
detector->initConfig("D:/python/my_yolov8_train_demo/nut_best.onnx", 0.25, 640, 640, false);
detector->detect(frame, results);
for (YOLODetBox dr : results) {
cv::Rect box = dr.box;
cv::putText(frame, cv::format("%s %f",classNames[dr.classId], dr.score), cv::Point(box.tl().x, box.tl().y - 10), cv::FONT_HERSHEY_SIMPLEX, .5, cv::Scalar(0, 0, 0));
}
cv::imshow("YOLO11 对象检测 + OpenVINO2023", frame);
cv::imwrite("D:/result.jpg", frame);
cv::waitKey(0);
cv::destroyAllWindows();
return 0;

YOLOv8 推理

Image

YOLO11 推理

Image

END

作者:gloomyfish
来源:OpenCV学堂

推荐阅读

欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式 AI 专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
18835
内容数
1369
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息