YoloV5ForVisionMaster
通过自定义算法模块,实现YoloV5集成到VisionMaster,拓展VM算法模块。

一:YOLOv5简介:

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示:

输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;
基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;
Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构;
Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。


二:思路

1.YOLOv5环境搭建:百度

2.数据集标注及训练:百度

3.模型训练:以上两步完成的情况下,一键训练

4模型导出:pt模型转onnx模型,以实现opencv的dnn模块推理,一键导出

5.C++封装动态链接库

6.VM算法模块调用封装好的动态链接库

7.模块打包测试


三:过程

C++封装动态链接库:

1.vs下安装配置opencv

2.封装推理函数DLL  以下给出关键推理部分

void YoloV5::detect(const cv::Mat& mat, std::vector<Result>& detected_boxes,
float score_threshold, float iou_threshold)
{
if (mat.empty()) return;
// this->transform(mat);
const int input_height = input_node_dims.at(2);
const int input_width = input_node_dims.at(3);
int img_height = static_cast<int>(mat.rows);
int img_width = static_cast<int>(mat.cols);

// resize & unscale
cv::Mat mat_rs;
YoloV5ScaleParams scale_params;
this->resize_unscale(mat, mat_rs, input_height, input_width, scale_params);

// 1. make input tensor
Ort::Value input_tensor = this->transform(mat_rs);
// 2. inference scores & boxes.
auto output_tensors = ort_session->Run(
Ort::RunOptions{ nullptr }, input_node_names.data(),
&input_tensor, 1, output_node_names.data(), num_outputs
);

//3. rescale & exclude & nms
generate_bboxes_nms(scale_params, detected_boxes, output_tensors, score_threshold, iou_threshold, img_height, img_width);
}

3.封装其他函数,加载模型和类别,设置阈值等

VM算法模块调用封装好的动态链接库

1.借助工具生成三个工程

2.配置简单界面

3.调用已封装好的动态链接库:

    1.复制所需dll到VM的公共文件夹下

    2.编写算法模块

    3.调试

  (这部分站内已有详细教程)


四:结果(附件有测试视频)

附件:
版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇

浅谈VsionMaster:用脚本,做一些好玩的东西。

下一篇

浅谈VsionMaster:用脚本最简代码,调用halcon

评论请先登录 登录
全部评论 6

MARK

2024-03-26 00:58:24 未知地区
回复

调试这块怎么弄

2023-06-03 16:24:09 未知地区
回复

这个牛皮

2023-04-14 10:14:26 未知地区
回复

感谢楼主,请问VM算法模块调用封装好的动态链接库这部分有教程吗?

2023-03-21 10:59:54 未知地区
回复

文章封面成功吸引了我😂😂😂😂笑死。。。。

2023-02-07 09:39:23 未知地区
回复

感谢楼主的技术思路分享,mark一下,以后用得上。

2023-02-06 08:10:38 未知地区
回复
  • 1
Lv.0
0
关注
7
粉丝
2
创作
17
获赞
所属专题
  • 自定义算法模块添加多幅图像输入的方法
  • 自定义算法模块点集输入、输出实现方法
  • 自定义算法模块输出和显示矩形检测框的方法
  • 自定义算法模块获取输入直线的方法
  • 自定义算法模块打印日志的方法
  • YoloV5ForVisionMaster
  • Sauvola二值化处理在图像处理应用的优势介绍分析
相关阅读
  • VM4.4更新亮点
    2024-04-12 浏览 0
  • 探寻机器视觉新星|第二届“启智杯”机器视觉设计大赛获奖名单公布
    2024-04-08 浏览 0
  • 第二届启智杯—光伏电池片质检视觉方案设计
    2024-04-15 浏览 0
  • 双车联动调试案例-华工中试基地
    2024-04-28 浏览 0
  • VM虚拟机部署欧拉系统及磁盘扩容
    2024-04-25 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器