software redes reconocimiento neuronales imagenes clasificador caracteres machine-learning computer-vision neural-network conv-neural-network training-data

machine-learning - clasificador - reconocimiento de imagenes redes neuronales python



Alteración de imágenes entrenadas para entrenar redes neuronales (4)

Actualmente estoy tratando de hacer un programa para diferenciar las naranjas podridas y las naranjas comestibles únicamente en función de su apariencia externa. Para hacer esto, planeo usar una Red Neural Convolucional para entrenar con naranjas podridas y naranjas normales. Después de algunas búsquedas, solo pude encontrar una base de datos de aprox. 150 naranjas podridas y 150 naranjas normales sobre fondo negro ( http://www.cofilab.com/downloads/ ). Obviamente, un modelo de aprendizaje automático necesitará al menos unos miles de naranjas para alcanzar una precisión superior al 90 por ciento. Sin embargo, ¿puedo alterar estas 150 naranjas de alguna manera para producir más fotos de naranjas? Por alterar, me refiero a agregar diferentes tonos de naranja en los cítricos para hacer una "naranja diferente". ¿Sería este un método efectivo para entrenar una red neuronal?


De hecho, es una buena manera de aumentar su conjunto de datos. Puede, por ejemplo, aplicar desenfoque gaussiano a las imágenes. Se volverán borrosos, pero diferentes del original. Puedes invertir las imágenes también. O, en el último caso, busque nuevas imágenes y aplique las técnicas citadas.


El aumento de datos es lo que estás buscando. En tu caso puedes hacer cosas diferentes:

  1. Aplica filtros para obtener una imagen ligeramente diferente, como se ha dicho, puedes usar desenfoque gaussiano.

  2. Corta la naranja y ponla en diferentes fondos.

  3. Escala las naranjas con diferentes factores de escala.

  4. Gira las imágenes.

  5. crear naranjas podridas sintéticas.

  6. Mezcle todas las combinaciones diferentes de las mencionadas anteriormente. Con este tipo de aumento, puedes crear fácilmente miles de naranjas diferentes.

Hice algo así con un conjunto de datos de 12,000 imágenes y puedo crear 630,000 muestras


El aumento de datos es realmente una buena manera de impulsar el conjunto de entrenamiento, pero aún no es suficiente para entrenar una red profunda de extremo a extremo por sí sola, dada la posibilidad de que se sobreajuste. Debería ver la adaptación de dominio en la que toma un modelo preestablecido como inicio, que está entrenado en el conjunto de datos de imagenet y lo ajusta a su problema. Como solo debe aprender los parámetros necesarios para clasificar su caso de uso, es posible lograr una buena precisión con relativamente menos datos de capacitación disponibles. He alojado una demostración de clasificación con esta técnica here . Pruébelo con su conjunto de datos y vea si ayuda. La demostración se ocupa del modelo pre-establecido así como del aumento de datos para el conjunto de datos que usted cargará.


Es una muy buena manera de aumentar el número de citas que tienes. Lo que harás depende de tus datos. Por ejemplo, si está entrenando en datos obtenidos de un sensor, es posible que desee agregar algo de ruido a los datos de entrenamiento para que pueda aumentar su conjunto de datos. Después de todo, puede esperar que algún ruido provenga del sensor más adelante.

Suponiendo que lo va a entrenar en imágenes, aquí hay un muy buen repositorio github que proporciona los medios para usar esas técnicas. Esta biblioteca de Python lo ayuda a aumentar las imágenes para sus proyectos de aprendizaje automático. Convierte un conjunto de imágenes de entrada en un nuevo conjunto mucho más grande de imágenes ligeramente alteradas. Enlace: https://github.com/aleju/imgaug

caracteristicas:

  • La mayoría de las técnicas de aumento estándar disponibles.

  • Las técnicas se pueden aplicar tanto a imágenes como a puntos clave / puntos de referencia en imágenes. Defina su secuencia de aumento una vez al comienzo del experimento y luego aplíquela varias veces.

  • Defina rangos estocásticos flexibles para cada aumento, por ejemplo, "gire cada imagen por un valor entre -45 y 45 grados" o "gire cada imagen por un valor muestreado de la distribución normal N (0, 5.0)".

  • Convierta fácilmente todos los rangos estocásticos a valores determinísticos para aumentar diferentes lotes de imágenes de la manera exactamente idéntica (por ejemplo, imágenes y sus mapas de calor).