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
PyTorch中torchvision介绍相关推荐
- pytorch中Parameter()介绍
用法介绍 pytorch中的Parameter函数可以对某个张量进行参数化.它可以将不可训练的张量转化为可训练的参数类型,同时将转化后的张量绑定到模型可训练参数的列表中,当更新模型的参数时一并将其更 ...
- PyTorch中tensor介绍
PyTorch中的张量(Tensor)如同数组和矩阵一样,是一种特殊的数据结构.在PyTorch中,神经网络的输入.输出以及网络的参数等数据,都是使用张量来进行描述. torc ...
- Pytorch中torchvision.datasets.ImageFolder报错:Found 0 files in subfolders of:XXX,完美解决!
1.报错如下: RuntimeError: Found 0 files in subfolders of:XXX Supported extensions are: .jpg,.jpeg,.png,. ...
- Pytorch 中 LSTMCell介绍
LSTM 和 LSTMCell的关系 很显然,LSTMCell是组成LSTM整个序列计算过程的基本组成单元,也就是进行sequence中一个word的计算 LSTMCell input_size: w ...
- 【小白学习PyTorch教程】十七、 PyTorch 中 数据集torchvision和torchtext
@Author:Runsen 对于PyTorch加载和处理不同类型数据,官方提供了torchvision和torchtext. 之前使用 torchDataLoader类直接加载图像并将其转换为张量. ...
- 简单介绍pytorch中分布式训练DDP使用 (结合实例,快速入门)
文章目录 DDP原理 pytorch中DDP使用 相关的概念 使用流程 如何启动 torch.distributed.launch spawn调用方式 针对实例voxceleb_trainer多卡介绍 ...
- pytorch中torch.optim的介绍
pytorch中torch.optim的介绍 这是torch自带的一个优化器,里面自带了求导,更新等操作.开门见山直接讲怎么使用: 常用的引入: import torch.optim as optim ...
- PyTorch中nn.Module类中__call__方法介绍
在PyTorch源码的torch/nn/modules/module.py文件中,有一条__call__语句和一条forward语句,如下: __call__ : Callable[-, Any] = ...
- PyTorch中的循环神经网络RNN函数及词嵌入函数介绍
一.pytroch中的RNN相关函数介绍 1.对于简单的RNN结构,有两种方式进行调用: 1.1 torch.nn.RNN():可以接收一个序列的输入,默认会传入全0的隐藏状态,也可以自己定义初始的隐 ...
最新文章
- 架设httpd服务器
- python人工智能-Python 人工智能应用快速入门 (一)
- java zmq订阅_从ZMQ PUB套接字获取订户过滤器
- 【linux网络编程】网络字节序、地址转换
- centos7搭建FTP服务器
- 运行 sudo 时会发生什么?
- 关于flink的时间处理不正确的现象复现原因分析
- java基础-final
- 无IDE时,使用支持HTML5的浏览器作编辑器的方法
- 佛系前端面试题记录--第一周
- scala--模式匹配
- windows2003 序列号
- win10 + ubantu双系统 彻底删除Ubantu
- c语言棋盘光标怎么删除,删除光标前的字符按什么键
- mysql 表改名_MySQL库改名、表改名
- Python 玫瑰花绘制
- 开源项目推荐:主流RPC开源框架及知识科普
- 互联网金融概念股龙头有哪些
- python用 requests 模块从 Web 下载文件
- 【三国演义】——诸葛亮
热门文章
- Python,OpenCV骨架化图像并显示(skeletonize)
- opencv-mediapipe手部关键点识别
- LabVIEW OCR 实现车牌识别(实战篇—3)
- 基于Python的人脸自动戴口罩系统
- HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集
- TensorFlow(2)图(默认图与自定义图) TensorBoard可视化
- linux mud 游戏,快刀幻想mud文字传奇-快刀幻想mud神器兑换码-快刀幻想mud下载v1.80-Linux公社...
- 利用lua中的string.gsub来巧妙实现json中字段的正则替换
- 在Ubuntu 14.04 64bit上安装lua5.2
- SQLite3简单C++包装类源码示例