PyTorch生态简介
作者:互联网
PyTorch的强大并不仅局限于自身的易用性,更在于开源社区围绕PyTorch所产生的一系列工具包(一般是Python package)和程序,这些优秀的工具包极大地方便了PyTorch在特定领域的使用。比如对于计算机视觉,有TorchVision、TorchVideo等用于图片和视频处理;对于自然语言处理,有torchtext;对于图卷积网络,有PyTorch Geometric ······。这里只是举例,每个领域还有很多优秀的工具包供社区使用。这些工具包共同构成了PyTorch的生态(EcoSystem)。
PyTorch生态很大程度助力了PyTorch的推广与成功。在特定领域使用PyTorch生态中的工具包,能够极大地降低入门门槛,方便复现已有的工作。比如我们在讨论模型修改时候就用到了torchvision中预定义的resnet结构,而不需要自己重新编写。同时,PyTorch生态有助于社区力量的加入,共同为社区提供更有价值的内容和程序,这也是开源理念所坚持的价值。
transforms实战
from PIL import Image from torchvision import transforms import matplotlib.pyplot as plt %matplotlib inline # 加载原始图片 img = Image.open("./lenna.jpg") print(img.size) plt.imshow(img)
(316, 316) <matplotlib.image.AxesImage at 0x157bbb7b4f0>
transforms.CenterCrop(size)
# 对给定图片进行沿中心切割 # 对图片沿中心放大切割,超出图片大小的部分填0 img_centercrop1 = transforms.CenterCrop((500,500))(img) print(img_centercrop1.size) # 对图片沿中心缩小切割,超出期望大小的部分剔除 img_centercrop2 = transforms.CenterCrop((224,224))(img) print(img_centercrop2.size) plt.subplot(1,3,1),plt.imshow(img),plt.title("Original") plt.subplot(1,3,2),plt.imshow(img_centercrop1),plt.title("500 * 500") plt.subplot(1,3,3),plt.imshow(img_centercrop2),plt.title("224 * 224") plt.show()
(500, 500) (224, 224)
transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
# 对图片的亮度,对比度,饱和度,色调进行改变 img_CJ = transforms.ColorJitter(brightness=1,contrast=0.5,saturation=0.5,hue=0.5)(img) print(img_CJ.size) plt.imshow(img_CJ)
(316, 316) <matplotlib.image.AxesImage at 0x157bbcb6400>
transforms.Grayscale(num_output_channels)
img_grey_c3 = transforms.Grayscale(num_output_channels=3)(img) img_grey_c1 = transforms.Grayscale(num_output_channels=1)(img) plt.subplot(1,2,1),plt.imshow(img_grey_c3),plt.title("channels=3") plt.subplot(1,2,2),plt.imshow(img_grey_c1),plt.title("channels=1") plt.show()
transforms.Resize
# 等比缩放 img_resize = transforms.Resize(224)(img) print(img_resize.size) plt.imshow(img_resize)
(224, 224) <matplotlib.image.AxesImage at 0x157bbdb0580>
transforms.Scale
# 等比缩放 不推荐使用此转换以支持调整大小 img_scale = transforms.Scale(224)(img) print(img_scale.size) plt.imshow(img_scale)
(224, 224) <matplotlib.image.AxesImage at 0x157bbe06df0>
transforms.RandomCrop
# 随机裁剪成指定大小 # 设立随机种子 import torch torch.manual_seed(31) # 随机裁剪 img_randowm_crop1 = transforms.RandomCrop(224)(img) img_randowm_crop2 = transforms.RandomCrop(224)(img) print(img_randowm_crop1.size) plt.subplot(1,2,1),plt.imshow(img_randowm_crop1) plt.subplot(1,2,2),plt.imshow(img_randowm_crop2) plt.show()
(224, 224)
transforms.RandomHorizontalFlip
# 随机左右旋转 # 设立随机种子,可能不旋转 import torch torch.manual_seed(31) img_random_H = transforms.RandomHorizontalFlip()(img) print(img_random_H.size) plt.imshow(img_random_H)
(316, 316) <matplotlib.image.AxesImage at 0x157bbf138b0>
transforms.RandomVerticalFlip
# 随机垂直方向旋转 img_random_V = transforms.RandomVerticalFlip()(img) print(img_random_V.size) plt.imshow(img_random_V)
(316, 316) <matplotlib.image.AxesImage at 0x157bbf67af0>
transforms.RandomResizedCrop
# 随机裁剪成指定大小 img_random_resizecrop = transforms.RandomResizedCrop(224,scale=(0.5,0.5))(img) print(img_random_resizecrop.size) plt.imshow(img_random_resizecrop)
(224, 224) <matplotlib.image.AxesImage at 0x157bcf976a0>
对图片进行组合变化 tranforms.Compose()
# 对一张图片的操作可能是多种的,我们使用transforms.Compose()将他们组装起来 transformer = transforms.Compose([ transforms.Resize(256), transforms.transforms.RandomResizedCrop((224), scale = (0.5,1.0)), transforms.RandomVerticalFlip(), ]) img_transform = transformer(img) plt.imshow(img_transform)
<matplotlib.image.AxesImage at 0x157bcff0fa0>
标签:plt,img,简介,imshow,PyTorch,transforms,224,生态,size 来源: https://www.cnblogs.com/liyiyu/p/16516037.html