课程学习笔记,课程链接
学习笔记同步发布在我的个人网站上,欢迎来访查看。

文章目录

  • 一、Transforms的使用
  • 二、Tensor数据类型
  • 三、常见的Transforms
  • 总结

一、Transforms的使用

torchvision中的transforms主要是对图片进行一些变换。
tranforms对应 tranforms.py 文件,里面定义了很多类,输入一个图片对象,返回经过处理的图片对象。

transforms.py就像一个工具箱,里面定义的各种类就像各种工具,图片就是输入对象,经过工具处理,输出期望的图片结果。

现在通过 transforms.ToTensor去看两个问题:

  • 1、transforms该如何使用(python)
  • 2、为什么我们需要 Tensor 数据类型

    ToTensor功能是将 PIL Image 类型 或者numpy.ndarray类型的图片对象转换为 tensor类型。
    使用Demo:
from torchvision import transforms
from PIL import Imageimg_path = "testdata/train/ants_image/6743948_2b8c096dda.jpg"
img = Image.open(img_path)
print(img)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)


所以使用transforms的方法就是 先实例化选中的类,然后用实例化的对象去处理图片就行。

二、Tensor数据类型

将第一节中的代码复制到 python 控制台,回车,可在右侧看到各种变量和对象的具体信息:

tensor 数据类型可以理解为包装了反向神经网络一些理论基础参数。在神经网络中,要将数据先转换为Tensor类型,再进行训练。
测试代码:

from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
from PIL import Imageimg_path = "testdata/train/ants_image/6743948_2b8c096dda.jpg"
img = Image.open(img_path)writer = SummaryWriter("logs")tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)writer.add_image("Tensor_Image",tensor_img)
writer.close()

结果:

三、常见的Transforms

常用的输入图片对象的数据类型

  • PIL : Image.open()
  • tensor : ToTensor()
  • ndarrays: cv.imread()

常用的Transform有:

  1. ToTensor() :将图片对象类型转为 tensor
  2. Normalize() :对图像像素进行归一化计算
  3. Resize():重新设置 PIL Image的大小,返回也是PIL Image格式
  4. Compose(): 输入为 transforms类型参数的列表,即
Compose([transforms参数1, transforms参数2], ...)

目的是将几个 transforms操作打包成一个,比如要先进行大小调整,然后进行归一化计算,返回tensor类型,则可以将 ToTensor、Normalize、Resize,按操作顺序输入到Compose中。
示例代码:

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
import osroot_path = "hymenoptera_data/train/ants"
img_name = "7759525_1363d24e88.jpg"
img_path = os.path.join(root_path,img_name)
img = Image.open(img_path)writer = SummaryWriter("logs")# ToTensor
trans_totensor = transforms.ToTensor() # instantiation
img_tensor = trans_totensor(img)
writer.add_image("Tensor", img_tensor)# Normalize
print(img_tensor[0][0][0])
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize", img_norm)#Resize
print(img.size)
trans_resize = transforms.Resize((512,512))
img_resize = trans_resize(img) # return type still is PIL image
img_resize = trans_totensor(img_resize)
writer.add_image("Resize", img_resize)# Compose - resize -2
trans_resize_2 = transforms.Resize(512)
tran_compose = transforms.Compose([trans_resize_2, trans_totensor])
img_resize2 = tran_compose(img)
writer.add_image("Compose", img_resize2)writer.close()

结果:



总结

  • 关注输入和输出类型
  • 多看官方文档
  • 关注方法需要什么参数

PyTorch深度学习入门笔记(五)Transforms的使用相关推荐

  1. pytorch深度学习入门笔记

    Pytorch 深度学习入门笔记 作者:梅如你 学习来源: 公众号: 阿力阿哩哩.土堆碎念 B站视频:https://www.bilibili.com/video/BV1hE411t7RN? 中国大学 ...

  2. PyTorch深度学习入门笔记(五)torchvision中DataLoader的使用

    dataloader简介 dataset在程序中起到的作用是告诉程序数据在哪,每个索引所对应的数据是什么.相当于一系列的存储单元,每个单元都存储了数据.这里可以类比成一幅扑克牌,一张扑克牌就是一个数据 ...

  3. 深度学习入门笔记(十五):深度学习框架(TensorFlow和Pytorch之争)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  4. 深度学习入门笔记(五):神经网络的编程基础

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  5. 深度学习入门笔记(五):神经网络的学习

    专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...

  6. 深度学习入门笔记(十六):计算机视觉之边缘检测

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  7. 深度学习入门笔记(二十):经典神经网络(LeNet-5、AlexNet和VGGNet)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  8. 深度学习入门笔记(十八):卷积神经网络(一)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  9. 深度学习入门笔记(十七):深度学习的极限在哪?

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. Elide 4.3.1 发布,雅虎开源的应用数据 API 搭建平台
  2. 3级联动 ajax java_java+ajax(三级连动下拉框)
  3. 好文推荐 | 缓存与数据库一致性问题深度剖析 (修订)
  4. XAMPP on Mac 组态 Virual Host
  5. Python 之数据类型
  6. 秒杀青椒、博导?某高校本科生:宣称主持40余项学生项目、拿下56项国家专利...
  7. Java-类与对象的创建
  8. 2020 大厂研发岗薪酬排名出炉,看完我真的拖后腿了。。。
  9. jquery ajax 跨域请求
  10. java 父类构造函数_Java基础系列 - 子类继承父类,调用父类的构造函数
  11. Spring事务-1
  12. 领英使用手册—管理,使用领英linkedin账号的技巧方法
  13. AXD 调试经验,使用及问题
  14. 进制转换简单实现代码
  15. IT业台风警报(一)——望天
  16. 辛弃疾《青玉案·元夕》
  17. win10商店打不开_win10 64位系统打不开美图秀秀是啥原因呢
  18. UITT 自动跟单系统
  19. 【图解算法数据结构】(九)数学
  20. 《软件安装与使用教程》— 安装Proteus8仿真软件最新详细教程

热门文章

  1. 有python专业的世界大学_2020年QS计算机专业排名进入世界前50的,除了G5,还有这所大学!...
  2. 企业使用云计算机的好处,三个问题,让你彻底明白企业为什么上云以及企业上云的好处...
  3. Python:folium地图标记icon分组展示
  4. 二元logistic模型案例_基于Logistic回归的二元分类应用(含公式推导)
  5. ansys_lsdyna输出.k文件lsprepost输出部件加速度
  6. 几种经典的卷积神经网络
  7. 博实转债上市价格预测
  8. 老外名字中间的点怎么输入 微软拼音 @
  9. Mybatis08:使用注解开发
  10. Web安全——文件上传漏洞