Pytorch如何把Tensor转化成图像可视化
作者:乱觉先森 发布时间:2021-11-03 20:20:22
标签:Pytorch,Tensor,图像,可视化
Pytorch把Tensor转化成图像可视化
在调试程序的时候经常想把tensor可视化成来看看,可以这样操作:
from torchvision import transforms
unloader = transforms.ToPILImage()
image = original_tensor.cpu().clone() # clone the tensor
image = image.squeeze(0) # remove the fake batch dimension
image = unloader(image)
image.save('example.jpg')
pytorch标准化的Tensor转图像问题
常常在工作之中遇到将dataloader中出来的tensor成image,numpy格式的数据,然后可以可视化出来
但是这种tensor往往经过了channel变换(RGB2BGR),以及归一化(减均值除方差),
然后维度的顺序也发生变化(HWC变成CHW)。为了可视化这种变化比较多的数据,
在tensor转numpy之前需要对tensor做一些处理
如下是一个简单的函数,可以可视化tensor,下次直接拿来用就行
def tensor2im(input_image, imtype=np.uint8):
""""
Parameters:
input_image (tensor) -- 输入的tensor,维度为CHW,注意这里没有batch size的维度
imtype (type) -- 转换后的numpy的数据类型
"""
mean = [0.485, 0.456, 0.406] # dataLoader中设置的mean参数,需要从dataloader中拷贝过来
std = [0.229, 0.224, 0.225] # dataLoader中设置的std参数,需要从dataloader中拷贝过来
if not isinstance(input_image, np.ndarray):
if isinstance(input_image, torch.Tensor): # 如果传入的图片类型为torch.Tensor,则读取其数据进行下面的处理
image_tensor = input_image.data
else:
return input_image
image_numpy = image_tensor.cpu().float().numpy() # convert it into a numpy array
if image_numpy.shape[0] == 1: # grayscale to RGB
image_numpy = np.tile(image_numpy, (3, 1, 1))
for i in range(len(mean)): # 反标准化,乘以方差,加上均值
image_numpy[i] = image_numpy[i] * std[i] + mean[i]
image_numpy = image_numpy * 255 #反ToTensor(),从[0,1]转为[0,255]
image_numpy = np.transpose(image_numpy, (1, 2, 0)) # 从(channels, height, width)变为(height, width, channels)
else: # 如果传入的是numpy数组,则不做处理
image_numpy = input_image
return image_numpy.astype(imtype)
来源:https://blog.csdn.net/weixin_40520963/article/details/105783025
0
投稿
猜你喜欢
- 递归函数及递归次数受到限制一个函数在内部调用自己,那么这个函数是递归函数。递归会反复使用本身,每递归一次,越接近最终的值。当一个问题可以由许
- 如下所示:mystring.strip().replace(' ', '').replace('\n
- HTTPX是Python3的功能齐全的HTTP客户端,它提供同步和异步API,并支持HTTP/1.1和HTTP/2安装pip install
- 写爬虫是一项复杂、枯噪、反复的工作,考虑的问题包括采集效率、链路异常处理、数据质量(与站点编码规范关系很大)等。整理自己写一个爬虫程序,单台
- 1 文件处理形式 近期由于处理大量数据,所以对于采用python进行处理文件的一些操作也打算整理一下;接下
- Erase语句:重新初始化固定数组的元素,并释放动态数组的存储空间。用法: Era
- QSS介绍前言QSS即Qt样式表,是用来自定义控件外观的一种机制,QSS大量参考了Css的内容,但QSS的功能要比Css弱得多,体现在选择器
- 若数据库是sql server,我以前为了返回插入记录的id,一般是用下面的存储过程:程序代码 create procedure&
- 在ASP中,直接使用“Insert into” 语句与使用ADO中AddNew方法有什么区别?哪一种更好呢?AddNew方法的实质就是封装了
- 前言今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码。于是乎,一个想法油然而生:“生活已经很无聊了,不如再无聊一点叭”。说干就
- 主要原理:调整dicom的窗宽,使之各个像素点上的灰度值缩放至[0,255]范围内。使用到的python库:SimpleITK下面是一个将d
- 【人工智能项目】混合高斯模型运动目标检测本次工作主要对视频中运动中的人或物的边缘背景进行检测。那么走起来瓷!!!原视频高斯算法提取工作imp
- 实现过程最近在尝试openai的相关函数,所以今天就来盘点盘点下 createChatCompletion 函数,听说是专门为了聊天创立的a
- Symfony是一个强大的基于PHP的Web开发框架,在这里我们用十分钟的时间来做一个简单的增删改查的程序, 任何不熟悉Symfony的人都
- 网上的很多PHP微信支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入微信支付的带来
- 本文实例为大家分享了Python爬取最好大学网大学排名的具体代码,供大家参考,具体内容如下源代码:#-*-coding:utf-8-*- &
- 新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了
- PHP在运行时, 针对严重程度不同的错误,会给以不同的提示。 eg:在$a没声明时,直接相加,值为NULL,相加时当成0来算.但是,却提示N
- 项目地址https://github.com/jonssonyan...开发工具 python 3.7.9pycharm 2019.3.5
- 一、数据库操作1、创建model表基本结构:#coding:Utf8from django.db import modelsclass us