Halcon 深度学习与传统算法的融合,核心逻辑是让两者各干自己最擅长的事:传统算法守住“确定性”底线(定位、测量、基础检测),深度学习处理传统算法写不出规则的“模糊地带”(复杂缺陷分类、纹理异常判别)。
为什么必须融合
动力电池电极焊接的案例最能说明问题:良品表面有夹具接触留下的正常划痕,不良品有纤维异物残留,两者在图像上的差异极其微小。传统基于规则的算法反复调参,要么把正常划痕误判为缺陷(过杀),要么漏掉微小异物(漏杀)。
传统算法的问题在于:规则是人写的,而“正常痕迹”与“真实缺陷”的边界很难用阈值精确描述。深度学习的优势恰恰在这里——给它足够样本,它能自主学习这种“模糊边界”的判别逻辑。
融合的典型架构
工业现场成熟的融合方案通常采用**“传统定位 + 深度分类 + 传统测量”**的流水线:
第一层:传统算法做定位与 ROI 提取。先用 Halcon 的find_shape_model或 Blob 分析找到目标位置,建立跟随坐标系。这一步传统算法效率极高且确定性好——形状匹配能在 360° 旋转和 0.7-1.3 倍尺度空间内稳定定位。
第二层:深度学习做复杂缺陷判别。在定位后的 ROI 内,运行训练好的深度学习模型(如 Halcon 的apply_dl_model或集成的 YOLOv5-Halcon 引擎),对缺陷进行分类。巧克力包装案例中,YOLOv5-Halcon 在 640×640 ROI 内检测 30 类缺陷,单张推理仅 28ms。
第三层:传统算法做尺寸确认与后处理。对深度学习标记的缺陷区域,用传统边缘提取和拟合测量确认几何尺寸,用纹理特征(cooc_feature_matrix计算能量、熵、相关性)做二次校验,降低过杀率。
实战案例:焊缝瑕疵检测的融合逻辑
一个客车底盘焊缝检测系统展示了完整的融合链路:
3D 通道用传统算法:激光结构光重建 10μm 精度点云,用segment_contours_xld提取咬边、塌陷等几何量明确的缺陷,转换成高度-宽度-角度特征向量,输入 SVM 初筛。这类缺陷的判定标准是“几何超差”,传统算法又快又准。
2D 通道用深度学习:YOLOv5-Halcon 模型检测气孔、弧坑、表面裂纹等形态复杂的缺陷,这些缺陷的形态无法用规则穷举。
融合决策:两个通道的结果通过贝叶斯融合算法投票。3D 通道的几何超差与 2D 通道的视觉异常相互印证,整体漏检率低于 0.05%。
融合落地的三个关键约束
硬件是硬门槛。Halcon 深度学习依赖 NVIDIA GPU 的 CUDA 核心。实测 ResNet-18 训练,CPU 需 12 小时以上,RTX 3060 仅需 1 小时 15 分钟,加速约 10 倍。推理场景下,512×512 图像的前向传播 GPU 可在 0.2 秒内完成,CPU 可能超过 10 秒。
数据准备决定上限。Halcon 的标准流程要求将数据分为训练集、验证集、测试集三个独立子集。训练集用于网络优化,验证集用于训练过程中评估性能,测试集用于最终的应用性能评估。数据必须来自真实生产环境,不能是“完美的”实验室图片,否则模型在实际产线上会失效。
深度学习不需要“从零训练”。Halcon 提供预训练模型(如pretrained_dl_classifier_compact.hdl),你只需在自己的数据集上做微调(fine-tune)。对于工业缺陷检测这种特定任务,少量标注数据(数百张)就能达到可用的精度。
融合的核心原则
传统算法负责“确定性”,深度学习负责“模糊性”。凡是能用阈值、轮廓、拟合精确描述的,优先传统算法——快、可解释、可追溯。凡是规则写不出来的,交给深度学习——用样本教它判别。
两者不是替代,是分工。一个完整的融合系统里,传统算法通常承担 60-70% 的工作量(定位、基础测量、简单缺陷),深度学习处理剩下 30-40% 的“硬骨头”。这个比例因场景而异,但核心逻辑不变:能写清楚规则的,不交给黑箱;写不清楚的,才交给深度学习。