Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะแปลงรูปภาพเป็น PyTorch Tensor ได้อย่างไร


เทนเซอร์ PyTorch คืออาร์เรย์ n มิติ (เมทริกซ์) ที่มีองค์ประกอบของประเภทข้อมูลเดียว เทนเซอร์ก็เหมือนกับอาร์เรย์ที่เป็นตัวเลข ความแตกต่างระหว่างจำนวนอาร์เรย์และเทนเซอร์ PyTorch คือเทนเซอร์ใช้ GPU เพื่อเร่งการคำนวณตัวเลข สำหรับการคำนวณแบบเร่ง ภาพจะถูกแปลงเป็นเทนเซอร์

ในการแปลงภาพเป็นเมตริกซ์ PyTorch เราสามารถทำตามขั้นตอนต่อไปนี้ -

ขั้นตอน

  • นำเข้าไลบรารีที่จำเป็น ห้องสมุดที่จำเป็นคือ คบเพลิง,คบเพลิง, หมอน

  • อ่านภาพ. รูปภาพต้องเป็นรูปภาพ PIL หรือ numpy.ndarray (HxWxC) อยู่ในช่วง [0, 255] ที่นี่ H,W และ C คือความสูง ความกว้าง และจำนวนช่องของภาพ

  • กำหนดการแปลงเพื่อแปลงภาพเป็นเทนเซอร์ เราใช้ transforms.ToTensor() เพื่อกำหนดการแปลง

  • แปลงภาพเป็นเทนเซอร์โดยใช้การแปลงที่กำหนดไว้ข้างต้น

ใส่รูปภาพ

จะแปลงรูปภาพเป็น PyTorch Tensor ได้อย่างไร

ตัวอย่างที่ 1

# Import the required libraries
import torch
from PIL import Image
import torchvision.transforms as transforms

# Read the image
image = Image.open('Penguins.jpg')

# Define a transform to convert the image to tensor
transform = transforms.ToTensor()

# Convert the image to PyTorch tensor
tensor = transform(image)

# print the converted image tensor
print(tensor)

ผลลัพธ์

tensor([[[0.4510, 0.4549, 0.4667, ..., 0.3333, 0.3333, 0.3333],
         [0.4549, 0.4510, 0.4627, ..., 0.3373, 0.3373, 0.3373],
         [0.4667, 0.4588, 0.4667, ..., 0.3451, 0.3451, 0.3412],
         ...,
         [0.6706, 0.5020, 0.5490, ..., 0.4627, 0.4275, 0.3333],
         [0.4196, 0.5922, 0.6784, ..., 0.4627, 0.4549, 0.3569],
         [0.3569, 0.3529, 0.4784, ..., 0.3922, 0.4314, 0.3490]],
         [[0.6824, 0.6863, 0.7020, ..., 0.6392, 0.6392, 0.6392],
         [0.6863, 0.6824, 0.6980, ..., 0.6314, 0.6314, 0.6314],
         [0.6980, 0.6902, 0.6980, ..., 0.6392, 0.6392, 0.6353],
         ...,
         [0.7255, 0.5412, 0.5765, ..., 0.5255, 0.5020, 0.4157],
         [0.4706, 0.6314, 0.7098, ..., 0.5255, 0.5294, 0.4392],
         [0.4196, 0.3961, 0.5020, ..., 0.4510, 0.5059, 0.4314]],
         [[0.8157, 0.8196, 0.8353, ..., 0.7922, 0.7922, 0.7922],
         [0.8196, 0.8157, 0.8314, ..., 0.7882, 0.7882, 0.7882],
         [0.8314, 0.8235, 0.8314, ..., 0.7961, 0.7961, 0.7922],
         ...,
         [0.6235, 0.5059, 0.6157, ..., 0.4863, 0.4941, 0.4196],
         [0.3922, 0.6000, 0.7176, ..., 0.4863, 0.5216, 0.4431],
         [0.3686, 0.3647, 0.4863, ..., 0.4235, 0.4980, 0.4353]]])

ในโปรแกรม Python ด้านบน เราได้แปลงอิมเมจ PIL เป็นเทนเซอร์

ตัวอย่างที่ 2

นอกจากนี้เรายังสามารถอ่านภาพโดยใช้ OpenCV . ภาพที่อ่านโดยใช้ OpenCV เป็นประเภท numpy.ndarray . เราสามารถแปลง numpy.ndarray เป็นเทนเซอร์โดยใช้ transforms.ToTensor() . ดูตัวอย่างต่อไปนี้

# Import the required libraries
import torch
import cv2
import torchvision.transforms as transforms

# Read the image
image = cv2.imread('Penguins.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Define a transform to convert the image to tensor
transform = transforms.ToTensor()

# Convert the image to PyTorch tensor
tensor = transform(image)

# Print the converted image tensor
print(tensor)

ผลลัพธ์

tensor([[[0.4510, 0.4549, 0.4667, ..., 0.3333, 0.3333, 0.3333],
         [0.4549, 0.4510, 0.4627, ..., 0.3373, 0.3373, 0.3373],
         [0.4667, 0.4588, 0.4667, ..., 0.3451, 0.3451, 0.3412],
         ...,
         [0.6706, 0.5020, 0.5490, ..., 0.4627, 0.4275, 0.3333],
         [0.4196, 0.5922, 0.6784, ..., 0.4627, 0.4549, 0.3569],
         [0.3569, 0.3529, 0.4784, ..., 0.3922, 0.4314, 0.3490]],
         [[0.6824, 0.6863, 0.7020, ..., 0.6392, 0.6392, 0.6392],
         [0.6863, 0.6824, 0.6980, ..., 0.6314, 0.6314, 0.6314],
         [0.6980, 0.6902, 0.6980, ..., 0.6392, 0.6392, 0.6353],
         ...,
         [0.7255, 0.5412, 0.5765, ..., 0.5255, 0.5020, 0.4157],
         [0.4706, 0.6314, 0.7098, ..., 0.5255, 0.5294, 0.4392],
         [0.4196, 0.3961, 0.5020, ..., 0.4510, 0.5059, 0.4314]],
         [[0.8157, 0.8196, 0.8353, ..., 0.7922, 0.7922, 0.7922],
         [0.8196, 0.8157, 0.8314, ..., 0.7882, 0.7882, 0.7882],
         [0.8314, 0.8235, 0.8314, ..., 0.7961, 0.7961, 0.7922],
         ...,
         [0.6235, 0.5059, 0.6157, ..., 0.4863, 0.4941, 0.4196],
         [0.3922, 0.6000, 0.7176, ..., 0.4863, 0.5216, 0.4431],
         [0.3686, 0.3647, 0.4863, ..., 0.4235, 0.4980, 0.4353]]])