最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytorch 把圖片數(shù)據(jù)轉(zhuǎn)化成tensor的操作

 更新時(shí)間:2021年03月04日 15:17:02   作者:Caesar6666  
這篇文章主要介紹了pytorch 把圖片數(shù)據(jù)轉(zhuǎn)化成tensor的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

摘要:

在圖像識(shí)別當(dāng)中,一般步驟是先讀取圖片,然后把圖片數(shù)據(jù)轉(zhuǎn)化成tensor格式,再輸送到網(wǎng)絡(luò)中去。本文將介紹如何把圖片轉(zhuǎn)換成tensor。

一、數(shù)據(jù)轉(zhuǎn)換

把圖片轉(zhuǎn)成成torch的tensor數(shù)據(jù),一般采用函數(shù):torchvision.transforms。通過(guò)一個(gè)例子說(shuō)明,先用opencv讀取一張圖片,然后在轉(zhuǎn)換;注意一點(diǎn)是:opencv儲(chǔ)存圖片的格式和torch的儲(chǔ)存方式不一樣,opencv儲(chǔ)存圖片格式是(H,W,C),而torch儲(chǔ)存的格式是(C,H,W)。

import torchvision.transforms as transforms
import cv2 as cv
img = cv.imread('image/000001.jpg')
print(img.shape)  # numpy數(shù)組格式為(H,W,C)
transf = transforms.ToTensor()
img_tensor = transf(img) # tensor數(shù)據(jù)格式是torch(C,H,W)
print(img_tensor.size())

注意:使用torchvision.transforms時(shí)要注意一下,其子函數(shù) ToTensor() 是沒(méi)有參數(shù)輸入的,以下用法是會(huì)報(bào)錯(cuò)的

img_tensor = transforms.ToTensor(img)

必須是先定義和賦值轉(zhuǎn)換函數(shù),再調(diào)用并輸入?yún)?shù),正確用法:

img = cv.imread('image/000001.jpg')
transf = transforms.ToTensor()
img_tensor = transf(img)

再轉(zhuǎn)換過(guò)程中正則化

在使用 transforms.ToTensor() 進(jìn)行圖片數(shù)據(jù)轉(zhuǎn)換過(guò)程中會(huì)對(duì)圖像的像素值進(jìn)行正則化,即一般讀取的圖片像素值都是8 bit 的二進(jìn)制,那么它的十進(jìn)制的范圍為 [0, 255],而正則化會(huì)對(duì)每個(gè)像素值除以255,也就是把像素值正則化成 [0.0, 1.0]的范圍。通過(guò)例子理解一下:

import torchvision.transforms as transforms
import cv2 as cv
img = cv.imread('image/000001.jpg')
transf = transforms.ToTensor()
img_tensor = transf(img)
print('opencv', img)
print('torch', img_tensor)

三、自行修改正則化的范圍

使用transforms.Compose函數(shù)可以自行修改正則化的范圍,下面舉個(gè)例子正則化成 [-1.0, 1.0]

transf2 = transforms.Compose(
  [
    transforms.ToTensor(),
    transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))
  ]
)
img_tensor2 = transf2(img)
print(img_tensor2)

計(jì)算方式就是:

C=(C-mean)/ std

C為每個(gè)通道的所有像素值,彩色圖片為三通道圖像(BGR),所以mean和std是三個(gè)數(shù)的數(shù)組。

使用transforms.ToTensor()時(shí)已經(jīng)正則化成 [0,0, 0,1]了,那么(0.0 - 0.5)/0.5=-1.0,(1.0 - 0.5)/0.5=1.0,所以正則化成 [-1.0, 1.0]

補(bǔ)充:Python: 記錄一個(gè)關(guān)于圖片直接轉(zhuǎn)化為pytorch.tensor和numpy.array的不同之處的問(wèn)題

img = Image.open(img_path).convert("RGB")
img2 = torchvision.transforms.functional.to_tensor(img)
print(img2)
img1 = np.array(img)
print(img1)

輸出是這樣的:

不僅shape不一樣,而且值也是不一樣的。

解釋如下:

tensor = torch.from_numpy(np.asarray(PIL.Image.open(path))).permute(2, 0, 1).float() / 255
tensor = torchvision.transforms.functional.to_tensor(PIL.Image.open(path)) # 兩種方法是一樣的

PIL.Image.open()得到HWC格式,直接使用numpy 去轉(zhuǎn)換得到(h,w,c)格式,而用to_tensor得到(c,h,w)格式且值已經(jīng)除了255。

byte()相當(dāng)于to(torch.uint8),tensor.numpy()是把tensor 轉(zhuǎn)化為numpy.array格式。

在這里需要注意的是PIL和OPENCV的圖像讀取得到的格式都是HWC格式,一般模型訓(xùn)練使用的是CHW格式, H為Y軸是豎直方向,W為X軸水平方向。

且torchvision.transforms.functional.to_tensor()對(duì)所有輸入都是有變換操作。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Django解決frame拒絕問(wèn)題的方法

    Django解決frame拒絕問(wèn)題的方法

    這篇文章主要介紹了Django解決frame拒絕問(wèn)題的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python自動(dòng)化測(cè)試三部曲之request+django實(shí)現(xiàn)接口測(cè)試

    python自動(dòng)化測(cè)試三部曲之request+django實(shí)現(xiàn)接口測(cè)試

    這篇文章主要介紹了python自動(dòng)化測(cè)試三部曲之request+django實(shí)現(xiàn)接口測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python seaborn heatmap可視化相關(guān)性矩陣實(shí)例

    python seaborn heatmap可視化相關(guān)性矩陣實(shí)例

    這篇文章主要介紹了python seaborn heatmap可視化相關(guān)性矩陣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python實(shí)現(xiàn)一個(gè)發(fā)送程序和接收程序

    Python實(shí)現(xiàn)一個(gè)發(fā)送程序和接收程序

    這篇文章主要介紹了Python實(shí)現(xiàn)一個(gè)發(fā)送程序和接收程序,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • python處理xml文件的方法小結(jié)

    python處理xml文件的方法小結(jié)

    這篇文章主要介紹了python處理xml文件的方法,結(jié)合實(shí)例形式總結(jié)分析了Python常見(jiàn)的xml文件處理技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-05-05
  • pytorch和tensorflow計(jì)算Flops和params的詳細(xì)過(guò)程

    pytorch和tensorflow計(jì)算Flops和params的詳細(xì)過(guò)程

    這篇文章主要介紹了pytorch和tensorflow計(jì)算Flops和params,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • 淺要分析Python程序與C程序的結(jié)合使用

    淺要分析Python程序與C程序的結(jié)合使用

    這篇文章主要介紹了Python程序與C程序的結(jié)合使用,包括Python程序如何利用C程序的dll外鏈等等,來(lái)自IBM官網(wǎng)的技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python中and和or如何使用

    Python中and和or如何使用

    在本篇文章里小編給各位分享的是一篇關(guān)于Python中and、or用法實(shí)例文章,有興趣的朋友們可以參考學(xué)習(xí)下。
    2020-05-05
  • python matplotlib庫(kù)繪制散點(diǎn)圖例題解析

    python matplotlib庫(kù)繪制散點(diǎn)圖例題解析

    這篇文章主要介紹了python matplotlib庫(kù)繪制散點(diǎn)圖例題解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化

    tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化

    這篇文章主要介紹了tensorflow如何將one_hot標(biāo)簽和數(shù)字(整數(shù))標(biāo)簽進(jìn)行相互轉(zhuǎn)化問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論

从化市| 石柱| 山阴县| 古田县| 阿合奇县| 西畴县| 泰来县| 凤阳县| 积石山| 建瓯市| 辉县市| 屯昌县| 榆林市| 翁源县| 营口市| 灵台县| 彭阳县| 项城市| 高州市| 钟祥市| 安平县| 泸西县| 建昌县| 桐梓县| 鄂伦春自治旗| 高州市| 泽州县| 简阳市| 尚义县| 乐山市| 红桥区| 宝丰县| 崇仁县| 郁南县| 明溪县| 织金县| 隆尧县| 莱阳市| 电白县| 敦煌市| 贡山|