La idea con Neural Networks es que necesitan poco preprocesamiento ya que el algoritmo, que es el encargado de aprender las características, realiza el trabajo pesado.
Los ganadores del Data Science Bowl 2015 tienen una excelente reseña sobre su enfoque, por lo que la mayor parte del contenido de esta respuesta se tomó de:
Clasificación del plancton con redes neuronales profundas . Le sugiero que lo lea, especialmente la parte sobre Preprocesamiento y aumento de datos .
- Cambiar el tamaño de las imágenes
En cuanto a diferentes tamaños, resoluciones o distancias, puede hacer lo siguiente. Simplemente puede cambiar el tamaño del lado más grande de cada imagen a una longitud fija.
Otra opción es usar openCV o scipy. y esto redimensionará la imagen para que tenga 100 cols (ancho) y 50 filas (alto):
resized_image = cv2.resize(image, (100, 50))
Otra opción es usar el módulo scipy, usando:
small = scipy.misc.imresize(image, 0.5)
- Aumento de datos
El aumento de datos siempre mejora el rendimiento, aunque la cantidad depende del conjunto de datos. Si desea aumentar los datos para aumentar artificialmente el tamaño del conjunto de datos, puede hacer lo siguiente si el caso se aplica (no se aplicaría si, por ejemplo, fueran imágenes de casas o personas donde si las gira 180 grados perderían toda la información pero no si los volteas como lo hace un espejo):
- rotación: aleatorio con ángulo entre 0 ° y 360 ° (uniforme)
- traducción: aleatorio con desplazamiento entre -10 y 10 píxeles (uniforme)
- reescalado: aleatorio con factor de escala entre 1 / 1.6 y 1.6 (log-uniforme)
- volteo: sí o no (bernoulli)
- corte: aleatorio con ángulo entre -20 ° y 20 ° (uniforme)
- estiramiento: aleatorio con factor de estiramiento entre 1 / 1.3 y 1.3 (log-uniforme)
Puede ver los resultados en las imágenes del tazón de Data Science.
Imágenes preprocesadas
versiones aumentadas de las mismas imágenes
-Otras técnicas
Estos tratarán con otras propiedades de imagen como la iluminación y ya están relacionados con el algoritmo principal, más como un simple paso de preprocesamiento. Consulte la lista completa en: Tutorial de UFLDL
import scipy.misc
. stackoverflow.com/questions/13581593/…Si bien la respuesta de wacax es completa y realmente explicativa, me gustaría agregar un par de cosas en caso de que alguien tropiece con esta respuesta.
En primer lugar, la mayoría
scipy.misc
de imagen funciones relacionadas (imread
,imsave
,imresize
ERC) han llegado a ser obsoleto en favor de cualquiera de ImageIO o skimage .En segundo lugar, recomendaría encarecidamente el imgaug de la biblioteca de Python para cualquier tarea de aumento. Es realmente fácil de usar y tiene prácticamente todas las técnicas de aumento que desee usar.
fuente