图像张量化的几种方式对比

2021-08-28  本文已影响0人  gaoshine

深度学习中,图像在送入模型之前一般要做张量话处理,下面分析几种张量化的特点.

一般图片打开后,需要根据情况做一些变换:

我的测试代码:

from PIL import Image
import torchvision.transforms as T
import numpy as np
import cv2

# 
def load_data_tensor(path):
    trans = T.Compose([T.Resize(224), T.CenterCrop(224), T.ToTensor()])
    img = Image.open(path)
    img_tensor = trans(img).unsqueeze(0)
    return np.array(img_tensor)

def load_data_numpy(path):
    image = Image.open(path).convert('RGB')
    image = image.resize([224, 224])
    arr = np.array(image).astype(np.float32) / 255.0
    #arr = arr * 2.0 - 1.0
    arr = arr.transpose(2, 0, 1).reshape([1, 3, 224, 224])
    return  arr

def load_data_cv(path):
    image = cv2.imread(path)
    image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    image = cv2.resize(image,(224, 224))
    arr = np.array(image).astype(np.float32) / 255.0
    #arr = arr * 2.0 - 1.0
    arr = arr.transpose(2, 0, 1).reshape([1, 3, 224, 224])
    return  arr



r0 = load_data_tensor('test_photo.jpg')
print(r0[0][0])
print('-'*50)
r1 = load_data_numpy('test_photo.jpg')
print(r1[0][0])
r2 = load_data_cv('test_photo.jpg')


image = cv2.imread('test_photo.jpg')
cv2.imshow('raw:',image)


rr0 = r0[0].transpose(1, 2, 0)
rr0 = cv2.cvtColor(rr0,cv2.COLOR_RGB2BGR)
cv2.imshow('tensor:',rr0)
rr1 = r1[0].transpose(1, 2, 0)
rr1 = cv2.cvtColor(rr1,cv2.COLOR_RGB2BGR)
cv2.imshow('numpy:',rr1)
rr2 = r2[0].transpose(1, 2, 0)
rr2 = cv2.cvtColor(rr2,cv2.COLOR_RGB2BGR)
cv2.imshow('cv:',rr2)

cv2.waitKey(0)

Screen Shot 2021-08-28 at 09.58.56.png

我测试了三种模式:

调用后再复原顺序,可视化显示出来作比对:

上一篇 下一篇

猜你喜欢

热点阅读