从零入门CV图像竞赛(Deepfake攻防) Task 03 笔记

作者:一片蔚蓝的天空

Part1 数据增强基础

1. 数据增强目的:

  • 增加训练数据多样性,提高模型泛化能力。
  • 使模型在未见过的数据上表现更好。

2. 数据增强方法:

  • 对原始数据进行变换操作生成新训练样本。
  • 模拟真实世界变化,如视角、光照、遮挡等。

3. 图像数据增强:

  • 包括视角、光照、遮挡等变换,使模型学习鲁棒特征。

4. 变换操作注意事项:

  • 变换应与目标任务实际场景相符,避免引入无关噪音。
  • 避免过度增强导致图像失真,影响特征学习。

5. PyTorch数据增强示例:

  • 使用transforms模块进行图像大小调整、随机翻转、转换为张量、归一化等操作。
train_loader = torch.utils.data.DataLoader(
    FFDIDataset(train_label['path'].head(1000), train_label['target'].head(1000), 
            transforms.Compose([
                        transforms.Resize((256, 256)),
                        transforms.RandomHorizontalFlip(),
                        transforms.RandomVerticalFlip(),
                        transforms.ToTensor(),
                        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ])
    ), batch_size=40, shuffle=True, num_workers=4, pin_memory=True
)

val_loader = torch.utils.data.DataLoader(
    FFDIDataset(val_label['path'].head(1000), val_label['target'].head(1000), 
            transforms.Compose([
                        transforms.Resize((256, 256)),
                        transforms.ToTensor(),
                        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        ])
    ), batch_size=40, shuffle=False, num_workers=4, pin_memory=True
)

6. 具体操作步骤:

  1. 图像大小调整transforms.Resize((256, 256))统一图像尺寸。
  2. 随机水平翻转transforms.RandomHorizontalFlip()增加视角多样性。
  3. 随机垂直翻转transforms.RandomVerticalFlip()进一步增加多样性。
  4. 转换为张量transforms.ToTensor()将图像数据转换为Tensor格式。
  5. 归一化transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])标准化图像像素值。

7. 数据加载器配置:

  • train_loader:使用增强操作,批量大小40,随机打乱,多线程加载,固定内存。
  • val_loader:仅使用大小调整和归一化,避免引入不必要噪音。

8. 归一化的重要性:

  • 加快模型收敛速度,提高数值稳定性。
  • 对于验证集,应避免使用可能引入不必要噪音的增强方法。

9. 验证集处理:

  • 通常只需进行必要的预处理,如调整大小和归一化。

Part2 常见数据增强方法

1. 数据增强目的:

  • 提高模型泛化能力,通过增加训练数据的多样性。

2. torchvision.transforms模块:

  • 提供多种数据增强方法,适用于图像分类、目标检测、图像分割和视频分类等任务。

3. 几何变换:

  • 调整大小Resize调整图像到指定尺寸。
  • 随机裁剪RandomCropRandomResizedCrop随机裁剪图像。
  • 中心裁剪CenterCrop从图像中心裁剪。
  • 五裁剪和十裁剪FiveCropTenCrop分别裁剪图像的四个角和中心。
  • 翻转RandomHorizontalFlipRandomVerticalFlip水平或垂直翻转图像。
  • 旋转RandomRotation随机旋转图像。
  • 仿射变换RandomAffine进行随机仿射变换。
  • 透视变换RandomPerspective进行随机透视变换。

4. 颜色变换:

  • 颜色抖动ColorJitter随机改变亮度、对比度、饱和度和色调。
  • 灰度化GrayscaleRandomGrayscale将图像转换为灰度图。
  • 高斯模糊GaussianBlur对图像进行高斯模糊。
  • 颜色反转RandomInvert随机反转图像颜色。
  • 颜色 posterizeRandomPosterize减少颜色通道的位数。
  • 颜色 solarizeRandomSolarize反转高于阈值的像素值。

5. 自动增强:

  • 自动增强AutoAugment自动学习数据增强策略。
  • 随机增强RandAugment随机应用数据增强操作。
  • TrivialAugmentWide:提供与数据集无关的增强。
  • AugMix:混合多个增强操作进行数据增强。

6. 数据增强应用:

  • 通过模拟真实世界的变化,增强模型对不同情况的适应性。
  • 避免过度增强导致图像失真,影响模型学习。

7. 数据增强策略:

  • 选择合适的增强方法,根据任务需求和数据特性进行调整。

Part3 进阶数据增强方法

1. MixUp

  • 原理:通过将两个图像及其标签按比例混合,创建新训练样本。
  • 目的:增加数据多样性,提高泛化能力,减少过拟合。
  • 混合比例:由超参数alpha控制,alpha在0到1之间。
  • 过程
    1. 随机选择两个图像和标签。
    2. 按alpha比例混合图像和标签,生成新样本。

2. MixUp的优点

  1. 增加数据多样性:创建多样化训练样本,学习鲁棒特征。
  2. 减少过拟合:降低模型对特定样本的依赖。
  3. 提高泛化能力:提升模型在未见数据上的表现。

3. CutMix

  • 原理:通过剪切一个图像的一部分并粘贴到另一个图像上,创建新样本。
  • 关键步骤
    1. 随机选择两个图像和标签。
    2. 随机选择剪切区域的大小和位置。
    3. 将一个图像的剪切区域粘贴到另一个图像上,生成新图像。
    4. 根据剪切区域大小,计算标签的加权平均值,生成新标签。

4. CutMix的优点

  1. 直观性:模拟真实世界中的视觉遮挡和混合。
  2. 多样性:增加训练样本的视觉变化。
  3. 标签调整:根据剪切区域调整标签,保持标签的一致性。

5. 数据增强的应用

  • 适用于图像分类、目标检测等任务,提升模型在复杂场景下的表现。

6. 注意事项

  • 选择合适的alpha值和剪切区域,避免过度增强导致模型性能下降。
  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值