1.transforms
#第一步tansforms.Compose([])
class Compose(object):
"""Composes several transforms together.
Args:
transforms (list of ``Transform`` objects): list of transforms to compose.
Example:
>>> transforms.Compose([
>>> transforms.CenterCrop(10),
>>> transforms.ToTensor(),
>>> ])
"""
def __init__(self, transforms):
self.transforms = transforms
def __call__(self, img):
for t in self.transforms:
img = t(img)
return img
def __repr__(self):
format_string = self.__class__.__name__ + '('
for t in self.transforms:
format_string += '\n'
format_string += ' {0}'.format(t)
format_string += '\n)'
return format_string
__call__使函数可以调用 for 循环遍历transforms内容,所以Compose参数为list形式。
__repr__:当print(Classname)默认情况下,__repr__() 会返回和调用者有关的 “类名+object at+内存地址”信息。重新实现可以输出我们想要的内容来描述该类。
下面各种transforms都会先判断图像是否为PIL(Python Imaging Library),而在datasets中__gititem__中存在img =Image.fromarray(img.numpy(),mode='L')使数据调用前称为PIL类型(先转换data为PIL,再遍历transforms)。
transform.RandomHorizontalFlip(p):以概率p水平随机翻转,p默认0.5.
transforms.RandomCrop(size,padding): 对原图增加padding然后再随机裁剪到size大小。
#用python numpy简单实现随机翻转及剪裁。
def trans_flip_crop(data, size, p=0.5, trans_range=0, padding=0):
import numpy as np
import random
images = n