En este artículo, crearás tu primera Inteligencia Artificial de detección, tanto para imágenes como para vídeos. ¿Suena difícil? Con los modelos preentrenados que ofrecen empresas como Ultralytics YOLO, es muy sencillo, y nos puede servir de iniciación a la IA para detección. ¡Vamos a ello!
Índice de contenidos
YOLO es una serie de modelos desarrollada por Ultralyitics para la detección y segmentación de imágenes en tiempo real. Esta tecnología es Open Source y está publicada en GitHub. YOLO destaca por ser un detector de un solo paso que realiza predicciones en imágenes completas con una única pasada a través de la red neuronal, lo que lo hace extremadamente rápido y eficiente.
YOLO destaca frente a otros métodos de detección de objetos por su eficiencia en velocidad y precisión. Esto se debe a su enfoque basado en detección de un solo paso en lugar de sistemas de múltiples pasos que realizan propuestas de regiones, clasificación y refinamiento por separado.
Ventajas de YOLO:
Desventajas de YOLO:
YOLO divide una imagen de entrada en una cuadrícula de tamaño . Cada celda de la cuadrícula es responsable de predecir un número fijo de cajas delimitadoras (bounding boxes) y sus correspondientes puntuaciones de confianza. La puntuación refleja cuán seguro está el modelo de que la caja contiene un objeto y cuán precisa es la predicción.
Cada predicción consiste en:
YOLO utiliza una única red neuronal convolucional (CNN) que procesa la imagen completa en una sola pasada. Esta CNN tiene múltiples capas convolucionales seguidas de capas completamente conectadas que producen la salida final con todas las predicciones.
Pérdida (Loss Function): La función de pérdida combina varios términos:
La detección de objetos con IA tiene muchas aplicaciones y muy diversas, aquí tienes unos ejemplos:
Vehículos autónomos: Detección de peatones, señales de tráfico y otros vehículos en tiempo real.
Seguridad: Monitoreo de cámaras de vigilancia para identificar intrusos o comportamientos sospechosos.
Sanidad: Segmentación de imágenes médicas, detección de anomalías y asistencia en diagnóstico.
Retail: Monitoreo de inventarios y análisis de comportamiento de clientes.
En este ejemplo, usaremos YOLOv11 para detección de objetos en imágenes y videos. Por cada modelo, tenemos varias versiones, más grandes o más pequeñas. Te animo a probar diferentes modelos con las mismas imágenes y comparar las diferencias.
pip install torch torchvision opencv-python
pip install ultralytics
from ultralytics import YOLO
# Carga del modelo elegido
model = YOLO('yolov11n.pt')
import cv2
# Cargamos la imagen con imread
image = cv2.imread('ruta_a_imagen.jpg')
# Se la pasamos al modelo para obtener los resultados
results = model(image)
# Llamamos a la función show para ver los resultados
results.show()
# Cargamos el vídeo con VideoCapture
cap = cv2.VideoCapture('ruta_al_video.mp4')
# Bucle para analizar cada frame del vídeo
while True:
ret, frame = cap.read()
if not ret:
break
# Detección de cada frame del vídeo
results = model(frame)
# Mostramos los resultados
results.show()
# Para poder salir de la detección
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Si quieres probar con cosas más complejas, te recomendamos este vídeo. Aquí desarrollan una clase que te puede resultar útil para practicar, ObjectCounter. En el vídeo cuentan pasajeros en un autobús, pero esto lo podemos adaptar para contar lo que queramos. Probaremos a implementarla para contar cuántos coches y camiones pasan por una línea que nosotros establecemos.
cap = cv2.VideoCapture('vehicle-counting.mp4')
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(f"Dimensiones del video: {width}x{height}")
cap.release()
def RGB(event, x, y, flags, param):
if event == cv2.EVENT_MOUSEMOVE:
point = [x, y]
print(f"Mouse moved to: {point}")
cap = cv2.VideoCapture('vehicle-counting.mp4')
region_points = [(0, 255), (1019, 255)]
counter = ObjectCounter(
region=region_points,
model="yolo11s.pt",
classes=[2, 7],
show_in=True,
show_out=True,
line_width=2,
)
cv2.namedWindow('RGB')
cv2.setMouseCallback('RGB', RGB)
count = 0
while True:
ret, frame = cap.read()
if not ret:
break
count += 1
if count % 2 != 0:
continue
frame = cv2.resize(frame, (1020, 500))
frame = counter.count(frame)
cv2.imshow("RGB", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release()
cv2.destroyAllWindows()
Como ves, hay muchos modelos preentrenados que puedes usar para adentrarte en el mundo de la Inteligencia artificial. Estos modelos facilitan mucho el trabajo y nos permiten enfocarnos en tareas concretas sin tener que hacer el largo proceso de entrenamiento de modelos, que eso da para otro par de artículos. ¿Te interesaría aprender a crear y entrenar tus propios modelos? ¡Te leemos en comentarios!
Antes de comenzar con ReactJS, es esencial tener una base sólida en JavaScript. En este… Leer más
En este artículo aprenderás sobre como comenzó el diseño gráfico y sus primeros años a… Leer más
Desde hace unas semanas, los rumores eran cada vez más fuertes, y ahora ya es… Leer más
El entorno B2B (Business to Business) en España vive una etapa de profunda transformación impulsada… Leer más
Qué es el SEO y por qué es importante para tu empresa. En este artículo… Leer más
El 13 de marzo de 2025, Google anunció el despliegue de su primera actualización central… Leer más