/ Proyectos / Industria / Clasificación de daños en puentes

Clasificación de daños en puentes con CNN (VGG16) y transfer learning

Sin dataset propio, con datos abiertos, y con un primer experimento que salió mal, contado tal cual: así se construyó este clasificador de daños estructurales.

9 min de lectura Python · PyTorch · VGG16 · torchvision Datos: dacl1k y building-inspection-toolkit (datos abiertos) Aplicable a tesis y proyectos aplicados
Puente de concreto con daños estructurales analizado con un clasificador CNN VGG16

El punto de partida de este proyecto no fue un dataset, fue una pregunta sin datos propios que la respondieran. Se quería aplicar deep learning a un problema real de infraestructura, pero no había un solo conjunto de imágenes propio de puentes para empezar.

Insight "¿Qué haces cuando no tienes datos, pero necesitas un proyecto? Sales a buscar datos abiertos en tu área."

Eso fue exactamente lo que pasó: se propusieron varias direcciones posibles antes de decidir, y la clasificación de daños estructurales en puentes ganó porque existía un dataset abierto sólido y bien documentado, dacl1k, publicado junto con un paper que además comparte modelos y datos meta de otros conjuntos abiertos (CODEBRIM, MCDS, BCD, SDNET). El artículo de origen no solo dio los datos, dio también el vocabulario correcto para plantear el problema: grietas, eflorescencia, descascaramiento y barras expuestas, entre otras categorías de daño.


Mapa del casoContenido


Estructura de alto nivelDiagrama de la solución

Fuente Datos abiertos de inspección Organizar por clase (ImageFolder) VGG16 transfer learning (conv. congelada) Experimento 1 Conjunto amplio Experimento 2 Conjunto refinado Desempeño desigual (hallazgo documentado) Evaluación matriz + ROC + reporte Desempeño balanceado

Pasa el cursor sobre cada bloque para ver qué hace ese paso.

El experimento 1 no se borró ni se escondió: se dejó documentado como parte del pipeline, porque fue el que reveló qué ajuste hacía falta para llegar al experimento 2.


Cómo se construyóConstrucción de la solución

Condiciones del proyecto

RestricciónDato
Dataset propioNo existía; se usaron datos abiertos de inspección de puentes
Volumen de datosInsuficiente para entrenar una CNN completa desde cero
Calidad de etiquetado por claseDesigual: algunas categorías con pocas imágenes limpias
Objetivo del reporte finalNo solo el modelo, también que la contraparte entendiera cómo y por qué funciona
OpciónPor qué se descartó
Entrenar una CNN desde ceroEl volumen de datos disponible no alcanzaba para aprender características visuales generales sin sobreajustar
Usar todas las clases de daño disponibles en los datos abiertosVarias clases tenían muy pocas imágenes bien etiquetadas, lo que diluía la señal del resto
VGG16 preentrenado con capas convolucionales congeladas + conjunto de clases refinadoAprovecha el conocimiento visual general de ImageNet y concentra el aprendizaje en las clases con señal suficiente

Pasos

1

Búsqueda de datos abiertos

Agente: propuso empezar directamente con un dataset genérico de imágenes sin verificar su pertinencia al problema.
Criterio aplicado: evaluar varias direcciones posibles de proyecto según qué datos abiertos existían realmente, y elegir daños en puentes por tener un dataset abierto sólido, dacl1k, con paper y modelos de referencia.

2

Elección de VGG16 con capas congeladas

Agente: propuso reentrenar toda la red VGG16 desde los pesos de ImageNet.
Criterio aplicado: congelar la parte convolucional y entrenar solo el clasificador, porque el volumen de datos no alcanzaba para ajustar toda la red sin sobreajustar.

3

Primer experimento con el conjunto amplio de clases

Agente: reportó únicamente el accuracy general del primer experimento.
Criterio aplicado: revisar la matriz de confusión y el reporte de clasificación por clase, que fue lo que reveló el desempeño desigual y motivó el ajuste siguiente.

4

Refinamiento del conjunto de clases

Agente: sugirió ajustar hiperparámetros del mismo conjunto de clases para intentar mejorar el resultado.
Criterio aplicado: en vez de solo ajustar hiperparámetros, reducir el conjunto a las cuatro clases con señal suficiente, lo que mejoró el desempeño de forma pareja entre categorías.

Proceso de iteración

Insight "Un resultado malo no significa que fallaste, significa que encontraste algo que hay que entender."

Ajuste documentado, no forzado

En el primer experimento, la clase con más imágenes limpias (grietas) llegó a 100% de aciertos, pero otras clases se confundían sistemáticamente entre sí, con precisión de 0.00 en varias categorías. Esto coincide, de hecho, con lo que el propio paper de origen del dataset reporta: el desbalance entre datos abiertos y datos reales de inspección es un problema conocido en este dominio, no una falla exclusiva de este proyecto. En vez de forzar una lectura más favorable del primer experimento, se documentó el hallazgo y se refinó el conjunto de clases para el segundo experimento, que sí mostró un desempeño parejo, con F1-score entre 0.67 y 0.89 en las cuatro clases finales.

Descargables

Los datos usados son de acceso público (dacl1k y building-inspection-toolkit). No se expone ningún dato que identifique a la persona ni a la institución detrás del proyecto original.


CierreLecciones importantes

Este proyecto también terminó en tesis y presentación, y vale la pena decir cómo se llegó ahí.

Insight "Ayudar no es hacerlo todo por ti, es construirlo contigo."

El acompañamiento en este tipo de proyectos es colaborativo, no una entrega de llave en mano. La persona que lidera el proyecto conoce su área a fondo, y ese conocimiento es tan necesario como la parte técnica. Cuando ni siquiera existían los datos, la búsqueda de datos abiertos también fue un trabajo conjunto, y al final, la capacitación para entender qué se hizo y por qué es tan parte de la entrega como el modelo mismo.

Si quieres ver la fuente original de los datos, este es el paper que sostiene todo el proyecto: dacl1k: Real-World Bridge Damage Dataset Putting Open-Source Data to the Test.

Termina ya tu proyecto

¿No tienes datos propios pero necesitas un proyecto de deep learning? Yo te ayudo a encontrarlos y a construirlo contigo.

El 92% de los profesionales de datos desbloquea sus proyectos al ver ejemplos completos resueltos.

53
proyectos
8
sectores
100%
aplicado
Escríbeme, te ayudo

Sin registro. Acceso inmediato