石鑫华视觉论坛

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

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

[复制链接]
  • TA的每日心情
    慵懒
    6 小时前
  • 签到天数: 3365 天

    连续签到: 25 天

    [LV.Master]2000FPS

     楼主| 发表于 2024-9-10 15:44:06 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

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

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

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


    在之前的《LabVIEW HALCON图像处理入门教程(2024Q3)》增加了一个基于深度学习的Deep OCR的字符识别的例子。持续更新的《LabVIEW HALCON图像处理入门教程(24.09)》版本中,增加了一个基于深度学习的例子——模板匹配(DeepCounting深度计数)。这个例子同样是基于深度学习的。在深度学习的基础上,Halcon专门封装了一个HDlModelCounting (Class)深度计数的类。使用该类可以实现模板匹配功能。因为是基于深度学习的,所以效果上,比其他传统的算法,如基于灰度值、基于形状等,更容易匹配到目标。模板匹配的两个主要用途一个是用来计数,另一个是用来定位。这里基于深度学习的DeepCounting主要是用来计数。当然,要用来定位也可以,但是这个定位可能并没有传统算法那么精准。用来计数,则要实用很多,很差的特征也是可以统计数量的。
    基于深度计数的模板匹配,还可以创建多个模板,从而同时匹配多个模板,这也是一个优势。在NI视觉的模式匹配中,早期其实也是基于特征的多模板匹配,不过性能很差,速度慢,所以后面放弃了。后面基于边缘的匹配,只有单个模板的匹配。要想再实现多模板匹配,则只能调用早期的基于特征的几何匹配,效率相对比较低下。而使用Halcon中的基于深度学习的多模板DeepCounting,则轻松处理多个模板,不同比例、角度的目标,均很容易匹配上。当然了,模板越多,比例要求越精密、角度要求越精密,则匹配速度越慢。
    image1.png
    Halcon官方示例-管子
    image2.png
    Halcon官方示例-烧杯
    image3.png
    Halcon官方示例-杆子
    深度计数在HDevelop环境中同样提供了两个示例,一个deep_counting.hdev,如上面的效果所示。另一个deep_counting_wordflow.hdev如下图所示:
    image4.png
    创建模板
    image5.png
    设置最小分数
    image6.png
    匹配效果1
    image7.png
    匹配效果2
    image8.png
    匹配效果3
    通常上面的Halcon官方的两个实例,参考其实现原理,调用HDlModelCounting (Class)类中的相关算子,可以在LabVIEW中实现相同的功能:
    image9.png
    LabVIEW中实现基于深度学习的模板匹配DeepCounting
    上面的效果中,实际上是有创建三个模板,匹配结果也是有三种颜色进行描述的(模板1红色,模板2绿色,模板3蓝色……参考二值调色板的颜色定义)。再看一下管子的其他两幅图像的效果:
    image10.png
    管子图像2的效果
    image11.png
    管子图像3的效果
    基于深度学习的模板匹配,无论是单个模板,还是多个模板,不像深度OCR那样,需要采集大量的字符图像,然后进行标注训练,得到字符集。这里的模板本身都只需要一幅模板图像,在模型创建过程中,好像并不存在深度学习功能,深度计数模型创建时,根据设置的角度范围精度和比例范围精度来准备模型,在准备模型这个过程,实际上和NI视觉中的基于金字塔的模式匹配的模板创建过程是比较类似的,指定模板的角度、比例、金字塔级别等。这里的准备模型没有太多说明信息,感觉是没有涉及到太多深度学习的功能,只是一幅图像来处理,应该是没有涉及到深度学习的。但是从得到的模型文件来看,角度比例范围越大,精度越细致,则模型越大。感觉准备模型又像是有深度学习的介入。而后面的应用深度计数模型过程(搜索模板过程),好像也没有太多深度学习的介入。这个深度计数的深度学习模型,感觉上深度学习的介绍不是很深,甚至可以简单的认为是创建了多种模板、多个角度、多个比例的去在图像中搜索目标。所以这里深度计数的模板匹配比深度OCR要容易实现得多。
    image12.png
    Halcon官方示例的杆子
    image13.png
    创建一个烧杯的新模型并准备模型
    image14.png
    图像分析
    创建单个模板时,只匹配到了24个目标。所以,像上面这种图像,实际上是需要创建多个模板进行匹配的。
    image15.png
    创建包含比例的模型图像分析
    上面的效果是橙子树上的橙子进行计数的应用。创建了一个橙子的模板(原始图像中的绿色ROI是模板),然后比例范围是0.8~1.2,比例精度是0.1,这时就匹配到了10个橙子。
    image16.png
    创建多个模板
    而创建2个模板时(原始图像中画的绿色ROI即为模板图像),则匹配到了45个目标。数量有比较大的提升。
    image17.png
    苹果计数
    像水果这类的要计数,因为形状基本上都是不相同的,所以通常需要多做几个模板。而像下面这种包装类的,因为形状基本上是一样的,则通常只需要一个模板即可:
    image18.png
    香烟装箱
    image19.png
    饮料装箱
    上面这些匹配计数,可以看到数量都是很准的,但是位置上,则可能使用者差一些了,从右边ROI图像中的十字靶标来看,位置都不是很准。所以这种深度计数的方法,用于计数会更好一些,用于定位的话,返回的坐标值就不太准了。

    回复

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2024-11-1 13:21

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

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