零基础入门语义分割-Task2 数据扩增

本文介绍了语义分割中的数据扩增技术,包括几何变换(如翻转、裁剪、旋转和平移)、颜色变换、核滤波器、随机擦除等方法,以增加训练样本、缓解过拟合并提升模型泛化能力。同时,文章讨论了OpenCV和albumentations库在数据扩增中的应用,并提及在Pytorch框架下如何处理数据。
摘要由CSDN通过智能技术生成

目的

顾名思义,数据扩增的原因是原始数据量不足,希望通过扩增达到

  • 增加训练样本
  • 有效缓解过拟合
  • 赋予模型更强的泛化能力
    其根本目的是使得训练数据尽可能地接近测试数据,从而提高预测精度,增加鲁棒性

常用方法

基于几何变换

Flipping

  • 水平变换多于竖直变换
  • 字符型图像数据不适用

Cropping

  • 常用
  • 通用

Rotation

MNIST 在-20°到20°之间没问题 加大旋转角可能会影响标签

Translation

平移变换 (上下左右)可以避免数据中的位置偏差
当原始图像被平移后造成的空白区域,可以用一个常数值填充,如 0 或 255 ,也可以用随机或高斯噪声填充。这种填充可以保留图像增强后的空间尺寸。

Noise Injection

增加高斯噪声是比较常用的操作,增加噪声可以帮助 CNNs 学习到更 robust feature。

对于训练数据中存在的位置偏差,几何变换是非常好的解决方案。有许多潜在的偏差来源,可以将训练数据与测试数据的分布分开。如果存在位置偏差,例如在人脸识别数据集中,每个人脸都是完全居中的,几何变换是一个很好的解决方案。除了克服位置偏差的强大能力之外,几何变换也很有用,因为它们很容易实现。有很多成像处理库,可以让水平翻转和旋转等操作轻松上手。几何变换的一些缺点包括额外的内存、变换计算成本和额外的训练时间。一些几何变换,如平移或随机裁剪等几何变换必须手动观察,以确保它们没有改变图像的标签。最后,在所涉及的许多应用领域,如医学图像分析,训练数据与测试数据之间的偏差比位置偏差和平移偏差更复杂。因此,几何变换也不一定总是能带来明显的效果。

颜色变换

  • 对过亮或过暗的图像进行快速处理的方法是在图像中进行循环,并将像素值减少或增加一个恒定值。
    另一种快速的色彩空间处理方法是拼接出单个RGB颜色矩阵。
    另一种变换包括将像素值限制在一定的最小值或最大值。数字图像中颜色的内在表现形式,使其可以用于许多增强策略。 通道分离 亮度 对比度 饱和度
    基于直方图 灰度图 转换为灰度图后,计算量减少,但是精度通常会有所降低,有人在 ImageNet 上对比 RGB 和
    灰度图,发现灰度图的精度下降大约 3%。

Kernel filters

  • 模糊
  • 锐化

Mixing

  • 对小的数据集明显
  • 两幅图每个像素取平均
  • 两幅图线性叠加
  • 从两幅图或者多幅图中裁剪一个局部,然后拼接

Random Erasing

类似于dropout,但random erasing 是在输入数据空间进行,而非是在网络结构中。这种方法也可以看着是在模拟遮挡的情况,以保证网络关注整个图像,而不是只关注其中的一个子集。

通常 earsing 的区域直接填充随机值效果更好。使用的时候需要注意是否标签安全,可能需要人为的加入一些限制,以保证标签的正确性。

OpenCV的数据扩增

# 首先读取原始图片
img = cv2.imread(train_mask['name'].iloc[0])
mask = rle_decode(train_mask['mask'].iloc[0])

plt.figure(figsize=(16, 8))
plt.subplot(1, 2, 1)
plt.imshow(img)

plt.subplot(1, 2, 2)
plt.imshow(mask)
# 垂直翻转
plt.figure(figsize=(16, 8))<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值