IA y machine learning
«¿Cuántas imágenes necesitamos?» es la primera pregunta en casi todos los proyectos de IA. La respuesta honesta es: depende. Suena a excusa, pero es el comienzo de un plan. Porque qué imágenes recopila importa más que su número.
Por qué no hay una cifra fija
Un alumno de autoescuela que practica treinta horas en un aparcamiento vacío no está después preparado para el centro de la ciudad. A un modelo de IA le pasa lo mismo: solo aprende lo que ha visto. Cuántas imágenes necesita depende sobre todo de cinco factores:
- La tarea: la clasificación evalúa la imagen completa, la detección encuentra objetos con un recuadro y la segmentación asigna cada píxel. Cuanto más fina es la tarea, más trabajo supone etiquetar cada imagen.
- La distancia entre las clases: una pieza que falta es más fácil de aprender que un arañazo fino en una superficie texturizada.
- La dispersión: variantes, proveedores, turnos, suciedad y posición de las piezas; todo lo que cambia en funcionamiento debe aparecer en los datos.
- El punto de partida: un modelo preentrenado con grandes conjuntos de datos públicos necesita bastantes menos imágenes propias que uno que empieza desde cero.
- La exigencia: cada mejora adicional cuesta más datos que la anterior. Un estudio de Google Research comprobó que, en las tareas con imágenes, el rendimiento solo crece de forma logarítmica con la cantidad de datos de entrenamiento. Por tanto, cada duplicación aporta menos que la anterior.
Planificar en celdas en lugar de en totales
«5.000 imágenes» suena a mucho. Si 4.800 de ellas muestran la misma variante del turno de mañana, sirven de poco. Por eso, planifique en una tabla: variantes y condiciones en las filas, clases en las columnas y un número mínimo por celda. Un breve script comprueba si los datos recopilados cumplen el plan:
import pandas as pd
# Una fila por imagen etiquetada: archivo, variante, turno, clase
daten = pd.read_csv("bilder.csv")
tabelle = pd.crosstab([daten["variante"], daten["schicht"]], daten["klasse"])
# Hacer visibles las combinaciones que faltan por completo
zeilen = pd.MultiIndex.from_product(
[daten["variante"].unique(), daten["schicht"].unique()],
names=["variante", "schicht"])
tabelle = tabelle.reindex(zeilen, fill_value=0)
MINDESTENS = 50 # su mínimo por celda, según la tarea y la curva de aprendizaje
zellen = tabelle.stack()
for (variante, schicht, klasse), anzahl in zellen[zellen < MINDESTENS].items():
print(f"Zu wenig: {variante} / {schicht} / {klasse}: {anzahl} Bilder")
El valor 50 es solo un marcador de posición. Su número mínimo se deriva de la tarea y de la curva de aprendizaje. Las filas con «Zu wenig» (demasiado pocas) son su lista de la compra para la siguiente ronda de tomas. Las más peligrosas son las combinaciones que faltan por completo. Por eso, el script las rellena con cero en lugar de omitirlas sin avisar.
La curva de aprendizaje muestra si más datos ayudan
No tiene que adivinar si merece la pena seguir recopilando. Entrene con una cuarta parte, con la mitad y con todas las imágenes disponibles, y mida cada vez con el mismo conjunto de prueba sin modificar. Si la curva sigue subiendo claramente, más imágenes ayudan. Si es plana, más imágenes del mismo tipo apenas aportan nada. Entonces faltan otras imágenes, mejores etiquetas u otro método.
Las buenas etiquetas valen más que muchas imágenes
Un modelo no puede ser mejor que sus etiquetas. Lo extendidos que están los errores en ellas lo muestra un estudio de 2021: en los conjuntos de prueba de diez conjuntos de datos de uso frecuente, por término medio al menos el 3,3 % de las etiquetas eran erróneas, y en el conjunto de validación de ImageNet, al menos el 6 %. Y eso con datos públicos cuidadosamente mantenidos. Tres medidas ayudan:
- Una guía de etiquetado con ejemplos de imágenes, sobre todo para los casos límite: ¿a partir de cuándo un arañazo es un defecto?
- Una muestra se etiqueta dos veces, por dos personas de forma independiente. Donde no coinciden, deciden los expertos de aseguramiento de la calidad.
- Las correcciones se incorporan a una versión nueva y versionada del conjunto de datos.
El aumento de datos no sustituye a las imágenes reales
Girar, reflejar, aclarar y oscurecer: estas variaciones artificiales ayudan cuando esas fluctuaciones también se dan en la línea. Pero no generan un nuevo tipo de defecto ni la superficie de un nuevo proveedor. También las imágenes de defectos sintéticas solo sirven si al final el modelo se comprueba con imágenes reales.
Errores típicos
- Fijar como objetivo un número total en lugar de un número mínimo por celda.
- Recopilar imágenes donde resulta cómodo: en una línea, en un turno, de un proveedor.
- Contar las ráfagas de la misma pieza como muchas imágenes. Apenas aportan información nueva.
- Volver a componer el conjunto de prueba en cada ejecución. Entonces los resultados ya no son comparables.
- Etiquetar sin guía, cada persona según su propio criterio.
- Generar variaciones que nunca se dan en la realidad, como piezas boca abajo.
- No versionar el estado de los datos. Más tarde nadie sabe con qué imágenes aprendió el modelo que está en funcionamiento.
Cómo le ayudamos
- Estudio de viabilidad de procesamiento de imágenes: comprobamos con sus imágenes de ejemplo si un método que aprende es viable y le decimos qué imágenes faltan todavía, como paquete de inicio a precio fijo.
- Plan de datos y entrenamiento: plan de tomas, guía de etiquetado, entrenamiento, validación e integración en su software en C#, C++ o Python. Más sobre nuestro trabajo con inteligencia artificial.
- Su proyecto: Solicite su proyecto o concierte una primera conversación
Fuentes: Northcutt, Athalye, Mueller, «Pervasive Label Errors in Test Sets Destabilize Machine Learning Benchmarks» (NeurIPS 2021); Sun, Shrivastava, Singh, Gupta, «Revisiting Unreasonable Effectiveness of Data in Deep Learning Era» (ICCV 2017).
