YOLO (You Only Look Once): Detección de Objetos en Tiempo Real

Introducción:

Hola amigos de Internet, les doy la bienvenida a Mi Diario Pyhthon, el mejor blog para Aprender Python.
En este articulo hablaremos un poco sobre la detección de objetos y veremos un proyecto de código abierto que estoy seguro que te encantara.

Hace diez años los investigadores pensaban que inventar una computadora que distinguiera un gato de un perro sería casi imposible. Hoy en día los sistemas de visión artificial lo hacen con una precisión superior al 99%.

Así que prepárate, por que estamos apunto de ver el código fuente de lo que sera el futuro de la tecnología.

YOLO: Detección de Objetos en Tiempo Real

"YOLO es un sistema de detección de objetos en tiempo real de última generación. En un Pascal Titan X, procesa imágenes a 30 FPS y tiene un mAP de 57.9% en COCO test-dev."


Así se describe el proyecto en su pagina oficial.

En resumen: YOLO (You Only Look Once) es un método de detección de objetos objetos de código abierto que puede identificar objetos tanto en imágenes como en vídeos, desde animales a señales de transito.

"Nuestro modelo tiene varias ventajas sobre los sistemas basados ​​en clasificadores. Mira la imagen completa en el momento de la prueba, de modo que sus predicciones se basan en el contexto global de la imagen. También hace predicciones con una única evaluación de red a diferencia de sistemas como R-CNN que requieren miles para una sola imagen. Esto lo hace extremadamente rápido, más de 1000 veces más rápido que R-CNN y 100 veces más rápido que Fast R-CNN ."

Detección de objetos con un modelo pre-entrenado:

Muy bien, sabemos que YOLO es muy eficiente, vamos a probarlo nosotros mismos.
Lo haremos utilizando un modelo-preentrenado, a lo cual solo le pediremos la predicción.
Lo primero que necesitamos es el proyecto, por lo cual lo vamos a descargar de github. Si tienes git puedes clonar el repositorio:
git clone https://github.com/pjreddie/darknet

O puedes descargar el archivo zip: https://github.com/pjreddie/darknet.

Luego de esto, utilizamos el comando cd para entrar a la carpeta del proyecto (darknet) y seguidamente ejecutamos make:

cd darknet
make

¿Para que usar make? Luego de ejecutar este comando, tendremos el archivo de configuración para YOLO en el sub-directorio cfg.

Lo siguiente que necesitamos, es descargar el modelo pre-entrenado. Para ello ejecutaremos el siguiente comando en nuestra terminal.

wget https://pjreddie.com/media/files/yolov3.weights

Perfecto. Otra alternativa, es descargar el modelo ingresando al siguiente enlace: https://pjreddie.com/media/files/yolov3.weights.

¿Y ahora? Ahora es momento de probar el detector.

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

Anlaicemos un poco esta linea. Lo que hacemos ejecutar detect el cual tiene 3 argumentos: el archivo de configuración (cfg/yolov3.cfg), el modelo pre-entrenado (yolov3.weights) y la imagen que usaremos como prueba (data/dog.jpg) . El proyecto tiene algunas imágenes de prueba en el sub-directorio data.

¡Enter!

layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs
    1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs
    .......
  105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs
  106 detection
truth_thresh: Using default '1.000000'
Loading weights from yolov3.weights...Done!
data/dog.jpg: Predicted in 0.029329 seconds.
dog: 99%
truck: 93%
bicycle: 99%

El resultado, la imagen las predicciones del modelo. En la consola podemos ver todos los detalles de la predicción.

Realicemos otro ejemplo:

./darknet detect cfg/yolov3.cfg yolov3.weights data/horses.jpg

¡Increíble! es fascinante.

¿Que opinas?

Utilizando YOLO en Python:

Si vamos y le damos un vistazo al directorio del proyecto (darknet) veremos que hay un sub-directorio llamado Python. Y que podemos utlizar el proyecto YOLO con Python, Scipy y Opencv.
¿Como lo hago? En el sub-directorio examples hay un script el cual solo necesitas ejecutar:
detector-scipy-opencv.py: https://github.com/pjreddie/darknet/blob/master/examples/detector-scipy-opencv.py.
¿Que opinas? ¿Alguna duda? No dudes en dejar tu comentario.
Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
  1. Cristian M dice:

    necesito comparar o identificar formas me recomiendas este metodo

Deja una respuesta

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

Subir
White Monkey