Este projeto consiste em um sistema de classificação de personagens dos Simpsons utilizando características extraídas de imagens e alguns classificadores. O objetivo é treinar o classificador com um conjunto de imagens dos simpsons e avaliar sua acurácia usando um conjunto de imagens de teste, que tenta classificar corretamente qual personagem está presente na imagem.
O diretório atual contém as seguintes pastas:
Train
: Pasta que contém as imagens utilizadas para treinamento.Valid
: Pasta que contém as imagens utilizadas para teste.
Certifique-se de ter o Python e as seguintes bibliotecas instaladas:
- OpenCV:
pip install opencv-python
- scikit-learn:
pip install scikit-learn
O OpenCV é uma biblioteca de visão computacional de código aberto. Ela oferece uma ampla gama de funções e algoritmos otimizados para processamento de imagens e visão computacional. O OpenCV é escrito em C++ e possui interfaces para várias linguagens de programação, incluindo Python.
O scikit-learn é uma biblioteca de aprendizado de máquina em Python, projetada para ser simples e eficiente de usar. Ela fornece uma ampla gama de algoritmos e ferramentas para tarefas de aprendizado de máquina, incluindo classificação, regressão, agrupamento, redução de dimensionalidade e seleção de recursos.
Este script é responsável por extrair as características das imagens e salvar os dados de treino e teste em arquivos CSV.
extract_features(image_path)
: Função que recebe o caminho de uma imagem e retorna o histograma de cores normalizado.process_images(directory)
: Função que processa todas as imagens do diretório, extrai as características e retorna as características e rótulos.train_dir
evalid_dir
: Diretórios de treino e teste, respectivamente.train_data.csv
evalid_data.csv
: Arquivos CSV contendo os dados de treino e teste, respectivamente. Caracteristicas nas primeiras colunas e nome do personagem na última coluna.
Este script carrega os dados de treinamento e teste dos arquivos CSV gerados pelo extrator_caracteristicas.py
e realiza a classificação utilizando o algoritmo KNN.
train_data.csv
evalid_data.csv
: Arquivos CSV contendo os dados de treino e teste, respectivamente.- Loop para testar
k
de 3 a 19. knn = KNeighborsClassifier(n_neighbors=k)
: Criação do classificador KNN com o número de vizinhos igual ak
.accuracy_score(valid_labels, predictions)
: Cálcula acurácia do classificador.
-
Certifique-se de ter instalado o Python e as bibliotecas necessárias (OpenCV e scikit-learn).
-
Coloque as imagens de treino na pasta
Train
e as imagens de teste na pastaValid
. -
Abra um terminal ou prompt de comando na pasta do projeto.
-
Execute o seguinte comando para extrair as características das imagens e gerar os arquivos CSV de treino e teste:
python extrator_caracteristicas.py
-
Em seguida, execute o seguinte comando para treinar o classificador KNN e calcular a acurácia:
python classificador_knn.py
-
Analise os resultados obtidos exibidos no terminal.
- Certifique-se de que as imagens estejam nomeadas corretamente, seguindo o formato
personagemXXX.bmp
, ondepersonagem
é o nome do personagem eXXX
é o número da imagem. - Os arquivos CSV de treino e teste serão gerados automaticamente pelo script
extrator_caracteristicas.py
e utilizados pelo scriptclassificador_knn.py
.
Certifique-se de ter as permissões adequadas para ler, gravar e executar arquivos e pastas no diretório.