En este artículo, veremos cómo calcular el área de un conjunto de cuadros delimitadores en PyTorch. Podemos calcular el área de un conjunto de cuadros delimitadores utilizando el método box_area() del módulo torchvision.io.
método box_area()
Este método acepta cuadros delimitadores como entrada y devuelve el área de los cuadros delimitadores dados. Los cuadros delimitadores de entrada deben ser tensores de antorcha con tamaño [N,4], donde N representa el número de cuadros delimitadores para los que se calculará el área. Se espera que los cuadros delimitadores tengan el formato (x_min, y_min, x_max, y_max), donde 0 ≤ x_min < x_max, y 0 ≤ y_min < y_max. Antes de calcular el área de un cuadro delimitador, usamos Unsequeeze para convertir este tensor de cuadro delimitador en un tensor 2D.
Sintaxis: torchvision.ops.box_area(cajas)
Parámetro:
- cuadros: este método acepta cuadros delimitadores como entrada.
Retorno: Este método regresa el área para cada caja.
Implementación paso a paso
Paso 1: Importe las bibliotecas requeridas.
Python
import torch import torchvision from torchvision.io import read_image from torchvision.utils import draw_bounding_boxes from torchvision.ops import box_area
Paso 2: Lea la imagen de entrada de su computadora.
Python
img = read_image('img.png')
Paso 3: define un cuadro delimitador y convierte este cuadro en un tensor de antorcha.
Python
b_box = [80, 70, 500, 200] b_box = torch.tensor(b_box, dtype=torch.int)
Paso 4: abre el cuadro delimitador dado para convertirlo en un tensor 2D. Ejecute este paso solo si queremos calcular el área de un solo cuadro delimitador; de lo contrario, omita este paso.
Python
b_box = b_box.unsqueeze(0)
Paso 5: Calcule el área del cuadro delimitador definida anteriormente y almacene esta área calculada en una variable para su uso posterior.
Python
area = box_area(b_box)
Paso 6: configure esta área calculada en la etiqueta.
Python
label = [f"b_box area = {area.item()}"]
Paso 7: Dibuje un cuadro delimitador en la imagen y coloque la etiqueta definida anteriormente en el cuadro.
Python
img = draw_bounding_boxes(img, b_box, labels=label, width=4, colors=(255, 0, 0))
Paso 8: transforma esta imagen en una imagen PIL
Python
img = torchvision.transforms.ToPILImage()(img)
Paso 9: Muestre la imagen de salida.
Python
img.show()
La siguiente imagen se utiliza para la demostración:
Ejemplo 1:
en este ejemplo, estamos calculando el área de un solo cuadro delimitador y configuramos esta área calculada como una etiqueta.
Python
# Import the required libraries import torch import torchvision from torchvision.io import read_image from torchvision.utils import draw_bounding_boxes from torchvision.ops import box_area # read input image from your computer img = read_image('img.png') # bounding box are xmin, ymin, xmax, ymax b_box = [80, 70, 500, 200] # convert the bounding box to torch tensor b_box = torch.tensor(b_box, dtype=torch.int) # unsqueeze the given bounding box to make # it 2D tensor b_box = b_box.unsqueeze(0) # Compute the bounding box area area = box_area(b_box) # set this computed area on label label = [f"b_box area = {area.item()}"] # draw the above define bounding box on image # Set the above define label on image img = draw_bounding_boxes(img, b_box, labels=label, width=4, colors=(255, 0, 0)) # transform this image to PIL image img = torchvision.transforms.ToPILImage()(img) # display result img.show()
Producción:
Ejemplo 2:
en este ejemplo, estamos calculando el área de varios cuadros delimitadores y configuramos esta área calculada como una etiqueta para cada cuadro.
Python
# Import the required libraries import torch from PIL import Image import torchvision from torchvision.io import read_image from torchvision.utils import draw_bounding_boxes from torchvision.ops import box_area # read input image from your computer img = read_image('img.png') # create boxes b_box1 = [80, 70, 500, 200] b_box2 = [80, 230, 500, 300] b_box3 = [580, 70, 720, 300] b_box = [b_box1, b_box2,b_box3] # convert the bounding box to torch tensor b_box = torch.tensor(b_box, dtype=torch.int) # Compute the bounding box area area = box_area(b_box) # set this computed area on label labels = [f"b_box area ={n}" for n in area] # draw the above define bounding boxes on image img=draw_bounding_boxes(img, b_box, labels = labels, width=4, colors=["orange", "white","red"]) # transform this image to PIL image img = torchvision.transforms.ToPILImage()(img) # display result img.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por mukulsomukesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA