pytorch学习笔记深度学习目标跟踪&&目标检测opencv for Java图像处理

pytorch学习(三)—transforms变换

2018-12-17  本文已影响9人  侠之大者_7d3f

Why transforms?

  1. 一般情况下收集到的图像样本在尺寸,亮度等方面存在差异,在深度学习中,我们希望样本分布是独立同分布的,因此需要对样本进行归一化预处理。

  2. 有时候只能获取到少量的样本数据,获取数量较多的样本不容易。但是样本数量太少训练的模型精度会比较低,为了解决这样的问题,往往需要做数据增加data arguement, 数据增加的途径就是通过一些变换达到目的。


pytorch中的transforms

torchvision

在pytorch中,transforms位于 torchvision.transforms 包中

image.png

主要包含的变换:

类型 作用
Transforms on PIL Image 对PIL.Image图像进行变换
Transforms on torch.*Tensor 对torch.Tensor进行变换
Conversion Transforms
Generic Transforms 一些通用的变换
Functional Transforms 函数

开发/实验环境


API 参考

Reference
pytorch官网文档

image.png

实践

一、对PIL Image进行变换(Transforms on PIL Image)

类型 说明
CenterCrop(size) 中心裁剪
FiveCrop(size) 4个角+中心裁剪 = 5, 返回多张图像
Grayscale(num_output_channels = 1) 灰度化
Pad(padding, fill=o,padding_mode='constant) 图像边沿加pad
RandomAffine(degrees,translate,scale,shear,resample,fillcolor) 随进放射变换
RandomApply(..) 对图像随机应用变换
RandomCrop(..) 随机位置裁剪
RandomGrayscale(..)
Resize(size) 对图像进行尺寸缩放
import numpy as np
from torchvision.transforms import transforms
from PIL import Image

# 准备好实验的图像,一个彩色32bit图像
IMG_PATH = './data/lena_rgb.jpg'
img = Image.open(IMG_PATH)

# -----------------类型转换---------------------------------------
#transforms1 = transforms.Compose([transforms.ToTensor()])
#img1 = transforms1(img)
#print('img1 = ', img1)

# ---------------Tensor上的操作---------------------------------
#transforms2 = transforms.Compose([transforms.Normalize(mean=(0.5, 0.5, #0.5), std=(0.5, 0.5, 0.5))])
#img2 = transforms2(img1)
#print('img2 = ', img2)

# ---------------PIL.Image上的操作---------------------------------
transforms3 = transforms.Compose([transforms.Resize(256)])
img3 = transforms3(img)
print('img3 = ', img3)
img3.show()

transforms4 = transforms.Compose([transforms.CenterCrop(256)])
img4 = transforms4(img)
print('img4 = ', img4)
img4.show()

transforms5 = transforms.Compose([transforms.RandomCrop(224, padding=0)])
img5 = transforms5(img)
print('img5 = ', img5)
img5.show()

transforms6 = transforms.Compose([transforms.Grayscale(num_output_channels=1)])
img6 = transforms6(img)
print('img6 = ', img6)
img6.show()

transforms7 = transforms.Compose([transforms.ColorJitter()])
img7 = transforms7(img)
img7.show()


二、对torch.*tensor的变换


End

上一篇 下一篇

猜你喜欢

热点阅读