
干3C外观检测这行最怕的不是算法跑不动而是产线换新机种时那声“这个外观瑕疵能不能两周内搞定量产”。手机中框、耳机仓、笔电外壳每个新机种都有全新的缺陷形态用老模板改来改去参数调得人怀疑人生。这两年我把TVATiny Vision Attention轻量视觉注意力模型逐步用到3C产品质量检测项目里算是把外观检测从“靠老师傅经验”变成了“有套路可复制”。这篇稿子想把这套东西完整拆一遍TVA到底是什么、为什么在3C质检里管用、一个真实项目怎么落地、主诉和误报怎么平衡以及我最看好的几个演进方向。适合正在做机器视觉、深度学习质检或者准备引入AI检测方案的同行参考。1. 先聊透3C质检的痛点再说TVA为什么是解药1.1 3C外观检测真正难在哪3C产品电脑、通信、消费电子的外观件比如手机中框、后盖、摄像头装饰件、耳机充电仓表面处理工艺极其多样。阳极氧化、拉丝、喷砂、镜面抛光、PVD镀膜每种工艺都会带来完全不同的纹理和反光特性。缺陷也跟着工艺走阳极氧化后容易出白点、水印、色差拉丝面爱出现丝纹不均、划伤抛光面最怕麻点、橘皮、颗粒。同一个机种的不同批次表面亮度可能都有差异更不用说不同机种之间天差地别。更头疼的是3C质检是“零容忍”逻辑。外观件流到消费者手里别说功能性坏件就是边框上一道10微米宽的细划都可能引发客诉退货。所以产线上对外观缺陷的判定标准非常严苛很多缺陷在人眼看来就一瞬间的事却要算法在高速流线上稳定抓出来。另外还有两个现实约束节拍压力大。手机结构件产线大多节拍在3到5秒一件检测工位分到的时间非常有限。换线频繁。一个代工厂可能有十几个机种在跑每个月都有新项目导入不可能每个项目都花三个月做模型迭代。这几点叠加在一起传统机器视觉和普通深度学习模型都显得很吃力。1.2 TVA到底是什么从“人眼找缺陷”的逻辑说起AI质检不是说把图片丢给一个分类网络标上“OK”和“NG”就结束。真实的生产线上缺陷往往很小、很局部而且和背景纹理高度相似。老办法用普通卷积网络就像让一个人站在远处看一整面墙要找墙上针尖大的裂缝——他得来回扫视好几遍还容易漏。TVA的核心逻辑很简单模仿人眼先粗扫、再聚焦的过程。它在网络里加入了“注意力机制”让模型学会忽略大面积正常纹理把计算资源集中在几个可能有问题的局部区域。这就好比老师改试卷几十道题里面会先快速扫一遍看到可疑的地方再停下来精看。我用的TVA方案实际上是“轻量卷积特征提取 视觉注意力模块 多尺度特征融合”的组合。底层用高效卷积网络提取基础纹理特征中高层加入自注意力模块感知局部异常再用类似特征金字塔的结构把“大划伤”和“小麻点”这样的多尺度目标统一处理。整体参数量控制得很好能跑在产线边缘工控机上不强制依赖服务器。注意这里说的TVA不是一个固定开源模型名而是一类基于轻量化注意力机制的视觉检测方案。不同团队落地时骨架和注意力模块的实现会有差异但核心思想一致把模型能力用在“该看的区域”上而不是均匀地扫整张图。2. TVA方案选型与架构拆解2.1 为什么不是传统规则算法也不是纯Transformer大模型先说说传统算法为什么难扛。常规的模板匹配、Blob分析、灰度差检测对于固定光照、固定缺陷形态的场景非常高效。比如某款透明玻璃盖板的边缘崩边用背光加边缘检测就能做到非常稳定。但一旦面对金属拉丝纹理上的细微划伤或者阳极氧化面上的浅色水印传统算法会被表面纹理干扰到怀疑人生。你要写多少个滤波核和形态学组合才能区分“正常拉丝纹”和“划伤”每换一个机种这套规则就得重写一大半。纯Transformer大模型也难落脚。大模型在语义理解、复杂场景检测上确实强但工业端侧部署要考虑三座大山算力成本、推理延迟、迭代速度。动辄几亿参数的网络在产线上的工控机或边缘盒子上跑不起散热和功耗也是一笔隐性成本。而且3C外观件缺陷样本本来就稀缺大模型数据需求量大实际项目里很难供得起。TVA恰好站在中间位置。它的优势在于注意力机制让它对“局部异常”和“上下文关系”敏感能抓住人眼关注的细微缺陷轻量化设计又控制了计算量能在产线设备上实时推理。用一句话总结我的选型原则既要用注意力提升精度又不能因为注意力把成本抬到产线无法接受的程度。2.2 关键模块拆解注意力、多尺度融合、轻量骨干我把TVA分成三个主要部分方便大家理解它在检测流程里各自干什么活。第一是轻量骨干网络。它负责初步提取图像特征比如边缘、纹理、颜色变化。这块不需要太深够快够准就行。我常用depthwise卷积堆叠的结构算力开销小对设备要求低。第二是注意力模块。这是TVA的核心用来给特征图上每个位置打权重。正常区域的权重被压低可疑区域的权重被抬高。模块内部一般包含空间注意力和通道注意力两条分支空间注意力回答“缺陷在哪个位置”通道注意力回答“哪种纹理特征更值得关注”。两分支融合后特征图相当于被“高亮”了一遍后续检测头更容易命中缺陷。第三是多尺度特征融合。3C缺陷的尺寸跨度实在大。手机中框上一条贯穿性划伤可能有几十毫米长微粒脏污却只有零点几毫米。单一尺度特征很难同时抓住这两种目标。特征金字塔把浅层的细节信息和深层的语义信息拼在一起小缺陷靠浅层大缺陷靠深层最终检测头在不同尺度特征图上各取所长。这三块合在一起模型在推理时不是机械地滑窗扫描而是带着“重点关注区域”的意识去判断。直观感受就是同样一个缺陷普通模型可能被背景纹理带偏TVA会把注意力紧紧锁在缺陷区域判定稳定很多。2.3 三种方案横向对比为了说清楚差异我整理了一张表选了传统视觉、普通CNN、TVA三种方案在3C外观检测里的实际表现维度做对比。对比维度传统规则算法普通CNN检测模型TVA轻量注意力方案新机种迁移速度慢规则需重写中等需收集较多样本快小样本可微调细微缺陷检出能力差易受纹理干扰中小目标易漏检强注意力聚焦局部异常反光/复杂背景下稳定性低中较高推理算力要求极低中等中低可端侧部署模型可解释性高规则透明低较高可输出注意力热力图综合维护成本高换线需反复调参中低从表里能看出来TVA不是每一项都最强但它胜在综合性价比。特别是“新机种迁移速度”和“细微缺陷检出能力”这两项恰好打在3C质检最痛的两处上。这也是我决定从一个检测Demo开始逐步把它推到量产项目的核心原因。3. 实战手机中框外观检测项目的完整流程3.1 打光与图像采集很多搞算法的人容易忽略打光一上来就讨论模型结构。实际项目告诉我打光决定了算法的上限模型只是去够这个上限。手机中框是弧面金属件反光严重采用单一光源会出现大面积的过曝或暗区。我们最终用了“多角度组合光”方案低角度光打侧面勾勒划伤和压伤同轴光垂直打正面均匀反射对应色差和脏污顶部穹顶光做整体环境补光。三种光分开时序控制用同一个线阵相机分三次拍摄再把三张图合成一张多通道输入图给模型。这里有个很重要的认知模型输入不是越“干净”越好多角度光照带来的阴影差异反而把缺陷的不同物理特征都凸显出来了。比如拉丝面上的细微划伤低角度光下非常明显而阳极氧化水印同轴光下才看得出来。多通道合成图相当于提前给模型“打好了光”注意力模块就不用费太多劲从单一图像里猜深度信息。图像采集的周期大约持续了两周覆盖白班、夜班、不同温湿度环境。这个细节值得强调产线环境光不是恒定的窗户透进来的自然光、顶棚灯管的衰减都会影响成像。我在采集阶段就故意把设备在不同时段各跑一遍让训练数据天然包含环境光照波动模型上线后对光线变化会更皮实。3.2 数据标注与训练集设计外观缺陷标注比目标检测的标准框标注更讲究。普通的狗和猫框出来就行中框上的划伤要标的是“这条划伤算不算缺陷”。有些丝纹和划伤在图像上形态几乎一样全靠深度阈值区分。我们的做法是让质检组长和客户工艺工程师一起定了“缺陷等级图谱”把缺陷分成不良、可疑、可接受三档只有“不良”才参与训练“可疑”单独拿出来做验证。数据规模并不大。最终训练集包括了3200张正常图像、1875张缺陷图像覆盖11类缺陷划伤、压伤、脏污、白点、水印、麻点、刀纹、色差、颗粒、凹坑、碰伤。类别不平衡很明显最多的是划伤和脏污麻点只有几十张。针对小样本类别我用了针对性数据增强局部亮度扰动模拟水印深浅变化高斯模糊模拟不同对焦情况随机遮挡模拟脏污叠加阴影。这些增强不是为了凑数量而是为了让模型理解缺陷的“不变本质”——无论划伤颜色变浅一点、角度偏几度它仍然是一条划伤。标注的一致性也需要盯。最初标注结果里“脏污”和“色差”两个类别人为混淆率很高。后来改成先标位置再按标注规范清单逐条比对判类别混淆问题基本解决。一组人标完再加一组人复核不一致的地方单独开会讨论。数据质量上花的这些功夫最后会全部体现在模型指标里一分偷懒都会变成漏检和误报。3.3 模型训练与调优过程训练过程我比较保守没有一上来就堆大网络。初始学习率设1e-3用cosine退火曲线把学习率逐步降低到1e-5附近。输入分辨率我压到640×640不是为了省事而是考虑到实际产线图像缺陷尺寸小分辨率再降就真的看不清了分辨率再升边缘设备的推理时间撑不住。这个分辨率是在工程师反复测试后确定的平衡点。损失函数这里要注意一个细节因为正常样本远多于缺陷样本我采用了Focal Loss为主的分类损失配合DIoU回归损失。Focal Loss会压低“容易分类样本”对损失的贡献让模型更关注那些难分的坑爹样本正好应对缺陷样本少、且多为难例的情况。训练到30轮时模型在验证集上的召回率已经不错但过杀率偏高。我盯了一眼错误样本发现误报集中在两类一类是夹具轻微磨损带来的固定位置伪影一类是正常水渍和真缺陷重叠的区域。前一类不是模型问题是设备问题后来让机械工程师换了夹具误报立刻降了一截后一类光调损失函数没用需要把误报样本重新挑出来按“错误分为正常”的标签打进训练集再训一轮。这个“先用模型找问题样本再人工复核回流训练”的迭代方式整个项目里一共做了三轮每一轮过杀率都有肉眼可见的下降。最终测试结果FP16精度推理下单张耗时9.6毫秒模型参数量约3.1M在客户回放的11万张历史图像上漏检率压到0.35%以内过杀率稳定在6%左右。后来我做了INT8量化推理速度提升到5.8毫秒过杀率基本没有波动。这个速度放在节拍3秒的产线上冗余非常充裕。3.4 部署与产线验证部署环节我用“先旁路并行再逐步切换”的策略没有直接让系统挑大梁。旁路运行期间TVA的检测结果和人工检测结果同时记录每天比对一次。不一致的图像单独拉出来开会分析哪些是人眼看漏了、哪些是模型看误了、哪些是两边都看不清需要客户工程师做仲裁的。这种策略最大的价值不是“验证模型”而是“建立信任”。现场班组长一开始对AI结果抱怀疑态度毕竟出错了他们要背责任。但当他们看到注意力热力图明确框出缺陷位置而且连续一周每天的误报都在下降态度就会慢慢转变。热力图在这里反而比精度数字更有说服力。正式切换后我也保留了一个兜底机制模型判定为“不良”的图片100%留存每两小时抽检一次判定为“正常”的图像防止模型出现突发性退化时无人察觉。这个机制成本极低但对产出质量的可追溯性帮助巨大。毕竟3C行业随时可能需要翻查某批次检测记录没有图像留证AI系统说得再好听都没用。4. 常见问题与排查技巧实录4.1 过杀率居高不下怎么办过杀率好品被判为次品是3C质检的敏感指标。过杀太高产线良率报表难看生产部门天天找你麻烦。项目里第一个版本过杀率冲到23%排查下来原因有三板斧。第一确认是不是设备问题造成的重复伪影。如果误报位置固定先查治具、传送带、相机镜头上的灰尘或划痕。有一次怎么调模型都压不住误报最后发现是镜头保护玻璃上有条头发丝一样的划痕位置恰好和模型误报区域重叠。清理相关设备后误报直接少了一半。第二看数据标注边界是否合理。同样的缺陷标注规范里如果定义不清晰模型学到的边界就会摇摆。比如“可接受”和“不良”之间如果是模糊地带模型会把大量“可接受”案例也判成不良。把这两个类别在标注规范里重新梳理给现场员工看十组典型对比图过杀率能明显下降。第三调低类别置信度阈值不是首选。有些同学一看到误报高就想着把阈值往上拉往往误报下来了漏检又上去了。正确的做法是先解决设备和数据层面的问题把“模型学歪了”的部分纠正回来再微调阈值做最终平衡。4.2 漏检的缺陷往往是哪些类型漏检比过杀更致命因为不良品流到下游组装或客户端客诉风险极高。我在TVA项目里反复分析漏检样本发现最常见的几种情况超低对比度缺陷。比如抛光面上极浅的橘皮纹人眼都要反复看才能确认模型的注意力得分也确实不高。与正常纹理方向一致的划伤。拉丝面上的划伤如果和丝纹方向完全平行模型容易把它当作正常纹理的一部分。极小目标缺陷。比如0.2毫米以下的麻点经过下采样后只占几个像素特征信号几乎被磨平了。针对这三类我的处理思路是对超低对比度缺陷强化图像增强里的局部直方图均衡逻辑对纹理方向干扰在训练时增加随机旋转小角度的增强并把这个角度控制在±5度以内避免改变缺陷形态对极小目标保证输入分辨率不低于640同时让特征金字塔的浅层特征分支权重略微调大。4.3 产线环境变化带来的模型退化AI系统上线时指标很好用了两个月发现误报开始变多这是很多人会踩的坑。原因通常是环境漂移而不是模型本身变笨。设备的老化是最常见的漂移来源。光源亮度会随使用时间衰减镜头会有灰尘附着相机传感器也会出现坏点。这些变化直接导致图像分布和训练集发生偏移。我的应对措施是建立“日常监控定期校准”机制每班拍摄标准校准件监控图像亮度和灰度分布指标一旦发现偏离基线超过设定阈值就通知设备人员清洁或调整光源模型预测为“不良”的置信度分布如果整体发生偏移也要警惕环境变化已经发生。环境漂移最麻烦的点在于它会不知不觉拉高过杀率和漏检率。如果只是简单重新调一次阈值往往治标不治本。定期收集新产线上被判为“正常”的样本结合少量最近的不良样本做增量训练比一次性推倒重来稳妥得多。4.4 问题速查表把实战中遇到的高频问题和排查优先级整理成一张表方便现场快速定位。现象可能原因优先排查顺序过杀率高设备伪影、标注边界模糊、阈值不当设备 → 数据 → 阈值漏检集中在某类缺陷样本不足、特征被背景掩盖、分辨率不够增强样本 → 调特征融合 → 提升分辨率误报位置固定治具磨损、镜头污染、光源不均直接现场查看硬件新批次上线误报突增工艺参数变化、材料批次差异对比新旧图像灰度分布推理时间突然变慢量化失效、算子未生效、设备占用检查当前运行环境性能日志这张表不一定覆盖所有情况但大部分外观检测项目的排查思路是大同小异的顺序对了效率能差很多。5. TVA落地价值的复盘与几点前景判断5.1 实际落地效果复盘回到最开始那个手机中框项目。从设备安装、数据采集到正式量产切换总共用了大概九周其中前两周踩坑、中间三周模型迭代、最后两周做旁路验证。这个速度在传统方案里是不敢想象的。同样的机种以前用规则算法做光调参就要一个月换个批次还要再调。量产后的数据也比较能说明问题人工抽检频次从原先的每半小时一次降低到每两小时一次整线外观不良漏流率下降了约六成质检人员的劳动强度明显降低他们现在更多是处理模型判定的“可疑”样本而不是全程盯屏。说句实话3C质检不可能完全去掉人但人的角色正在从“逐件判断”变成“审核异常”。经济账也算得过来。一条中框外观检测线通常需要2到3个质检员三班倒一套TVA检测方案前期投入固然不小但相较于持续不断的人力成本和客诉风险回本周期是可以接受的。更重要的是模型的复制成本极低新机种导入时只需要采集新样本、做一次增量训练不必重写整个规则系统这是传统方案做不到的。5.2 前景观察往哪个方向走我接触过不少做视觉检测的同行大家聊起来有几个共识性的方向。第一是走向小样本和跨机种迁移。3C行业新机种迭代太快大部分项目没有时间积累上万缺陷样本。TVA这类注意力模型天然适合少样本学习再结合元学习、领域自适应方法未来有可能做到“一个项目训练同类机种直接迁移”。第二是端侧算力持续释放。现在边缘设备对轻量模型的支撑已经够用随着端侧推理能力越来越强TVA这种中等规模的注意力模型会有更大的发挥空间不需要在精度和速度之间做太多妥协。第三是从“检出”走向“定位解释”。只告诉产线“这里NG”是不够的客户现在越来越想看到“为什么NG”。注意力热力图给了天然的解释依据可以精确提示缺陷位置进一步辅助工艺改善。比如某一类压伤频繁出现在中框拐角可能就是设备夹爪的力度问题有了缺陷位置分布和数据统计工程改善的方向感会清晰很多。还有一个趋势是数据闭环。检测系统不仅是被动判断还可以实时反馈生产状态。当某类缺陷的报警频次突然上升系统主动推送预警帮助工艺部门早一步介入。这一步的核心依赖仍然是模型的可靠性和可解释性而TVA的注意力机制恰好是构建这个闭环的合适基础。最后再分享一点个人体会AI做质检表面上比的是模型实际上比的是数据、工程和现场配合。模型再强脱离产线的脏环境、乱标注、设备振动都是空中楼阁。TVA的价值不是“换了一个更高级的网络”而是给整个检测系统增加了一种“主动关注”的能力让后面所有的工程优化都有了更扎实的着力点。如果你正准备在产线上试AI检测建议先别急着追求SOTA指标找一个机种、把数据采集和标注做扎实、把模型输出和现场逻辑打通走完一个闭环之后你对TVA的能力边界会真实很多。