Clasificación de Especies mediante Computer Vision

DrivenData Practice Project

La clasificación automática de imágenes es una de las áreas más importantes de la Inteligencia Artificial moderna. Gracias a los avances en Deep Learning y Computer Vision, hoy es posible desarrollar modelos capaces de identificar objetos, personas, animales o incluso enfermedades a partir de imágenes con un nivel de precisión comparable al de un experto humano.

En este proyecto se desarrolla una solución para la competición Conser-vision Practice Area: Image Classification, organizada por DrivenData, cuyo objetivo consiste en clasificar automáticamente las especies animales presentes en fotografías obtenidas mediante cámaras trampa instaladas en el Parque Nacional de Taï, en África Occidental. Este tipo de sistemas permite acelerar el análisis de millones de imágenes capturadas por investigadores y facilita la monitorización de la biodiversidad sin interferir en el comportamiento natural de los animales.

Articulos del proyecto

Descripción del problema

Las cámaras trampa son dispositivos que permanecen instalados durante largos periodos de tiempo y capturan imágenes cuando detectan movimiento o cambios de temperatura. Gracias a ellas, los investigadores pueden estudiar poblaciones de fauna salvaje sin necesidad de realizar observaciones directas.

Sin embargo, este tipo de dispositivos genera enormes cantidades de fotografías, muchas de ellas sin ningún animal presente. Revisar manualmente todas estas imágenes requiere miles de horas de trabajo, por lo que automatizar el proceso mediante modelos de aprendizaje profundo supone un importante avance para los proyectos de conservación.

El objetivo de esta competición consiste en desarrollar un modelo capaz de identificar correctamente la especie presente en cada fotografía, incluyendo aquellas imágenes donde no aparece ningún animal.

Objetivo del proyecto

Construir un modelo de clasificación de imágenes capaz de predecir la probabilidad de que cada fotografía pertenezca a una de las ocho categorías disponibles, logrando una buena capacidad de generalización sobre imágenes procedentes de localizaciones nunca vistas durante el entrenamiento.

Tipo de problema

Desde el punto de vista del Machine Learning, este proyecto corresponde a un problema de:

  • Computer Vision
  • Image Classification
  • Clasificación multiclase
  • Aprendizaje supervisado
  • Deep Learning

Cada imagen pertenece exclusivamente a una única categoría.

Dataset

El conjunto de datos está formado por miles de imágenes en formato JPG obtenidas mediante cámaras trampa distribuidas en diferentes ubicaciones del Parque Nacional de Taï. Cada registro dispone de la siguiente información:

VariableTipoDescripción
idStringIdentificador único de la imagen
filepathStringRuta del archivo de imagen
siteCategóricaIdentificador del lugar donde fue capturada la fotografía

Aunque únicamente existen tres variables tabulares, la información principal reside en el contenido visual de cada imagen.

Variable objetivo

El modelo debe clasificar cada fotografía en una de las siguientes ocho categorías:

ClaseDescripción
antelope_duikerAntílopes y duikers
birdAves
blankImagen sin animales
civet_genetCivetas y ginetas
hogJabalíes
leopardLeopardos
monkey_prosimianMonos y prosimios
rodentRoedores

Cada imagen contiene como máximo una especie, por lo que no se trata de un problema de clasificación multietiqueta, sino de clasificación multiclase.

Particularidades del conjunto de datos

Este dataset presenta varios desafíos que lo hacen especialmente interesante desde el punto de vista de la visión artificial.

Gran variabilidad en las condiciones de captura

Las imágenes han sido obtenidas durante diferentes momentos del día y bajo condiciones ambientales muy distintas. Es posible encontrar fotografías tomadas:

  • Durante el día.
  • Por la noche mediante infrarrojos.
  • Con lluvia.
  • Bajo diferentes niveles de iluminación.
  • En zonas con abundante vegetación.
  • Con diferentes modelos de cámara.

Estas diferencias aumentan considerablemente la dificultad del problema.

Variación en la posición de los animales

Los animales pueden aparecer:

  • Muy próximos a la cámara.
  • A gran distancia.
  • Parcialmente ocultos por la vegetación.
  • Mirando hacia la cámara.
  • De espaldas.
  • En movimiento.

El modelo debe ser capaz de reconocer la especie independientemente de estas variaciones.

Imágenes sin animales

Una parte importante del dataset corresponde a fotografías donde no aparece ningún animal.

Estas imágenes pertenecen a la categoría blank, que resulta especialmente importante ya que evita que el modelo detecte falsos positivos continuamente.

Generalización a nuevos entornos

Una de las características más interesantes de esta competición es la forma en la que se construyó el conjunto de entrenamiento y prueba.

Las imágenes del conjunto de prueba proceden de ubicaciones completamente distintas a las utilizadas durante el entrenamiento.

Esto significa que el modelo no puede aprender únicamente el fondo o las características del entorno, sino que debe aprender realmente las características visuales de cada especie.

Este enfoque obliga a construir modelos mucho más robustos y cercanos a un escenario real de producción.

Estrategia de validación

Debido a esta característica, realizar una división aleatoria tradicional del conjunto de entrenamiento puede producir una estimación demasiado optimista del rendimiento del modelo.

La estrategia más recomendable consiste en utilizar validación basada en grupos mediante la variable site, empleando técnicas como:

  • Group K-Fold
  • Group Shuffle Split

De esta forma se garantiza que una misma localización nunca aparezca simultáneamente en entrenamiento y validación.

Preprocesamiento de imágenes

Antes del entrenamiento es habitual aplicar diferentes transformaciones sobre las imágenes con el objetivo de mejorar la capacidad de generalización del modelo.

Entre las técnicas más utilizadas destacan:

  • Cambio de tamaño de las imágenes.
  • Normalización de los valores de los píxeles.
  • Rotaciones aleatorias.
  • Volteo horizontal.
  • Variaciones de brillo.
  • Variaciones de contraste.
  • Zoom aleatorio.
  • Desenfoque ligero.
  • Adición de ruido.

Estas técnicas reciben el nombre de Image Augmentation y permiten que el modelo aprenda representaciones mucho más robustas frente a cambios de iluminación, perspectiva o distancia.

Arquitecturas recomendadas

Este problema puede resolverse mediante diferentes arquitecturas de Deep Learning especializadas en visión por computador.

Entre las más utilizadas destacan:

  • ResNet50
  • ResNet101
  • EfficientNet
  • ConvNeXt
  • DenseNet
  • Vision Transformer (ViT)
  • Swin Transformer

Una estrategia muy recomendable consiste en utilizar Transfer Learning, aprovechando modelos previamente entrenados sobre ImageNet y ajustándolos posteriormente con las imágenes del concurso.

Función de pérdida

Durante el entrenamiento se emplea normalmente la función de pérdida Cross Entropy Loss, diseñada específicamente para problemas de clasificación multiclase.

Esta función penaliza especialmente aquellas predicciones incorrectas realizadas con una alta confianza.

Métrica de evaluación

La competición utiliza como métrica oficial el Multi-class Log Loss.

A diferencia de la precisión (Accuracy), esta métrica no solamente evalúa si la predicción es correcta, sino también la confianza con la que el modelo realiza dicha predicción.

Cuanto menor sea el valor obtenido, mejor será el rendimiento del modelo.

Esta métrica favorece modelos que produzcan probabilidades bien calibradas en lugar de realizar predicciones excesivamente confiadas.

Librerías utilizadas

El desarrollo de este proyecto puede realizarse utilizando herramientas ampliamente utilizadas en proyectos profesionales de Computer Vision, entre ellas:

  • Python
  • PyTorch
  • Torchvision
  • TIMM
  • Albumentations
  • OpenCV
  • Pillow
  • NumPy
  • Pandas
  • Matplotlib
  • Scikit-learn

Flujo de trabajo

El desarrollo del proyecto puede dividirse en las siguientes etapas:

  1. Exploración del conjunto de datos.
  2. Visualización de imágenes por categoría.
  3. Análisis del número de imágenes por clase.
  4. Análisis de las localizaciones disponibles.
  5. Construcción de una estrategia de validación por grupos.
  6. Implementación del pipeline de carga de imágenes.
  7. Aplicación de técnicas de Data Augmentation.
  8. Entrenamiento mediante Transfer Learning.
  9. Ajuste de hiperparámetros.
  10. Evaluación del modelo.
  11. Generación del archivo de envío para la competición.