欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例

 更新時(shí)間:2020年01月02日 09:58:41   作者:WYXHAHAHA123  
今天小編就為大家分享一篇pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

如下所示:

#coding=gbk
'''
GPU上面的環(huán)境變化太復(fù)雜,這里我直接給出在筆記本CPU上面的運(yùn)行時(shí)間結(jié)果

由于方式3需要將tensor轉(zhuǎn)換到GPU上面,這一過(guò)程很消耗時(shí)間,大概需要十秒,故而果斷拋棄這樣的做法

img (168, 300, 3)
sub div in numpy,time 0.0110
sub div in torch.tensor,time 0.0070
sub div in torch.tensor with torchvision.transforms,time 0.0050
tensor1=tensor2
tensor2=tensor3


img (1079, 1349, 3)
sub div in numpy,time 0.1899
sub div in torch.tensor,time 0.1469
sub div in torch.tensor with torchvision.transforms,time 0.1109
tensor1=tensor2
tensor2=tensor3


耗時(shí)最久的是numpy,其次是轉(zhuǎn)換成torch.tensor,最快的是直接使用torchvision.transforms
我現(xiàn)在在GPU上面跑的程序GPU利用率特別低(大多數(shù)時(shí)間維持在2%左右,只有很少數(shù)的時(shí)間超過(guò)80%)
然后設(shè)置打印點(diǎn)調(diào)試程序時(shí)發(fā)現(xiàn),getitem()輸出一張圖像的時(shí)間在0.1秒的數(shù)量級(jí),這對(duì)于GPU而言是非常慢的
因?yàn)镚PU計(jì)算速度很快,CPU加載圖像和預(yù)處理圖像的速度趕不上GPU的計(jì)算速度,就會(huì)導(dǎo)致顯卡大量時(shí)間處于空閑狀態(tài)
經(jīng)過(guò)對(duì)于圖像I/O部分代碼的定位,發(fā)現(xiàn)是使用numpy減去圖像均值除以方差這一操作浪費(fèi)了太多時(shí)間,而且輸入圖像的分辨率越大,
所消耗的時(shí)間就會(huì)更多
原則上,圖像預(yù)處理每個(gè)階段的時(shí)間需要維持在0.01秒的數(shù)量級(jí)

所以,

'''

import numpy as np
import time
import torch
import torchvision.transforms as transforms
import cv2
# img_path='/ssddata2/wyx/detection/ead_stage12/stage12_img/WL_00387.jpg'
img_path='F:\\2\\00004.jpg'
PIXEL_MEANS =(0.485, 0.456, 0.406)  #RGB format mean and variances
PIXEL_STDS = (0.229, 0.224, 0.225)

#輸入文件路徑,輸出的應(yīng)該是轉(zhuǎn)換成torch.tensor的標(biāo)準(zhǔn)形式

#方式一  在numpy中進(jìn)行減去均值除以方差,最后轉(zhuǎn)換成torch.tensor
one_start=time.time()
img=cv2.imread(img_path)
img=img[:,:,::-1]
img=img.astype(np.float32, copy=False)
img/=255.0
img-=np.array(PIXEL_MEANS)
img/=np.array(PIXEL_STDS)
tensor1=torch.from_numpy(img.copy())
tensor1=tensor1.permute(2,0,1)
one_end=time.time()
print('sub div in numpy,time {:.4f}'.format(one_end-one_start))

del img

#方式二 轉(zhuǎn)換成torch.tensor,再減去均值除以方差
two_start=time.time()
img=cv2.imread(img_path)
img=img[:,:,::-1]
print('img',img.shape,np.min(img),np.min(img))
tensor2=torch.from_numpy(img.copy()).float()
tensor2/=255.0
tensor2-=torch.tensor(PIXEL_MEANS)
tensor2/=torch.tensor(PIXEL_STDS)
tensor2=tensor2.permute(2,0,1)
two_end=time.time()
print('sub div in torch.tensor,time {:.4f}'.format(two_end-two_start))

del img

#方式三 轉(zhuǎn)換成torch.tensor,再放到GPU上面,最后減去均值除以方差
# three_start=time.time()
# img=cv2.imread(img_path)
# img=img[:,:,::-1]
# tensor3=torch.from_numpy(img.copy()).cuda().float()
# tensor3-=torch.tensor(PIXEL_MEANS).cuda()
# tensor3/=torch.tensor(PIXEL_STDS).cuda()
# three_end=time.time()
# print('sub div in torch.tensor on cuda,time {:.4f}'.format(three_end-three_start))

# del img

#方式四 轉(zhuǎn)換成torch.tensor,使用transform方法減去均值除以方差
four_start=time.time()
img=cv2.imread(img_path)
img=img[:,:,::-1]
transform=transforms.Compose(
  [transforms.ToTensor(),transforms.Normalize(PIXEL_MEANS, PIXEL_STDS)]
)
tensor4=transform(img.copy())
four_end=time.time()
print('sub div in torch.tensor with torchvision.transforms,time {:.4f}'.format(four_end-four_start))

del img

if torch.sum(tensor1-tensor2)<=1e-3:
  print('tensor1=tensor2')
if torch.sum(tensor2-tensor4)==0:
  print('tensor2=tensor3')
# if tensor3==tensor4:
#   print('tensor3=tensor4')

以上這篇pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django一小時(shí)寫(xiě)出賬號(hào)密碼管理系統(tǒng)

    Django一小時(shí)寫(xiě)出賬號(hào)密碼管理系統(tǒng)

    這篇文章主要介紹了Django一小時(shí)寫(xiě)出賬號(hào)密碼管理系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python+opencv實(shí)現(xiàn)動(dòng)態(tài)物體追蹤

    python+opencv實(shí)現(xiàn)動(dòng)態(tài)物體追蹤

    這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)動(dòng)態(tài)物體的追蹤,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • np.meshgrid中的indexing參數(shù)問(wèn)題解決

    np.meshgrid中的indexing參數(shù)問(wèn)題解決

    本文主要介紹了np.meshgrid中的indexing參數(shù)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Selenium操作隱藏的元素及問(wèn)題解決方案

    Selenium操作隱藏的元素及問(wèn)題解決方案

    這篇文章主要介紹了Selenium操作隱藏的元素及問(wèn)題解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • python字典改變value值方法總結(jié)

    python字典改變value值方法總結(jié)

    在本文里小編給大家分享了關(guān)于python字典如何改變value值的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼,需要的朋友們學(xué)習(xí)下。
    2019-06-06
  • 淺析Python 字符編碼與文件處理

    淺析Python 字符編碼與文件處理

    這篇文章主要介紹了Python 字符編碼與文件處理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • Python 工具類(lèi)實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解

    Python 工具類(lèi)實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解

    用python進(jìn)行大文件下載的時(shí)候,一旦出現(xiàn)網(wǎng)絡(luò)波動(dòng)問(wèn)題,導(dǎo)致文件下載到一半。如果將下載不完全的文件刪掉,那么又需要從頭開(kāi)始,如果連續(xù)網(wǎng)絡(luò)波動(dòng),是不是要頭禿了。本文提供斷點(diǎn)續(xù)傳下載工具方法,希望可以幫助到你
    2021-10-10
  • Python文字截圖識(shí)別OCR工具實(shí)例解析

    Python文字截圖識(shí)別OCR工具實(shí)例解析

    這篇文章主要介紹了Python文字截圖識(shí)別OCR工具實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 實(shí)例講解Python3中abs()函數(shù)

    實(shí)例講解Python3中abs()函數(shù)

    在本篇文章里小編給大家分享了關(guān)于Python3中abs()函數(shù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-02-02
  • python dumps和loads區(qū)別詳解

    python dumps和loads區(qū)別詳解

    這篇文章主要介紹了python dumps和loads區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論