[pytorch]-torchvision.transforms.Compose()介绍及相关代码实例理解数据变换

简介

tprchvision是 P y T o r c h PyTorch PyTorch的一个图形库,其服务于 P y T o r c h PyTorch PyTorch的深度学习框架,主要用来构建计算机视觉模型,torchvision主要用于常见的一些图形变换,以下是 t o r c h v i s i o n torchvision torchvision的构成:

  • 1.torchvision.datasets: 一些加载的数据函数及常用的数据接口.
  • 2.torchvision.models: 包含常用的模型结构: (含预训练模型) 例如AlexNet、VGG、ResNet等;
  • 3.torchvision.transforms: 常用的图片变换,裁剪旋转等.
  • 4.torchvision.utils: 其他的一些有用的方法。
    本文的主题其中是 t o r c h v i s i o n . t r a n s f o r m s . C o m p o s e ( ) torchvision.transforms.Compose() torchvision.transforms.Compose()类,
    这个类主要作用是,串联多个图片变换的操作.这个类构造很简单.
class torchvision.transforms.Compose(transforms):
 # Composes several transforms together.
 # Parameters: transforms (list of Transform objects) – list of transforms to compose.
 
Example # 可以看出Compose里面的参数实际上就是个列表,而这个列表里面的元素就是你想要执行的transform操作。
>>> transforms.Compose([
>>>     transforms.CenterCrop(10),
>>>     transforms.ToTensor(),])


事实上, C o m p s e ( ) Compse() Compse()类会将transform列表里面的transform操作进行遍历,实现代码很简单.

## 这里对源码进行了部分截取。
def __call__(self, img):
	for t in self.transforms:	
		img = t(img)
    return img


from torchvision import transforms
from PIL import Image
# 常用的数据变换器
resize = 224
tf = transforms.Compose([  
					      lambda x:Image.open(x).convert('RGB'),          	# 1.string path= > image data 并转换为RGB图像
					                                                        
					      transforms.Resize(                              	# 2.对图像进行缩放操作
					        (int(resize * 1.25), int(resize * 1.25))), 
					      transforms.RandomRotation(15), 					# 3.进行随机旋转
					      transforms.CenterCrop(resize),             		# 4.进行中心裁剪防止旋转后边界出现黑框部分
					      transforms.ToTensor(),							# 5.0-255RGB值映射至0-1
					      transforms.Normalize(mean=[0.485, 0.456, 0.406], 	# 归一化至[-1,1] mean std 来自imagenet 计算
					                           std=[0.229, 0.224, 0.225])
       							 ])
img_path = './train/empty/spot1.jpg'
print(type(img_path))
a = Image.open(img_path)
print(type(a))
img = tf(img_path)
print(type(img))

<class 'str'>
<class 'PIL.JpegImagePlugin.JpegImageFile'>
<class 'torch.Tensor'>

总结

慢慢的将各种操作进行Compose进行变换,会自己理解其参数含义,然后用于自己的代码中,都行啦的理由与打算.

你可能感兴趣的:(Torch的使用及参数解释,pytorch,深度学习,python)