北京大数据竞赛一等奖方案-漆面缺陷检测
发布网友
发布时间:2024-10-08 18:43
我来回答
共1个回答
热心网友
时间:2024-10-11 14:53
传统制造业在检测喷涂颜色件的漆面质量时,大多依赖人工目视检查,这种方法受环境、视觉能力和人员状态等不可控因素影响较大,存在观察难度大、缺陷漏检、质量难以保证和效率低等问题。借助机器视觉技术,如深度学习,实现常见漆面缺陷的自动检测识别,对于提高检测的可靠性、经济性和效率具有重要意义。
除了人工目视和边缘检测算子加机器学习,基于深度学习的机器视觉技术在近年来逐渐受到关注。然而,现有的深度学习缺陷检测方法大多只是将缺陷框出(目标检测),而将缺陷区域像素级别提取出来(语义分割)更贴近实际应用场景需求,同时也更具挑战性。
大赛网址:北京大数据技能大赛
比赛提供了203张含有缺陷的图像,要求实现对缺陷的像素级别提取。
像素级缺陷提取存在诸多难点。
3. 方案
3.1 轻量化的MobileUNet+
由于缺陷面积小,样本数量少,如果模型深度太深和参数太多,容易造成过拟合。因此,我们设计了一种全卷积神经网络MobileUNet+来分割漆面瑕疵。Unet总体框架可以更好地融合高层和底层特征,恢复精细边缘。我们使用mobilenetV2作为编码器,利用倒残差结构在控制参数量的同时提高特征提取能力。
3.2 空间通道注意力
为了解决与缺陷相似的非缺陷误区域误检测问题,我们在解码器中嵌入空间通道联合注意力机制scSE,实现对特征的正向校正。
3.3 损失函数
大量的简单背景样本可能会淹没整个交叉熵损失,我们利用OHEM过滤掉交叉熵小于设定阈值的样本点。为进一步缓解正负样本数量不均衡现象,加入Dice损失。
3.4 数据增强
数据增强可以扩充数据,减轻模型过拟合现象。除了常规的亮度变换、翻转旋转、平移缩放之外,我们开发了一种针对漆面缺陷的K-means约束的copy-paste增强方法。由于漆面一般是曲面,图像中有些区域比较亮,有些区域比较暗,如果直接复制粘贴不同光线分布的缺陷实例,可能会对模型学习产生负面影响。因此,我们首先对图像进行K-means聚类,在复制粘贴时只粘贴到相同光线分布的区域。这样一来,在降低copy-paste可能带来的负面影响的同时,增加正样本的数量和背景多样性。
3.5 随机权重平均SWA
随机权重平均SWA:在优化的末期取k个优化轨迹上的checkpoints,平均他们的权重,得到最终的网络权重,这样会缓解权重震荡问题,获得一个更加平滑的解,相比于传统训练有更泛化的解。我们在训练的最后5轮使用了SWA集成多个模型的权重,得到最终模型结果。
3.6 torch转ONNX
为什么要转ONNX(Open Neural Network Exchange,开放式神经网络交换):直接原因是比赛统一要求;根本原因是ONNX支持大多数框架下模型的转换,便于整合模型,并且还能加速推理,更可以方便地通过TensorRT或者openvino部署得到进一步提速。
3.6.1 安装onnx和onnxruntime
onnxruntime-gpu需要和cuda版本对应,在此处查询。
验证是否可用:
ONNX的providers说明:Pypi上的官方Python包仅支持默认CPU(MLAS)和默认GPU(CUDA)执行提供程序。对于其他执行提供程序(TensorrtExecutionProvider),您需要从源代码构建。请参阅构建说明。Official Python packages on Pypi only support the default CPU (MLAS) and default GPU (CUDA) execution providers. For other execution providers, you need to build from source. Please refer to the build instructions. The recommended instructions build the wheel with debug info in parallel.
3.6.2 模型转换
4. 结果
大赛要求的基准精度为IoU不能小于65%,而我们的模型IoU达到了77%,增量达到了12%。模型精度得分达到了85%。更可喜的是,模型的推理速度特别快,单张推理时间为9.1ms,意味着每秒可以处理110张图像。除了可以定位检测外,缺陷的面积、长宽等属性也会一并提取出来,这将为后续处理提供更多实用信息。85%的模型精度、110FPS的推理速度、加上丰富的缺陷形态信息,我们的方案完全可以满足实际应用场景的需求。
5. 代码开源
6. 答辩视频参考