Introducción a Computer Vision

1

¿Qué es la visión computarizada y cuáles son sus tipos?

Detección de objetos

2

Introducción a object detection: sliding window y bounding box

3

Generando video de sliding window

4

Introducción a object detection: backbone, non-max suppression y métricas

5

Visualización de IoU en object detection

6

Tipos de arquitecturas en detección de objetos

7

Arquitecturas relevantes en object detection

8

Utilizando un dataset de object detection

9

Carga de dataset de object detection

10

Exploración del dataset de object detection

11

Visualización de bounding boxes en el dataset de object detection

12

Aumentado de datos con Albumentation

13

Implementando Albumentation en object detection

14

Visualizando imágenes con aumentado de datos

15

Utilizando un modelo de object detection pre-entrenado

16

Probar detección de objetos con modelo pre-entrenado

17

Fine-tuning en detección de objetos

18

Fine-tuning en detección de objetos: carga de datos

19

Fine-tuning en detección de objetos: data augmentation

20

Fine-tuning en detección de objetos: entrenamiento

21

Fine-tuning en detección de objetos: visualización de objetos

Quiz: Detección de objetos

Segmentación de objetos

22

Introduciendo la segmentación de objetos

23

Tipos de segmentación y sus arquitecturas relevantes

24

¿Cómo es un dataset de segmentación?

25

Utilizando un dataset de segmentación de objetos

26

Visualización de nuestro dataset de segmentación

27

Creando red neuronal U-Net para segmentación

28

Entrenando y estudiando una red de segmentación

29

Generando predicciones con modelo de object segmentation

Quiz: Segmentación de objetos

Un paso más allá

30

El estado de la cuestión en computer vision

31

Comparte tu proyecto de detección y segmentación de objetos para conducción autónoma y certifícate

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
16 Hrs
39 Min
43 Seg

Visualización de bounding boxes en el dataset de object detection

11/31
Recursos

Aportes 3

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Aqui una alternativa para mostrar todos los bounding boxes:

Primero definamos un diccionario con todas las classes:

CLASS_LABELS = {
    1: "Cars",
    2: "Truck",
    3: "Pedestrian",
    4: "Bicyclist",
    5: "Light"
}

Luego modificamos los gt_boxes para incluir los labels de las classes:

y_val, x_val, _ = np.array(img).shape
gt_boxes = {}
for idx, row in df_train.iterrows():
    bbox = np.array(
        [
            [
                row["ymin"] / y_val,
                row["xmin"] / x_val,
                row["ymax"] / y_val,
                row["xmax"] / x_val,
            ]
        ],
        dtype=np.float32,
    )
    frame = row["frame"]
    label = row["class_id"]
    if frame in gt_boxes:
        gt_boxes[frame] = {
            "boxes": np.append(gt_boxes[frame]["boxes"], np.array(bbox), axis=0),
            "id": np.append(gt_boxes[frame]["id"], np.array([label]), axis=0)
        }
    else:
        gt_boxes[frame] = {"boxes": np.array(bbox), "id": np.array([label])}

Tambien debemos modificar el diccionario category_index:

category_index = {i: {"id": i, "name": k} for i, k in CLASS_LABELS.items()}

Por ultimo, modificamos el código que nos permite visualizar las imagenes con los boxes:

num_examples = 20
idx = 0

plt.figure(figsize=(30, 30))
for key, value in islice(gt_boxes.items(), num_examples):
    boxes = value["boxes"]
    labels = value["id"]
    im = np.array(Image.open(my_path + key))
    dummy_scores = np.ones(shape=[boxes.shape[0]], dtype=np.float32)
    plt.subplot(4, 5, idx + 1)
    plot_detections(
        im,
        boxes,
        labels,
        dummy_scores,
        category_index
    )
    idx += 1

plt.show()
Para visualizar las \*bounding boxes\* en un dataset de detección de objetos, necesitas cargar las imágenes junto con sus anotaciones y superponer las cajas sobre las imágenes. Aquí tienes un ejemplo general de cómo hacerlo en Python usando `matplotlib` y `PIL`: \### Paso a paso para la visualización 1\. \*\*Cargar las imágenes y las anotaciones\*\*: Dependiendo del dataset, las anotaciones pueden estar en diferentes formatos (JSON para COCO, XML para PASCAL VOC, etc.). 2\. \*\*Dibujar las \*bounding boxes\* en las imágenes\*\*: Usar `matplotlib.patches.Rectangle` para superponer las cajas en las imágenes. \### Ejemplo de código para visualizar \*bounding boxes\* Este ejemplo asume que tienes un archivo JSON con anotaciones (como en el formato COCO) y que las imágenes están en una carpeta. ```python import json import matplotlib.pyplot as plt import matplotlib.patches as patches from PIL import Image \# Ruta del archivo de anotaciones y de las imágenes annotations\_path = 'path/to/annotations.json' images\_path = 'path/to/images/' \# Cargar archivo de anotaciones with open(annotations\_path, 'r') as f: annotations = json.load(f) \# Diccionario para mapear IDs de imágenes a rutas image\_id\_to\_path = {img\['id']: img\['file\_name'] for img in annotations\['images']} \# Visualizar una imagen con sus anotaciones de \*bounding boxes\* image\_id = annotations\['annotations']\[0]\['image\_id'] # ID de ejemplo image\_file = image\_id\_to\_path\[image\_id] image\_path = images\_path + image\_file \# Cargar la imagen image = Image.open(image\_path) \# Dibujar la imagen y las cajas fig, ax = plt.subplots(figsize=(12, 12)) ax.imshow(image) \# Agregar las \*bounding boxes\* for ann in annotations\['annotations']: if ann\['image\_id'] == image\_id: bbox = ann\['bbox'] # Formato \[x\_min, y\_min, ancho, alto] rect = patches.Rectangle( (bbox\[0], bbox\[1]), bbox\[2], bbox\[3], linewidth=2, edgecolor='r', facecolor='none' ) ax.add\_patch(rect) plt.show() ``` \### Explicación de las anotaciones \- \*\*COCO\*\*: Las cajas están en el formato `\[x\_min, y\_min, width, height]`. \- \*\*PASCAL VOC\*\*: Generalmente usan `\[x\_min, y\_min, x\_max, y\_max]`, por lo que deberías adaptar el código para calcular el ancho y alto si es necesario. \### Personalización \- \*\*Colores\*\*: Puedes cambiar el color de las cajas con `edgecolor`. \- \*\*Etiquetas\*\*: Puedes agregar texto a las cajas para mostrar la clase de cada objeto usando `ax.text`. \### Visualización mejorada Si trabajas con imágenes grandes o muchas cajas, considera agregar una leyenda o ajustar la transparencia (`alpha`) de las cajas para facilitar la visualización. Este método es útil para verificar visualmente si las anotaciones están correctamente alineadas con los objetos en las imágenes antes de entrenar un modelo de detección de objetos.
Me arroja el error *" 'float' object is not iterable"* al usar la **función plot\_detections** y no me permite visualizar.