日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python圖像讀寫方法對比

瀏覽:19日期:2022-07-05 13:46:12

1 實驗標準

因為訓練使用的框架是Pytorch,因此讀取的實驗標準如下:

1、讀取分辨率都為1920x1080的5張圖片(png格式一張,jpg格式四張)并保存到數組。

2、將讀取的數組轉換為維度順序為CxHxW的Pytorch張量,并保存到顯存中(我使用GPU訓練),其中三個通道的順序為RGB。

3、記錄各個方法在以上操作中所耗費的時間。因為png格式的圖片大小差不多是質量有微小差異的jpg格式的10倍,所以數據集通常不會用png來保存,就不比較這兩種格式的讀取時間差異了。

寫入的實驗標準如下:

1、將5張1920x1080的5張圖像對應的Pytorch張量轉換為對應方法可使用的數據類型數組。

2、以jpg格式保存五張圖片。

3、記錄各個方法保存圖片所耗費的時間。

2 實驗情況

2.1 cv2

因為有GPU,所以cv2讀取圖片有兩種方式:

1、先把圖片都讀取為一個numpy數組,再轉換成保存在GPU中的pytorch張量。

2、初始化一個保存在GPU中的pytorch張量,然后將每張圖直接復制進這個張量中。

第一種方式實驗代碼如下:

import os, torchimport cv2 as cv import numpy as np from time import time read_path = ’D:test’write_path = ’D:testwrite’ # cv2讀取 1start_t = time()imgs = np.zeros([5, 1080, 1920, 3])for img, i in zip(os.listdir(read_path), range(5)): img = cv.imread(filename=os.path.join(read_path, img)) imgs[i] = img imgs = torch.tensor(imgs).to(’cuda’)[...,[2,1,0]].permute([0,3,1,2])/255 print(’cv2 讀取時間1:’, time() - start_t) # cv2保存start_t = time()imgs = (imgs.permute([0,2,3,1])[...,[2,1,0]]*255).cpu().numpy()for i in range(imgs.shape[0]): cv.imwrite(write_path + str(i) + ’.jpg’, imgs[i])print(’cv2 保存時間:’, time() - start_t)

 實驗結果:

cv2 讀取時間1: 0.39693760871887207cv2 保存時間: 0.3560612201690674

第二種方式實驗代碼如下:

import os, torchimport cv2 as cv import numpy as np from time import time read_path = ’D:test’write_path = ’D:testwrite’ # cv2讀取 2start_t = time()imgs = torch.zeros([5, 1080, 1920, 3], device=’cuda’)for img, i in zip(os.listdir(read_path), range(5)): img = torch.tensor(cv.imread(filename=os.path.join(read_path, img)), device=’cuda’) imgs[i] = img imgs = imgs[...,[2,1,0]].permute([0,3,1,2])/255 print(’cv2 讀取時間2:’, time() - start_t) # cv2保存start_t = time()imgs = (imgs.permute([0,2,3,1])[...,[2,1,0]]*255).cpu().numpy()for i in range(imgs.shape[0]): cv.imwrite(write_path + str(i) + ’.jpg’, imgs[i])print(’cv2 保存時間:’, time() - start_t)

實驗結果:

cv2 讀取時間2: 0.23636841773986816cv2 保存時間: 0.3066873550415039

2.2 matplotlib

同樣兩種讀取方式,第一種代碼如下:

import os, torch import numpy as npimport matplotlib.pyplot as plt from time import time read_path = ’D:test’write_path = ’D:testwrite’ # matplotlib 讀取 1start_t = time()imgs = np.zeros([5, 1080, 1920, 3])for img, i in zip(os.listdir(read_path), range(5)): img = plt.imread(os.path.join(read_path, img)) imgs[i] = img imgs = torch.tensor(imgs).to(’cuda’).permute([0,3,1,2])/255 print(’matplotlib 讀取時間1:’, time() - start_t) # matplotlib 保存start_t = time()imgs = (imgs.permute([0,2,3,1])).cpu().numpy()for i in range(imgs.shape[0]): plt.imsave(write_path + str(i) + ’.jpg’, imgs[i])print(’matplotlib 保存時間:’, time() - start_t)

實驗結果:

matplotlib 讀取時間1: 0.45380306243896484matplotlib 保存時間: 0.768944263458252

第二種方式實驗代碼:

import os, torch import numpy as npimport matplotlib.pyplot as plt from time import time read_path = ’D:test’write_path = ’D:testwrite’ # matplotlib 讀取 2start_t = time()imgs = torch.zeros([5, 1080, 1920, 3], device=’cuda’)for img, i in zip(os.listdir(read_path), range(5)): img = torch.tensor(plt.imread(os.path.join(read_path, img)), device=’cuda’) imgs[i] = img imgs = imgs.permute([0,3,1,2])/255 print(’matplotlib 讀取時間2:’, time() - start_t) # matplotlib 保存start_t = time()imgs = (imgs.permute([0,2,3,1])).cpu().numpy()for i in range(imgs.shape[0]): plt.imsave(write_path + str(i) + ’.jpg’, imgs[i])print(’matplotlib 保存時間:’, time() - start_t)

實驗結果:

matplotlib 讀取時間2: 0.2044532299041748matplotlib 保存時間: 0.4737534523010254

需要注意的是,matplotlib讀取png格式圖片獲取的數組的數值是在[0,1][0,1]范圍內的浮點數,而jpg格式圖片卻是在[0,255][0,255]范圍內的整數。所以如果數據集內圖片格式不一致,要注意先轉換為一致再讀取,否則數據集的預處理就麻煩了。

2.3 PIL

PIL的讀取與寫入并不能直接使用pytorch張量或numpy數組,要先轉換為Image類型,所以很麻煩,時間復雜度上肯定也是占下風的,就不實驗了。

2.4 torchvision

torchvision提供了直接從pytorch張量保存圖片的功能,和上面讀取最快的matplotlib的方法結合,代碼如下:

import os, torch import matplotlib.pyplot as plt from time import time from torchvision import utils read_path = ’D:test’write_path = ’D:testwrite’ # matplotlib 讀取 2start_t = time()imgs = torch.zeros([5, 1080, 1920, 3], device=’cuda’)for img, i in zip(os.listdir(read_path), range(5)): img = torch.tensor(plt.imread(os.path.join(read_path, img)), device=’cuda’) imgs[i] = img imgs = imgs.permute([0,3,1,2])/255 print(’matplotlib 讀取時間2:’, time() - start_t) # torchvision 保存start_t = time() for i in range(imgs.shape[0]): utils.save_image(imgs[i], write_path + str(i) + ’.jpg’)print(’torchvision 保存時間:’, time() - start_t)

實驗結果:

matplotlib 讀取時間2: 0.15358829498291016torchvision 保存時間: 0.14760661125183105

可以看出這兩個是最快的讀寫方法。另外,要讓圖片的讀寫盡量不影響訓練進程,我們還可以讓這兩個過程與訓練并行。另外,utils.save_image可以將多張圖片拼接成一張來保存,具體使用方法如下:

utils.save_image(tensor = imgs, # 要保存的多張圖片張量 shape = [n, C, H, W] fp = ’test.jpg’, # 保存路徑 nrow = 5, # 多圖拼接時,每行所占的圖片數 padding = 1, # 多圖拼接時,每張圖之間的間距 normalize = True, # 是否進行規范化,通常輸出圖像用tanh,所以要用規范化 range = (-1,1)) # 規范化的范圍

以上就是Python圖像讀寫方法對比的詳細內容,更多關于python 圖像讀寫的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人欧美一区二区三区的电影| 精品九九久久| 99精品在线| 日韩综合精品| 久久国产亚洲精品| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产精品一区二区免费福利视频 | 美女久久精品| 精品国产午夜| bbw在线视频| 国产99久久| 国产一区视频在线观看免费| 色老板在线视频一区二区| 久久高清免费| 国产精品99一区二区| 亚洲免费一区二区| 亚洲aⅴ网站| 欧美日韩一区二区三区四区在线观看| 国产亚洲久久| 国产一区精品福利| 日韩在线看片| 成人av二区| 一区二区高清| 国产免费av国片精品草莓男男 | 18国产精品| 精品国产a一区二区三区v免费| 欧美91视频| 国产精品一区二区三区四区在线观看 | 国产精品传媒麻豆hd| 欧美日韩精品一区二区视频| 日本在线视频一区二区| 国产va在线视频| 一区二区精彩视频| 日韩在线观看| 国产欧美一区二区三区精品观看 | 欧美韩日一区| 午夜久久av| 91精品精品| 欧美一级二区| 亚洲精品va| 精品色999| 日日夜夜免费精品视频| 日韩黄色大片网站| 欧美天堂一区| 一区在线观看| 久久男人av资源站| 日本不卡一二三区黄网| 国产美女高潮在线观看| 少妇精品在线| 伊人成人在线视频| 麻豆视频在线看| 国产亚洲第一伦理第一区| 99国产精品自拍| 国产欧洲在线| 国产精久久一区二区| 在线观看视频免费一区二区三区| 国产精品第一| 日韩国产在线观看| 一区免费视频| 成人精品亚洲| 98精品久久久久久久| 国产精一区二区| 日韩精品一二区| 欧美日韩在线二区| 成人国产精品一区二区网站| 久久国产婷婷国产香蕉| 快she精品国产999| 欧美日韩尤物久久| 精品国产18久久久久久二百| 国产乱码精品一区二区亚洲| 亚洲精品观看| 国产精品毛片| 免费av一区二区三区四区| av在线最新| 精品日韩在线| 麻豆精品视频在线观看免费| 日韩精品免费一区二区夜夜嗨| 久久香蕉国产| 成人日韩在线| 中文在线а√天堂| 精品91福利视频| 麻豆国产精品777777在线| 欧美日韩亚洲一区三区| 亚洲精品黄色| 最新亚洲国产| 美女精品在线| 午夜在线精品偷拍| 六月天综合网| 久久都是精品| 香蕉成人久久| 天使萌一区二区三区免费观看| 红桃视频欧美| 亚洲高清久久| 亚洲第一区色| 精品在线91| 一区在线视频观看| 免费看的黄色欧美网站| 首页国产欧美久久| 亚洲制服一区| 日韩激情一二三区| 欧美亚洲色图校园春色| 日韩av影院| 国产欧美69| 精品亚洲自拍| 日韩欧美网址| 欧美成人综合| 亚洲自拍另类| 一二三区精品| 日本中文字幕不卡| 国产精品99精品一区二区三区∴| 精品久久福利| 久久精品成人| 欧美特黄视频| 亚洲日本在线观看视频| 日韩精品一区二区三区中文| 国产精品探花在线观看| 麻豆一区在线| 99精品视频在线| 久久电影一区| 91嫩草精品| 高清在线一区| 久久久精品久久久久久96| 黄色不卡一区| 99成人在线| 日韩精品中文字幕一区二区| 97久久亚洲| 国产一区二区三区网| 欧美一区二区性| 亚洲精品四区| 久久精品资源| 久久婷婷久久| 中文字幕视频精品一区二区三区| 国产日韩欧美中文在线| 成人在线视频区| 亚洲调教视频在线观看| 亚洲理论在线| 麻豆成人在线观看| 国产99精品一区| 美美哒免费高清在线观看视频一区二区 | 天堂va欧美ⅴa亚洲va一国产| 国产精品久一| 麻豆国产在线| 午夜在线一区二区| 国产精品男女| 久久久久久久久丰满| 亚洲精选久久| 精品国产麻豆| 中文国产一区| 国产免费久久| 久久精品二区三区| 中文字幕av亚洲精品一部二部| 欧美激情视频一区二区三区在线播放| 久久精品亚洲欧美日韩精品中文字幕| 亚洲精品激情| 免费观看亚洲| 日韩专区欧美专区| 国产精品xxx在线观看| 久久久久久久久99精品大| 综合五月婷婷| 日韩不卡在线| 日韩精品三区四区| 日韩精品欧美| 国产日韩视频在线| 国产99久久| 青青在线精品| 成人va天堂| 欧美日韩一视频区二区| 欧美福利专区| 另类小说一区二区三区| 亚洲一区二区免费看| 麻豆精品视频在线观看视频| 久久午夜精品一区二区| 国产aa精品| 亚洲三区欧美一区国产二区| 三级精品视频| 你懂的国产精品永久在线| 免费日韩视频| 国产精品麻豆久久| 日韩区一区二| 欧美日韩在线网站| 麻豆一区二区三区| 亚洲欧洲美洲国产香蕉| 久久精品卡一| 免费亚洲一区| 亚洲精品欧美| 国产国产精品| 久久免费精品| 日韩精品视频中文字幕| 亚洲精品极品少妇16p| 国产成人精品一区二区三区免费| 日韩精品久久久久久| 免费观看久久av| 理论片午夜视频在线观看| 国产欧美一区二区三区米奇| 丝袜a∨在线一区二区三区不卡| 97精品国产福利一区二区三区| 国产乱人伦丫前精品视频| 亚洲毛片网站| 国产精品毛片| 亚洲大全视频|