[Halcon学习笔记]机器视觉缺陷检测常用方法对比总结

日报写手
• 阅读 3470

1、介绍

缺陷检测时机器视觉需求中最复杂难度较大的一类需求。究其原因,主要是在项目开发过程中首先要保证检测的稳定性和精度,又要实现缺陷检测的通用性,常见的缺陷:凹凸、污点瑕疵、划痕、裂缝、伤痕、毛刺等等类型种类繁杂,缺陷检测不同于尺寸、二维码、OCR识别等算法。后者的应用场景比较单一,基本使用一些成熟的算法实现,最多增加一些定位、图像增强的算法,应用门槛相对较低,也比较容易做成通用的产品或工具。但缺陷检测主要针对工业场景,不同的行业的需求和重点都有差别,这导致不同的行业所使用的缺陷算法迥然不同,这也注定了缺陷检测被工业场景非标定制所束缚。随着缺陷检测要求的不断提高和技术的不断发展,机器学习和深度学习也成了缺陷领域一个不可或缺的技术难点。

2、缺陷检测目前解决方案

2.1 传统算法检测缺陷

优点:可根据需求和图像进行不同需求的开发,可直观展示效果;
缺点:调试难度大,图像变化后会导致检测算法不稳定进而需要反复调参,而且复杂缺陷误检的概率较大,兼容性不好,很难做成通用效果。

2.2 机器学习检测缺陷

一般使用类似MLP的一些单层神经网络,对缺陷特征进行训练分类,该方法需要事先提取出缺陷部分,一般用来与传统分割法搭配使用,达到缺陷检测分类的效果。

2.3 深度学习检测缺陷

优点:通用性好,可以通过迭代训练模型不断提升某个产品的检测准确度。
缺点:需要大量的数据样本(缺陷样本),而且缺陷种类越多,特征性越模糊,检测精度要求越高,其需要的缺陷样本就越大,而且深度学习中的缺陷样本需要人工去标注标签,样本越大,手动标注的工作量也越大,训练的周期也越长。只适合产品产量大且缺陷样本较多的案例。

2.4 深度学习检测缺陷(迁移学习方法)

其操作方法如2.3,但同一行业或相似行业有大量的缺陷样本库,如果深度训练网络具有泛化和迁移的特点,可以在常规缺陷少的情况下,根据统一行业缺陷进行迁移学习训练,进而解决缺陷样本少的问题。该方法我感觉会成为后面工业领域检测瑕疵的一个大趋势,但是需要一些公司去收集各种行业的缺陷类型图片和训练的网络模型,并共享出来,然后后来者可以使用迁移学习的方法学习前人训练好的模型。然后不断的丰富缺陷样本和训练模型。

3、总结

目前机器视觉中缺陷检测主要分为以下几种:

1 Blob分析+特征提取
2 模板匹配(定位)+查分
3 光度立体
4 特征训练
5 测量拟合
6 频域+空间域
7 深度学习

以后的笔记中再详细介绍各种缺陷检测方法使用的场景和实际案例。

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
3年前
JS数据类型检测
数据类型检测相信大家有的时候判断数据类型的时候会有疑惑1、typeof、instanceof用的话会有哪些缺陷呢?2、哪个api只要记住的话,就可以完美判断呢?1、typeof返回的都是字符串jstypeofSymbol()'symbol'typeofnull'object'typeof'object'typeof'ob
不是海碗 不是海碗
2年前
APISpace的 人脸检测API 它来啦~
人脸检测是指通过计算机视觉技术,从图像中识别、检测出人脸,并确定人脸的位置及大小。它是一种计算机图像处理技术,是计算机视觉领域的关键技术,可用于实现自动识别和跟踪人脸。
Stella981 Stella981
3年前
Abnormal Detection(异常检测)和 Supervised Learning(有监督训练)在异常检测上的应用初探
1\.异常检测VS监督学习0x1:异常检测算法和监督学习算法的对比!(https://oscimg.oschina.net/oscnet/47f3006607f0fbaa8de2a305b7972db83d4.jpg)总结来讲:1.在异常检
Stella981 Stella981
3年前
NanoDet:这是个小于4M超轻量目标检测模型
摘要:NanoDet是一个速度超快和轻量级的移动端Anchorfree目标检测模型。前言YOLO、SSD、FastRCNN等模型在目标检测方面速度较快和精度较高,但是这些模型比较大,不太适合移植到移动端或嵌入式设备;轻量级模型NanoDetm,对单阶段检测模型三大模块(Head、Neck、Backbone)进行轻量化
Stella981 Stella981
3年前
JS中 typeof,instanceof类型检测方式
在js中的类型检测目前我所知道的是三种方式,分别有它们的应用场景:1、typeof:主要用于检测基本类型.typeofundefined;//undefinedtypeof'a';//stringtypeof1;//numbertypeoftrue;//booleanty
Wesley13 Wesley13
3年前
BUG关闭原因
以前用禅道和redmine管理bug的时候,对立面的bug关闭原因不太满意,后来整理了一下,也许有人能用得到。已解决:缺陷已经修复。重复缺陷:是指在系统里相同原因的缺陷已经被其他人报告。在此缺陷被作为重复缺陷返回时,先不要立即取消。必须等到核查修复后,才在系统里取消。这是因为有些缺陷被误认为是重复缺陷,实际上是不同原因造成的问
Wesley13 Wesley13
3年前
BUG描述规范管理
BUG:软件系统中存在的可能导致系统出错、失效、死机等问题的错误或缺陷。描述一个缺陷,需要以下核心要素标题:用简洁的话描述该缺陷,主要让开发知道这是一个什么样的缺陷参数设置:Bug的类型(功能/性能/界面等),Bug的严重程度、Bug优先级(是否需要立即修复等)、所属项目模块、项目的版本号详细描述:便于开发重现
Stella981 Stella981
3年前
Chapter 2 全程测试:闪光的思想
软件质量其实是在软件开发生命周期中慢慢形成的,或者说,软件质量是内建的(Qualityisbuiltin),而不是测试测出来的。贯穿于软件开发全过程的测试,不仅可以在第一时间内发现缺陷,降低缺陷带来的成本(劣质成本),而且能有效的预防缺陷的产生,构建更好的软件产品质量。2.1测试的左移和右移测试左移:将测试计划与设计提前进行,以及开展需求
提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇(二))
时间序列异常检测识别故障对系统的正常运行颇为重要,准确率高的异常检测对系统的稳定性具有重要意义。时间序列的异常检测已经研究了几十年,业界提出了各种有效检测方法。我们提出了一种基于深度学习的时间序列异常检测模型。
新支点小星 新支点小星
1年前
CNAS中兴新支点——软件测试报告模板分享
第三方检测机构推荐联系方式杨先生:13276637512微信:yangxs132766375121、测试背景:本次测试的软件是一款名为“XXX”的应用程序,主要用于解决某种需求。本次测试目的是发现软件中的问题和缺陷,并进行优化,以提高软件的质量和用户体验。
缺陷分析方法简介
常用的缺陷分析方法有:缺陷根因分析法、四象限缺陷分析法、ODC缺陷分析法、Rayleigh缺陷分析法和Gompertz缺陷分析法等等