Convertir una imagen en un Torch Tensor en Python

En este artículo, veremos cómo convertir una imagen en un PyTorch Tensor. Un tensor en PyTorch es como una array NumPy que contiene elementos de los mismos tipos de d.  

Un tensor puede ser de tipo escalar, unidimensional o multidimensional. Para convertir una imagen en un tensor en PyTorch, usamos las transformaciones PILToTensor() y ToTensor() . Estas transformaciones se proporcionan en el paquete torchvision.transforms . Usando estas transformaciones, podemos convertir una imagen PIL o un numpy.ndarray . El numpy.ndarray debe estar en formato [H, W, C], donde H, W y C son la altura, el ancho y la cantidad de canales de la imagen.

transform = transforma.Compose([transforma.PILToTensor()])

tensor = transformar (img)

Esta transformación convierte una imagen PIL en un tensor de tipo de datos torch.uint8 en el rango entre 0 y 255 . Aquí img es una imagen PIL.

transform = transforma.Compose([transforma.ToTensor()])

tensor = transformar (img)

Esta transformación convierte cualquier numpy.ndarray en un tensor de antorcha de tipo de datos torch.float32 en el rango 0 y 1 . Aquí img es un numpy.ndarray .

Acercarse:

  • Importe las bibliotecas necesarias.
  • Lea la imagen de entrada. La imagen de entrada es una imagen PIL o una array NumPy N-dimensional.
  • Defina la transformación para convertir la imagen en Torch Tensor. Definimos una transformación usando transforms.Compose() . Puede usar directamente transforms.PILToTensor() o   transforms.ToTensor() .
  • Convierta la imagen en tensor utilizando la transformación definida anteriormente.
  • Imprime los valores del tensor.

La siguiente imagen se utiliza como imagen de entrada en ambos ejemplos:

Ejemplo 1:

En el siguiente ejemplo, convertimos una imagen PIL a Torch Tensor. 

Python3

# Import necessary libraries
import torch
from PIL import Image
import torchvision.transforms as transforms
  
# Read a PIL image
image = Image.open('iceland.jpg')
  
# Define a transform to convert PIL 
# image to a Torch tensor
transform = transforms.Compose([
    transforms.PILToTensor()
])
  
# transform = transforms.PILToTensor()
# Convert the PIL image to Torch tensor
img_tensor = transform(image)
  
# print the converted Torch tensor
print(img_tensor)

Producción:

Observe que el tipo de datos del tensor de salida es torch.uint8 y los valores están en el rango [0,255] .

Ejemplo 2:

En este ejemplo, leemos una imagen RGB usando OpenCV . El tipo de imagen que se lee con OpenCV es numpy.ndarray . Lo convertimos en un tensor de antorcha usando transform ToTensor()

Python3

# Import required libraries
import torch
import cv2
import torchvision.transforms as transforms
  
# Read the image
image = cv2.imread('iceland.jpg')
  
# Convert BGR image to RGB image
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  
# Define a transform to convert
# the image to torch tensor
transform = transforms.Compose([
    transforms.ToTensor()
])
  
# Convert the image to Torch tensor
tensor = transform(image)
  
# print the converted image tensor
print(tensor)

Producción:

Observe que el tipo de datos del tensor de salida es torch.float32 y los valores están en el rango [0, 1].

Publicación traducida automáticamente

Artículo escrito por shahidedu7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *