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

Visualización de IoU en object detection

5/31
Recursos

Aportes 4

Preguntas 1

Ordenar por:

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

Para quienes no les funcione la visualización intenten cambiar esto

example = ([680, 380, 830, 580], [700, 400, 840, 600])

Creo que es porque la imagen que descargamos tiene diferentes dimensiones a las del profe Sergio.

Si los bounding boxes no aparecen, pueden hacer un resize de la image a 2850 así:

image = cv2.resize(image, dsize=(2850, 2850))

Como estaba leyendo en los aportes, creo que se debe a que las dimensiones de la que descargamos son diferentes a la del profesor. A mi me funcionó hacer el resize, espero que también les sirva 😃.

La imagen compartida no cuenta con las mismas dimensiones que la del profesor, pero el IoU más acercado usando valores de posición cerrados que obtuve fue con estas medidas

example = ([670, 430, 800, 550], [670, 430, 780, 550])

También me encontré con otro problema, yo estoy utilizando PyCharm para llevarlo a un entorno de producción y con el código del profesor no lograba hacer aparecer los rectángulos. Lo que me funciono fue agregar esta línea de código justo antes de plt.show()

ax.add_patch(rect)
ax.plot() //Línea agregada
plt.show()
Para visualizar el IoU (Intersection over Union) en detección de objetos, necesitas superponer las cajas (ground truth y predicción) sobre una imagen y mostrar la región de intersección. Aquí te explico cómo hacerlo paso a paso usando `matplotlib`. \### Código para Visualizar IoU 1\. \*\*Dibuja las cajas delimitadoras (bounding boxes)\*\*. 2\. \*\*Calcula la región de intersección y dibújala\*\*. 3\. \*\*Muestra el valor de IoU en la imagen\*\*. Aquí tienes un ejemplo de código para visualizar el IoU: ```python import matplotlib.pyplot as plt import matplotlib.patches as patches def bb\_intersection\_over\_union(boxA, boxB): \# Coordenadas de la intersección xA = max(boxA\[0], boxB\[0]) yA = max(boxA\[1], boxB\[1]) xB = min(boxA\[2], boxB\[2]) yB = min(boxA\[3], boxB\[3]) \# Área de la intersección intersection\_area = max(0, xB - xA) \* max(0, yB - yA) \# Áreas de las cajas boxA\_area = (boxA\[2] - boxA\[0]) \* (boxA\[3] - boxA\[1]) boxB\_area = (boxB\[2] - boxB\[0]) \* (boxB\[3] - boxB\[1]) \# Cálculo del IoU iou = intersection\_area / float(boxA\_area + boxB\_area - intersection\_area) return iou, (xA, yA, xB, yB) \# Cajas de ejemplo \[x\_min, y\_min, x\_max, y\_max] boxA = \[50, 50, 150, 150] # Ground truth boxB = \[80, 80, 180, 180] # Predicción iou, intersection\_box = bb\_intersection\_over\_union(boxA, boxB) \# Visualización fig, ax = plt.subplots(1, figsize=(8, 8)) ax.set\_title(f"IoU: {iou:.2f}") ax.imshow(np.ones((200, 200, 3))) # Imagen de fondo (por simplicidad, es un rectángulo blanco) \# Dibujar la caja ground truth rectA = patches.Rectangle((boxA\[0], boxA\[1]), boxA\[2] - boxA\[0], boxA\[3] - boxA\[1], linewidth=2, edgecolor='g', facecolor='none', label="Ground Truth") ax.add\_patch(rectA) \# Dibujar la caja de predicción rectB = patches.Rectangle((boxB\[0], boxB\[1]), boxB\[2] - boxB\[0], boxB\[3] - boxB\[1], linewidth=2, edgecolor='b', facecolor='none', label="Prediction") ax.add\_patch(rectB) \# Dibujar la región de intersección if intersection\_box\[2] > intersection\_box\[0] and intersection\_box\[3] > intersection\_box\[1]: intersection\_rect = patches.Rectangle((intersection\_box\[0], intersection\_box\[1]), intersection\_box\[2] - intersection\_box\[0], intersection\_box\[3] - intersection\_box\[1], linewidth=2, edgecolor='r', facecolor='red', alpha=0.3, label="Intersection") ax.add\_patch(intersection\_rect) plt.legend(loc='upper right') plt.show() ``` \### Explicación del Código: \- \*\*`bb\_intersection\_over\_union`\*\*: Calcula el área de intersección entre dos cajas y devuelve el IoU. \- \*\*`matplotlib.patches.Rectangle`\*\*: Se utiliza para dibujar las cajas sobre la imagen. \- \*\*Intersección\*\*: Se dibuja con un color diferente para destacar la región de superposición. \### Resultado: Este código superpone las cajas y muestra visualmente la intersección en rojo, junto con el valor del IoU en el título de la gráfica. Esto es útil para entender visualmente cómo se solapan las predicciones y los valores reales en la detección de objetos.