当前位置: 首页 > 编程日记 > 正文

PyTorch中torchvision介绍

      TorchVision包包含流行的数据集、模型架构和用于计算机视觉的图像转换,它是PyTorch项目的一部分。TorchVison最新发布版本为v0.11.1,发布较频繁,它的license为BSD-3-Clause。它的源码位于:
 https://github.com/pytorch/vision

      TorchVision由C++(CUDA)和Python3实现,依赖Torch、PNG、JPEG,还依赖PIL(Pillow, Python Imaging Library)。推荐使用Anaconda安装 ,安装时注意对Python和Torch有版本要求。对应TorchVison 0.11.1,Torch版本要求为1.10.0,Python要求为[3.6, 3.9]。通过Anaconda安装TorchVison 0.11.1执行如下命令:

conda create -n torchvision_0.11.1 python=3.8
conda activate torchvision_0.11.1
conda install torchvision==0.11.1 -c pytorch

      TorchVision也对外提供C++接口,通过CMakeLists.txt生成动态库。

      TorchVision功能:

      (1).torchvision.datasets包支持下载/加载的数据集有几十种,如CIFAR、COCO、MNIST等,所有的数据集都有相似的API加载方式。每种数据集在datasets包中都对应一个.py文件,如CIFAR对应有cifar.py。

      (2).torchvision.io包提供执行IO操作函数,用于读写视频和图像。

      (3).torchvision.models包提供各种模型定义,包括图像分类如AlexNet、VGG等;对象检测如Faster R-CNN、Mask R-CNN等;分割、关键点检测等。

      (4).torchvision.ops包实现特定于计算机视觉的操作,如RoI(Region of Interest) Align、RoI(Region of Interest) Pool等。

      (5).torchvision.transforms包实现图像变换。大多数转换同时接受PIL图像和tensor图像,尽管有些转换仅适用于PIL,有些则仅适用于tensor。接受tensor图像的转换也接受批量的tensor图像。tensor图像是具有(C, H, W)形状的tensor,其中C是通道数,H和W是图像的高度和宽度。批量tensor图像是一个(B, C, H, W)形状的tensor,其中B是一批图像的数量。tensor图像的预期范围由tensor dtype隐式定义。具有float dtype的tensor图像的值应为[0, 1)。具有整数dtype的tensor图像应具有[0, MAX_DTYPE],其中MAX_DTYPE是该dtype中可以表示的最大值。

      以下为测试代码:

from torchvision import datasets
from torchvision import io
from torchvision import models
from torchvision import ops
from torchvision import transformsimport torch# 下载MNIST数据集: torchvision.datasets包
test = datasets.MNIST("../../data", train=False, download=True)
train = datasets.MNIST("../../data", train=True, download=False)
print(f"raw_folder: test: {test.raw_folder}, train: {train.raw_folder}")
print(f"processed_folder: test: {test.processed_folder}, train: {train.processed_folder}")
print(f"extra_repr:\ntest: {test.extra_repr}\ntrain: {train.extra_repr}")
print(f"class to index: {test.class_to_idx}")# 读写图像: torchvision.io包
tensor = io.read_image("../../data/image/1.jpg")
print("tensor shape:", tensor.shape)
io.write_png(tensor, "../../data/image/result.png")tensor = io.read_image("../../data/image/lena.png")
print("tensor shape:", tensor.shape)
io.write_jpeg(tensor, "../../data/image/result.jpg")# 下载pre-trained AlexNet模型: torchvision.models包
net = models.alexnet(pretrained=True)# 计算机视觉操作: torchvision.ops包
boxes = torch.tensor([[1, 1, 101, 101], [3, 5, 13, 15], [2, 4, 22, 44]])
area = ops.box_area(boxes)
print(f"area: {area}")index = ops.remove_small_boxes(boxes, min_size=20)
print(f"index: {index}")# 图像变换: torchvision.transforms包
resize = transforms.Resize(size=[256, 128])
img = resize.forward(tensor)
io.write_jpeg(img, "../../data/image/resize.jpg")grayscale = transforms.Grayscale()
img2 = grayscale.forward(img)
io.write_jpeg(img2, "../../data/image/gray.jpg")affine = transforms.RandomAffine(degrees=35)
img3 = affine.forward(tensor)
io.write_jpeg(img3, "../../data/image/affine.jpg")crop = transforms.CenterCrop(size=[128, 128])
img4 = crop.forward(tensor)
io.write_jpeg(img4, "../../data/image/crop.jpg")

      GitHub:https://github.com/fengbingchun/PyTorch_Test

相关文章:

百度ERNIE登顶GLUE榜单,得分首破90大关

出品 | AI科技大本营(ID:rgznai100)12月10日,百度ERNIE在自然语言处理领域权威数据集GLUE中登顶榜首,以9个任务平均得分首次突破90大关刷新该榜单历史,其表现超越微软MT-DNN-SMART, 谷歌T5、ALBERT等一众顶级预训练模…

Java 重写(Override)与重载(Overload)

TestDog.java /* * 重写(Override) * 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! * 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现…

Oracle常用查看表结构命令

2019独角兽企业重金招聘Python工程师标准>>> select user from dual; //查看当前的用户名 select table_name from all_tables; //所有用户的表 select table_name from dba_tables; //包括系统表 select table_name from dba_tables where owner用户名 user_tabl…

TorchVision中使用FasterRCNN+ResNet50+FPN进行目标检测

TorchVision中给出了使用ResNet-50-FPN主干(backbone)构建Faster R-CNN的pretrained模型,模型存放位置为https://download.pytorch.org/models/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth,可通过fasterrcnn_resnet50_fpn函数下载,此函数实现…

iOS-UIButton防止重复点击(三种办法)

目录 使用场景方法一 设置enabled或userInteractionEnabled属性方法二 借助cancelPreviousPerformRequestsWithTarget:selector:object实现方法三 通过runtime交换方法实现注意事项一 使用场景 在实际应用场景中,有几个业务场景需要控制UIButton响应事件的时间间隔。…

华为诺亚方舟开源预训练模型“哪吒”,4项任务均达到SOTA

出品 | AI科技大本营(ID:rgznai100)BERT之后,新的预训练语言模型XLnet、RoBERTa、ERNIE不断推出,这次,华为诺亚方舟实验室开源了基于BERT的中文预训练语言模型NEZHA(哪吒),寓意模型能…

音量调节助手(转)

源:音量调节助手 软件名称:音量调节助手 软件功能:通过键盘快捷键快速调节系统主音量 软件版本:V2014 软件作者:易几网络 操作系统:所有WINDOWS版本 开发工具:DELPHI XE …

TorchVision中通过AlexNet网络进行图像分类

TorchVision中给出了AlexNet的pretrained模型,模型存放位置为https://download.pytorch.org/models/alexnet-owt-4df8aa71.pth ,可通过models.alexnet函数下载,此函数实现在torchvision/models/alexnet.py中,下载后在Ubuntu上存放…

西湖龙井也上链?是的,以后你喝什么茶我都知道!

什么?区块链还可以帮忙法律取证?是的!就是这么牛13!区块链存证第一案12月9日,据《新华每日电讯》报道,杭州互联网法院用区块链提升审判效率。报道提到一个案例。2018年4月,杭州一家公司&#xf…

Java Enumeration接口

import java.util.Vector; import java.util.Enumeration; /* * Enumeration接口中定义了一些方法,通过这些方法可以枚举(一次获得一个)对象集合中的元素。 * 这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃&#xff0…

Windows Azure Pack与SCVMM标签解析分享

我在SCVMM上做了好CentOS6.5的VM模板镜像,自己部署也是成功的,现在配置WAP的VM云虚拟机角色配置,在SCVMM上我打好了CentOS6.5的标签,可是在创建虚拟机角色配置中,选择的CentOS却无法找到硬盘,这是怎么回事呢…

Linux下C++中可使用的3种Hook方法

Hook即钩子,截获API调用的技术,是将执行流程重定向到你自己的代码,类似于hack。如使程序运行时调用你自己实现的malloc函数代替调用系统库中的malloc函数。这里介绍下Linux下C中可使用的3中Hook方法: 1. GNU C库允许你通过指定适当…

Java Properties 类

Properties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。 Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。 Properties 定义如下实例变量.这个变量持有一个Properties对…

国产数据库年终大盘点

作者 | 马超 编辑 | 胡巍巍出品 | CSDN(ID:CSDNnews)去“IOE”这个概念,最早由王坚院士在刚刚加入阿里时提出,其目标是将IBM 的小型机、Oracle数据库、EMC存储设备从阿里的IT体系中去除,代之以自主研发的系…

解密FFmpeg播放track mode控制

上一篇文章(http://www.cnblogs.com/yangdanny/p/4421130.html)我们解决了在FFmpeg下如何处理H264和AAC的扩展数据,根据解出的NALU长度恢复了H264的起始码和AAC的ADTS头,这样一般来说播放是没有问题。本篇文章来谈谈如何实现基于FFmpeg的track mode控制&…

UIButton防止按钮和手势的暴力点击

首先理解下几个概念 1、IMP:它是指向一个方法具体实现的指针,每一个方法都有一个对应的IMP,当你发起一个消息之后,最终它会执行的那段代码,就是由IMP这个函数指针指向了这个方法实现的 2、SEL:方法名称的描…

使用Windows7上的VS Code打开远程机Ubuntu上的文件操作步骤

之前在https://blog.csdn.net/fengbingchun/article/details/118991855 中介绍过在Windows10通过VS Code打开Ubuntu 16.04上的文件或文件夹的操作步骤。Windows7上的操作与Windows10有所不同,这里记录下。 Visual Studio Code Remote - SSH扩展允许你在任何远程机器…

微众银行殷磊:AI+卫星,从上帝视角洞察资产管理|BDTC 2019

出品 | AI科技大本营(ID:rgznai100)12月5日-7日,2019中国大数据技术大会(BDTC)于北京隆重举办,大会已成功举办十二届,是大数据领域极具影响力的行业盛会。本届大会汇聚了学术界、企业界上千位知…

【二分答案】【最短路】bzoj1614 [Usaco2007 Jan]Telephone Lines架设电话线

对于二分出的答案x而言&#xff0c;验证答案等价于将所有边权>x的边赋成1&#xff0c;否则赋成0&#xff0c;然后判断从1到n的最短路是否<K。 #include<cstdio> #include<cstring> #include<queue> using namespace std; #define N 1001 #define M 100…

Python3中装饰器@typing.overload的使用

typing.py的源码在&#xff1a;https://github.com/python/cpython/blob/main/Lib/typing.py 。此模块为类型提示(Type Hints)提供运行时支持。这里介绍下typing.overload的使用&#xff0c;从python 3.5版本开始将Typing作为标准库引入。 python3中增加了Function Annotation(…

19年NAACL纪实:自然语言处理的实用性见解 | CSDN博文精选

作者 | Nikita Zhiltsov翻译 | 王威力校对 | 李海明本文为你概述处理不同NLP问题时的具有卓越性能的方法、技术和框架等。计算语言&#xff1a;人类语言技术学会北美分会2019年年会&#xff08;North American Chapter of the Association for Computational Linguistics: Huma…

高并发场景下数据库的常见问题及解决方案

一、分库分表 &#xff08;1&#xff09;为什么要分库分表 随着系统访问量的增加&#xff0c;QPS越来越高&#xff0c;数据库磁盘容量不断增加&#xff0c;一般数据库服务器的QPS在800-1200的时候性能最佳&#xff0c;当超过2000的时候sql就会变得很慢并且很容易被请求打死&a…

典型用户 persona

persona 典型用户 1、姓名&#xff1a;王涛 2、年龄&#xff1a;22 3、收入&#xff1a;基本无收入 4、代表用户在市场上的比例和重要性&#xff1a;王涛为铁道学生。本软件的用户主要是学生和老师&#xff0c;尤其是广大的铁大学子&#xff0c;所以此典型用户的重要性不言而喻…

PyTorch中nn.Module类简介

torch.nn.Module类是所有神经网络模块(modules)的基类&#xff0c;它的实现在torch/nn/modules/module.py中。你的模型也应该继承这个类&#xff0c;主要重载__init__、forward和extra_repr函数。Modules还可以包含其它Modules&#xff0c;从而可以将它们嵌套在树结构中。 只要…

什么是三层交换机、网关、DNS、子网掩码、MAC地址

一、什么是vlan? 二、单臂路由与三层交换机 三、什么是网关 一、什么是网关 二、如何来理解网关 三、网关的ip地址 四、网关是如何实现通信&#xff1f; 五、什么是默认网关&#xff1f; 四、什么是DNS 五、MAC地址 六、子网掩码 很多朋友多次问到什么是网关、dns、子网掩码&…

20行代码发一篇NeurIPS:梯度共享已经不安全了

整理 | 夕颜&#xff0c;Jane出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;【导读】12 月 8 日-14 日&#xff0c;NeurIPS 2019 在加拿大温哥华举行&#xff0c;和往常一样&#xff0c;今年大会吸引了数万名专家参会&#xff0c;并展示了计算机领域的最新进展。其中…

关于页面打印window.print()的样式问题

当我们打印网页的时候。有时候会发现。打印出来的。跟网页上看到的样式的差别有点大。这其中可能有的问题是。样式问题。 当调用打印(window.print())方法时。打印机会在网页的样式中查找 media print{}的样式&#xff0c;并适应到要打印的网页中。 所以 如果要打印的页面符合看…

Python3中参数*args和**kwargs介绍

在Python中&#xff0c;我们可以使用两种特殊符号将可变数量的参数传递给函数&#xff1a;*args和**kwargs。你可以使用任何单词代替args和kwargs&#xff0c;但通常做法是使用args和kwargs。 *args允许函数接受任意数量的位置参数(positional arguments)。 **kwargs收集所有未…

4大主流CPU处理器技术架构,不知道就out了!

作者 | 王艺威责编 | 阿秃RISC&#xff08;精简指令集计算机&#xff09;是一种执行较少类型计算机指令的微处理器&#xff0c;起源于80年代的MIPS主机&#xff08;即RISC机&#xff09;&#xff0c;RISC机中采用的微处理器统称RISC处理器。这样一来&#xff0c;它能够以更快的…

grunt-connect-proxy解决开发时跨域问题

最近的项目中前后端是完全分离开发的&#xff0c;前端用grunt管理项目。这样就会导致一个问题&#xff1a;开发时前端调用后台的接口时因为不在一个服务器&#xff0c;所以会出现跨域问题。但是也不能用JSONP或CROS方式实现真正的跨域&#xff0c;因为项目发布时其实是在同一个…