Sistema de Detección de Objetos en Vistas Aéreas de Drones con YOLOv11

Descripción del Sistema

Este sistema está diseñado para operar en escenarios de drones aéreos, realizando la detección y reconocimiento en tiempo real de múltiples objetivos terrestres. Es aplicable en áreas como supervisión urbana, control de tráfico y gestión de emergencias. Incorpora el modelo YOLOv11 para mantener una precisión elevada incluso bajo ángulos de visión inclinados desde drones.

Categorías de Objetos y Métricas de Confianza

  • Peatón: confianza 0.369 - Detección de personas para monitoreo de multitudes.
  • Aglomeración: confianza 0.293 - Identiifcación de zonas con alta densidad de personas.
  • Ciclista: confianza 0.094 - Reconocimiento de bicicletas para gestión de movilidad.
  • Automóvil: confianza 0.765 - Alta fiabilidad en la detección de coches para análisis de flujo vehicular.
  • Furgón: confianza 0.401 - Detección de vehículos de carga medianos.
  • Camión: confianza 0.317 - Identificación de vehículos de gran porte en áreas restringidas.
  • Triciclo: confianza 0.235 - Detección de triciclos convencionales.
  • Triciclo con techo: confianza 0.125 - Reconocimiento de variantes específicas de triciclos.
  • Autobús: confianza 0.511 - Detección de transporte público para vigilancia de carriles exclusivos.
  • Motocicleta: confianza 0.380 - Identificación de vehículos de dos ruedas para detección de infracciones.

Características Principales

  1. Optimización para perspectiva vertical: El modelo se adapta a vistas cenitales de drones, mitigando problemas de distorsión de objetos.
  2. Detección multi-escala: Capacidad para identificar tanto objetos grandes como pequeños mediante escalado adaptativo.
  3. Procesamiento en tiempo real: Alcanza 30 FPS en resolución 1080p, permitiendo análisis durante el vuelo del dron.
  4. Tolerancia a interferencias: Robustez frente a variaciones de iluminación y oclusiones parciales.

Ajuste de Umbrales de Confianza

El sistema ofrece dos umbrales configurables:

  • Umbral base de detección: 0.6 - Define el límite para aceptar detecciones como válidas.
  • Umbral de alta confianza: 0.8 - Usado para confirmar objetivos en aplicaciones críticas con baja tolerancia a errores.

Los umbrales pueden modificarse según los requisitos de precisión y sensibilidad de cada uso.

Aplicaciones Comunes

  • Ciudades inteligentes: Estadística de tráfico en tiempo real, detección automática de infracciones.
  • Respuesta a emergencias: Mapeo de distrbiución de personas en zonas afectadas, coordinación de recursos de rescate.
  • Seguridad en eventos masivos: Monitoreo de densidad de multitudes, alertas tempranas de aglomeraciones anómalas.

Script de Inferencia para Video con YOLOv11

A continuación, un ejemplo en Python para procesamiento de video usando Ultralytics YOLOv11, asumiendo un modelo entrenado custom\_model.pt:


from ultralytics import YOLO
import cv2 as cv

# Carga del modelo entrenado
object_detector = YOLO('custom_model.mp')

# Configuración de rutas de video
input_source = 'input_footage.mp4'
output_destination = 'processed_footage.mp4'

# Inicialización de la captura de video
video_stream = cv.VideoCapture(input_source)

# Extracción de parámetros del video original
stream_fps = video_stream.get(cv.CAP_PROP_FPS)
resolution_width = int(video_stream.get(cv.CAP_PROP_FRAME_WIDTH))
resolution_height = int(video_stream.get(cv.CAP_PROP_FRAME_HEIGHT))

# Preparación del escritor de video
encoding_codec = cv.VideoWriter_fourcc(*'mp4v')
output_stream = cv.VideoWriter(output_destination, encoding_codec, stream_fps, (resolution_width, resolution_height))

# Iteración sobre los cuadros del video
while video_stream.isOpened():
    frame_available, current_frame = video_stream.read()
    if not frame_available:
        break

    # Ejecución de la inferencia
    detection_results = object_detector(current_frame)

    # Visualización de los resultados
    result_frame = detection_results[0].plot()

    # Escritura del cuadro procesado
    output_stream.write(result_frame)

    # Visualización en vivo (opcional)
    cv.imshow('YOLOv11 Detection', result_frame)
    if cv.waitKey(1) & 0xFF == ord('q'):
        break

# Liberación de recursos
video_stream.release()
output_stream.release()
cv.destroyAllWindows()

print(f"Procesamiento finalizado. Video guardado en: {output_destination}")

Instrucciones de Ejecución

  1. Instale las depandencias necesarias con pip install ultralytics opencv-python.
  2. Coloque el modelo entrenado custom\_model.pt en el directorio del script o ajuste la ruta en el código.
  3. Modifique la variable input\_source para apuntar a su archivo de video.
  4. Ejecute el script; los resultados se almacenarán en output\_destination.

Parámetros de Inferencia Adicionales

Se pueden personalizar los parámetros durante la inferencia:


detection_results = object_detector(current_frame, conf=0.5, iou=0.5, imgsz=640)  # Ejemplo

Parámetros clave:

  • conf: Umbral de confianza para filtrar detecciones.
  • iou: Umbral de intersección sobre unión para supresión de no máximos.
  • imgsz: Dimensión de la imagen de entrada.
  • device: Dispositivo de cómputo ('cpu', 'cuda:0', etc.).
  • half: Activar precisión media para mayor velocidad.

Para usar una cámara en tiempo real, establezca input_source = 0.

Nota: YOLOv11 es una versión hipotética; en la práctica, Ultralytics ofrece YOLOv8 como versión estable. Ajuste el código según la versión disponible.

Etiquetas: YOLOv11 Ultralytics Python opencv drone-vision

Publicado el 7-1 19:23