Categoría: Artículos

Autor: Martín Jurado

Chief Data and Analytics Officer de Zurich Insurance

10 abril, 2024

. 7 minutos de lectura.

YOLO (You Only Look Once) es un algoritmo de detección de objetos que utiliza técnicas de aprendizaje profundo (deep learning). Por lo tanto, es más específicamente una técnica dentro del campo de la inteligencia artificial (AI) que utiliza redes neuronales convolucionales (CNN) para realizar la tarea de detección de objetos en imágenes o videos.

YOLO, fue inventado por Joseph Redmon, Santosh Divvala, Ross Girshick y Ali Farhadi en la Universidad de Washington. El artículo original que describe el método YOLO fue publicado en 2016 por Joseph Redmon y Ali Farhadi. El stack tecnológico inicial de la aplicación YOLO incluye:

  1. Python: YOLO está implementado principalmente en el lenguaje de programación Python, que es ampliamente utilizado en el campo del aprendizaje profundo y la visión por computadora debido a sus numerosas bibliotecas y marcos de trabajo disponibles.
  2. CUDA: Es una plataforma de computación paralela desarrollada por NVIDIA que permite aprovechar el poder de las GPU para acelerar operaciones intensivas en cálculos, como los utilizados en las redes neuronales profundas. YOLO hace uso de CUDA para la aceleración de la inferencia en GPU.
  3. OpenCV: Es una biblioteca de visión por computadora de código abierto que proporciona una serie de funciones y algoritmos útiles para el procesamiento de imágenes y videos. YOLO utiliza OpenCV para manipular imágenes de entrada y visualizar las detecciones de objetos.
  4. Darknet: Es un marco de aprendizaje profundo de código abierto escrito en C y CUDA. Fue desarrollado por Joseph Redmon específicamente para el proyecto YOLO. Originalmente, YOLO se implementó en Darknet.
  5. TensorFlow: Es un marco de aprendizaje automático de código abierto desarrollado por Google. Si bien la implementación original de YOLO se basaba principalmente en Darknet, que utiliza su propio marco personalizado, versiones y adaptaciones posteriores de YOLO se han implementado utilizando TensorFlow. TensorFlow proporciona una plataforma flexible y potente para construir y entrenar modelos de aprendizaje profundo, incluidos los modelos de detección de objetos como YOLO.
  6. PyTorch: Es otro marco de aprendizaje automático de código abierto desarrollado por el laboratorio de investigación de inteligencia artificial de Facebook (FAIR). Al igual que TensorFlow, PyTorch se ha utilizado para implementar modelos YOLO en varios proyectos y documentos de investigación. PyTorch es conocido por su gráfico de cálculo dinámico, lo que facilita definir y modificar arquitecturas de redes neuronales complejas.

Estos componentes formaron el núcleo inicial de la implementación de YOLO y permitieron su desarrollo y uso efectivo en una variedad de aplicaciones de detección de objetos. A lo largo del tiempo, han surgido varias implementaciones y versiones de YOLO, algunas de las cuales pueden haber utilizado tecnologías y bibliotecas diferentes, pero esta fue la configuración inicial y más comúnmente asociada con YOLO en sus primeras etapas.

Para este artículo, implementamos Yolov8 usando ultralíticos:

¿Qué es YOLOv8?

YOLOv8 es un nuevo modelo de visión por computadora de última generación creado por Ultralytics, los creadores de YOLOv5. El modelo YOLOv8 contiene soporte listo para usar para tareas de detección, clasificación y segmentación de objetos, accesible a través de un paquete Python y una interfaz de línea de comandos.

Preparando Ambiente y configuración

Las especificaciones mínimas necesarias para ejecutar YOLOv8 de Ultralytics pueden diferir según una variedad de variables, incluido el tamaño del modelo, el tamaño de la imagen de entrada y la cantidad de objetos a detectar. Sin embargo, la siguiente es una lista amplia de requisitos previos en los que quizás desee considerar:
Normalmente, se crea un entorno virtual para aislar proyectos, ya que pueden tener muchas dependencias específicas necesarias solo para ese proceso. Esta es una práctica recomendada para garantizar el uso de los componentes correctos y evitar que afecten a otros proyectos.

Preparación del entorno

Las especificaciones mínimas necesarias para ejecutar YOLOv8 de Ultralytics pueden diferir según una variedad de variables, incluido el tamaño del modelo, el tamaño de la imagen de entrada y la cantidad de objetos a detectar. Sin embargo, la siguiente es una lista amplia de requisitos previos en los que quizás desee considerar:

Hardware:

  • Procesador: Se recomienda un procesador moderno con al menos 4 núcleos.
  • RAM: Se recomienda al menos 8 GB de RAM.
  • GPU (opcional pero muy recomendable): se recomienda una GPU NVIDIA compatible con CUDA para la aceleración de inferencia por GPU. Las GPU más potentes proporcionarán un rendimiento más rápido.

Software:

  • Sistema operativo: YOLOv8 de Ultralytics es compatible con Windows, Linux y macOS; casi compatible con todos ellos.
  • Python: Python debe estar instalado; Se recomienda instalar Python en versiones superiores a la 3.7.

Para instalar Python: Download Python | Python.org Este articulo fue creado con la versión 3.12.2 de Python.

Entorno virtual (virtualenv):

Normalmente, se crea un entorno virtual para aislar proyectos, ya que pueden tener muchas dependencias específicas necesarias sólo para ese proceso. Esta es una práctica recomendada para garantizar que utiliza los componentes correctos y evitar que afecten a otros proyectos.
Crear la carpeta del proyecto y entrar en ella.

Copy to Clipboard

Creación de entorno virtual usando python.

Por lo general, el entorno virtual se crea en la carpeta donde está posicionada la consola, en este caso particular al movernos a la carpeta que creamos, myAIapp debe haberla creado allí.

Copy to Clipboard

Para saber qué se creó, se tuvo que haber creado una carpeta con el nombre del entorno que creaste. Puede usar el comando ls para verlo en Linux o Mac y en Windows usar dir.

.. para activar el entorno.

En Linux o Mac.

Navegue hasta el directorio donde se encuentra su entorno virtual. Por ejemplo, en este caso en la carpeta del proyecto:

Copy to Clipboard

En Windows.

Lo mismo en la carpeta del proyecto.

Copy to Clipboard

Nota: Si cambias el nombre del entorno virtual deberás cambiarlo para que no tenga errores.

Note: If you change the name of the virtual environment, you must change it so that it does not have errors.

Como puede ver, ahora estamos dentro del entorno virtual my_env, generalmente cuando este es el caso se muestra entre paréntesis en la consola.

Configuración del entorno

Con todo instalado procederemos a instalar las dependencias necesarias para este proyecto, en este caso solo instalaremos dos en el entorno virtual creado.

Instalación de OpenCV.

Copy to Clipboard

Instalación de OpenCV.

Copy to Clipboard

Comience a transmitir con la cámara web

Para este punto solo usaremos OpenCv, que se encarga de acceder a la cámara del ordenador.

Copy to Clipboard

Podemos guardar el archivo como camera.py. y ejecute el siguiente comando.
Asegúrese de estar en la ubicación raíz donde se encuentra el archivo; en este caso, estaría en myAIapp y el archivo en myAIapp/camera.py.

Copy to Clipboard

Ejecutar la detección de objetos con Yolov8.

Al inicio de este proceso, descargará automáticamente un modelo ya realizado con las categorías que se muestran a continuación. YOLO (“yolo- Weights/yolov8n.ptˮ)
Al descargar el modelo, se creará una carpeta en la raíz del proyecto llamada yolo-Weights, y allí se guardará.

Clases para este modelo:

Copy to Clipboard

Código para identificar objetos definidos en la clase usando la cámara web de la computadora:

Copy to Clipboard

Podemos guardar el archivo como object-cam.py. y ejecute el siguiente comando.
Asegúrese de estar en la ubicación raíz donde se encuentra el archivo; en este caso, estaría en myAIapp y el archivo en myAIapp/object-cam.py.

Copy to Clipboard

Ahora es funcional, el modelo puede detectar hasta 80 clases y puede usarse para innumerables casos de uso.

Referencia: