Este projeto tem como objetivo explorar três abordagens de classificação de imagens usando CNNs com PyTorch:
- Treinamento de uma rede do zero.
- Uso de uma rede pré-treinada sem ajustes.
- Fine-tuning de uma rede pré-treinada.
O dataset utilizado será o CIFAR-10, e as redes serão avaliadas com métricas como accuracy, precision, recall e F1-score.
- Modelos e Dataset
- Estrutura do Projeto
- Comparação dos modelos
- Execução dos Notebooks
- Dependências e Pacotes necessários
Dataset (CIFAR-10)
O CIFAR-10 (Canadian Institute For Advanced Research) é um conjunto de dados utilizado em tarefas de classificação de imagens e treinamento de modelos de aprendizado de máquina. Ele consiste em:
- 10 classes: avião, automóvel, pássaro, gato, cervo, cachorro, sapo, cavalo, navio e caminhão.
- 60.000 imagens coloridas, de 32x32 pixels.
- 50.000 imagens no conjunto de treinamento.
- 10.000 imagens no conjunto de teste.
- As imagens estão em formato RGB, e cada uma é associada a um rótulo de classe correspondente.
- As classes são mutuamente exclusivas e não possuem sobreposição entre as categorias.
Amostra de imgens CIFAR-10:
| Membro | Modelo | Link colab | Arquivo local |
|---|---|---|---|
| André Burger | ResNet | Resnet Colab | Resnet Notebook |
| Lucas Soares | Inception v3 | Inception Colab | - |
| Pedro Flores | MaxVit | MaxVit Colab | - |
| Gabriel Lima | - | Colab Gabriel | - |
Cada modelo foi treinado e inferido em uma estrutura padronizada, esse processo foi repetido para as três versões do mesmo modelo:
- Treinamento de uma rede do zero.
- Uso de uma rede pré-treinada sem ajustes.
- Fine-tuning de uma rede pré-treinada.
- Download do dataset
- Plotagem de imagens do dataset
- Modelos, critérios e otimizadores das redes
- Treino das redes
- Plotagem das métricas de avaliação das redes
Algumas plotagens e inferências visando comparar a eficiência dos modelos escolhidos.
A matriz de confusão mostra o número de classificações corretas e incorretas em cada classe. Comparando as matrizes de confusão dos modelos, é possível identificar quais classes foram mais facilmente reconhecidas e onde os erros de classificação foram mais frequentes.
As métricas de avaliação incluem a acurácia, precisão, recall e F1-score, que fornecem uma visão quantitativa do desempenho dos modelos. A acurácia mede a proporção de previsões corretas, enquanto a precisão indica a porcentagem de classificações corretas para uma determinada classe. O recall mede a capacidade do modelo de identificar todas as instâncias de uma classe, e o F1-score oferece um balanço entre precisão e recall. Essas métricas são fundamentais para a comparação objetiva dos modelos em relação à sua capacidade de generalização.
Os modelos usados nesse projeto foram treinados e executados em ambiente Jupyter. Os Notebooks com os códigos se disponibilizam em dois ambientes:
- Google Colab
- Ambiente local
O Google Colab é uma plataforma gratuita baseada na nuvem que permite criar e executar notebooks Jupyter diretamente no navegador. O Colab fornece acesso a GPUs e TPUs gratuitamente. A execução do código em ambiente colab é simples, basta conectar o Notebook ao servidor do Google e executar as células.
Os arquivos com extensão .ipynb que estão localizados na pasta /notebooks podem ser executados localmente instalando as bibliotecas e dependências necessárias. Os pesos gerados pelos modelos já treinados também podem ser instalados através da pasta /models_weights.
Caso necessário a utilização de uma máquina local, as bibliotecas usadas no projeto podem ser encontradas no arquivo requirements.txt. A criação de um ambiente virtual ajuda com o controle de pacotes.
A instalação das bibliotecas pode ser executada da seguinte maneira no terminal:
pip install -r requirements.txt