Skip to content

Repository files navigation

Detección de Objetos en Tiempo Real con Imágenes Duales RGB-Térmicas

Universidad de San Andrés — Trabajo Final, Visión Artificial
Autores: Antonio Tepsich · Máximo Gubitosi

Detección de objetos multiespectral a partir de drones con cámaras RGB y térmicas — evaluada en escenarios de monitoreo de fauna silvestre y detección de personas en entornos urbanos.


Resumen

Este proyecto explora cómo combinar imágenes RGB e infrarrojas (térmicas) capturadas por drones puede mejorar significativamente la detección de objetos en condiciones difíciles: animales camuflados en entornos naturales, poca luz, niebla y oclusiones. Se implementaron y evaluaron múltiples arquitecturas de modelos y estrategias de fusión de imágenes sobre dos datasets aéreos distintos.

Mejor resultado: mAP50 = 96% en detección de fauna silvestre usando YOLOv11 con fusión HST y data augmentation.

Muestras térmicas aéreas


Contribuciones principales

  • Fusión en espacio de color HST: Técnica de preprocesamiento que fusiona imágenes RGB y térmicas en un formato estándar de 3 canales — Hue + Saturation del espacio RGB, reemplazando el canal Value por el canal Térmico. Permite entrada multimodal sin modificar ninguna arquitectura de modelo.
  • YOLOv5-RGBT: YOLOv5 modificado con capa de entrada de 4 canales (R + G + B + T) mediante Early Fusion, con estrategia de inicialización de pesos personalizada para el canal térmico.
  • Benchmark exhaustivo sobre 11 configuraciones de entrenamiento: 5 arquitecturas × múltiples formatos de entrada × con/sin data augmentation.

Enfoque técnico

Estrategias de fusión de imágenes

Estrategia Canales Descripción
RGB 3 Solo RGB estándar (baseline)
HST 3 Hue + Saturation (del RGB) + Térmica (reemplaza Value)
RGBT 4 RGB + Térmico apilados — requiere arquitectura modificada

La representación HST resultó la más efectiva: codifica información de color y firma térmica en una imagen estándar de 3 canales, compatible con cualquier modelo preentrenado sin modificaciones.

Arquitectura YOLOv5-RGBT

Se adaptó la primera capa convolucional de YOLOv5 para aceptar 4 canales (RGB + T). Los pesos del canal térmico se inicializan en cero, manteniendo los pesos RGB del modelo preentrenado.

Arquitectura simplificada YOLOv5-RGBT

Modelos evaluados

Modelo Notas
YOLOv4-Tiny Basado en Darknet; flexibilidad arquitectural limitada
YOLOv5s PyTorch — baseline RGB/HST
YOLOv5-RGBT Primera capa conv modificada para entrada RGBT de 4 canales (Early Fusion)
YOLOv11s Último modelo Ultralytics; mejor rendimiento general
Detectron2 Facebook AI Research — backbone RetinaNet R-101-FPN-3x

Datasets

AWIR — Aerial Wildlife Image Repository

Universidad de Mississippi · Cámaras estéreo DJI Zenmuse XT2 (calibradas y rectificadas)

  • 164 pares de imágenes duales (RGB + térmico)
  • 3 clases: Vaca · Ciervo · Caballo
  • División: 131 entrenamiento / 33 validación (80/20)
  • Data augmentation: Rotaciones (±15°) + ajuste de brillo (±10%) → conjunto triplicado a 393 imágenes
  • Desafío: animales camuflados en fondos naturales; tamaño reducido del dataset

Muestras del dataset AWIR — imágenes RGB y térmicas por clase

VisDrone DroneRGBT

Subconjunto del benchmark de drones VisDrone2019

  • 1.000 pares de imágenes RGB-térmico (reducido desde los 3.600 originales)
  • 1 clase: Persona
  • División: 800 entrenamiento / 200 validación (80/20)
  • Desafío: altura variable, condiciones nocturnas o de poca luz, niebla, oclusión densa

Variación de luz y altura de la cámara en el VisDrone dataset


Resultados

AWIR — Detección de fauna silvestre

Modelo Augmentation Formato mAP50 mAP50:95 Precisión
YOLOv5 No RGB 0.86 0.44 0.79
YOLOv5 RGB 0.88 0.44 0.91
YOLOv5 No HST 0.93 0.53 0.95
YOLOv5 HST 0.95 0.57 0.97
YOLOv5 No RGBT 0.85 0.42 0.81
YOLOv11 No RGB 0.88 0.45 0.89
YOLOv11 RGB 0.87 0.43 0.80
YOLOv11 No HST 0.91 0.55 0.94
YOLOv11 HST 0.96 0.53 0.98
YOLOv4-Tiny No RGB 0.79 0.43 0.78
Detectron2 No RGB 0.84 0.44

Curvas de entrenamiento — YOLOv11 HST con augmentation (AWIR)

Curvas de entrenamiento AWIR

Detecciones sobre el set de validación — YOLOv11 HST con augmentation (AWIR)

Predicciones AWIR YOLOv11 HST

Matriz de confusión — YOLOv11 HST con augmentation (AWIR)

Matriz de confusión AWIR

El modelo no presenta confusión entre clases de animales (vaca/ciervo/caballo). Los únicos errores son con el fondo: 6 falsos positivos en vacas y 1 en caballos.


VisDrone — Detección de personas

Modelo Formato mAP50 mAP50:95 Precisión
YOLOv11 RGB 0.45 0.18 0.52
YOLOv11 HST 0.64 0.26 0.62
YOLOv5 HST 0.64 0.24 0.63

Métricas de validación — YOLOv11 HST (VisDrone)

Métricas de validación VisDrone

Detecciones sobre el set de validación (VisDrone)

Predicciones adicionales VisDrone sobre validación

Matriz de confusión — YOLOv11 HST (VisDrone)

Matriz de confusión VisDrone HST

De las 4.027 personas en el set de validación:

RGB HST
Detecciones correctas 2.539 2.693
Falsos positivos 3.199 1.796

Conclusiones clave

  • HST mejoró el mAP50 en +42% relativo sobre RGB puro en VisDrone (0.45 → 0.64)
  • Augmentation + HST llevó el AWIR a mAP50 = 0.96, Precisión = 0.98
  • La fusión HST reduce consistentemente los falsos positivos al incorporar información térmica sin modificar la arquitectura
  • YOLOv5-RGBT obtuvo resultados aceptables (mAP50 = 0.85), pero se beneficiaría de más épocas y mejor inicialización del canal térmico
  • YOLOv11 mostró cero confusión entre clases de animales

Estructura del repositorio

├── create-Dataset-RGBT.ipynb        # Construcción del dataset RGBT de 4 canales
├── yolo5-RGBT.ipynb                 # Entrena YOLOv5 modificado (4 canales RGBT)
├── train-yolo-AWIR-VisDrone.ipynb   # Entrena modelos YOLO estándar (YOLOv5/YOLOv11)
├── yolov4_tiny.ipynb                # Entrena YOLOv4-Tiny
├── Detectron2.ipynb                 # Entrena Detectron2 (RetinaNet)
│
├── yolov5_RGBT/                     # Fork modificado de YOLOv5 (soporte 4 canales)
│
├── AWIR/
│   ├── utils/histogram_eq.py        # Ecualización de histograma
│   ├── utils/train_test_split.py    # División del dataset
│   └── Datasets/                    # Splits locales del dataset
│
├── VisDrone/
│   ├── utils/convert_to_YOLO.py     # Conversión VisDrone → formato YOLO
│   ├── utils/reduce_dataset.py      # Muestreo del subconjunto
│   └── Datasets/                    # Splits locales del dataset
│
└── extras/
    └── collage/                     # Imágenes de muestra térmicas del dron

Instalación y uso

Entrenar YOLOv5-RGBT (fusión temprana de 4 canales)

cd yolov5_RGBT
pip install -r requirements.txt
python train.py --data ../data.yaml --weights yolov5s.pt --img 640 --epochs 500 --batch-size 16

Entrenar YOLOv11 con Ultralytics

pip install ultralytics
yolo task=detect mode=train model=yolov11s.pt data=data.yaml epochs=500 imgsz=640 plots=True

El entrenamiento fue realizado en Google Colab (GPU). Ver train-yolo-AWIR-VisDrone.ipynb para el flujo completo incluyendo integración con Drive.


Pesos, datasets y resultados

Los pesos entrenados, datasets completos, matrices de confusión y curvas de entrenamiento están disponibles en Google Drive:

🔗 Google Drive — Resultados, Pesos y Datasets


Referencias

  1. Roszyk et al. (2022). Adopting the YOLOv4 Architecture for Low-Latency Multispectral Pedestrian Detection. Sensors. https://doi.org/10.3390/s22031082
  2. Duan et al. (2023). DroneRGBT: A Drone-Based RGB-Thermal Dataset for Object Detection and Tracking. https://github.com/VisDrone/DroneRGBT
  3. Brito et al. (2023). Aerial Wildlife Image Repository (AWIR): A Multispectral Dataset. Oxford University Press. https://doi.org/10.1093/database/baae070
  4. Redmon et al. (2016). You Only Look Once: Unified, Real-Time Object Detection. CVPR. https://doi.org/10.1109/CVPR.2016.91
  5. Wu et al. (2019). Detectron2: A PyTorch-based modular object detection library. Facebook AI. https://github.com/facebookresearch/detectron2

About

Detección de personas y animales a partir de imágenes de drones, RGB y térmicas.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages