当前位置:   article > 正文

【随笔】深度学习的数据增强还分在线和离线?_数据增强策略能同时进行在线增强和离线增强吗

数据增强策略能同时进行在线增强和离线增强吗

在这里插入图片描述
之前看深度学习的文章,基本都在数据预处理部分进行了数据增强。

什么旋转、跳跃、我不停歇~

不对,不对。是旋转、平移、裁剪等操作。

所以最近在做目标检测时,废话不多说,先把数据增强的代码整上去!

from paddlex.det import transforms
train_transforms = transforms.Compose([
    transforms.RandomDistort(),
    #transforms.RandomExpand(),
    transforms.RandomCrop(),
    transforms.RandomHorizontalFlip(),
    transforms.Normalize(),
    #transforms.ResizeByShort(short_size=800, max_size=1333),
    transforms.Padding(coarsest_stride=32)
])

eval_transforms = transforms.Compose([
    transforms.Normalize(),
    #transforms.ResizeByShort(short_size=800, max_size=1333),
    transforms.Padding(coarsest_stride=32),
])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

上面这段代码是 paddle 框架中的数据增强接口,用了几天发现有点不对劲,这货一通操作后,具体把样本扩充到多少张了?

这是个问题。

所以咨询了 paddle 的开发人员后,发现这个数据增强接口 并没有做数据扩充,只是对图片进行变换,你大妈已经不是你大妈了,但是你最终还是只有一个大妈。
在这里插入图片描述
如果数量不变的话,数据增强有什么意义呢?菜鸡的我又去 Github 上问了下。
在这里插入图片描述

“将训练的epoch数增大,就等价于扩充了训练时的图像数量”,这句话很有哲理。

在一番搜索之后,这其实说的是 在线数据增强,一般常见的是 离线数据增强,也是就一次性把数据扩充好,用这个大数据集进行模型训练。

而这样的方式,在数据集很大时,就比较耗费空间,所以这时就可以采用 “在线数据增强”,也就是说在每个epoch进行训练前,对数据集进行旋转、平移等变换。等到下一次epoch时,只要数据增强方式够多,并且每个方式都包含随机因子,那么就可以保证每个epoch训练的数据都是不一样的,也就是说有多少轮epoch,我们就把数据扩充了多少倍。

本节炼丹小课堂就结束了,同学们下节课见~

猜你喜欢:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/255175
推荐阅读
相关标签