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

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

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

如下所示:

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

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

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


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

所以,

'''

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的標準形式

#方式一  在numpy中進行減去均值除以方差,最后轉(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ù)處理之減去均值,除以方差的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Keras load_model 導(dǎo)入錯誤的解決方式

    Keras load_model 導(dǎo)入錯誤的解決方式

    這篇文章主要介紹了Keras load_model 導(dǎo)入錯誤的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python遍歷目錄中的所有文件的方法

    Python遍歷目錄中的所有文件的方法

    Pyhton中我們一般使用os.walk生成器來獲取文件夾中的所有文件,這里我們就來詳細看一下Python遍歷目錄中的所有文件的方法,包括一個進階的利用fnmatch模塊進行匹配的方法:
    2016-07-07
  • 利用LyScript實現(xiàn)應(yīng)用層鉤子掃描器

    利用LyScript實現(xiàn)應(yīng)用層鉤子掃描器

    Capstone 是一個輕量級的多平臺、多架構(gòu)的反匯編框架。本篇文章將運用LyScript插件結(jié)合Capstone反匯編引擎實現(xiàn)一個鉤子掃描器,感興趣的可以了解一下
    2022-08-08
  • Python 如何對文件目錄操作

    Python 如何對文件目錄操作

    這篇文章主要介紹了Python 如何對文件目錄操作,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 老生常談python中的重載

    老生常談python中的重載

    所謂重載,就是多個相同函數(shù)名的函數(shù),根據(jù)傳入的參數(shù)個數(shù),參數(shù)類型而執(zhí)行不同的功能。所以函數(shù)重載實質(zhì)上是為了解決編程中參數(shù)可變不統(tǒng)一的問題。這篇文章主要介紹了老生常談python中的重載,需要的朋友可以參考下
    2018-11-11
  • Python 解決相對路徑問題:

    Python 解決相對路徑問題:"No such file or directory"

    這篇文章主要介紹了Python 解決相對路徑問題:"No such file or directory"具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python實現(xiàn)自動整理文件的腳本

    Python實現(xiàn)自動整理文件的腳本

    這篇文章主要介紹了Python實現(xiàn)自動整理文件的腳本,幫助大家更好的利用python處理文件,感興趣的朋友可以了解下
    2020-12-12
  • python爬蟲入門教程--正則表達式完全指南(五)

    python爬蟲入門教程--正則表達式完全指南(五)

    要想做爬蟲,不可避免的要用到正則表達式,如果是簡單的字符串處理,類似于split,substring等等就足夠了,可是涉及到比較復(fù)雜的匹配,當(dāng)然是正則的天下,下面這篇文章主要給大家介紹了python爬蟲之正則表達式的相關(guān)資料,需要的朋友可以參考下。
    2017-05-05
  • 深入理解Django自定義信號(signals)

    深入理解Django自定義信號(signals)

    這篇文章主要介紹了深入理解Django自定義信號(signals),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Python訪問MySQL封裝的常用類實例

    Python訪問MySQL封裝的常用類實例

    這篇文章主要介紹了Python訪問MySQL封裝的常用類,實例詳述了針對MySQL使用query執(zhí)行select及使用update進行insert、delete等操作的方法,需要的朋友可以參考下
    2014-11-11

最新評論

兰考县| 广水市| 五家渠市| 罗田县| 景宁| 琼中| 岑溪市| 北川| 沽源县| 固安县| 介休市| 孙吴县| 偏关县| 兴仁县| 永靖县| 浮梁县| 镇宁| 扶风县| 桐柏县| 嘉祥县| 连州市| 孟津县| 城固县| 临汾市| 南召县| 泾源县| 金塔县| 天镇县| 龙泉市| 福贡县| 行唐县| 北宁市| 乐清市| 沂水县| 屏东市| 承德市| 富裕县| 同江市| 大连市| 隆尧县| 彰化市|