0702-计算机视觉工具包torchvision

pytorch完整教程目录:https://www.cnblogs.com/nickchen121/p/14662511.html

一、torchvision 概述

计算机视觉是深度学习中最重要的一类应用,为了方便研究者使用,torch 专门开发了一个视觉工具包 torchvision,这个包独立于 torch,需要使用 pip install torchvision 进行安装。

之前的我们已经使用过它的部分功能,在这里我们在做一个系统的介绍,它主要包含以下三个功能:

  • models:提供深度学习中各种经典网络的网络结构以及训练好的模型,包括 Alex-Net、VGG 系列、ResNet 系列、Inception 系列等
  • datasets:提供常用的数据集加载,设计上都是集成 torch.utils.data.Dataset,主要包括 MNIST、CIFAR10/100、ImageNet、COCO 等
  • transforms:提供常用的数据预处理操作,主要包括对 Tensor 以及 PIL Image 对象的操作

二、通过 torchvision 加载模型

from torchvision import models
from torch import nn # 加载预训练好的模型,如果不存在会下载
# 预训练好的模型保存在 ~/.torch/modes/ 下面
resnet34 = models.resnet34(pretrained=True, num_classes=1000) # 修改最后的全连接层为 10 分类问题(默认是 ImageNet 上的 1000 分类)
resnet34.fc = nn.Linear(512, 10)

三、通过 torchvision 加载并处理数据集

from torchvision import datasets
from torchvision import transforms as T
# 指定数据集路径为 data,如果数据集不存在则进行下载
# 通过 train=False 获取测试集 normalize = T.Normalize(mean=[0.4, 0.4, 0.4], std=[0.2, 0.2, 0.2])
transform = T.Compose([
T.RandomResizedCrop(224),
T.RandomHorizontalFlip(),
T.ToTensor(), # 把图片转成 Tensor,归一化至 [0,1]
T.Lambda(lambda x: x.repeat(3, 1, 1)), # 把图片转为 3 通道的
normalize,
]) dataset = datasets.MNIST('data/',
download=True,
train=False,
transform=transform)

Transforms 中涵盖了大部分对 Tensor 和 PIL Image 的常用处理,这个转换通常分为两步:

  1. 第一步:构建转换操作,例如 transf = transforms.Normalize(mean=x, std=y)
  2. 第二步:执行转换操作,例如 otuput = transf(inp)
import torch as t

# 构建随机噪声,图片如下图所示
to_pil = T.ToPILImage()
to_pil(t.rand(3, 64, 64))

四、通过 torchvision 拼接并保存图片

torchvision 还提供了两个常用的函数:

  1. make_grid,它能把多张图片拼接在一个网格中
  2. save_img,它能把 Tensor 保存成图片
len(dataset)
10000
from torch.utils.data import DataLoader

dataloader = DataLoader(dataset, shuffle=True, batch_size=16)
from torchvision.utils import make_grid, save_image
dataiter = iter(dataloader)
dataiter
img = make_grid(next(dataiter)[0], 4) # 拼接成 4*4 网格图片,并且会转成 3 通道,如下图所示
to_img = T.ToPILImage()
to_img(img)

save_image(img, 'a.png')
from PIL import Image
Image.open('a.png')

0702-计算机视觉工具包torchvision的更多相关文章

  1. 深度学习框架PyTorch一书的学习-第五章-常用工具模块

    https://github.com/chenyuntc/pytorch-book/blob/v1.0/chapter5-常用工具/chapter5.ipynb 希望大家直接到上面的网址去查看代码,下 ...

  2. 【深度学习框架】使用PyTorch进行数据处理

      在深度学习中,数据的处理对于神经网络的训练来说十分重要,良好的数据(包括图像.文本.语音等)处理不仅可以加速模型的训练,同时也直接关系到模型的效果.本文以处理图像数据为例,记录一些使用PyTorc ...

  3. [PyTorch 学习笔记] 2.2 图片预处理 transforms 模块机制

    PyTorch 的数据增强 我们在安装PyTorch时,还安装了torchvision,这是一个计算机视觉工具包.有 3 个主要的模块: torchvision.transforms: 里面包括常用的 ...

  4. pytorch(09)transform模块(基础)

    transforms transforms运行机制 torchvision.transforms:常用的图像预处理方法 torchvision.datasets:常用数据及的dataset实现,mni ...

  5. 【分享】2017 开源中国新增开源项目排行榜 TOP 100

    2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度 ...

  6. 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...

  7. Faster R-CNN:详解目标检测的实现过程

    本文详细解释了 Faster R-CNN 的网络架构和工作流,一步步带领读者理解目标检测的工作原理,作者本人也提供了 Luminoth 实现,供大家参考.   Luminoth 实现:https:// ...

  8. 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection

    论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...

  9. [PyTorch 学习笔记] 3.1 模型创建步骤与 nn.Module

    本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson3/module_containers.py 这篇文章来看下 ...

随机推荐

  1. 微信小程序:添加全局的正在加载中图标效果

    在发送请求的时候,显示一个正在加载中的小图标.在加载下一页的时候也显示正在加载中.同时数据请求回来了,把加载中进行关闭. 开发----API-----界面 在哪里添加这两段代码会比较方便呢?一个项目有 ...

  2. Docker 一键安装及Docker管理面板Portainer中文汉化

       前言 Docker接触了一段时间了,批量操作过程中感觉太繁琐,所以找到了好评率比较高的Portainer面板,使用后感觉的确不错所以准备拿出来精力来做个汉化版,过程中发现词条非常多,所以暂时先汉 ...

  3. 后端程序员之路 33、Index搜索引擎实现分析2-对外接口和大体流程

    # index_manager的单例是index server对外的唯一接口,part_indexer是index搜索的核心部分,index_manager持有了一组part_indexer. typ ...

  4. PTA甲级—数学

    1.简单数学 1008 Elevator (20分) 模拟题 #include <cstdio> #include <cstring> #include <string& ...

  5. Redis单机数据库的实现原理

    本文主要介绍Redis的数据库结构,Redis两种持久化的原理:RDB持久化.AOF持久化,以及Redis事件分类及执行原理.最后,分别介绍了单机班Redid客户端和Redis服务器的使用和实现原理. ...

  6. Prometheus自定义指标

    1.  自定义指标 为了注册自定义指标,请将MeterRegistry注入到组件中,例如: public class Dictionary { private final List<String ...

  7. window 10 下 --excel | power query 通过 ODBC链接 mysql 数据库

    excel链接到mysql的方法有几种,今天主要介绍如何通过ODBC链接 odbc是 "开放数据库连接",你可以通过下载插件使得自己的excel可以连接到不同的数据库. 关于版本的 ...

  8. elementUI实现日期框选中项文本高亮

    { margin: 0; font: 12px "Helvetica Neue" } p.p2 { margin: 0; font: 12px "PingFang SC& ...

  9. android消息线程和消息队列

    基于消息队列的线程通信:           消息队列与线程循环            MessageQueue:           利用链表来管理消息.                  Mess ...

  10. Flutter学习简记

    StatefulWidget和StatelessWidget StatefulWidget : 具有可变状态的窗口部件,也就是你在使用应用的时候就可以随时变化,比如我们常见的进度条,随着进度不断变化. ...