079.自监督学习预训练:在无标签数据上预训练YOLO骨干网络
上周调一个产线缺陷检测项目,客户数据只有两百张标注图,现场摄像头拍回来的未标注图像倒是有十几万张。训练时骨干网络层权重震荡得厉害,收敛曲线像心电图。突然想到仓库里堆着的那些无标签数据——能不能让模型先自己从这些数据里学点通用特征?
自监督预训练的核心逻辑
自监督学习的聪明之处在于把无标签数据自己生成监督信号。常见的做法是对输入图像做随机裁剪、颜色抖动、灰度化这些数据增强,然后让模型学习不同增强视图之间的一致性。比如SimCLR那套对比学习框架,同一个图像的两个增强版本在特征空间里应该靠近,不同图像的则应该拉远。
但YOLO这类检测器骨干网络预训练有个特殊问题:检测需要位置敏感的特征,而很多自监督方法学到的特征对空间信息不友好。直接拿ImageNet上训好的对比学习模型当骨干,检测头接上去后AP可能掉三五个点。
实战中的两种接地气方案
方案一:MoCo v2 + 检测适配调优
我们尝试用MoCo v2在无标签数据上预训练DarkNet-53。MoCo的优势是用了动量编码器和队列结构,内存效率高,适合我们本地那台32G内存的机器。
# MoCo预训练的核心片段classMoCo(nn