Na minha classe, eu tenho que criar um aplicativo usando dois classificadores para decidir se um objeto em uma imagem é um exemplo de phylum porifera (seasponge) ou algum outro objeto.
No entanto, estou completamente perdido quando se trata de técnicas de extração de recursos em python. Meu orientador me convenceu a usar imagens que não foram abordadas na aula.
Alguém pode me direcionar para documentação ou leitura significativa ou sugerir métodos a considerar?
python
feature-extraction
image-recognition
Jeremy Barnes
fonte
fonte
Respostas:
Nas imagens, algumas técnicas freqüentemente usadas para extração de recursos são binarização e desfoque
Binarização: converte a matriz de imagens em 1s e 0s. Isso é feito durante a conversão da imagem em uma imagem 2D. Também pode ser usada a escala de cinza. Fornece uma matriz numérica da imagem. A escala de cinza ocupa muito menos espaço quando armazenada no disco.
É assim que você faz em Python:
Imagem de exemplo:
Agora, converta em escala de cinza:
retornará esta imagem:
E a matriz pode ser vista executando este:
A matriz ficaria assim:
Agora, use um gráfico de histograma e / ou um gráfico de contorno para dar uma olhada nos recursos da imagem:
Isso retornaria uma plotagem, mais ou menos assim:
Desfocagem: o algoritmo de desfocagem leva a média ponderada de pixels vizinhos para incorporar a cor do ambiente em cada pixel. Aprimora melhor os contornos e ajuda a entender melhor os recursos e sua importância.
E é assim que você faz em Python:
E a imagem borrada é:
Portanto, estas são algumas maneiras pelas quais você pode fazer a engenharia de recursos. E para métodos avançados, você precisa entender os conceitos básicos de Visão Computacional e redes neurais, e também os diferentes tipos de filtros, seu significado e a matemática por trás deles.
fonte
Este ótimo tutorial aborda os conceitos básicos de trabalhos neurais convolucionais, que atualmente alcançam o desempenho de última geração na maioria das tarefas de visão:
http://deeplearning.net/tutorial/lenet.html
Existem várias opções para CNNs em python, incluindo Theano e as bibliotecas criadas por cima (achei as keras fáceis de usar).
Se você preferir evitar o aprendizado profundo, pode procurar no OpenCV, que pode aprender muitos outros tipos de recursos, cascatas Haar da linha e recursos SIFT.
http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html
fonte
Como Jeremy Barnes e Jamesmf disseram, você pode usar qualquer algoritmo de aprendizado de máquina para lidar com o problema. Eles são poderosos e podem identificar os recursos automaticamente. Você só precisa alimentar o algoritmo com os dados de treinamento corretos. Como é necessário trabalhar com imagens, as redes neurais de convolução serão uma opção melhor para você.
Este é um bom tutorial para aprender sobre a rede neural de convolução. Você também pode fazer o download do código e mudar de acordo com a definição do seu problema. Mas você precisa aprender as bibliotecas python e theano para o processamento e também receberá bons tutoriais para isso
http://deeplearning.net/tutorial/lenet.html
fonte