/ 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.
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
- Diagrama de la solución. De datos abiertos a un clasificador VGG16 refinado en dos experimentos
- Construcción de la solución. Cómo un resultado pobre se convirtió en el ajuste que mejoró el modelo
- Condiciones del proyecto. Restricciones reales y opciones descartadas antes de construir
- Pasos. Qué se dejó al agente y qué criterio se aplicó en cada uno
- Proceso de iteración. Por qué un resultado malo no es un fracaso
- Descargables. Notebook, diagrama y repositorio del proyecto
- Lecciones importantes. La lección concreta que deja este caso
Estructura de alto nivelDiagrama de la solución
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ón | Dato |
|---|---|
| Dataset propio | No existía; se usaron datos abiertos de inspección de puentes |
| Volumen de datos | Insuficiente para entrenar una CNN completa desde cero |
| Calidad de etiquetado por clase | Desigual: algunas categorías con pocas imágenes limpias |
| Objetivo del reporte final | No solo el modelo, también que la contraparte entendiera cómo y por qué funciona |
| Opción | Por qué se descartó |
|---|---|
| Entrenar una CNN desde cero | El 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 abiertos | Varias 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 refinado | Aprovecha el conocimiento visual general de ImageNet y concentra el aprendizaje en las clases con señal suficiente |
Pasos
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.
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.
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.
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.
Sin registro. Acceso inmediato