Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化
Pytorch把Tensor轉(zhuǎn)化成圖像可視化
在調(diào)試程序的時候經(jīng)常想把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轉(zhuǎn)圖像問題
常常在工作之中遇到將dataloader中出來的tensor成image,numpy格式的數(shù)據(jù),然后可以可視化出來
但是這種tensor往往經(jīng)過了channel變換(RGB2BGR),以及歸一化(減均值除方差),
然后維度的順序也發(fā)生變化(HWC變成CHW)。為了可視化這種變化比較多的數(shù)據(jù),
在tensor轉(zhuǎn)numpy之前需要對tensor做一些處理
如下是一個簡單的函數(shù),可以可視化tensor,下次直接拿來用就行
def tensor2im(input_image, imtype=np.uint8): """" Parameters: input_image (tensor) -- 輸入的tensor,維度為CHW,注意這里沒有batch size的維度 imtype (type) -- 轉(zhuǎn)換后的numpy的數(shù)據(jù)類型 """ mean = [0.485, 0.456, 0.406] # dataLoader中設置的mean參數(shù),需要從dataloader中拷貝過來 std = [0.229, 0.224, 0.225] # dataLoader中設置的std參數(shù),需要從dataloader中拷貝過來 if not isinstance(input_image, np.ndarray): if isinstance(input_image, torch.Tensor): # 如果傳入的圖片類型為torch.Tensor,則讀取其數(shù)據(jù)進行下面的處理 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]轉(zhuǎn)為[0,255] image_numpy = np.transpose(image_numpy, (1, 2, 0)) # 從(channels, height, width)變?yōu)?height, width, channels) else: # 如果傳入的是numpy數(shù)組,則不做處理 image_numpy = input_image return image_numpy.astype(imtype)
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot中的@MessageMapping注解詳解
這篇文章主要介紹了SpringBoot中的@MessageMapping注解詳解,Spring Boot 提供了對 WebSocket 的支持,其中 @MessageMapping 注解是一個常用的注解,它可以將一個 Java 方法標記為 WebSocket 的消息處理器,需要的朋友可以參考下2023-08-08python+pyqt實現(xiàn)12306圖片驗證效果
這篇文章主要為大家詳細介紹了python+pyqt實現(xiàn)12306圖片驗證效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10Django模型層實現(xiàn)多表關系創(chuàng)建和多表操作
使用django ORM可以創(chuàng)建多表關系,并且也支持多張表之間的操作,以創(chuàng)建表關系和查詢兩部分說明django ORM的多表操作,本文就詳細的介紹一下,感興趣的可以了解一下2021-07-07使用Python爬了4400條淘寶商品數(shù)據(jù),竟發(fā)現(xiàn)了這些“潛規(guī)則”
這篇文章主要介紹了使用Python爬了4400條淘寶商品數(shù)據(jù),竟發(fā)現(xiàn)了這些“潛規(guī)則”,筆者用 Python 爬取淘寶某商品的全過程,并對商品數(shù)據(jù)進行了挖掘與分析,最終得出結論。需要的朋友可以參考下2018-03-03