CV数据增强与输入管线

CV数据增强与输入管线


一、数据增强分类体系

增强方式分类

类型 说明 适用阶段
离线增强 训练前固定生成增强数据,数据量翻倍 数据量极小时
在线增强 训练时随机增强,每次epoch看到不同数据 通用推荐方式

增强方法分类

类别 方法 改变像素信息 适用任务
几何变换 翻转、旋转、裁剪、缩放、仿射变换 分类/检测/分割
颜色变换 HSV调整、RGB扰动、对比度、亮度 分类/检测/分割
噪声注入 高斯噪声、椒盐噪声 分类/检测
随机擦除 Cutout、随机擦除区域 分类/检测
图像混合 MixUp、CutMix、Mosaic 分类/检测
自动搜索 AutoAugment、RandAugment 分类
边缘增强 锐化、浮雕、边界检测 分类/检测
超像素化 超像素分割后处理 分类

二、基础数据增强详解

几何变换

方法 说明 注意事项
水平翻转 左右镜像 检测/分割需同步变换框/掩码
垂直翻转 上下镜像 检测/分割需同步变换框/掩码
随机旋转 0~360度旋转 检测框需同步旋转,分割掩码需同步
随机裁剪 从图像中裁剪子区域 检测需调整框坐标,分割需调整掩码
随机缩放 放大或缩小 多尺度训练的核心
仿射变换 平移+旋转+缩放组合 检测/分割需同步变换

颜色变换

方法 说明 参数建议
HSV调整 色相/饱和度/明度微调 色相±10%, 饱和度±20%, 明度±20%
RGB扰动 三通道随机偏移 偏移量±0.1
亮度调整 整体亮度变化 ±30%
对比度调整 对比度变化 ±30%
高斯噪声 添加正态分布噪声 sigma=10~25
模糊 高斯模糊/运动模糊 kernel_size=3~7

三、高级数据增强详解

MixUp

维度 说明
原理 两张图像按比例alpha混合: x = alphax1 + (1-alpha)x2
标签 标签同步混合: y = alphay1 + (1-alpha)y2
alpha取值 通常从Beta(alpha, alpha)分布采样,alpha=0.2~0.4
效果 使类别空间更连续,增强泛化能力
适用 分类任务,检测需特殊处理

Cutout

维度 说明
原理 随机遮挡图像中一个矩形区域(填充0或均值)
作用 模拟遮挡,强迫模型学习多个判别区域
遮挡比例 通常遮挡10%~30%面积
与Dropout关系 Cutout是空间维度的Dropout
适用 分类/检测

CutMix

维度 说明
原理 从一张图裁剪矩形区域粘贴到另一张图上
标签 按粘贴面积比例混合标签
与Cutout区别 Cutout填充0,CutMix填充另一张图的内容
与MixUp区别 MixUp全局混合,CutMix局部混合
效果 同时利用两张图的信息,比Cutout更有效
适用 分类任务

Mosaic

维度 说明
原理 4张图拼接成1张(2x2网格)
标签 4张图的框/标签全部保留
变体 固定角落裁剪(保持边界信息) vs 随机裁剪
效果 等效增大batch_size,丰富背景
适用 目标检测(YOLOv5标配)
注意 分割任务需同步处理4张图的掩码

SnapMix

维度 说明
原理 基于类激活图(CAM)的CutMix改进
核心改进 按CAM权重计算混合比例,而非简单面积比
效果 比CutMix更精确的标签混合,在分类任务上优于CutMix/MixUp
适用 图像分类

GridMask

维度 说明
原理 用固定间距的网格状遮挡覆盖图像
参数 网格大小d、遮挡比例r
与Cutout区别 GridMask是结构化遮挡,覆盖更均匀
适用 分类/检测

四、AutoAugment与自动增强搜索

AutoAugment

维度 说明
核心思想 用强化学习自动搜索最优增强策略组合
搜索空间 增强方法选择 + 每种方法的强度参数
搜索方法 RNN控制器生成策略→训练子网络→精度作为奖励→强化学习更新
策略数量 可生成约15000种策略组合
效果 比人工选择增强策略更优
劣势 搜索耗时,需要额外计算资源

RandAugment

维度 说明
改进 简化搜索空间为两个参数:增强种类数N + 幅度M
优势 无需RL搜索,直接调N和M两个参数
实用性 比AutoAugment更易使用

增强策略选择建议

阶段 推荐策略 理由
Baseline 基础几何+颜色变换 简单有效,快速验证
中期提分 MixUp/CutMix + 基础增强 进一步提升泛化
检测提分 Mosaic + MixUp YOLOv5标配组合
后期精调 AutoAugment/RandAugment 自动搜索最优组合
过拟合时 加强增强强度+增加增强种类 增强是抗过拟合最有效手段

五、TTA(测试时增强)

TTA原理

维度 说明
核心思想 对测试图像做多种变换后分别预测,再融合结果
与训练增强区别 训练增强增加数据多样性,TTA增加预测稳定性
常用变换 水平翻转、垂直翻转、多尺度缩放、轻微旋转
融合方式 分类:概率平均; 检测:框融合(WBF/NMS); 分割:概率平均

TTA实战要点

要点 说明
变换选择 只用可逆变换(翻转、缩放),不用改变内容的增强
变换数量 3~5种即可,过多收益递减且耗时
与交叉验证关系 有交叉验证时TTA收益降低,但仍有提升
耗时 推理时间翻倍(3种TTA≈3倍时间)
适用场景 比赛后期冲刺,推理时间不敏感时

六、数据输入管线

大规模图像数据读取方案

方案 说明 适用场景
直接读取 每次从硬盘读取图片 数据量小(<10K)
TFRecord 将图片序列化为二进制文件 TensorFlow生态
LMDB 将图片存入键值数据库 PyTorch生态,读取快
预处理缓存 预处理结果存入内存/硬盘 预处理耗时时

TFRecord管线

步骤 说明
1. 定义格式 用Protocol Buffer定义数据结构(图片路径、标签、图像字节)
2. 序列化写入 将每个样本序列化为Example,写入TFRecord文件
3. 解析读取 定义parse函数,从TFRecord解析出图片和标签
4. 数据生成器 使用tf.data.Dataset构建数据管道,支持并行读取和预取

PyTorch数据管线

组件 说明
Dataset 定义__getitem__返回单个样本(图片+标签)
DataLoader 批量加载、多进程并行、shuffle
Albumentations 在线数据增强,与PyTorch无缝集成
prefetch_factor 预取batch数,减少IO等待

医学大图处理管线

步骤 说明
1. 大图裁剪 将TIF大图裁剪为固定大小切片(如1024x1024)
2. 有效区域过滤 过滤掉空白/背景切片,只保留有组织区域的切片
3. 切片级训练 每个切片作为独立样本训练
4. 预测拼接 将切片预测结果拼回大图坐标空间
5. 后处理 去除碎片、填充空洞、连通域分析