数据集说明
数据集来自工业相机采集 10 张原始图像,然后通过 OpenMV 工具软件数据增强以后得到 170 张,基于 OpenMV 完成数据标注
其中 150 张作为训练集,20 张作为验证集,完成数据集制作以后,图像数据如下:
模型训练
安装 YOLOv8 与 YOLO11 框架
pip install ultralytics
YOLOv8n 训练命令行
yolo train data=nut_dataset.yaml model=yolov8n.pt epochs=25 batch=4
YOLO11n 训练命令行
yolo train data=nut_dataset.yaml model=yolo11n.pt epochs=25 batch=4
结果对比
针对我当前这种需求,保持数据集,参数完全一致的情况下,对比如下:
YOLOv8 训练结果截图如下
YOLO11 训练结果截图如下
可以看出 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
执行推理运行 YOLO11
都导出了 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 推理
YOLO11 推理
END
作者:gloomyfish
来源:OpenCV学堂
推荐阅读
- OrientedFormer: 基于 Transformer 的定向目标检测新框架 !
- CUDA-MODE课程笔记16讲通过CUDA C++核心库把llm.c移植为llm.cpp
- 基于 chunked prefill 理解 prefill 和 decode 的计算特性
- SGLang 后端原文解析
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区嵌入式 AI 专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。