石鑫华视觉论坛

 找回密码
 注册会员
查看: 339|回复: 0

[原创] LabVIEW调用Halcon实现深度学习之DeepOCR

[复制链接]
  • TA的每日心情
    开心
    昨天 21:00
  • 签到天数: 3412 天

    连续签到: 14 天

    [LV.Master]2000FPS

     楼主| 发表于 2024-8-26 12:31:59 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

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

    x
    LabVIEW调用Halcon实现深度学习之DeepOCR
    视频号:
    下载.png
    B站:
    下载 (1).png

    在LabVIEW2018版中,NI引入了深度学习功能,官方也提供了一个深度学习的例子——目标缺陷检测:
    image1.png
    DeepLearning Object Detection
           范例中虽然可以调用深度学习模型(OpenVINO为xml格式或TensorFlow为pb格式),但是也仅仅只是调用模型罢了,也就是能用深度学习的方法,来实现推理过程。但是模型的的训练,则完全无法实现,即没有提供标注工具,也没有提供相应的范例。哪怕是将一些第三方模型转换为LabVIEW中能支持的xml、pb模型的转换工具也没有。所以,实际上LabVIEW官方的深度学习的功能是很鸡肋的。只能用官方的模型看看运行效果,确实可以检测到目标的缺陷。至于验证一下其他项目,那就抱歉了,实现不了。要训练模型,就得换到Python等环境中去。话说回来,如果我能在Python中进行训练了,那我为什么不直接在Python中推理吗?又何必再换到LabVIEW中来实现呢,简直多此一举。而要在Python中训练,那学习成本相对来说就比较高了,需要学习OpenVINO/TensorFlow等库,还至少需要学习一门文编程语言,如Python之类的。当然了,如果预算允许,那也可以买一些LabVIEW的第三方工具包,现在也有一些第三方的开发了一些工具包,可以训练推理,比NI官方的效果要好,不过好像都是收费工具包。
           深度学习经过了这么多年发展,石鑫华视觉也只是看个热闹,没有怎么研究过。这次在更新教程《LabVIEW HALCON图像处理入门教程(2024Q3)》时,主要就是更新了一下深度学习方面的知识点。因为没有太多的时间精力再去学习OpenVINO/TensorFlow/Python等,就没有沿着NI官方的路线研究深度学习。这里的LabVIEW深度学习的实现,则是通过调用Halcon来实现的。在之前的《LabVIEW HALCON图像处理入门教程》《LabVIEW HALCON图像处理入门教程(第二版)》等教程中,对于LabVIEW调用Halcon已经驾轻就熟了,所以这里再引入深度学习的功能,则要变得简单很多。通过研究学习,确实也是这样。《LabVIEW HALCON图像处理入门教程(2024Q3)》增加了一个基于深度学习的Deep OCR的例子,从开始创作到任务基本完成,中间断断续续的前后花了一个多月时间,这个是完全从0到1的过程。相对来说,学习任务还是要轻松很多。
    image2.png
    使用官方模型自动识别官方图片中的字符效果1
    image3.png
    识别效果2
    image4.png
    识别效果3
    image5.png
    识别效果4
    image6.png
    识别效果5
    image7.png
    识别效果6
           Halcon官方预训练了一个字母数字的模型,效果还是非常不错的。对于大部分的英文、英文标点、数字等识别,基本上都可以轻松实现,只要图像质量不是非常差,识别都是准确的,当然,对于一些非常小且又模糊的,即使人眼看,都看不太清楚的,那就无能为力了,这种情况应该无论是谁都无法精准的识别的。
    image8.png
    使用自己训练的模型检测+识别中文字符
    image9.png
    中文模型识别字符(高分辨率图像)
    image10.png
    中文模型识别字符(低分辨率图像)
           在Halcon环境中可以使用DLT来进行标注,训练则是使用Halcon中自带的例子在HDevelop中进行处理的(为了偷懒,没有在LabVIEW中实现)。训练的模型效果就没有Halcon官方训练的模型效果好了。训练模型和数据集的大小有关系,数据集中的数据越多,训练的效果就越好,教程中也只是为了实现训练这个过程,数据相对比较少,仅使用了15幅图像进行标注训练,效果也就是上面那样的了。大部分的能够识别,少部分无法识别或识别错误。中文模型仅使用了识别训练,未处理检测训练,所以对于检测或自动的模型时,部分内容无法检测到。
    image11.png
    DLT中标注
    image12.png
    HDevelop中进行训练


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(24.09)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解2020-2024》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23/24

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-12-23 02:31

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表