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:
| Variable | Tipo | Descripción |
|---|---|---|
| id | String | Identificador único de la imagen |
| filepath | String | Ruta del archivo de imagen |
| site | Categórica | Identificador 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:
| Clase | Descripción |
|---|---|
| antelope_duiker | Antílopes y duikers |
| bird | Aves |
| blank | Imagen sin animales |
| civet_genet | Civetas y ginetas |
| hog | Jabalíes |
| leopard | Leopardos |
| monkey_prosimian | Monos y prosimios |
| rodent | Roedores |
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:
- Exploración del conjunto de datos.
- Visualización de imágenes por categoría.
- Análisis del número de imágenes por clase.
- Análisis de las localizaciones disponibles.
- Construcción de una estrategia de validación por grupos.
- Implementación del pipeline de carga de imágenes.
- Aplicación de técnicas de Data Augmentation.
- Entrenamiento mediante Transfer Learning.
- Ajuste de hiperparámetros.
- Evaluación del modelo.
- Generación del archivo de envío para la competición.
