Computer >> Máy Tính >  >> Lập trình >> Python

Làm thế nào để chuyển đổi hình ảnh sang PyTorch Tensor?

Một tenxơ PyTorch là một mảng (ma trận) n chiều chứa các phần tử của một kiểu dữ liệu duy nhất. Một tensor giống như một mảng numpy. Sự khác biệt giữa mảng cường độ cao và bộ căng PyTorch là bộ căng sóng sử dụng GPU để tăng tốc các phép tính số. Đối với các phép tính tăng tốc, các hình ảnh được chuyển đổi thành các tensor.

Để chuyển đổi hình ảnh sang tensor PyTorch, chúng ta có thể thực hiện các bước sau -

Các bước

  • Nhập các thư viện cần thiết. Các thư viện bắt buộc là torch, torchvision, Pillow.

  • Đọc hình ảnh. Hình ảnh phải là hình ảnh PIL hoặc numpy.ndarray (HxWxC) trong phạm vi [0, 255]. Đây H, W, C là chiều cao, chiều rộng và số kênh của hình ảnh.

  • Xác định một phép biến đổi để chuyển đổi hình ảnh thành tensor. Chúng tôi sử dụng biến đổi.ToTensor () để xác định một phép biến đổi.

  • Chuyển đổi hình ảnh thành tensor bằng cách sử dụng biến đổi được xác định ở trên.

Hình ảnh đầu vào

Làm thế nào để chuyển đổi hình ảnh sang PyTorch Tensor?

Ví dụ 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)

Đầu ra

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]]])

Trong chương trình Python ở trên, chúng tôi đã chuyển đổi một hình ảnh PIL thành một tensor.

Ví dụ 2

Chúng tôi cũng có thể đọc hình ảnh bằng OpenCV . Hình ảnh được đọc bằng OpenCV thuộc loại numpy.ndarray . Chúng tôi có thể chuyển đổi numpy.ndarray thành một tensor bằng cách sử dụng biến đổi.ToTensor () . Hãy xem ví dụ sau.

# 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)

Đầu ra

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]]])