大家好。我们是 try 团队,很荣幸参加第四届“启智杯”机器智能大赛,在此和大家分享一下我们在视觉算法创新赛道“工业小样本缺陷检测”任务上的一些尝试和工程方案。
赛题背景是典型的工业换型质检场景:标注样本少,缺陷形态复杂多样(如墨点、漏印、划伤等),且标签上带有动态变化的条码和文本。同时,组委会要求输出旋转矩形框(RBox),且单图推理耗时需严格控制在 1 秒以内。在这些约束下,如何用最少的样本让模型认识新的缺陷,是我们主要考虑的问题。
考虑到工程实现的稳定性和比赛的时间限制,我们没有选择去修改复杂的网络结构,而是采用了一套以数据处理为核心的实用方案。具体思路如下:
1. 采用原生 YOLO26-OBB 架构
尝试了有监督无监督的多个方法后,我们直接选用了原生的 YOLO26-OBB 模型。YOLO 系列在推理效率以及准确率上都能够达到很好的效果,而 OBB 架构可以直接输出 (cx, cy, w, h, angle) 旋转框参数,能够比较自然地贴合印刷标签中划伤、细长异物等带有倾斜角度的缺陷形态。使用纯原生架构,也为后续的快速训练和部署省去了很多工程上的适配工作。
2. 基于 OCR 辅助的差异化 Copy-Paste 数据增强
既然模型使用原生架构,我们就把主要的优化精力放在了数据增强上。经过对数据集的观察,我们发现印刷标签中“文本区域”和“背景区域”的缺陷形态是有明显区别的。如果只是把缺陷随机 Copy-Paste 到整张图上,很容易生成不符合物理常理的假样本(比如把一个残缺的半个字贴到空白背景上)。为此,我们引入了 OCR 模型来辅助数据的生成:
区域分离:首先使用常规的 OCR 模型,识别并框出正常样本图像中的所有字符区域。
背景缺陷合成:提取缺陷进行Copy-Paste时候,我们会避开字符区域,避免复制到字符缺陷,导致生成不符合物理常理的假样本。
文本缺陷定向模拟:针对 字符区域,我们进行了特定的缺陷构造。一方面,在正常字符上随机叠加污渍,模拟“脏污”或“多印”;另一方面,在字符上覆盖与底板颜色一致的空白块,来模拟真实的“漏印”或“文字残缺”情况。
结合上述策略以及一些常规的通用图像增强方法,我们在初赛阶段扩充了更符合真实业务逻辑的训练样本,缓解了小样本带来的过拟合问题。
3. 决赛阶段的二阶段快速微调机制
决赛现场时间较短,且会给出全新的标签版面。如果在决赛现场直接从头开始训练,或者仅依靠官方默认的预训练权重,模型很难在短时间内靠极少的样本收敛到较好的精度。
因此,我们采用了一种二阶段微调的策略。我们直接把初赛阶段(利用大量数据集和 OCR 增强策略训练出来)取得最佳分数的模型,作为决赛阶段的基础预训练权重。面对决赛的新版面和少样本,我们只是在这个基础权重上进行了一个较小 epoch 的微调(Fine-tuning)。
为了保证决赛现场流程的轻量和稳定,我们在微调时去掉了耗时且复杂的 OCR 数据增强流水线,仅仅使用了 YOLO 训练框架自带的基础数据增强参数。事实证明,由于初赛模型已经学习到了足够丰富的基础缺陷特征,这种简单的微调方式能够让模型快速适应新的版面分布,大大缩短了现场的训练时间。
总结:
回顾这次比赛,我们的主要体会是:在真实的工业小样本场景中,贴合业务实际的数据构造逻辑,往往比单纯调整模型结构更为直接有效。
我们的方案非常基础——原生的检测器、基于常理的逻辑合成数据、以及跨阶段的迁移微调。没有太多花哨的设计,目的就是在精度、速度和工程可重复性之间找到一个实用的平衡点。希望我们这套朴实的工程方案能为大家提供一些参考,也感谢主办方提供的数据集和交流平台。