拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

YOLOv11工业质检实战:微小零件缺陷检测与99%准确率实现路径

YOLOv11工业质检实战:微小零件缺陷检测与99%准确率实现路径

简介:面向工业质检工程师与计算机视觉开发者,这份33页的PDF文档系统讲解YOLOv11在微小零件缺陷检测中的落地方法。内容从工业质检的现状与挑战切入,逐步深入YOLOv11的骨干网络、颈部网络、检测头设计及训练策略,并完整覆盖数据集收集、标注、清洗、增强与划分流程。针对实现99%准确率的目标,文档重点剖析数据多样性扩充、模型结构微调、多尺度训练、学习率动态调整、NMS优化与置信度校准等关键技巧,同时结合电子芯片、汽车零部件、航空航天、医疗器械等行业的应用案例,说明部署实施与效益分析。资源为单个PDF文件,压缩包大小2.01MB,支持目录章节跳转和阅读器大纲快速定位,排版清晰、图文表格完整。已有127人学习,适合希望系统掌握YOLOv11工业质检实战方法的中高级开发者参考。

1. 一次关于YOLOv11小目标检测的真实拆解:99%准确率是怎么来的

看到“99%准确率”这个数字,先别急着兴奋。我在产线上见过太多把mAP当成准确率汇报的项目,也见过不少号称99%但在换了一条产线、换了一种光照之后就跌到90%以下的模型。这份《工业质检新突破-YOLOv11实现微小零件缺陷检测的99%准确率》我完整拆过一遍,它的价值在于没有停留在“我用了YOLOv11所以很准”这种玄学层面,而是把数据标注规范、多尺度训练、NMS优化、置信度校准这些真正影响小目标检测效果的环节逐个讲清楚了。如果你正在做轴承缺陷、螺栓缺陷、芯片划痕这类微小零件检测,或者刚把YOLOv11环境配好、准备拿自己的数据集开跑,这份文档值得花时间通读一遍。如果你是熟手,可以直接跳到第四章看它的数据增强组合和第五章的NMS调参思路。

2. 微小零件缺陷检测为什么难:从数据现状到标注规范

2.1 微小零件检测与传统目标检测的本质差异

做过通用目标检测的人上手工业质检,第一感觉通常是“这也太小了”。常规的COCO数据集里,小目标定义是像素面积小于32×32,而工业场景下的芯片引脚裂纹、轴承滚珠划痕,在1024×1024的输入图像里往往只有十几个像素宽。YOLOv11虽然在小目标检测上做了专门的优化,但模型不是魔法,它对特征的感知上限取决于输入分辨率和数据质量。

另一个常被忽略的问题是缺陷的长宽比极端。划痕是细长条,凹坑是近似圆,缺角是规则几何形被切掉一块。这三类缺陷在特征图上的响应模式完全不同,如果像训练通用目标检测那样统一用方形锚框或统一的标签策略,细长缺陷很容易在特征提取阶段就被下采样抹掉。

还有一个现实约束是样本量。工业产线上的缺陷率通常很低,良品和缺陷品的比例可能达到几百比一。如果直接拿原始分布训练,模型学到的就是“永远输出无缺陷”,因为这样已经能拿到99%以上的准确率。这是工业质检项目里最容易翻车的地方,比模型选型的问题更致命。

2.2 数据收集的四个关键渠道

文档里把数据来源分成了产线拍摄、供应商共享、公开数据集三类,实际操作中我会再加一个渠道:历史不良品图库。工厂的质量部门通常积累了多年的AOI误判图、客户投诉退件图,这些图像虽然清晰度参差不齐,但包含了真实世界里的各种边缘case,比如油污覆盖的缺陷、反光造成的伪缺陷,这些是产线新拍图很难覆盖的。

在采集参数上,文档强调了几点我完全认同:一是分辨率必须高于检测精度需求的两倍以上,二是同一零件要覆盖多角度、多光照,三是必须记录采集时的元数据。之前我做连接器针脚检测时,就因为没记录光照角度,模型在下午西晒时误检率暴涨。从那以后,我要求每次采集必须同步记录相机型号、光圈、曝光时间、光源角度,这些信息在排查数据分布漂移时极其重要。

2.3 标注规范决定了模型的上限

标注这一步很多人不当回事,觉得拉个框谁不会。但在微小零件场景,标注规范的差异对模型精度的影响比模型结构还大。文档里把缺陷分成外观缺陷(划痕、凹坑、污渍)、尺寸缺陷、结构缺陷(缺角、断裂)三类,这个分类本身是合理的,但真正的关键在于边界定义。

以划痕为例,多长的划痕算缺陷?深度到什么程度算?如果一个零件上有三条长度不一的划痕,是标一个框还是三个框?这些问题不定义清楚,两个标注员标出来的标签可能差出20%的IoU。我的习惯是:每个缺陷类别配5张典型图、5张边界图,标注员入职先标一遍边界图,标注结果一致性低于90%就继续培训。这个流程看起来笨,但对后续模型收敛的帮助非常大。

标注工具方面,文档推荐的LabelImg适合小规模起步,CVAT适合多人协作。我补充一个细节:无论用什么工具,导出格式尽量统一成YOLO的txt格式(class_id cx cy w h,归一化坐标),因为后续增强、切分、训练都要基于这个格式做,提前统一能省掉很多格式转换的坑。

2.4 数据清洗的优先级排序

文档把数据清洗拆成了缺失值、异常值、重复值三类,这个顺序在工业场景下可以优化一下。我的经验是优先处理异常值,因为工业图像里最影响训练的是两类脏数据:一是对焦不准的模糊图,二是标注框和缺陷实际位置偏移超过半个缺陷尺寸的错误标签。

模糊图好处理,计算拉普拉斯方差,低于阈值直接删。标注偏移不好自动检测,只能抽样人工复核。重复数据用感知哈希就能去重,操作成本最低。另外提一个文档里没有细说的点:清洗优先级应该是“去模糊 > 修正错标 > 去重复 > 补缺失”,因为模糊图和错标对模型训练的负面影响远大于少量缺失标签。

2.5 数据增强的参数边界与常见误区

文档给出的增强方法很全:旋转、翻转、缩放、裁剪、亮度对比度调整、高斯噪声、椒盐噪声。但我想强调一个原则:增强幅度必须与缺陷的物理可能性对应。零件在产线上的姿态变化是有物理边界的,比如某型号芯片在振动盘里只会出现0°和180°两种姿态,那旋转增强只做这两个角度就够了,做90°或270°反而会引入不可能出现的样本。

另一个容易翻车的点是缩放增强。微小零件的缺陷尺度是固定的,比如划痕宽度就是2到5个像素,你可以通过缩放模拟不同拍摄距离的差异,但不能把缺陷缩到1个像素以下 —— 那个尺度的信息已经淹没在噪声里了,模型学不出任何有效特征。文档里的缩放示例是0.5倍,我一般限制在0.7到1.3倍之间,超过这个范围要么增强无效,要么引入伪特征。

最后是噪声增强。高斯噪声对工业图像的模拟效果一般,因为产线上的真实噪声更多来自传感器热噪声和光源频闪,不是高斯分布。我更推荐用亮度扰动和对比度扰动来模拟光源波动,这比噪声更接近实际退化。椒盐噪声在模拟灰尘、碎屑干扰时有用,但添加比例超过0.01就会让模型分不清“脏点”和“真实缺陷”,这个边界要控制住。

2.6 数据划分的一个坑

文档建议70%-20%-10%划分训练、验证、测试集,这个比例本身没毛病,但工业场景有个特殊要求:必须按“批次”划分,不能按“单张”随机划分。同一个批次的零件是在同一工艺条件下生产的,缺陷形态高度相似,如果一部分在训练集、一部分在测试集,模型相当于提前见到了答案,测试分数会虚高。

我的做法是:先把图像按生产批次分组,再以批次为单位做划分。宁可在总数上牺牲一点,也要保证测试集里的图像和训练集里的图像来自完全不同的生产批次。这才是真正检验模型泛化能力的划分方式。

3. YOLOv11的技术选型:为什么它适合小目标缺陷检测

3.1 单阶段检测器的效率优势

文档里梳理了YOLO系列从v1到v11的演进逻辑,核心不变的一点是:YOLO把目标检测当成回归问题,一次前向传播同时输出类别和边界框。对比两阶段的Faster R-CNN,YOLO省掉了区域提议网络(RPN)这一整条分支,换来的是推理速度的几何级提升。

在工业质检场景里,速度不是“锦上添花”,而是硬性门槛。一条产线的节拍可能是每秒检测5个零件,留给单张图像的推理时间只有200毫秒。在嵌入式设备上(比如Jetson Nano),两阶段检测器在这个时延预算内根本跑不起来,而YOLOv11的轻量版本可以做到。这也是工业缺陷检测从Faster R-CNN全面转向YOLO系列的根本原因。

3.2 骨干网络与颈部网络对微小缺陷的适配

文档拆解了YOLOv11的三段式结构:Backbone负责特征提取,Neck负责多尺度特征融合,Head负责分类和定位。对微小零件缺陷而言,Neck的设计比Backbone更关键。

微小缺陷周长短、面积小,经过Backbone多次下采样之后,细节信息大量丢失。YOLOv11的Neck部分延续了特征金字塔(FPN)加PANet的融合思路,把高层的语义信息和低层的细节信息做双向融合,相当于让模型同时看到“缺陷的类型”和“缺陷的具体纹理”。我在实际测试中对比过v8和v11在同类微小缺陷数据上的表现,核心差异就在于v11对浅层特征的利用更充分,小目标的召回率有明显提升。

3.3 损失函数与优化器的实践选择

文档列出了分类损失、定位损失、置信度损失三部分,这是YOLO系列损失的标准构成。对小目标缺陷场景,定位损失的权重值得单独调。微小缺陷的边界框本身就小,几个像素的偏差就会让IoU从0.8掉到0.3,训练前期如果不给定位损失足够的权重,模型会优先学会分类但框不准。

优化器方面,文档提到SGD和Adam二选一。我的习惯是:Adam作为默认选择,收敛快、对学习率不敏感,适合工业项目快速验证。想冲更高精度、做最终交付时,可以切到SGD配合余弦退火,效果通常能再涨1到2个点。前提是有足够的训练轮次让SGD充分收敛,否则纯属浪费时间。

3.4 预训练模型加载的两个原则

文档提到加载预训练模型,但没展开讲怎么选。这里补充两个实操原则:第一,优先选在COCO上预训练的权重,COCO包含大量小物体,它的底层特征对小目标有更好的适应性;第二,加载后冻结Backbone前几层,先用小学习率训练Head和Neck,让模型先学会“找缺陷”,再解冻Backbone做全量微调。

直接全量微调的后果通常是:训练前期loss下降很快,但过拟合也来得很快。因为预训练特征已经足够通用,你只需要让模型适配工业图像的纹理分布,而不是重新学一遍特征提取。冻结Backbone训练50个轮次,再解冻全量训练50个轮次,比直接训练100个轮次的效果更好。

3.5 小目标检测的针对性改进点

文档在“相较于其他版本的改进”一节专门提了小目标优化,这一点我深有体会。YOLOv11保持了三尺度检测头(P3/P4/P5)的设计,分别对应小、中、大目标。对微小零件缺陷,P3层(8倍下采样)承载了绝大多数有效特征,P5层(32倍下采样)几乎没有贡献。

实际操作上有一个简单有效的改法:把输入分辨率从640×640提高到1024×1024或1280×1280。分辨率提高后,同一个缺陷在特征图上的像素占比扩大,P3层能提取到的细节更多。代价是训练显存占用翻倍、推理耗时增加,但精度收益通常非常显著。如果你的GPU显存有限(比如只有8GB),可以用ncopies策略——把一张大图切块推理,也能起到类似效果,后面避坑章我详细讲。

4. 训练与调优:从环境搭建到99%准确率的实操路径

4.1 环境搭建与训练命令

文档给了硬件和软件环境的框架,这里给一套可以直接用的配置参考。软件层面,Python 3.10以上、CUDA 11.8或12.1、PyTorch 2.x是基本组合。硬件层面,训练阶段建议至少一张8GB显存的GPU(RTX 3060级别起步),推理部署阶段可以降到 Jetson Nano 或 CPU 加OpenVINO。

# 克隆官方仓库并安装依赖 git clone https://github.com/ultralytics/ultralytics.git cd ultralytics pip install -r requirements.txt # 准备数据集目录(YOLO格式) # datasets/ # part_defect/ # images/train/ images/val/ images/test/ # labels/train/ labels/val/ labels/test/

这里强调两个容易忽略的细节:第一,YOLO格式的标签文件必须与图像文件同名(扩展名不同),否则训练时大量图像会被跳过;第二,数据集配置文件里nc(类别数)必须和标签文件里的class_id对上,多一个或少一个都会直接报错或精度崩盘。

# 训练命令,以yolov11s为例 yolo detect train \ data=part_defect.yaml \ model=yolo11s.pt \ epochs=200 \ batch=16 \ imgsz=1024 \ lr0=0.01 \ patience=30 \ augment=True \ device=0

这份文档的训练逻辑是典型的两阶段微调。参数说明如下:epochs设200是为了配合早停策略,patience=30意味着连续30轮验证集指标不升就自动停止;imgsz=1024是考虑到微小缺陷的尺寸——官方默认的640在小缺陷场景下信息丢失严重;augment=True开启内置的数据增强(马赛克增强、平移、旋转等),能有效缓解工业缺陷样本不足的问题。

4.2 训练过程的监控与判断

训练开始后,比看loss曲线更重要的是看两组指标:train_loss和val_loss的差值,以及类别的PR曲线。差值拉大是过拟合的早期信号;某个类别的召回率明显低于其他类别,说明这个缺陷类型的样本量不够或标注不一致。

# 查看训练日志和指标曲线 tensorboard --logdir runs/detect/train

我习惯用Ultralytics自带的可视化工具,训练结束后输出目录里会有confusion_matrix.png、PR_curve.png、results.png。真正需要人工判断的是PR_curve——如果曲线在低召回区间就急剧下坠,说明模型对微小缺陷的置信度普遍偏低,这往往不是模型问题,而是标注框偏移或数据增强过度。

4.3 实现高准确率的六个核心策略

文档用了整整一章讲99%准确率怎么来,我把它压缩成六个实操要点:

第一,数据多样性扩充。不要只收集“标准光照下的标准零件”,要多收集不同光照角度、不同镜头高度、不同反光状态下的图像。产线上的真实复杂度永远超过实验室想象。

第二,类别平衡。缺陷类别之间样本量差距大的时候,用复制粘贴、小角度旋转、局部裁剪三种方式合成新样本,凑到最弱类别样本数的2到3倍就够了,再多就会过拟合到合成分布上。

第三,多尺度训练与推理。训练时imgsz在640到1280之间随机变化(Ultralytics的rect_mode参数可以做到按batch自适应),推理时固定用1280。文档强调的是模型在不同尺度上的鲁棒性,这个做法能让模型适应检测节拍导致的不同成像尺寸。

第四,学习率动态调整。用余弦退火替代固定步长衰减,配合warmup让训练初期参数稳定。实践中余弦退火比固定策略涨1到2个点mAP是常事。

第五,早停策略。patience设30到50之间,避免在验证集已经饱和后继续训练浪费时间。别迷信固定轮次,“训练到loss收敛就停”才是正确判断。

第六,NMS与置信度校准。后者是最容易被忽略的:模型输出的置信度并不等于真实概率,需要用温度缩放(Temperature Scaling)校准,否则阈值随便调都是玄学。

4.4 一张数据处理与训练的对照表

阶段关键操作参数/工具建议常见错误
数据采集多角度、多光照、记录元数据工业相机 + 光源控制器只拍标准姿态
数据标注缺陷分类 + 边界定义 + 一致性审核LabelImg/CVAT标注框过大或过小
数据清洗去模糊、修正错标、去重拉普拉斯方差 + 感知哈希忽略错标
数据增强旋转、翻转、缩放、亮度扰动幅度限制在物理可能性内增强过度引入伪特征
数据划分按批次划分70%训练 / 20%验证 / 10%测试按单张随机划分
模型训练冻结Backbone预训练 → 解冻微调Adam → SGD + 余弦退火全量微调导致过拟合
推理调优提升输入分辨率 + NMS优化 + 置信度校准imgsz=1024~1280 + 温度缩放直接用默认阈值

这张表是可以直接贴在工位旁边的操作清单。每一步的“参数/工具建议”列,是我在这类项目里反复验证过的默认值;如果你的数据特性特殊(比如缺陷尺度极端的细长划痕),再针对性调整。

4.5 评估指标的正确打开方式

文档花了整节讲评估指标,这是很多人的知识盲区,顺便一提也是“99%准确率”最容易注水的地方。障碍检测项目的完整指标组合应该是:召回率(Recall)、精确率(Precision)、mAP@0.5、mAP@0.5:0.95、F1-score。

在工业质检场景里,我的判断顺序是:先看召回率,再看mAP@0.5,最后看mAP@0.5:0.95。召回率代表漏检率——漏掉一个缺陷流到客户端可能是一次质量事故;精确率代表误检率——误检只是让产线停下来人工复核一次。权衡之下,宁可精确率低一点也要保住召回率。文档里提到的置信度校准在这里的价值就体现出来了:校准之后,你可以放心地把置信度阈值调低,因为模型告诉你“深信不疑”的时候是真的可信。

4.6 后处理优化的两个实用细节

文档讲到的NMS优化值得展开说。YOLOv11默认的NMS是类别无关的,但在缺陷检测场景,同一零件上不同缺陷类别经常挨在一起(划痕旁边伴生凹坑),类别无关NMS会把两个本来独立的检测框合并成一个,导致漏检。我一般改成熟知的class-aware模式,让同类别框之间做抑制,跨类别框保留。

置信度校准的实操方法是温度缩放:在验证集上搜索一个温度系数T,把模型输出的logits除以T再做softmax。T大于1时预测分布变平滑,模型会表现得“没那么自信”,但校准后的置信度更接近真实概率。校准之后再调阈值才有意义,否则阈值只是一个让你踩坑的黑匣子。

5. 从验证到落地:部署格式与推理性能优化

5.1 模型导出与格式选择的权衡

训练完的模型是PyTorch的.pt格式,不能直接上产线。常见的部署形态有三种:TensorRT(英伟达GPU)、OpenVINO(Intel CPU)、ONNX Runtime(通用)。

文档的工业检测场景需要实时推理,我的建议是:如果产线工控机是NVIDIA显卡,直接用TensorRT导出,fp16精度下YOLOv11s在RTX 3060上通常能跑到3到5毫秒;如果是无GPU的工控机,OpenVINO配合CPU推理也可以做到20到30毫秒,取决于CPU型号和输入分辨率。

# 导出TensorRT引擎(需要先onnx再trt,或使用trtexec) yolo export model=runs/detect/train/weights/best.pt \ format=engine \ half=True \ imgsz=1024 \ device=0

这里有个参数需要注意:imgsz必须和训练时的分辨率一致。如果训练用的1024,导出却用默认的640,模型会被强制resize到640去推理,效果暴跌是必然的。这个细节是部署环节翻车的重灾区,排障时第一个查这个。

5.2 验证集的保留与回归测试

模型部署上线前,我习惯固定一份“冻结验证集”——从测试集里抽100到200张图,覆盖所有缺陷类别和已知的困难案例。每次调整模型、调参数、改NMS逻辑,都跑一遍这份冻结验证集,用召回率和误检数做回归对比。

这个习惯救过我很多次。有一次只是把NMS从类别无关改成类别相关,当时感觉影响不大,但冻结验证集上轴承表面缺陷的召回率从96%掉到了91%。如果没跑回归测试,这个问题上了产线才被发现,代价就是一批客户退货。从那以后我每次部署前都强制走一遍冻结验证集回归,一个case都不能漏。

5.3 推理代码的关键实现

部署时推理代码要做到输入图像和模型输出的处理闭环,不要等接了产线再补齐预处理和后处理。

from ultralytics import YOLO import cv2 model = YOLO("best.engine") # TensorRT引擎 img = cv2.imread("part_001.jpg") # 预处理:保持训练时一致,BGR转RGB + letterbox resize results = model.predict( source=img, imgsz=1024, conf=0.25, # 校准后的置信度阈值 iou=0.45, # NMS的IoU阈值 max_det=200, # 单张图最多检测框数 classes=[0,1,2] # 只检测缺陷类别,不检测背景 ) boxes = results[0].boxes # 关键:把box坐标从resize后的图还原到原图坐标 # results[0].boxes.xyxy是letterbox坐标 # 用results[0].orig_shape和输入size做比例还原

这段代码里的坑都在注释里:resize方式必须与训练时一致(letterbox而不是直接拉伸),坐标还原的比例系数要用原始shape和输入shape的比值,NMS的IoU阈值如果微缺陷密集可以降到0.3。注释第5行说明阈值来源:置信度阈值必须来自校准后的结果,否则你调参完全是在猜。

5.4 现场表现与项目复盘

文档里最后复盘了数据、模型、应用三个层面的局限性和改进方向,我补充一下工程落地的实际感受。

产线上的模型和训练时的模型面对的世界不是同一个。训练数据再全面,也覆盖不了产线上所有偶然——突然的震动导致图像模糊,新供应商的零件表面纹理和旧供应商不同,夜班的光源衰减让图像整体变暗。所以模型上线之后的前两周,务必安排人在产线旁盯着,收集新的误检和漏检图像,每天补进数据集做增量训练。

关于“99%准确率”这个数字,可以说的是:这个数字在特定数据集、特定缺陷类型、特定产线条件下是可以达到的。但它一定不是模型自己长出来的,是数据、标注、增强、训练策略、后处理、部署细节每一环都做到位之后的结果。任何一环偷懒,99%都会变成97%、93%、甚至更低。希望这篇文章帮你把这套方法复现出来,少走我当年走过的弯路。

6. 让模型做得更稳的进阶实践:自动化消融与增量学习

模型达到99%只是起点,产线跑三个月之后你会发现数据一直在变,新缺陷类型出现、旧缺陷形态演变,原模型在新数据上的准确率会逐渐下滑。应对这个问题的两个进阶实践,一个是自动化的消融实验体系,一个是可持续的增量学习流程。

消融实验的目的是搞清楚“哪个改动真的有效”。不要凭感觉往模型里加模块,而是把每个改动做成开关:数据增强开关、NMS改法开关、输入分辨率开关、损失权重开关。同一份数据集、同一个种子、同样的训练轮次,只改动一个变量,对比mAP和召回率的变化。这个流程看起来费时,但能帮你避开“做了三个改动,效果涨了但不知道哪个环节起作用”的尴尬。

# 一次消融实验的脚本框架:固定数据、固定种子,只改一个变量 import subprocess import itertools base_cmd = [ "yolo", "detect", "train", "data=part_defect.yaml", "model=yolo11s.pt", "epochs=100", "batch=16", "imgsz=1024", "seed=42", # 固定随机种子,保证可比性 ] variants = { "baseline": [], "no_mosaic": ["mosaic=0.0"], # 关闭马赛克增强 "low_iou_nms": ["nms_iou=0.3"], # 降低NMS的IoU阈值 "high_res": ["imgsz=1280"], # 提高输入分辨率 } for name, extra in variants.items(): cmd = base_cmd + extra + [f"name={name}"] subprocess.run(cmd, check=True) print(f"消融实验完成: {name}")

这个脚本的逻辑很简单:固定一个种子保证两次实验的差异只来自你要测的那个变量,每个变体单独跑一轮完整训练,最后对比results.csv里的指标。说明两点:第一,seed必须固定,不固定种子即使什么都不改,两次训练的结果也会有波动,消融实验就直接失效;第二,每个单项改进如果都不涨点,不代表它们组合起来没用——这时候要测试组合方案,比如“关闭马赛克+提高分辨率”同时开。组合实验的数量随变量数指数增长,所以变量控制在5个以内。

增量学习的思路是:模型上线后,每周收集新的误检和漏检图,标注后与历史训练集合并,做一次短周期的微调训练(50轮左右,小学习率),然后跑冻结验证集回归测试。这个机制解决了两个问题:一是新缺陷类型的适应,二是数据分布漂移的跟踪。微调时的学习率要降到的十分之一,否则模型会遗忘掉旧知识,在旧数据上的精度明显回退,这就是灾难性遗忘。

还有两个实战经验值得记录:数据集版本管理和置信度阈值的定期重校准。每次微调后存档一份带版本号的数据集和权重,比如part_defect_v3.pt、datasets_v3.zip,线上出问题可以快速回滚对比;产线跑一个月后,收集实际推理结果的置信度分布,重新做一次温度缩放,因为光照衰减、零件批次变化都会让置信度分布发生偏移。

最后说一个我踩过的坑:增量学习做了五轮之后,模型在新数据上表现很好,但旧缺陷类型的召回率掉到了85%以下,当时排查很久才意识到是学习率没降够。从那以后我每次做增量训练,都会把学习率降到的五分之一,并且在微调后强制跑一遍全量旧数据的抽查——重点看旧缺陷的召回率有没有掉。如果你的项目里也用到了多批次增量训练,建议把这条也写进流程里,希望这份经验能帮你把模型在产线上跑得更久、更稳。

本文还有配套的精品资源,点击获取

返回列表