0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OpenCV学堂 来源:OpenCV学堂 2023-08-10 11:35 次阅读

YOLOv8是YOLO系列模型的最新王者,各种指标全面超越现有对象检测与实例分割模型,借鉴了YOLOv5、YOLOv6、YOLOX等模型的设计优点,全面提升改进YOLOv5的模型结构基础上实现同时保持了YOLOv5工程化简洁易用的优势。

7df4028a-372a-11ee-9e74-dac502259ad0.png

数据准备

工业码(DataMatrix码简称DM码)检测与识别是机器视觉最常用得场景之一,从DM码的定位、质量评估、预处理、检测与ROI截取、解析识别。每个环节都有很多技术细节,以DM码的发现于定位来说,早期都是基于传统的图像分析与寻边算法实现DM码定位,现在基本上都是基于轻量化的深度学习对象检测模型来完成。本文的数据集是来自一个网友的贡献,它的DM码图像。

传统方法分析相对来说比较容易收到其它因素干扰,导致解码率不高,因此我从他给我的2000多张图像中挑选出200张,用OpenMV做好了标注,制作生成了数据集。

7e2df1e8-372a-11ee-9e74-dac502259ad0.png

模型训练与量化部署

然后基于YOLOv8对象检测模型,使用迁移学习方式训练了一个DM码检测模型,训练结果如下:

7e4b30e6-372a-11ee-9e74-dac502259ad0.png

7e662ab8-372a-11ee-9e74-dac502259ad0.png

把训练生成的best.pt模型导出ONNX格式模型,再进一步量化为INT8,最终模型大小只有3MB,在端侧板子上都可以部署运行,然后运行测试。

采用ZXING开源解码结果

这其中最重要的就是定位查找DM码,使用YOLOv8训练一个自定义对象检测模型,可以很轻松的搞定,然后基于ROI使用OpenCV完成预处理之后即可解码。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47689
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40786
  • 定位检测
    +关注

    关注

    0

    文章

    4

    浏览量

    8201
  • 迁移学习
    +关注

    关注

    0

    文章

    72

    浏览量

    5502

原文标题:实战 | YOLOv8+OpenCV 实现DM码定位检测与解析

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码

    前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速
    的头像 发表于 03-13 16:01 1658次阅读

    opencv实现二维检测 - 2.opencv源码解析

    二维编程语言行业芯事经验分享
    蒙特卡洛家的树
    发布于 :2022年03月09日 17:37:50

    DM368移植opencv

    请问一下,想移植opencvDM368上去做拍照功能(截图),不知能否跑起来?
    发表于 06-21 16:02

    【飞凌嵌入式OKMX8MP-C 开发板试用体验】OpenCV-DNN移植&使用体验(基于YOLOV3模型识别物体)

    接引用了。使用OpenCV检测摄像头输入图像并显示的Demo非常简单:void * Thread_Opencv(void *arg){ // IplImage* img = cvLoadImage
    发表于 02-21 00:22

    如何利用OpenCV实现一种轻量级目标破检测模型呢

    5代仓库里有一个letterbox函数实现的,在letterbox函数使用opencv库里的resize和copyMakeBorder就可以实现保持高宽比的resize,这种方法简洁
    发表于 09-21 16:48

    YOLOv5网络结构解析

    1、YOLOv5 网络结构解析  YOLOv5针对不同大小(n, s, m, l, x)的网络整体架构都是一样的,只不过会在每个子模块中采用不同的深度和宽度,  分别应对yaml文件中
    发表于 10-31 16:30

    YOLOv5全面解析教程之目标检测模型精确度评估

    ):分类器把负例正确的分类-预测为负例(yolov5中没有应用到)  yolov5中没有应用TN的原因: TN代表的是所有可能的未正确检测到的边界框。然而在yolo在目标检测任务中,每
    发表于 11-21 16:40

    使用Yolov5 - i.MX8MP进行NPU错误检测是什么原因?

    的时机(yolov5s 模型,输入为 448x448 ~ 70ms)。 现在我正在尝试使用 Yolov5(uint8 量化),但我尝试使用不同的预训练模型获得相同的行为,在 CPU 上进行良好
    发表于 03-31 07:38

    openCV边缘检测原理是什么?

    openCV是通过什么原理来实现边缘检测
    发表于 10-10 06:21

    DM6446的车牌定位快速算法实现与优化

    DM6446的车牌定位快速算法实现与优化
    发表于 10-26 15:27 1次下载
    <b class='flag-5'>DM</b>6446的车牌<b class='flag-5'>定位</b>快速算法<b class='flag-5'>实现</b>与优化

    使用OpenCV+ONNXRuntime部署YOLOV7目标检测

    使用opencv部署的程序,有一个待优化的问题。onnxruntime读取.onnx文件可以获得输入张量的形状信息, 但是opencv的dnn模块读取.onnx文件无法获得输入张量的形状信息,目前是根据.onnx文件的名称来解析
    的头像 发表于 07-23 11:31 9064次阅读
    使用<b class='flag-5'>OpenCV</b>+ONNXRuntime部署<b class='flag-5'>YOLOV</b>7目标<b class='flag-5'>检测</b>

    YOLOv5在OpenCV上的推理程序

    YOLOv5官方给出的YOLOv5在OpenCV上推理的程序相对来说是比较通俗易懂的,条理清晰,有基本的封装,直接可用!但是我也发现,模型的推理时间跟前后处理的时间相差无几,特别是当视频流有多个
    的头像 发表于 11-02 10:16 1308次阅读

    YOLOv5全面解析教程:计算mAP用到的numpy函数详解

    /Oneflow-Inc/one-yolov5/blob/734609fca9d844ac48749b132fb0a5777df34167/utils/metrics.py)中。这篇文章是《YOLOv5全面解析教程》四,目标
    的头像 发表于 11-21 15:27 2153次阅读

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

    自从YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都无法再加载导出ONNX格式模型了,只有OpenCV4.7以上版本才可以支持最新版本
    的头像 发表于 09-27 11:07 702次阅读
    <b class='flag-5'>OpenCV4.8+YOLOv</b>8对象<b class='flag-5'>检测</b>C++推理演示

    基于OpenCV DNN实现YOLOv8的模型部署与推理演示

    基于OpenCV DNN实现YOLOv8推理的好处就是一套代码就可以部署在Windows10系统、乌班图系统、Jetson的Jetpack系统
    的头像 发表于 03-01 15:52 441次阅读
    基于<b class='flag-5'>OpenCV</b> DNN<b class='flag-5'>实现</b><b class='flag-5'>YOLOv</b>8的模型部署与推理演示