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

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