Tecnología, sostenibilidad e innovación.

Detección y Segmentación de Objetos y personas con YOLOv8

Contexto

El otro día estaba en un evento con una amiga y decidimos tomarnos una foto. Mientras revisaba la imagen, se me ocurrió algo interesante: ¿qué tal si aplico visión por computador para analizar esta foto?

Como pueden ver, en la foto tenemos a 2 personas y varios objetos en el fondo. Tenemos la particularidad que el fondo parece desenfocado lo que hace difícil visualizar ciertos objetos.

¿Por qué es importante la detección de objetos?

Detectar objetos permite resolver problemas que enfrentan muchas industrias, desde la identificación de productos en inventarios hasta la mejora en la seguridad con cámaras inteligentes.

Caso de uso de visión por computador en industria con YOLOv8.

El campo que se encarga de esto se llama Visión por Computador o Computer Vision. En este caso, quise ver cómo podemos detectar personas y objetos de una manera sencilla usando tecnología disponible de código abierto.

¿Qué necesitamos para hacer visión por computador?

Para este proyecto utilicé YOLOv8, una herramienta potente de visión por computador, y OpenCV para manejar las imágenes. Ambas son herramientas de código abierto que cualquier persona puede usar

Proceso

Paso 1: Instalación de librerías necesarias

Antes de escribir el código, necesitas instalar algunas librerías esenciales. Asegúrate de tener Python 3.x instalado en tu sistema.

  1. Abre tu terminal o línea de comandos (CMD).
  2. Instala las siguientes librerías ejecutando los siguientes comandos:
pip install ultralytics
pip install opencv-python
pip install opencv-python-headless

ultralytics es la librería que incluye el soporte para los modelos YOLOv8.

opencv-python es necesaria para cargar, procesar y guardar imágenes.

Paso 2: Cargar el modelo YOLOv8 y el código de segmentación

Una vez instaladas las librerías, ahora puedes escribir el código para cargar el modelo YOLOv8 y segmentar objetos en una imagen.

from ultralytics import YOLO
import cv2

# Cargar el modelo YOLOv8 de segmentación
model = YOLO('yolov8x-seg.pt')  # Puedes usar otros modelos como 'yolov8s-seg.pt', etc.

# Cargar la imagen (especifica la ruta de tu imagen)
image_path = 'ruta/imagen.jpeg'  # Ruta de la imagen
image = cv2.imread(image_path)

# Verificar si la imagen se cargó correctamente
if image is None:
    print(f"Error al cargar la imagen desde la ruta: {image_path}")
else:
    # Realizar la segmentación de objetos con YOLOv8
    results = model.predict(source=image, save=True)

    # Guardar la imagen con segmentación
    output_path = "output_segmentation.jpg"
    cv2.imwrite(output_path, image)

    print(f"Imagen con segmentación guardada en: {output_path}")

Resultados

Luego de la segmentación de objetos tenemos:

Aplicaciones por industria

El resultado es un modelo que puede detectar personas, objetos o incluso emociones de manera automatizada. Esto tiene aplicaciones directas en la seguridad, la automatización de procesos industriales y la optimización de inventarios. Por ejemplo, en el retail, esta tecnología podría usarse para detectar automáticamente productos en los estantes y evitar faltantes de stock.

Conclusiones

La visión por computador es una tendencia creciente en muchas industrias. Las empresas están integrando estas tecnologías para mejorar la eficiencia, desde fábricas que monitorean líneas de producción hasta retailers que buscan mejorar la experiencia del cliente. Si te interesa aplicar estas tecnologías, ahora es el momento de explorar su potencial.

Si tienes ideas de cómo mejorar este proyecto, o si tienes un problema similar en tu empresa que te gustaría resolver con visión por computador, no dudes en contactarme. ¡Me encantaría ayudarte a explorar nuevas soluciones tecnológicas!