En mi clase, tengo que crear una aplicación usando dos clasificadores para decidir si un objeto en una imagen es un ejemplo de phylum porifera (seasponge) o algún otro objeto.
Sin embargo, estoy completamente perdido cuando se trata de técnicas de extracción de características en Python. Mi asesor me convenció de usar imágenes que no se han cubierto en clase.
¿Alguien puede dirigirme hacia documentación significativa o leer o sugerir métodos a considerar?
python
feature-extraction
image-recognition
Jeremy Barnes
fuente
fuente
Respuestas:
En las imágenes, algunas técnicas utilizadas con frecuencia para la extracción de características son binarizar y difuminar
Binarizing: convierte la matriz de imágenes en 1s y 0s. Esto se realiza al convertir la imagen en una imagen 2D. Incluso la escala de grises también se puede utilizar. Te da una matriz numérica de la imagen. La escala de grises ocupa mucho menos espacio cuando se almacena en el disco.
Así es como lo haces en Python:
Imagen de ejemplo:
Ahora, conviértalo a escala de grises:
te devolveré esta imagen:
Y la matriz se puede ver ejecutando esto:
La matriz se vería así:
Ahora, use un diagrama de histograma y / o un diagrama de contorno para ver las características de la imagen:
Esto te devolvería una trama, que se parece a esto:
Desenfoque: el algoritmo de desenfoque toma el promedio ponderado de los píxeles vecinos para incorporar el color del entorno en cada píxel. Mejora mejor los contornos y ayuda a comprender mejor las características y su importancia.
Y así es como lo haces en Python:
Y la imagen borrosa es:
Por lo tanto, estas son algunas formas en que puede hacer ingeniería de características. Y para los métodos avanzados, debe comprender los conceptos básicos de la visión por computadora y las redes neuronales, y también los diferentes tipos de filtros y su importancia y las matemáticas detrás de ellos.
fuente
Este gran tutorial cubre los conceptos básicos de las redes neuronales convolucionales, que actualmente están logrando el rendimiento más avanzado en la mayoría de las tareas de visión:
http://deeplearning.net/tutorial/lenet.html
Hay una serie de opciones para CNN en Python, incluidos Theano y las bibliotecas integradas (encontré que los keras son fáciles de usar).
Si prefiere evitar el aprendizaje profundo, puede consultar OpenCV, que puede aprender muchos otros tipos de funciones, cascadas de Haar de línea y funciones SIFT.
http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html
fuente
Como dijeron Jeremy Barnes y Jamesmf, puede usar cualquier algoritmo de aprendizaje automático para resolver el problema. Son potentes y pueden identificar las características automáticamente. Solo necesita alimentar el algoritmo con los datos de entrenamiento correctos. Dado que es necesario trabajar en imágenes, las redes neuronales de convolución serán una mejor opción para usted.
Este es un buen tutorial para aprender sobre la red neuronal de convolución. También puede descargar el código y puede cambiar según la definición de su problema. Pero necesita aprender python y theano library para el procesamiento y también obtendrá buenos tutoriales para eso.
http://deeplearning.net/tutorial/lenet.html
fuente