[九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)

0. 往期内容

[一]深度学习Pytorch-张量定义与张量创建

[二]深度学习Pytorch-张量的操作:拼接、切分、索引和变换

[三]深度学习Pytorch-张量数学运算

[四]深度学习Pytorch-线性回归

[五]深度学习Pytorch-计算图与动态图机制

[六]深度学习Pytorch-autograd与逻辑回归

[七]深度学习Pytorch-DataLoader与Dataset(含人民币二分类实战)

[八]深度学习Pytorch-图像预处理transforms

[九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)

[十]深度学习Pytorch-transforms图像操作及自定义方法

1. 数据增强

在这里插入图片描述
在这里插入图片描述

2. 剪裁

2.1 transforms.CenterCrop(size)

transforms.CenterCrop(size)

(1)功能:从图像中心裁剪尺寸为size的图片;
(2)参数
size: 若为int,则尺寸为size*size; 若为(h,w),则尺寸为h*w.
(3)代码示例

train_transform = transforms.Compose([
    transforms.Resize((224, 224)), #图片统一缩放到244*244

    # 1 CenterCrop
    transforms.CenterCrop(196),     # 裁剪为196*196,如果是512的话,超出244的区域填充为黑色

    transforms.ToTensor(),
    transforms.Normalize(norm_mean, norm_std),
])

2.2 transforms.RandomCrop(size, fill=0, padding_mode=‘constant’)

transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode='constant')

(1)功能:对图像随机裁剪出尺寸为size的图片;
(2)参数
size: 若为int,则尺寸为size*size; 若为(h,w),则尺寸为h*w
padding: 设置填充大小:
I. 当paddinga时,左右上下均填充a个像素;
II. 当padding(a,b)时,左右填充a个像素,上下填充b个像素;
III. 当padding(a,b,c,d)时,左、上、右、下分别填充a、b、c、d
pad_if_need:若设定的size大于原图像尺寸,则填充;
padding_mode:填充模式,有4种模式:
I. constant:像素值由fill设定;
II. edge:像素值由图像边缘的像素值决定;
III. reflect:镜像填充,最后一个像素不镜像,eg. [1,2,3,4] --> [3,2,1,2,3,4,3,2];
在这里插入图片描述
向左:由于1不会镜像,所以左边镜像2、3
向右:由于4不会镜像,所以右边镜像3、2

IV. symmetric:镜像填充,最后一个像素镜像,eg. [1,2,3,4] --> [2,1,1,2,3,4,4,3];
在这里插入图片描述
向左:1、2镜像
向右:4、3镜像

fill:padding_mode='constant'时,用于设置填充的像素值;

(3)代码示例

train_transform = transforms.Compose([
    transforms.Resize((224, 224)), #图片统一缩放到244*244

    # 2 RandomCrop
    transforms.RandomCrop(224, padding=16),
    transforms.RandomCrop(224, padding=(16, 64)),
    transforms.RandomCrop(224, padding=16, fill=(255, 0, 0)), #fill=(255, 0, 0)RGB颜色
    
    #当size大于图片尺寸,即512大于244,pad_if_needed必须设置为True,否则会报错,其他区域会填充黑色(0,0,0)
    transforms.RandomCrop(512, pad_if_needed=True),   # pad_if_needed=True
    transforms.RandomCrop(224, padding=64, padding_mode='edge'), #边缘
    transforms.RandomCrop(224, padding=64, padding_mode='reflect'), #镜像
    transforms.RandomCrop(1024, padding=1024, padding_mode='symmetric'), #镜像

    transforms.ToTensor(),
    transforms.Normalize(norm_mean, norm_std),
])

2.3 transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3/4, 4/3), interpolation)

transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值