Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách chuyển đổi ảnh thành PyTorch Tensor

Tensor PyTorch là mảng n chiều chứa phần tử cùng kiểu dữ liệu. Khác với numpy array ở chỗ tensor dùng GPU để tăng tốc. Ảnh thường được chuyển thành tensor để tính toán nhanh hơn.

Các bước

  • Nhập thư viện: torch, torchvision, Pillow.

  • Đọc ảnh: ảnh phải là PIL Image hoặc numpy.ndarray (HxWxC) trong khoảng [0, 255]. H, W, C là chiều cao, rộng, số kênh.

  • Định nghĩa transform: dùng transforms.ToTensor().

  • Chuyển ảnh thành tensor bằng transform.

Ảnh đầu vào

Cách chuyển đổi ảnh thành PyTorch Tensor

Ví dụ 1: Chuyển PIL Image thành tensor

import torch
from PIL import Image
import torchvision.transforms as transforms

# Đọc ảnh
image = Image.open('Penguins.jpg')

# Transform chuyển thành tensor
transform = transforms.ToTensor()

# Chuyển đổi
tensor = transform(image)

# In tensor
print(tensor)

Kết quả

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.3569, 0.3529, 0.4784, ..., 0.3922, 0.4314, 0.3490]],
        [[0.6824, 0.6863, 0.7020, ..., 0.6392, 0.6392, 0.6392],
         ...,
         [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.3686, 0.3647, 0.4863, ..., 0.4235, 0.4980, 0.4353]]])

Ví dụ 2: Đọc ảnh bằng OpenCV (numpy.ndarray) rồi chuyển tensor

import torch
import cv2
import torchvision.transforms as transforms

# Đọc ảnh bằng OpenCV (BGR)
image = cv2.imread('Penguins.jpg')
# Chuyển BGR sang RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Transform
transform = transforms.ToTensor()

# Chuyển đổi
tensor = transform(image)
print(tensor)

Kết quả

(Giống ví dụ 1, tensor shape [3, H, W] với giá trị chuẩn hóa [0, 1])