电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Python圖像讀寫方法對比

瀏覽:3日期: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 編程
相關文章:
主站蜘蛛池模板: 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 粘度计,数显粘度计,指针旋转粘度计 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | SMC-ASCO-CKD气缸-FESTO-MAC电磁阀-上海天筹自动化设备官网 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 陶瓷砂磨机,盘式砂磨机,棒销式砂磨机-无锡市少宏粉体科技有限公司 | 江苏皓越真空设备有限公司 | 在线钠离子分析仪-硅酸根离子浓度测定仪-油液水分测定仪价格-北京时代新维测控设备有限公司 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 高精度电阻回路测试仪-回路直流电阻测试仪-武汉特高压电力科技有限公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟 | 市政路灯_厂家-淄博信达电力科技有限公司| 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 深圳市源和塑胶电子有限公司-首页 | 葡萄酒灌装机-食用油灌装机-液体肥灌装设备厂家_青州惠联灌装机械 | 透平油真空滤油机-变压器油板框滤油机-滤油车-华之源过滤设备 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 耐压仪-高压耐压仪|徐吉电气| 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 智能气瓶柜(大型气瓶储存柜)百科| 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 烽火安全网_加密软件、神盾软件官网 |