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