Alterar las imágenes entrenadas para entrenar la red neuronal


Actualmente estoy tratando de hacer un programa para diferenciar las naranjas podridas y las naranjas comestibles basándose únicamente en su apariencia externa. Para hacer esto, estoy planeando usar una Red Neuronal 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 un fondo negro ( http://www.cofilab.com/downloads / ). Obviamente, un modelo de aprendizaje automático necesitará al menos mil naranjas para lograr 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 alter, me refiero a agregar diferentes tonos de naranja en los cítricos para hacer una " naranja diferente."¿ Sería este un método eficaz para entrenar una red neuronal?

Author: Rehaan Ahmad, 2017-01-13

4 answers

Es una muy buena manera de aumentar el número de fecha. Lo que harás depende de tus datos. Por ejemplo, si está entrenando con 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 algo de ruido proveniente del sensor más adelante.

Asumiendo que lo entrenarás con imágenes, aquí hay un muy buen repositorio de github que proporciona medios para usar esas técnicas. Esta biblioteca de python ayuda usted con el aumento de 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

Características:

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

  • Las técnicas se pueden aplicar tanto a las imágenes como a los puntos clave / puntos de referencia en images. Definir su secuencia de aumento una vez al inicio de la experimentar, luego aplicarlo muchos tiempo.

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

  • Convierta fácilmente todos los rangos estocásticos a valores deterministas para aumente diferentes lotes de imágenes de la misma manera (por ejemplo, imágenes y sus mapas de calor).

introduzca la descripción de la imagen aquí

 8
Author: Dellein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-14 21:11:25

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

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

  2. Corta la naranja y ponla en diferentes fondos.

  3. Escala las naranjas con diferentes factores de escalas.

  4. Rotar las imágenes.

  5. Crear naranjas podridas sintéticas.

  6. Mezclar todas las diferentes combinaciones de lo anterior mencionado. Con este tipo de aumento puede 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

 3
Author: crodriguezo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-13 01:32:22

Esa es de hecho 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. También puedes invertir las imágenes. O, en último caso, buscar nuevas imágenes y aplicar las técnicas citadas.

 2
Author: Lucas Borsatto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-13 00:29:38

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 su cuenta, dada la posibilidad de que se sobreajuste. Debe mirar la adaptación de dominio donde toma un modelo preentrenado como inception que está entrenado en imagenet dataset y finetune para su problema. Dado que solo tiene que aprender los parámetros necesarios para clasificar su caso de uso, es posible lograr buenas precisiones con relativamente menos datos de entrenamiento disponibles. He alojado una demostración de clasificación con esta técnica aquí. Pruébelo con su conjunto de datos y vea si ayuda. La demo se encarga del modelo preentrenado, así como del aumento de datos para el conjunto de datos que subirá.

 0
Author: pratsJ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-19 05:32:32