基于PyTorch框架的torchvision:
torchvision.datasets:
下载数据集,包含一些加载数据的函数及数据集接口
包含的数据集有:
MNIST、COCO(用于图像标记和目标检测)、LSUN Classification
ImageFolder、Imagenet-12、CIFAR10 and CIFAR100、STL10
其中Dataset拥有__getitem__和__len__两个API(接口),可以使用torch.utils.data.Dataset()或torch.utils.data.DataLoader()来加载数据集。
具体可看pytorch中文手册
torchvision.models:
其子模块包括的模型结构有:
AlexNet VGG ResNet SqueezeNet DenseNet
对ResNet variants和AlexNet,提供有pretrained模型。
import torchvision.models as models
# pretrained=True 就可以使用预训练模型
resnet18 = models.resnet18(pretrained=True)
alexnet = models.alexnet(pretrained=True)
torchvision.transforms:
对PIL.Image进行变换。
class torchvision.transforms.Compose(transforms) 将多个transforms组合起来用
transforms.Compose([
transforms.CenterCrop(10),# 对PIL.Image进行中心切割,得到给定的size
transforms.ToTenser(),
])
class torchvision.transforms.Scale(size, interpolation=2)
# 将输入的‘PIL.Image’重新改变大小成给定的‘size’
from torchvision import transforms
from PIL import Image
crop = transforms.Resize(12)
img = Image.open('gs/testset/test_image/drishtiGS_020.png')
print(type(img))
print(img.size)
croped_img = crop(img)
print(type(croped_img))
print(croped_img.size)
结果:
<class 'PIL.PngImagePlugin.PngImageFile'>
(2048, 1757)
<class 'PIL.Image.Image'>
(13, 12)
class torchvision.transforms.RandomCrop(size, padding=0) 切割中心的位置随机选取
class torchvision.transforms.RandomHorizontalFlip 随机水平翻转给定的PIL.Image,概率为0.5
class torchvision.transforms.RandomSizedCrop(size, interpolation=2) 将给定的PIL.Image随机剪切,再重新给size
class torchvision.transforms.Pad(padding, fill=0) 将PIL.Image的边进行填充,padding:要填充多少像素值 fill:用什么值填充
对Tensor进行变换
class torchvision.transforms.Normalize(mean, std) 将Tensor正则化。
image = (image - mean)/std
class torchvision.transforms.ToTensor
把一个取值范围为[0,255]的PIL.Image或者shape为(H,W,C)的numpy.ndarray,转换为[C,H,W],取值范围是[0,1,0]的torch.FloadTensor
class torchvision.transforms.ToPILImage 转换为PIL.Image
torchvision.utils:
torchvision.utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False)
normalize:是否要将图片进行归一化
range(min,max):用来规范image
scale_each=True:每个图片独立规范化,而不是根据所有图片的像素最大最小值来规范化
torchvision.utils.save_image(tensor, filename, nrow=8, padding=2, normalize=False, range=None, scale_each=False) 将给定的Tensor保存成image文件