[三菱] OpenCV4.8 C++ 实现YOLOv8 OBB旋转对象检测 推理演示

[复制链接]
查看19856 | 回复0 | 2024-6-21 13:53:36 | 显示全部楼层 |阅读模式


点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

YOLOv8 OBB介绍
YOLOv8框架在在支持分类、对象检测、实例分割、姿态评估的基础上更近一步,现已经支持旋转对象检测(OBB),基于DOTA数据集,支持航拍图像的15个类别对象检测,包括车辆、船只、典型各种场地等。包含2800多张图像、18W个实例对象。


不同尺度的YOLOv8 OBB模型的精度与输入格式列表如下:



导出与预测
基于YOLOv8命令行推理测试:## 导出yolo export model=yolov8s-obb.pt format=onnx## 推理yolo obb predict model=yolov8n-obb.pt source=plane_03.jpg




输入与输出结构说明

基于OpenCV4.8 DNN与ONNX格式模型直接预测推理,首先看一下ONNX格式的YOLOv8-OBB输入与输出格式:


OpenCV4.8 C++ 推理演示我把YOLOv8 OBB C++推理封装成一个类YOLOv8ObbDetector,客户端调用只有引用头文件,然后三行代码即可实现YOLOv8旋转对象检测C++ 的推理,代码演示如下:#include <yolov8_obb_opencv.h>
#include <iostream>
#include <fstream>

std::string label_map = "D:/python/my_yolov8_train_demo/dotav1.txt";
int main(int argc, char** argv) {
    std::vector<std::string> classNames;
    std::ifstream fp(label_map);
    std::string name;
    while (!fp.eof()) {
        getline(fp, name);
        if (name.length()) {
            classNames.push_back(name);
        }
    }
    fp.close();
    std::shared_ptr<YOLOv8ObbDetector> detector(new YOLOv8ObbDetector());
    detector->initConfig("D:/python/my_yolov8_train_demo/yolov8s-obb.onnx", 0.4f, 1024, 1024);
    cv::Mat frame = cv::imread("D:/python/my_yolov8_train_demo/wh300.jpg");
    detector->detect(frame, classNames);
    cv::imshow("YOLOv8 旋转对象检测 + OpenCV4.8", frame);
    cv::waitKey(0);
    cv::destroyAllWindows();
    return 0;
}
运行结果如下:





扫码学习YOLOv8视频课程



推荐阅读

OpenCV4.8+YOLOv8对象检测C++推理演示

三行代码实现 TensorRT8.6 C++ 深度学习模型部署

实战 | YOLOv8+OpenCV 实现DM码定位检测与解析

好书推荐

《OpenCV应用开发:入门、进阶与工程化实践》全书共计16个章节,重点聚焦OpenCV开发常用模块详解与工程化开发实践,提升OpenCV应用开发能力,助力读者成为OpenCV开发者,同时包含深度学习模型训练与部署加速等知识,帮助OpenCV开发者进一步拓展技能地图,满足工业项目落地所需技能提升。购买请点链接:
https://item.jd.com/10092255924058.html


学习课程有专属答疑群

负责贴身答疑解惑

读者专属QQ群 :657875553

进群暗号:OpenCV4读者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则