【TensorFlow&PyTorch】图像数据增强API

前言:

在进行深度学习训练时,遇到训练效果较差、训练集数量小、有过拟合趋向时可以选择加大数据集数量来优化训练模型,但是大多数情况下,增加数据集数量所花费的时间精力是巨大的,所以我们更常用的方法是对现有的数据集进行数据增强。不如实实在在增加数据集数量,但是还是有一定的效果的,性价比高。(只要加几行代码)

TensorFlow的API在image下:(我用的2.0版本,不同的版本可能API不同,但是基本都可以在 iamge下找到)

Module: tf.image  |  TensorFlow Core v2.0.0https://tensorflow.google.cn/versions/r2.0/api_docs/python/tf/image

from tensorflow import image

PyTorch的API在torchvision的transforms下:torchvision — Torchvision 0.13 documentationicon-default.png?t=M666https://pytorch.org/vision/stable/index.html

from torchvision import transforms

以下列举几个本人认为常用的方法. 

要详细的API点击上面链接去官方文档查看.

随机翻转图片:

TensorFlow:

随机上下翻转:

output=image.random_flip_up_down(input)

随机左右翻转:

output=image.random_flip_left_right(input)

 PyTorch:

随机上下翻转:

layer=transform.RandomHorizontalFlip( )

随机左右翻转:

layer=transform.RandomVerticalFlip( )

随机旋转图像|n°|:

layer=transform.RandomRotation(n)

注意这里得到的是层(layer),还需要把图片塞到层里才能得到结果.而TensorFlow中的例子是直接可以得到结果.

例:output=layer(input)

随机裁剪图像:

TensorFlow:

将input随机裁剪成shape大小:

output=image.random_crop(input,[shape])

将input随机裁剪,中心部分保留central_fraction(0~1).例如central_fraction=0.5,则中心部分保留一半.

output=image.central_crop(input, central_fraction)

PyTorch:

得到将传入图像裁剪成shape的层:

layer=transforms.RandomCrop(shape)

得到将传入图像保留中心部分并裁剪成shape的层:

layer=transform.CenterCrop(shape)

正则化:

严格来说正则化不是数据增强,但是它可以让图像更加利于训练.以下举例仅限三通道RGB图像.

将图像的像素值变成均值为mean,方差为std的正态分布.

以下的mean和std是前人计算好的最优值(也许?)

TensorFlow:

TensorFlow貌似没有接口,所以得自己写:

mean=tf.constant([0.485,0,456,0.406])
std=tf.constant([0.229,0.224,0.225])
output=(input-mean)/std

PyTorch:

 layer=transform.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])

结尾: 

TensorFlow的image下有很多处理图像的API(不局限于数据增强),感兴趣可以去看看.(英语不好的我表示看得很累)

由于以上PyTorch得到的是层,所以可以封装进一个容器里:

transform.Compose([
            layer1,
            layer2,
            layer3,
            ……………… 
            transform.ToTensor()#最后记得加上这个层,将图像转成tensorf才能被pytorch识别
        ])

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值