Esta aplicação utiliza Python para o processamento dos treinamentos, Electron + ReactJS para a aplicação desktop e frontend.
A comunicação entre Python e Electron ocorre via eventos, como se fosse uma bridge (IpcMain
e IpcRenderer
)
Caso desejar apenas classificar as imagens não clique em executar treinamento ao abrir o programa, consta no cache da aplicação o último treinamento, realizado com todas as imagens. Apenas treine novamente se realmente desejar.
Já existe um arquivo de classificação onde o treinamento foi realizado com todas as imagens de ambos os personagens. Basta testar com uma imagem externa e classificar.
Ao executar o programa será possÃvel realizar o treinamento com todo o dataset (este processo pode levar horas) ~ 2 horas. Ao finalizar o treinamento será exibida a matriz de confusão.
Caso tenha treinado acidentalmente e cancelado os dados para classificação serão sobrescritos. Na pasta python/_backup_training constam os arquivos para utilizar na aplicação caso necessário.
Copie:
- data.h5 e labels.h5 →
resources/python/output
- Apu Nahasapeemapetilon
- Marge Simpson
Apu Nahasapeemapetilon | Marge Simpson |
- Cor da pele
- Cor da jaqueta/camiseta
- Cor da calça
- Cor da pele
- Cor do cabelo
- Cor do vestido
A análise é baseada em cores com a aplicação de uma tolerância para cada um dos personagens e caracterÃstica desejada. Na tabela abaixo o processo de extração de caracterÃsticas para da Marge onde a cada etapa o range de cores estava sendo calibrado.
O processo de treinamento utilizando um dataset com 1914 imagens de Apu e Marge levou aproximadamente 1h 20min em um i7 8700K 4.7GHz + 48GB RAM.
A seguinte matriz de confusão foi obtida após o treinamento utilizando todo o dataset. Os dados identificam a quantidade de falsos positivos, por exemplo.
Apu | Marge | |
---|---|---|
Apu | 143 (TP) |
70 (FP) |
Marge | 34 (FN) |
423 (TN) |
Apu = 0.0 ; Marge = 1.0
Análise dos dados:
- 143 imagens do personagem Apu foram encontradas onde o esperado era Apu (verdadeiro positivo) e 423 imagens da Marge foram encontradas corretamente (verdadeiro negativo);
- 70 imagens foram encontradas como Marge, porém deveriam ser Apu (falso positivo) e 34 imagens de Apu foram encontradas, porém deveriam ser Marge (falso negativo).