Skip to content

📦 Python, Electron + ReactJS | A machine learning project to identify Simpsons characters using OpenCV to extract characteristics and Naive Bayes with Sklearn to train the model.

Notifications You must be signed in to change notification settings

eliasheinzen/machine-learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aprendizado de máquina

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)

Informações

Utilização

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.

Utilizando arquivo de teste

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

Personagens escolhidos

  • Apu Nahasapeemapetilon
  • Marge Simpson
Apu Nahasapeemapetilon Marge Simpson

Características analisadas

Apu Nahasapeemapetilon

  • Cor da pele
  • Cor da jaqueta/camiseta
  • Cor da calça

Marge Simpson

  • Cor da pele
  • Cor do cabelo
  • Cor do vestido

Extraindo características

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.

Range de cores

Apu Nahasapeemapetilon
Cor da pele Cor da calça Cor da camisa
R 145 100 200 202 189 200 36 28 60
G 66 30 130 189 175 210 104 95 150
B 35 0 50 137 119 200 17 0 35
Alvo Range Alvo Range Alvo Range
Marge Simpson
Cor da pele Cor do cabelo Cor do vestido
R 205 202 235 65 80 40 142 105 166
G 171 158 195 85 79 110 171 135 215
B 11 0 50 253 145 255 91 0 123
Alvo Range Alvo Range Alvo Range

Análise dos resultados

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.

Matriz de confusão

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).

About

📦 Python, Electron + ReactJS | A machine learning project to identify Simpsons characters using OpenCV to extract characteristics and Naive Bayes with Sklearn to train the model.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •