A idéia da Neural Networks é que eles precisam de pouco pré-processamento, uma vez que o trabalho pesado é feito pelo algoritmo responsável por aprender os recursos.
Os vencedores do Data Science Bowl 2015 têm uma excelente descrição em relação à sua abordagem; portanto, a maior parte do conteúdo desta resposta foi extraída de:
Classificação de plâncton com redes neurais profundas . Eu sugiro que você leia, especialmente a parte sobre pré-processamento e aumento de dados .
- Redimensionar imagens
Quanto aos tamanhos, resoluções ou distâncias diferentes, você pode fazer o seguinte. Você pode simplesmente redimensionar o lado maior de cada imagem para um comprimento fixo.
Outra opção é usar o openCV ou o scipy. e isso redimensionará a imagem para ter 100 colunas (largura) e 50 linhas (altura):
resized_image = cv2.resize(image, (100, 50))
Ainda outra opção é usar o scipy module, usando:
small = scipy.misc.imresize(image, 0.5)
- Aumento de dados
O aumento de dados sempre melhora o desempenho, embora a quantidade dependa do conjunto de dados. Se você deseja aumentar os dados para aumentar artificialmente o tamanho do conjunto de dados, faça o seguinte, se for o caso (não seria aplicável, por exemplo, imagens de casas ou pessoas nas quais, se você girá-los em 180 graus, eles perderão todas as informações mas não se você os girar como um espelho):
- rotação: aleatória com ângulo entre 0 ° e 360 ° (uniforme)
- tradução: aleatória com deslocamento entre -10 e 10 pixels (uniforme)
- redimensionamento: aleatório com fator de escala entre 1 / 1,6 e 1,6 (uniforme de log)
- inversão: sim ou não (bernoulli)
- cisalhamento: aleatório com ângulo entre -20 ° e 20 ° (uniforme)
- alongamento: aleatório com fator de alongamento entre 1 / 1,3 e 1,3 (uniforme de log)
Você pode ver os resultados nas imagens do Data Science bowl.
Imagens pré-processadas
versões aumentadas das mesmas imagens
-Outras técnicas
Elas lidam com outras propriedades da imagem, como iluminação, e já estão relacionadas ao algoritmo principal, mais como uma simples etapa de pré-processamento. Confira a lista completa em: Tutorial da UFLDL
import scipy.misc
. stackoverflow.com/questions/13581593/…Embora a resposta de wacax seja completa e realmente explicativa, gostaria de acrescentar algumas coisas, caso alguém se depare com essa resposta.
Primeiro de tudo, mais
scipy.misc
funções relacionadas imagem (imread
,imsave
,imresize
erc) tornaram-se obsoleto em favor de qualquer ImageIO ou skimage .Em segundo lugar, eu recomendaria fortemente a imgaug da biblioteca python para qualquer tarefa de aumento. É realmente fácil de usar e possui praticamente todas as técnicas de aumento que você pode querer usar.
fonte