Mejores prácticas: Entrenar una red neural de aprendizaje profundo

Introducción

El determinante más importante de la eficacia de un sistema de aprendizaje profundo es el conjunto de datos que los desarrolladores usan para capacitarlo. Un conjunto de datos de capacitación de alta calidad mejora la precisión de inferencia y la velocidad a la vez que reduce los recursos del sistema y acelera el proceso de aprendizaje.

If developers need to run deep learning inference on a system with highly limited resources, they can optimize the trained neural network accordingly and eliminate the need for a host system. Much smaller devices like the upcoming FLIR® Firefly® camera can run inference based on your deployed neural network on its integrated Movidius™ Myriad™ 2 processing unit.

This article describes how to develop a dataset for classifying and sorting images into categories, which is the best starting point for users new to deep learning.

 

¿Cuántos datos para entrenamiento necesito?

 La cantidad de datos para formación necesaria depende de los siguientes factores:

  1. Número de clases de datos a distinguir, por ejemplo “manzana”, “hoja”, “rama”.
  2. La similitud de las clases a distinguir, por ejemplo “manzana” vs. “pera” es más complejo       que “manzana” vs. “hoja”.
  3. Variación intencionada dentro de cada clase, por ejemplo con manzanas de distintos colores y formas, para más robustez contra variaciones en una situación de aplicación en la vida real.
  4. La variación no deseada en los datos de la imagen, como por ejemplo el ruido, las diferencias en el balance de blancos, la luminosidad, el contraste, el tamaño del objeto, el ángulo de visión, etc.

 

Algunos centenas de imágenes pueden ser suficientes para proporcionar resultados aceptables, mientras que aplicaciones más complejas necesitarían más de un millón de imágenes. La mejor manera de determinar las necesidades de sus datos de capacitación es recopilar datos y poner a prueba su modelo con ellos. Encontrar problemas como el que está usted resolviendo también puede suponer un buen punto de partida para estimar el tamaño del conjunto de datos.

Su red en algún momento alcanzará un punto en el que más datos no supongan una mejora en la precisión del modelo. Es poco probable que su modelo alcance el 100% de precisión, por muy grande que sea su conjunto de datos de entrenamiento. Comprender el equilibrio entre la velocidad y la precisión requerida para su aplicación específica le ayudará a determinar si se necesitan más datos para entrenamiento.

 

 

Prueba con datos de validación

Su conjunto de datos de imagen debe ser lo suficientemente grande como para proporcionar datos de validación, que se usarán para evaluar la precisión y velocidad de la red tal y como está entrenada. Dichas imágenes deben seleccionarse aleatoriamente del conjunto de datos para asegurar que son lo más representativas posibles.

En el caso de conjuntos de datos reducidos, o si se dispone del suficiente tiempo y potencia computacional, el rendimiento de reconocimiento puede también determinarse con una validación múltiple. Aquí, un conjunto de datos se divide entre, por ejemplo, cinco segmentos aleatorios. Por tanto, una red neural se capacita con cuatro segmentos y se valida con el segmento restante. Esta capacitación y validación se repiten en las cinco combinaciones de segmentos de capacitación y validación. El valor medio de las tasas de reconocimiento indica el rendimiento que cabe esperar. La desviación típica indica cómo de representativo es el conjunto de datos.

 

Mejorar su conjunto de datos

El aprendizaje profundo es un proceso repetitivo. Las redes elaboran predicciones acerca de los datos de capacitación, que se usan para mejorar la red. Este proceso se repite hasta que la red alcanza el nivel de precisión deseado. Cuanto más grande es el conjunto de datos, más varianza puede darse en la aplicación de destino que se presenta en el algoritmo de aprendizaje profundo. Los conjuntos de datos muy reducidos no proporcionan la suficiente información para que el algoritmo funcione correctamente. Como resultado, es posible que vea buen rendimiento de reconocimiento en los datos de capacitación, pero una tasa de reconocimiento cerca de la probabilidad de suposición en datos de validación. Una fase de adquisición de datos de capacitación bien planificada que resulte en imágenes etiquetadas con un mínimo de variación innecesaria, reduce la cantidad de datos de capacitación requeridos, acelera la capacitación y mejora la precisión de inferencia y la velocidad.

 

Minimice diferencias entre imágenes de capacitación e imágenes de producción

Tomar imágenes con las mismas cámaras, óptica e iluminación ya que el futuro sistema de producción elimina la necesidad de compensar diferencias en geometría, iluminación y respuesta espectral entre datos de imágenes de capacitación y reales. Las cámaras de alta calidad con sensores Pregius®, interfaces GenICam®, y la valiosa funcionalidad GPIO hacen más fácil automatizar la adquisición de buenos conjuntos de datos de capacitación.

 

Uso de entornos controlados para reducir los conjuntos de datos

 Un buen conjunto de datos de capacitación incluye ejemplos de variación allí donde es necesario y minimiza la varianza allí donde se puede eliminar por el diseño del sistema. Por ejemplo, analizar manzanas mientras aún están en el árbol es mucho más complejo que analizar estas mismas manzanas en una cinta transportadora. El sistema de exterior necesita capacitación para reconocer manzanas a distinta orientación, distancia, y ángulos, y tener en cuenta los cambios de luz y de condiciones medioambientales. Para que un modelo cumpla de forma sistemática necesita un conjunto de datos muy grande.

Hacer fotografías de manzanas en un entorno controlado permite a los diseñadores del sistema eliminar muchas fuentes de varianza y conseguir niveles altos de precisión usando un conjunto de datos mucho más reducido. Esto, en cambio, reduce el tamaño de la red y le permite funcionar en un hardware compacto, autónomo como el FLIR Firefly, que funciona con Intel Movidius Myriad 2.

desc    

Fig. 1. Las imágenes tomadas en condiciones controladas (A) tienen menos varianza que las imágenes tomadas en condiciones no controladas (B).

 

Mejore los resultados con datos adecuadamente etiquetados

Las etiquetas se usan para probar predicciones hechas durante la capacitación. Las etiquetas deben representar las imágenes a las que pertenecen; las etiquetas imprecisas o "ruidosas" son un problema común en conjuntos de datos reunidos mediante la búsqueda de imágenes en internet. Adjuntar etiquetas a los nombres de archivo de las imágenes es una buena opción ya que reduce la confusión potencial a la vez que gestiona y usa los datos de capacitación.

       

Fig. 2. Ejemplos de imágenes bien (A) y mal seleccionadas (B) para la categoría "manzana".

 

Etiquetar datos para la segmentación es un proceso mucho más largo y complejo que clasificarlos.

Fig.   Etiquetar datos para la segmentación es un proceso mucho más complejo que para clasificarlos.

 

Mejorar la calidad y cantidad de un conjunto de datos ya existente

Aumentar para expandir el conjunto de datos

Algunos sistemas, como los de inspección frutal, analizan objetos cuya orientación no está bajo control. Para estos sistemas, el aumento de datos es una forma fácil de expandir rápidamente el conjunto de datos usando transformaciones afines y proyectivas. La transformación de color también puede exponer la red a una variedad de imágenes más amplia. Los desarrolladores deben recortar imágenes transformadas para mantener las dimensiones de entrada que la red neural requiere.

Fig. 5. Ejemplos de transformaciones que incluyen rotación, escala y recorte.

Normalización para precisión mejorada

La normalización de datos hace la red neural de capacitación más eficaz.  Las imágenes normalizadas parecen artificiales para los humanos, pero son más efectivas para entrenar redes neurales precisas. Los desarrolladores pueden normalizar los píxeles y los valores numéricos de la misma forma.

          

Fig. 6. Imagen original (A) vs. imagen usando el común método Y = (x - x.mean()) / x.std() de normalización

 

Datos sintéticos

Para situaciones que requieran grandes cantidades de datos de capacitación que no puedan crearse usando un aumento del conjunto de datos, los datos sintéticos suponen una potente herramienta. Los datos sintéticos son imágenes generadas artificialmente que pueden usarse para generar rápidamente grandes cantidades de datos pre-etiquetados y perfectamente segmentados. Sin embargo, los datos sintéticos aislados no bastan para capacitar una red que proporcione resultados precisos y reales.  Resaltar el realismo de los datos sintéticos requiere de post-procesamiento.

 

Conclusión

Un conjunto de datos de capacitación de alta calidad mejora la precisión de inferencia y la velocidad a la vez que reduce los recursos del sistema y acelera el proceso de aprendizaje. Hay métodos para aumentar tanto la cantidad como la calidad del conjunto de datos. La cámara FLIR Firefly es una gran opción para diseñadores que quieran minimizar el tamaño del sistema, conseguir inferencia de alta precisión e implementar su red neural.

Para más información, visite www.flir.com/firefly.

 

Artículos relacionados