1、检测对象是什么? 明确是哪种产品(PCB板、织物、玻璃、金属件、塑料件、药品等)。
2、需要检测哪些缺陷? 清晰定义缺陷类型(划痕、凹坑、污渍、裂纹、缺失部件、尺寸偏差、颜色异常、异物、气泡等)。每种缺陷的形态、大小、位置、对比度特征都需要描述。
3、性能指标要求:
准确率: 检测正确率(区分真阳性、真阴性、假阳性、假阴性)。
召回率: 检出所有真实缺陷的能力。
精确率: 检测出的缺陷中,真正是缺陷的比例。
F1分数: 准确率和召回率的调和平均,综合衡量指标。
速度: 处理单张图像或单位时间的检测速度,是否满足产线节拍要求。
鲁棒性: 算法对光照变化、产品位置轻微偏移、产品表面正常纹理/颜色变化、环境干扰(粉尘、油污)的抵抗能力。
误检率: 将合格品判为缺陷品的概率(直接影响生产成本)。
漏检率: 将缺陷品判为合格品的概率(直接影响产品质量)。
4、硬件环境:
成像系统:相机类型(面阵、线阵)、分辨率、帧率、接口。
光源类型:环形光、背光、同轴光、穹顶光、结构光等及其颜色。
镜头:焦距、工作距离、景深。
触发机制:如何触发相机拍照?
计算平台:工控机、嵌入式设备(如Jetson)、服务器、GPU加速需求?
5、软件环境: 操作系统、编程语言(Python, C++, C#等)、视觉库/框架(OpenCV, Halcon, VisionPro, Deep Learning Frameworks – TensorFlow, PyTorch等)。
1、采集高质量样本:
覆盖所有定义的缺陷类型和不同严重程度。
包含足够多的“好”样本(正常品)。
覆盖可能的生产变化:光照波动、位置偏移、产品批次差异、环境干扰等。
确保图像清晰、对焦准确、噪声可控。
2、数据标注:
分类标注: 整张图是好是坏。
目标检测标注: 框出缺陷位置并标明类别。
语义分割标注: 精确勾勒出缺陷的像素级轮廓。
标注需要准确且一致。这是深度学习模型性能的关键。
3、数据预处理:
降噪: 高斯滤波、中值滤波等。
增强对比度: 直方图均衡化、CLAHE等。
色彩空间转换: 有时在特定颜色通道(如HSV的V通道, Lab的b通道)更容易检测缺陷。
几何变换: 旋转、平移、缩放(用于数据增强或校正)。
图像校正: 透视变换校正畸变,仿射变换校正平移旋转。
图像裁剪/ROI: 只关注关键区域,提高处理速度。
背景去除: 分离前景(产品)和背景。
这是核心环节,通常分为传统图像处理和深度学习两大路径,也常结合使用。
A. 传统图像处理算法
思路: 基于规则和特征工程。通过图像处理操作提取与缺陷相关的特征(如边缘、纹理、形状、灰度、颜色、斑点等),然后设定阈值或规则进行判断。
常用技术:
阈值分割: 全局阈值、自适应阈值、Otsu法。用于分离前景背景或缺陷区域。
边缘检测: Sobel, Canny, Laplacian等算子。检测划痕、裂纹等线性缺陷。
形态学操作: 膨胀、腐蚀、开运算、闭运算。用于去噪、连接断裂边缘、填充孔洞、分离粘连区域。
斑点分析: 寻找连通域,计算面积、周长、圆度、长宽比等特征。用于检测孔洞、污渍、异物。
模板匹配: 在图像中寻找与标准模板相似的区域。用于检测缺失部件、位置偏移。
特征匹配: SIFT, SURF, ORB等。用于定位和比较。
纹理分析: 灰度共生矩阵、Gabor滤波器、局部二值模式。用于检测织物纹理异常、表面磨损。
频域分析: 傅里叶变换、小波变换。用于检测周期性缺陷或特定频率的纹理。
优点: 算法相对简单、计算量通常较小、可解释性强、对训练数据量要求低。
缺点: 特征需要人工设计,对复杂、多变、与背景对比度低的缺陷鲁棒性较差,规则难以覆盖所有情况。
B. 深度学习算法
思路: 让模型自动从标注数据中学习特征和决策规则。
常用模型架构:
图像分类:
任务:判断整张图像是否有缺陷(不定位)。
模型:CNN(如ResNet, VGG, EfficientNet, MobileNet)。通常用于快速初筛或缺陷类型单一的场合。
目标检测:
任务:定位缺陷位置(画框)并识别类别。
模型:Two-Stage (Faster R-CNN, Mask R-CNN), One-Stage (YOLO系列 – YOLOv5/v7/v8/v9, SSD, RetinaNet)。应用最广泛。
语义分割/实例分割:
任务:精确分割出每个缺陷的像素级轮廓。
模型:U-Net, DeepLab系列, Mask R-CNN (实例分割)。用于需要精确量化缺陷大小、形状或边界非常复杂的情况。
异常检测:
任务:仅用“好”样本训练模型,检测偏离正常模式的区域(缺陷)。适用于缺陷样本极少或类型未知的情况。
模型:自编码器(AE, VAE)、生成对抗网络(GAN – AnoGAN, f-AnoGAN)、基于特征重建的方法(SPADE, PaDiM)、基于知识蒸馏的方法。通常分割效果。
优点: 对复杂、细微、变化大的缺陷检测能力强,鲁棒性高(如果数据足够多样),自动学习特征,泛化能力潜力大。
缺点: 需要大量高质量标注数据,计算资源消耗大(尤其训练),模型可解释性差(黑盒),部署和优化可能更复杂。
C. 混合方法
结合传统方法和深度学习,发挥各自优势:
用传统方法做预处理(ROI提取、背景去除、图像增强)。
用传统方法提取初级特征,作为深度学习模型的输入。
用深度学习模型进行复杂缺陷检测,用传统算法进行后处理(如形态学优化分割结果)。
用深度学习模型定位大致区域,再用传统算法精确量化特征(如尺寸测量)。
1、数据划分: 将数据集分为训练集、验证集、测试集(如70%/15%/15%)。测试集必须完全独立且从未参与训练过程。
2、模型训练:
选择优化器(SGD, Adam等)、损失函数(交叉熵、Dice Loss, Focal Loss等)。
设置超参数(学习率、批次大小、迭代次数)。
在训练集上训练模型,在验证集上监控性能,防止过拟合。使用早停、学习率衰减等策略。
(深度学习)利用数据增强(旋转、翻转、裁剪、加噪、色彩抖动等)扩充训练数据,提高泛化能力。
3、模型评估:
在测试集上使用定义好的指标(准确率、召回率、精确率、F1分数、交并比mAP等)进行严格评估。
分析混淆矩阵,了解模型在哪些类别上表现好/差。
可视化结果:查看检测框/分割掩码是否正确,分析误检、漏检的具体案例。
关注实际场景中的关键指标: 工厂往往更关心漏检率(影响质量)和误检率(影响成本),需要根据具体业务需求权衡。
1、性能优化:
模型压缩: 知识蒸馏、剪枝、量化(将模型权重从FP32转为INT8等),降低模型大小和计算量,提高推理速度。
算法加速: 优化代码(向量化操作、利用GPU/硬件加速指令如TensorRT, OpenVINO)。
硬件加速: 使用专用硬件(如NVIDIA Jetson, Intel Movidius VPU, FPGA)。
2、鲁棒性提升:
收集更多覆盖边缘情况的数据重新训练。
调整数据增强策略。
加入对抗训练。
设计更鲁棒的后处理逻辑。
3、部署:
将训练好的模型集成到完整的视觉检测系统中。
开发用户界面(UI)供操作员设置参数、查看结果、报警。
与PLC/机器人等自动化设备通信(触发、结果输出、分拣控制)。
考虑实时性要求。
4、持续监控与迭代:
上线后持续收集新的数据和检测结果。
监控模型性能是否下降(如新产品引入、环境变化)。
定期评估模型,必要时用新数据重新训练或微调模型,持续改进。
工具与平台
开源库: OpenCV (CV基石), Scikit-image (图像处理), Scikit-learn (传统ML), TensorFlow, PyTorch, Keras (深度学习), Detectron2 (Facebook目标检测/分割), MMDetection (商汤目标检测工具箱)。
商业软件: Halcon (MVTec, 功能极其强大), VisionPro (Cognex), Matrox Imaging Library, Common Vision Blox。
标注工具: LabelImg, LabelMe, CVAT, Supervisely, VGG Image Annotator, Roboflow。
云平台: Google Cloud AI Platform, Amazon SageMaker, Azure Machine Learning (提供训练、部署、管理服务)。
开发一个成功的机器视觉缺陷检测算法是一个系统工程,需要深入理解具体应用场景、精心设计成像方案、高质量的数据、选择合适的算法路径(传统、深度学习或混合)、严谨的训练评估流程以及扎实的工程化部署和优化能力。没有“最好”的算法,只有“最合适”当前特定需求的解决方案。 持续迭代和优化是保证系统长期有效运行的关键。
fpga锁相板卡定制开发解决方案
一、 核心概念:什么是FPGA锁相板卡? 锁相技术(Lock-in Amplification)的核心是从强噪 […]
Keras深度学习:从“Hello World”到“我模型跑起来了!”的奇幻(秃头)之旅
朋友们,听说你想玩深度学习?不想从底层CUDA开始撸矩阵乘法,也不想被PyTorch的动态图绕晕?恭喜你,Ke […]
用 PyTorch 实现一个简单的神经网络:从数据到预测
PyTorch 是目前最流行的深度学习框架之一,以其灵活性和易用性受到开发者的喜爱。本文将带你从零开始,用 P […]
脉冲控制程序开发
一、脉冲控制程序的典型应用场景 应用类型 控制对象 脉冲作用 步进电机控制 电机转动/定位 每个脉冲对应一个步 […]
电机控制MATLAB仿真软件开发
一、 核心仿真模块构建 1. 电机本体建模 matlab % PMSM dq轴数学模型示例 (状态空 […]
使用Vue和Web Worker实现TCP消息监听并实时更新图表
在现代Web应用中,实时数据可视化是一个常见的需求。本文将介绍如何在Vue应用中结合Web Worker来监听 […]
仪器设备远端控制系统开发
核心实现色谱设备云端协同操控与数据全生命周期管理。系统采用分层架构设计:
机械臂路线规划系统开发
项目介绍: 该项目主要通过机械臂末端搭载双目相机扫描环境,实时构建障碍物点云地图通过红外结构光扫描面部生成密集 […]
无线路由器上位机开发
项目介绍 为满足智能工厂中对生产数据实时远程监测的需求,由你创为客户开发了一套无线路由器上位机软件。该项目采用 […]
血液检测管理系统软件定制开发
项目介绍 该项目是为 某医院开发的血液检测管理系统:以样本唯一码为线索,贯通接收、分拣、前处理、上机、审核、报 […]
分析仪控制采集分析软件开发
项目介绍 该项目是跨厂商、跨接口的通用仪器控制与数据平台,集连接管理、实时/触发/定时/条件采集、元数据绑定、 […]
开源鸿蒙适配器KHP-系列硬件设备产测功能开发
案例背景 开源鸿蒙适配器KHP-系列的硬件设备的产测功能开发。实现了KHP-IC500设备在出厂前测试硬件功能 […]
联系电话:
电子邮箱:unczzb@unicrom.cn
深圳研发中心(总部): 深圳市龙华区港深国际中心十楼E区
太原研发中心: 山西省太原市万迎泽西大街120号时代天峰1918室
上海办事处: 上海市浦东新区牡丹路60号,东辰大厦7楼702室
扫一扫,关注由你创科技