上几篇文章分别对比了Halcon深度学习分类模型的框架,例子的详细分析,以及在Mnist上的应用等。想必大家已经对Halcon深度学习的分类原理基本掌握,是不是有点兴奋?是不是想要在工业缺陷检测上小试牛刀?作为一名视觉工程师,当然按捺不住内心的激动,想要应用在平时传统算法检测需要费九牛二虎之力的产品检测上。那么接下来将会详细介绍Halcon 深度学习分类之工业缺陷检测流程。
说明:产品原图不方便展示,敬请谅解。

制作自己的样本集

要想训练网络,首先得制作自己的数据集。水果分类中一共5个类别,Mnist分类中,一共10个类别。本例子我只想检测缺陷有无,所以只需2类即可(0代表OK,1代表NG)。
到这里,有的童鞋肯定会有这样的顾虑,深度学习需要大量的训练样本,但缺陷样品很难搜集,样本集不丰富。所以要想办法丰富训练样本,我根据同一个缺陷位置上下左右间隔固定位置抠图(64 x 64)保证每个负样本不重复,且抠的图均包含缺陷信息,这样样本数就会大大增加。正样本(背景)我间隔旋转角度随机获取(我的产品是圆环状),保证样本的丰富性。选择的正、负样本比例为5:1(正样本12000张,负样本2400张)。(这部分需要自己写脚本实现,要不然手动抠图,那估计要疯)
在这里插入图片描述
正样本部分截图
在这里插入图片描述
负样本部分截图
在这里插入图片描述
下图展示的是两种缺陷类型。为了丰富图像库,根据上述的描述方式,分别获取两种不同缺陷的负样本。从图中可以看出,每个样本都包含缺陷特征,但不重复。
在这里插入图片描述

图像预处理

这部分和Mnist应用一样,没有进行额外的处理。

网络参数均和Mnist一样,由于数据量比较大,训练速度慢的有点感人。

这部分依然需要自己写脚本,将要测试的图像进行切块处理(和训练样本大小一致64 x 64)。由于是检测缺陷有无,所以切块样本集只要涵盖整张测试图像即可,这样可以节约检测时间。当然如果对节拍要求不严格,完全可以用分类网络将缺陷边界分割出来,只不过切块方式是逐像素的。
下图代码部分是检测缺陷脚本,输入一张相机采集图,输出NGOK,如果NG则输出缺陷区域。
在这里插入图片描述

部分结果截图展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
误检漏检是避免不了的,比如脏污误检成缺陷,部分漏检。这时候我们可以将误检区域抠出来丢到正样本中去,漏检区域丢到负样本中,重新训练。通过逐渐优化网络,最终会得到一个满意的Model。

这个例子代码和上一篇的Mnist应用代码大同小异,除了样本制作以及测试脚本不同外,其他部分一样。

上一篇:Halcon 深度学习分类之Mnist应用

https://blog.csdn.net/qq_18620653/article/details/106043671

前言上两篇文章分别介绍了Halcon深度学习的框架,例子的详细分析,以及在Mnist上的应用等。通过这两个例子的上手,想必大家已经对Halcon深度学习的分类原理基本掌握。是不是有点兴奋?是不是想要在工业缺陷检测上小试牛刀?作为一名视觉工程师,当然按捺不住内心的激动,想要应用在平时传统算法检测需要费九牛二虎之力的产品检测上。那么接下来将会详细介绍Halcon 深度学习分类之工业缺陷检测流程。说明:产品真实图像不方便展示,敬请谅解。制作自己的训练样本要想训练网络,首先得制作自己的数据集。水果分类中一共 get_system ('example_dir', PathExample) * Give all folders that contain images. ImageBaseFolder := PathExample + '/images/food/' RawImageFold.. 缺陷检测 是视觉需求中难度最大一类需求,主要是其稳定性和精度的保证。首先常见缺陷:凹凸、污点瑕疵、划痕、裂缝、探伤等。 缺陷检测 算法不同于尺寸、二维码、OCR等算法。后者应用场景比较单一,基本都是套用一些成熟的算子,所以门槛较低,比较容易做成标准化的工具。而 缺陷检测 极具行业特点,不同行业的缺陷算法迥然不同。随着 缺陷检测 要求的提高, 机器学习 深度学习 也成了缺陷领域一个不可或缺的技术难点。 传统算法检测缺陷:调试难度大,容易在检测不稳定情况下反复调参,且复杂缺陷误测多,兼容性差 机器学...
目录前言一、准备1、准备 缺陷检测 所需图片1.1、images文件夹:3种类型图片1.2、divisionImages文件夹:3种类型图片(用于分割背景)二、编写代码1、设置输入输出路径2、设置参数3、处理图片、拆分4、预处理数据集5、测试 最近学习 深度学习 时的一些总结和看法,参照 深度学习 的自带案例(segment_pill_deep_learning_1_preprocess.hdev) 1、准备 缺陷检测 所需图片 1.1、images文件夹:3种类型图片 每个类型中分为3种:conta
深度学习 Halcon 中GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢,通过设置硬件参数的解决方法 在训练自己模型的时候,会遇到GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢的问题。这个问题一方面是由于硬件没有设置到最佳工作状态,另一方面是代码中参数没有设置好。最近在跑 Halcon DL遇到这个问题,而 Halcon 不像开源的几个框架那样自由,代码封装的比较多。所以遇到这种问题,只能在参数最优的情况下,通过设置硬件参数来提升性能。 当然,在跑DL之前,无论什么框
2. 将图片打上标签:使用 深度学习 分类 模型对原始数据进行标签处理,包括设置输入路径、方法、图片路径、图片标签等。 3. 将图片处理为 分类 模型所需要的图片:将原始图片处理为 分类 模型所需的图片格式。 4. 将图片的数据集进行拆分:对处理后的图片数据集进行拆分,包括训练集、验证集和测试集。 5. 设置 分类 模型所需的参数和环境:根据模型的要求设置图片的参数,包括图片大小、通道数和灰度值范围等。 6. 重新生成一个新的 分类 模型:根据设置的参数和环境重新生成一个新的 分类 模型。 7. 训练:使用生成的 分类 模型对训练集进行训练。 8. 验证:使用生成的 分类 模型对验证集进行验证。 9. 测试:使用生成的 分类 模型对测试集进行测试。 具体的代码实现和使用方法可以参考 Halcon 的官方文档或者相关教程。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [ Halcon 深度学习 (一): 分类 ](https://blog.csdn.net/qq_41373415/article/details/115544750)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]