深度学习数据增强有哪些常用方法?
数据增强得按“任务类型 + 会不会破坏标签”来挑。分类可以放开手脚,检测和分割一旦动几何变换,标注框和mask必须跟着一起变,否则等于自己往数据里掺毒。
下面把常用方法按类别捋一遍:
第一类:几何变换,最基础也最常用。 水平翻转、随机旋转、平移、缩放、随机裁剪(分类里常用RandomResizedCrop)。作用是让模型对物体的位置、朝向、大小不敏感。注意两点:一是竖直翻转要慎用,行人、车牌、文字这类上下有意义的目标翻过来就成了假样本;二是旋转角度别太大,检测任务里转个45度,目标框会被撑得又大又空。
第二类:颜色和像素扰动。 亮度、对比度、饱和度、色相抖动,再加高斯噪声、高斯模糊、随机灰度。核心是模拟不同光照、不同相机、不同天气下的成像差异。YOLO里的hsv_h、hsv_s、hsv_v就是干这个的。但医学影像、遥感、工业质检这类颜色本身带信息的场景,色彩类增强要收着用,别把关键特征调没了。
第三类:遮挡类。 Random Erasing和Cutout,随机把图上一块区域抹掉或涂成噪声,逼模型别只盯着一个局部特征下判断。对遮挡多、目标容易被部分挡住的场景(行人、车辆)特别有用。
第四类:混合类。 Mixup是把两张图按比例叠加、标签也按比例混合;CutMix是把一张图的一块贴到另一张上,标签按面积分配。它们能显著提升泛化、抗过拟合,是很多比赛涨点的常用手段。检测任务里还有Mosaic——四张图拼成一张,一次见到更多尺度和更密的目标,YOLO默认就开着。
第五类:自动增强策略。 AutoAugment、RandAugment,把上面这些操作按搜索出来的策略自动组合。不想手调一堆参数,直接上RandAugment,两个参数(操作数量和强度)就能跑,省心。
再说下三个任务上的关键区别,分类最省心,图怎么变、标签都不变;检测做翻转、缩放、Mosaic时,边界框坐标必须同步变换,好在成熟框架都帮你处理好了,自己写dataset时千万别漏;分割的变换要原样作用到mask上,而且mask插值只能用最近邻,用了双线性会插出根本不存在的中间类别。
先想清楚你的数据缺哪类样本——是缺光照变化、缺遮挡、还是缺角度,再针对性地加对应增强。对着缺口补,比无脑全开有用一百倍。
更多推荐



所有评论(0)