PyTorch中torchvision介绍

2023-10-27

      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 transforms

import 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")

      GitHubhttps://github.com/fengbingchun/PyTorch_Test

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyTorch中torchvision介绍 的相关文章

随机推荐

  • 编译原理——词法分析器

    1 概述 设计 编制并调试一个简单的C语言词法分析程序 掌握利用状态转换图设计词法分析器的基本方法 利用该词法分析器完成对源程序字符串的词法分析 通过对该词法分析器的设计 加深对词法分析原理 状态转换图等编译原理知识的理解 2 使用的基本概
  • 最新bilibili怎么下载视频

    bilibili作为最火的二次元网站 很多人想下载下来 却不知道怎么下手 今天小编就来818怎么下载bilibili的视频 1 我们拿这案例来参考 https www bilibili com video av40672186 from s
  • d3碰撞源码分析

    技术 d3 d3 force d3 geom quadtree d3 geom quadtree 四叉树的应用 图像处理 空间数据索引 2D中的快速碰撞检测 存储稀疏数据等 游戏编程 上图中的数据就是普通的点 点与点之间没有关系 此函数在构
  • TOJ--3100:Getting Gold (DFS)

    1 题目源地址 http acm tju edu cn toj showp3100 html 2 源代码 TOJ 3100 Getting Gold include
  • httprunner接口自动化测试框架使用说明【保姆级教程】

    背景介绍 httprunner是国内开源的一个接口自动化框架 已经有部分公司开始使用这种框架来完成自己公司的接口自动化编写 本文主要是从简单的流程上去讲解咋使用的 PS 开发者本尊的官网教程写的是真的烂 一点也不友好 里面各种坑 本文基于h
  • Java基础——封装、继承、多态

    今天我们来了解一下面向对象的三大特性 封装 继承和多态 封装 把属性和实现细节隐藏起来 不让外界直接访问 提供公共的方法访问方式 private A 只能修饰成员 B 被private修饰的成员只能在本类中访问 外界不可以直接访问 C pr
  • cocos2d-x 地图随英雄移动

    本人刚开始学习cocos2d x游戏引擎 学到瓦片地图这块 网上有一个很经典的例子 见链接 基于Cocos2D X的砖块地图教程 一 在看到其中的地图跟随角色移动 一般情况下保持角色在屏幕中央附近 到地图边缘时移动角色 的问题时看的不大明白
  • reference to ‘ max‘ is ambiguous

    今天写C 算法的时候 声明了一个全局遍历max 来记录最短路径 编译发现遇到一个以前没遇到过的错误 reference to max is ambiguous 翻译过来就是对 max 的引用有歧义 通过查询百度发现 原因是我引用了iostr
  • c++中如何实现十进制(Dec)与十六进制(Hex)之间的相互转换

    c 中如何实现十进制 Dec 与十六进制 Hex 之间的相互转换 1 十进制 gt 十六进制 include stdafx h include iostream include string using namespace std stri
  • 富集分析(GO、KEGG、GSEA)

    library clusterProfiler library org Hs eg db GO分析与KEGG分析 GO分析需要一个基因 symbol列表 列表中为差异表达基因 一 读入数据 result lt read csv file R
  • 凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)

    目录 1 前提和大概思路概述 2 转换思路selenium和验证滑块图片的获取处理 3 总结 1 前提和大概思路概述 只是学习的途中有一些新的发现 分享给大家 希望对你们有帮助 凡科网的JS逆向的闭包技巧应该是典型的闭包案例 很多人都有讲解
  • STM32 USB学习笔记

    STM32 USB学习笔记 一 USB FS Device firmware library 使用固件库开发程序 需要包含几个文件 从图中可见 应用程序接口部分 有 usb pwr usb conf usb desc usb istr us
  • 中台建设&架构设计

    什么是中台 中台即企业级能力复用平台 企业级 企业级定义了中台的范围 它更多代表的是中台处理的问题在企业级别 即至少包含多条业务线或服务多个前台产品 团队 如果一个中台只为了支持一条业务线或产品线 那就不是中台 即使它用了服务化或是大数据等
  • 谷歌禁止访问测试环境

    谷歌访问测试环境接口报错 主要原因 谷歌阻止了对不安全接口的请求 解决方法 进入谷歌设置 chrome flags block insecure private network requests 将Block insecure privat
  • c++ 定时器_STM32实例定时器中断实验

    上一章我们介绍了 STM32F1的外部中断 这一章我们来学习下定时器中断 STM32F1 的定时器功能非常强大 其包含 2 个基本定时器 TIM6 TIM7 4 个通用定时器 TIM2 TIM5 和 2 个高级定时器 TIM1 TIM8 共
  • 目标检测中anchor box(先验框)的理解

    近来心血来潮 把CV领域关于目标检测的主流方法YOLOv3和Faster RCNN看了一下 对其中的先验框 anchor box 一直不太理解 在广泛地阅读了一些相关讲解后 有了一定的理解 在此记录一下 先验框的个人理解 先验框最早提出于F
  • 限定特定的IP访问服务器

    需求 windows and Linux系统仅限指定的IP或网段登陆 解决方法和思路 1 Windows设置的方法有多种 方法一 通过本机自带的防火墙设置限制IP访问 修改下面三个规则属性 点击属性 查看对应设置 设定可以访问的地址段或IP
  • 构建REST风格的Web Service

    1 什么是REST REST 是由 Roy Fielding 在他的论文 Architectural Styles and the Design of Network based Software Architectures 中提出的一个术
  • 完美卸载Visual Studio2015的方法汇总

    前言 由于各种原因 阿木寺被迫回到VS2013时代 所以此时VS2015也没有必要存在 于是再网上找了各种卸载方法 简介 方法一 适合于有点基础电脑知识的童鞋 难度 方法二 适合于小白 难度 方法三 适合于技术控 难度 方法一 1 利用当初
  • PyTorch中torchvision介绍

    TorchVision包包含流行的数据集 模型架构和用于计算机视觉的图像转换 它是PyTorch项目的一部分 TorchVison最新发布版本为v0 11 1 发布较频繁 它的license为BSD 3 Clause 它的源码位于 http