En un post anterior hablamos de cómo implementar un clasificador de imágenes utilizando una CNN. Esto está muy bien, pero seguro que te parece aún más útil poder decir dentro de una imagen dónde se encuentra un determinado objeto. Problamente hayas jugado a buscar a ¿Dónde esta Wally? de pequeño.
Pues eso es justo lo que te voy a enseñar. Este el primero de una serie de artículos donde explicaré qué es la detección de objetos e implementaré diferentes algoritmos que han sido estado del arte en este campo a lo largo del tiempo.
¿Qué es la detección de objetos?

Anteriormente hemos mencionado qué es la clasificación de objetos. que consiste simplemente en decir si un objeto determinado se encuentra en una imagen. Pero si lo que quieres además de saber si el objeto está en la imagen o no, es ¿dónde está?, en ese caso hablamos de detección de objetos.
Al igual que en la clasificación, la detección es un problema de aprendizaje supervisado, por lo que necesitamos una etiqueta que predecir y con la que poder comparar las predicciones del modelo. Para esto, además del tipo de objeto que se encuentra en la imagen, se proporciona la ubicación del objeto en una cajita conocida como bounding box. En este tipo de problemas cuando hablemos de la etiqueta que nos proporcionan para entrenar, hablaremos del Ground Truth.
¿Qué es un bounding box?
Un bounding box, cuya traducción es algo así como caja delimitadora, hace precisamente eso, delimita los límites del objeto dentro de una imagen. En muchas ocasiones verás bounding box escrito de la siguiente forma: bbox.
El valor de un bbox suele estar conformado por 4 valores. Se suele utilizar el siguiente formato:
(x_min, y_min, x_max, y_max)

Conceptos importantes en la detección de objetos
Ahora que ya conocemos uno de los conceptos en los que nos basaremos para entrenar los modelos que veremos en siguientes posts, tenemos que saber como comparar la predicción con el bbox que nos proporcionan.
Intersect over Union
Brevemente, Interesect Over Union es una métrica para evaluar la precisión con la que un modelo predice la posición en un determinado conjunto de datos. Trata de medir como de superpuesto está el bbox predecido con el bbox a predecir.

De esta forma, se coge el área de la intersección entre los bbox y se divide por el área de la unión.
IoU = \frac{Intersección}{Unión}
Un IoU de 1 nos proporciona una superposición perfecta, mientras que un IoU de 0, quiere decir que las predicciones ni siquiera se tocan.
Non-max suppression
Como veremos en artículos posteriores, los algoritmos de detección no producen un único bounding box, sino que producen muchos, así que si hay varios que están apuntando a la misma imagen, ¿cómo decides cuál es el mejor?

Como vemos en la imagen, en este caso nuestro algoritmo ha generado múltiples bounding boxes, así que para solo quedarnos con uno, cogeríamos aquella predicción que tuviera mayor probabilidad, es decir, nos quedaríamos con aquella caja que más confianza tuviera.
Conclusiones
En este artículo hemos visto los conceptos fundamentales con los que trataremos en próximos posts.