Skip to content
Snippets Groups Projects
Select Git revision
  • 854238a8734be4181218ac478614866aab0968b2
  • main default protected
2 results

image-classification

user avatar
widad174 authored
854238a8
History

Image Classification :

Ce projet met en œuvre deux méthodes fondamentales pour la classification d'images :

KNN : Algorithme des k plus proches voisins
ANN : Réseau neuronal artificiel (réseau neuronal classique)

Les données utilisées proviennent de l'ensemble de données CIFAR-10. (https://www.cs.toronto.edu/~kriz/cifar.html)

Les différentes classes au sein de la base de donnée sont:

  1. airplane
  2. automobile
  3. bird
  4. cat
  5. deer
  6. dog
  7. frog
  8. horse
  9. ship
  10. truck

Installation

L'utilisation d'un venv est recommandée. La commande suivante installera les packages conformément au fichier de configuration requirements.txt. $ pip install -r requirements.txt Version de Python utilisée dans ce dépôt : 3.11.4

Project content

Usage

Après avoir téléchargé les données avec la méthode de votre choix, vous pouvez les lire en utilisant le code suivant :

from read_cifar import read_cifar, split_dataset
data, labels = read_cifar(chemin/vers/les/données)
data_train, labels_train, data_test, labels_test = split_dataset(data, labels, split=split_factor)

Ensuite, vous pouvez utiliser l'une des méthodes de classification ci-dessous:

k-nearest neighbors

un fichier Python nommé knn.py qui nous permettra d'entraîner notre modèle KNN et de prédire l'ensemble de données de test afin d'évaluer les performances. Ce fichier doit contenir les fonctions suivantes :

distance_matrix
knn_predict
evaluate_knn_for_k
plot_accuracy_versus_k

For a range of values in [1, k_max] :

from knn import evaluate_knn_for_k, plot_accuracy_versus_k

accuracies = evaluate_knn_for_k(data_train, labels_train, data_test, labels_test, k_max=20)
plot_accuracy_versus_k(accuracies)

Artificial Neural Network

Créez un fichier Python nommé mlp.py afin de développer un classificateur basé sur un réseau neuronal à perceptrons multiples (MLP). Ce fichier doit contenir les fonctions suivantes :

  • learn_once_mse
  • one_hot
  • softmax
  • learn_once_cross_entropy
  • predict_mlp
  • train_mlp
  • Test_mlp
  • run_mlp_training
  • plot_accuracy_versus_epoch

Pour utiliser le réseau neuronal avec une couche cachée contenant d_h neurones, vous pouvez faire : from mlp import run_mlp_training, plot_accuracy_versus_epoch

# Normalize the data in [0, 1] :
data_train, data_test = data_train/255.0, data_test/255.0
train_accuracies, test_accuracy = run_mlp_training(data_train, labels_train, data_test,labels_test,d_h,learning_rate,num_epoch)
plot_accuracy_versus_epoch(train_accuracies)

Unitests

Pour exécuter les tests unitaires, nous utilisons le framework pytest :

pytest tests/

Project tree

───image-classification │ knn.py │ main.ipynb │ mlp.py │ README.md │ read_cifar.py │ requirements.txt │
├───resultats │ Knn.png │ mlp.png │
└───tests

Author

AZZOUZI Widad