仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
点击上方“小白学视觉”,选择加”星标”或“置顶”
重磅干货,第一时间送达
来源:亚坤工业视觉
缺陷检测是工业视觉领域非常重要的应用之一。几乎所有的工业产品在流入市场之前都会有缺陷检测的环节,目的是确保产品是合格的。
对产品进行缺陷检测时,分为人工目视检测和工业视觉检测。利用工业视觉做缺陷检测时,常用的解决思路如下:
Ⅰ、传统图像算法
用传统图像算法做缺陷检测时,方法有二:
①特征工程
特征工程是缺陷检测中最常用的方法。特征工程是通过传统图像算法分析图像灰度值、方差、均值、颜色、型状、轮廓、面积等特征去检测缺陷,方法非常灵活,开发速度也快。在应用层面,一般会将缺陷特征的相关参数开放到软件端,供使用者灵活调整。
②模板匹配
模板匹配是通过预设一些图像模板,将图像模板与待测图像进行比较,以达到识别缺陷的目的。这种算法应用有限,举个例子,做某品牌饮料瓶标签的缺陷检测,会利用方法①特征工程的技术识别部分缺陷类型,但也会利用模板匹配,通过预设一些标签图像模板去匹配待测图像,以判断标签是否有缺陷。
Ⅱ、CV算法
计算机视觉算法即CV(ComputerVision)算法,是指让计算机理解图像的一种技术,属于AI(ArtificialIntelligence)算法的分支之一。
在工业视觉领域,处理对象是图像,故提到AI算法便是CV算法。也许AI算法听起来高级,所以在工业视觉领域,大家一般多说AI算法,不怎么提CV算法。
图像分类、目标检测、语义分割、实例分割、目标跟踪、OCR、人脸识别、图像生成、异常检测、等都属于CV算法。其中,在工业视觉缺陷检测领域应用较多的CV算法为图像分类、目标检测、实例分割。
①图像分类
图像分类,顾名思义,是对图像进行分类并确定图像类别的一种算法。根据分类任务不同,图像分类又分为单标签分类和多标签分类。常用的分类网络有ResNet、MobileNet、EfficientNet等。
在工业视觉领域,理论上讲,可以利用图像分类算法对整张图像直接分类,以确定其缺陷类别。由于工业相机拍摄的视野问题,会使整张图像除了目标区域外,还会包含很多无关的背景,这些无关的背景会干扰图像分类模型的训练,导致图像分类算法的准确率低,因此实际项目中,极少利用图像分类算法直接对整张图进行分类。
②目标检测
目标检测算法是在图像中对所有感兴趣的目标,用检测框定位目标的位置和类别,如下图1所示。这种方法简单粗暴,即通过标注大量缺陷数据集,训练一个具有缺陷检测能力的目标检测模型。
图1目标检测示例
最经典目标检测算法首推YOLO系列,准确率高且推理速度快,属于非常优异的算法。在实际应用中,需要对图像进行尺寸的缩放,使图像大小符合目标检测模型所要求的尺寸。如果原图很大,缺陷很小,使缺陷在原图中占比很小,比如点状的微小缺陷,可能会使图像在预处理缩放过程中,将缺陷丢失。因此,如果有此类问题的风险,一般会将原图进行裁剪为多份,比如100005000分辨率的图像,拆分为10张20002500分辨率的图像,然后对这10张图像单独进行检测,最后将检测结果汇总。
此类方法也有弊端,那就是数据集,成也数据集,败也数据集。因为目标检测算法属于有监督学习,依赖大量的数据集,如果数据集不够,会导致算法准确率低。实际项目中,往往需要持续收集数据,反复多次迭代模型,才能达到理想效果。
③实例分割
实例分割是目标检测的升华版本,即在目标检测的基础上用更精细的mask进行定位,而非检测框,如图2所示。
图2实例分割示例
将实例分割算法应用到缺陷检测上,可以获得比目标检测算法更加精准的缺陷定位,这是有利于缺陷检测的。另一方面,当不同的缺陷离得很近,并且出现交叉或者包含的情况,目标检测算法很难获得较好的类别区分,但是实例分割算法并没有这个困境。若用实例分割算法在尺寸很大的图像上进行缺陷检测时,处理方法与目标检测算法一致,也是将图像拆分。
实例分割算法和目标检测算法一样,都属于有监督学习,需要依赖大量的数据集。相比于目标检测算法拉框式的标注,实例分割算法标注的更为精确,标注工作量更大。实际项目中,实例分割算法往往也需要持续收集图像数据,反复多次迭代模型,才能达到理想效果。
PS:此处致敬一下JosephRedmon大神,摘选他YOLOv3论文惊人敬佩的结束语,如下图3所示:
图3YOLOv3论文摘选
Ⅲ、传统图像算法+CV算法
这种方法将传统图像算法和CV算法结合在一起,也是常用的策略。
通常是利用传统图像算法先定位缺陷,然后再将缺陷ROI图像传给AI分类算法进行分类。这种方法解决了传统图像算法定位容易,但是分类困难的问题。
结束语
工业视觉缺陷检测算法有很多,本文罗列了三大类主流方法,除了上述三大类,也有无监督学习算法、图像异常检测算法,读者感兴趣可自行检索研究。
任何一种缺陷检测算法都有自己的技术边界,在使用的时候,要具体情况具体分析,好的策略是将多种不同的算法组合使用,形成“绝对检测”。
声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三+上海交大+视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~