PyTorch|transforms

在将图片输入到神经网络进行训练时,一般都需要对输入的图像进行预处理。对图片进行操作有很多种方法,这里我们使用torchvision库的transforms模块

tansforms有很多种方法(一些可以用在张量和PIL图像,一些仅能用于张量,而另一些仅能用于PIL图像),这些方法极大的为我们的图片处理工作提供了便利。

我们使用PIL库读取一个图片,在调用transform的Resize方法,改变图片的大小:

复制代码
>>> from PIL import Image>>> from torchvision import transforms>>> path="E:\\3-10\\dogandcats\\train\\cat13.0.jpg">>> img=Image.open(path)>>> img.size(700, 467)>>> process=transforms.Resize((28,28))>>> img2=process(img)>>> img2.size(28, 28)

同样,我们还可以把原始的图片数据转换为张量:​​​​​​​

复制代码
>>> process=transforms.ToTensor()>>> imgdata=process(img)>>> imgdata.size()torch.Size([3, 467, 700])

同样,归一化也变得非常的容易​​​​​​​

复制代码
>>> process=transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))>>> process(img)

当然,我们对图片预处理时可能不仅仅使用一种方法,那么有没有一种方法将这些操作整合到一起呢?显然,库的作者早已考虑到,并且已经实现了此功能。

借助Compose方法,我们可以集成上述操作。​​​​​​​

复制代码
>>> process=transforms.Compose([transforms.Resize((28,28)),              transforms.ToTensor(),              transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))])>>> process(img)

当然,transforms提供了多种对图片数据操作的方法,详细的可以看这里:

https://pytorch.org/vision/stable/transforms.html

到了这里,你已经对图像处理有了一定的了解,好吧,那么让我们回到上一篇文章:卷积神经网络|制作自己的Dataset

在这里,我们实现了自己的数据集,在__init__方法,有两个参数分别叫做transform,和label_transform,分别对图片和图片标签进行处理,默认为none,也就是无操作。

这时,很明显,我们可以传入对图片的一系列操作,就像这样:​​​​​​​

复制代码
path="E:\\3-10\\dogandcats\\train"training_data=MyDataset(path,transform=transforms.Compose([    transforms.Resize((16,16)),    transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))    ]))

到这里,对于自己数据集的准备工作基本已经完成!

相关推荐
cnbestec20 分钟前
协作机器人UR7e与UR12e:轻量化设计与高负载能力助力“小而美”智造升级
人工智能·机器人·协作机器人·ur协作机器人·ur7e·ur12e
zskj_zhyl24 分钟前
毫米波雷达守护银发安全:七彩喜跌倒检测仪重构居家养老防线
人工智能·安全·重构
gaosushexiangji1 小时前
利用sCMOS科学相机测量激光散射强度
大数据·人工智能·数码相机·计算机视觉
ai小鬼头2 小时前
AIStarter新版重磅来袭!永久订阅限时福利抢先看
人工智能·开源·github
说私域3 小时前
从品牌附庸到自我表达:定制开发开源AI智能名片S2B2C商城小程序赋能下的营销变革
人工智能·小程序
飞哥数智坊4 小时前
新版定价不够用,Cursor如何退回旧版定价
人工智能·cursor
12点一刻4 小时前
搭建自动化工作流:探寻解放双手的有效方案(2)
运维·人工智能·自动化·deepseek
未来之窗软件服务4 小时前
东方仙盟AI数据中间件使用教程:开启数据交互与自动化应用新时代——仙盟创梦IDE
运维·人工智能·自动化·仙盟创梦ide·东方仙盟·阿雪技术观
chao_7894 小时前
二分查找篇——搜索旋转排序数组【LeetCode】一次二分查找
数据结构·python·算法·leetcode·二分查找
烛阴4 小时前
Python装饰器解除:如何让被装饰的函数重获自由?
前端·python