Pergunta

Vamos dizer que eu tenho um pequeno bitmap que contém um único dígito (0..9), por escrito mão.

É possível detectar o dígito usando um (de duas camadas) perceptron?

Existem outras possibilidades de detectar um único dígito de bitmaps além de usar redes neurais?

Foi útil?

Solução

Alimentando cada pixel de um bitmap diretamente em uma rede neural vai exigir muito treinamento, e não vai funcionar bem para manipulação de escala ou rotação da imagem.

Para ajudar a rede neural realizar uma boa classificação, você precisa executar algumas etapas de pré-processamento.

  • Normalize a imagem:
    • Ajustar o contraste eo brilho para que o histograma da imagem corresponde uma imagem de referência.
    • Blur a imagem, para remover o ruído.
    • Converter-lo em preto e branco, usando algum limite.
    • Encontre a caixa delimitadora da forma, a escala para um tamanho pré-definido.
  • calcular várias características da imagem que pode ser usado para diferenciar um dígito a partir de outro:
    • Euler número da imagem - diz-lhe como muitos "buracos" lá têm a forma (por exemplo, dois furos para o dígito 8).
    • O número de pixels brancos (a área do dígito)
    • do conjunto de coordenadas dos pixels brancos - diz-lhe como "alongado "a forma é.
    • ... outros recursos que você pode pensar que tendem a ter valores semelhantes para dígitos semelhantes.

Os componentes principais podem também ser usados ??para normalizar a rotação da forma, de modo que o maior eixo é vertical.

As características são o que você alimenta na rede neural de classificação, não os pixels.

Outras dicas

Aqui está um link para um banco de dados enorme de dígitos escritos à mão. A primeira página também tem dados de desempenho relativos para muitos métodos diferentes, incluindo 2 camada de redes neurais. Isso deve dar-lhe um bom começo: MNIST banco de dados de dígitos e desempenho

Você também pode querer verificar para fora trabalho de Geoff Hinton em Restricted Boltzmann Machines , que ele diz executa razoavelmente bem, e há uma boa palestra explicativa em seu site (muito watchable).

Aqui é um Matlab exemplo de programa que usa uma rede neural treinada para detectar dígito (tamanho da imagem fixa a 28 * 28).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top