---
# System prepended metadata

title: Untitled

---

## CONTEXTE

Nous avons créé un réseau de neurones permettant d'identifier des images de plantes.
Ce réseau de neurones a été réalisé dans le cadre d'un projet de data-science à HETIC en Mastère Big Data 5ème année. 

## REQUIREMENTS

- python 3.7
- pip
- venv

## INSTALLATION

 - creation d'un venv
 `virtualenv venv`
 - Si vous avez CUDA : 
     - installation des requirements
     `source ./venv/Scripts/activate`
     `pip install -r requirements_GPU.txt`
 - Si vous n'avez pas CUDA : 
      - installation des requirements
     `source ./venv/Scripts/activate` 
     `pip install -r requirements_CPU.txt`
- Si une erreur persiste : **RTFM**

## RUNNING

Il existe un total de 4 fichiers à  exécuter pour obtenir un résultat sur les prédicitions du réseau de neurones.
L'ensemble du réseau est divisé de telle manière pour éviter d'avoir à réexecuter des portions qui consomme beaucoup de temps et de ressources (DataCreator, FeatureExtractor, Trainer) à chaque fois qu'on veut obtenir un résultat.

Placez-vous dans le dossier contenant les fichiers .py

1. **Exécuter le fichier DataCreator.py**
    - Pour Windows : `py DataCreator.py`
    - Pour Mac : `python DataCreator.py` ou `python3 DataCreator.py`
    - Pour Linux: `python DataCreator.py`
        - Télécharge s'il n'existe pas encore un zip à partir d'une URL pour obtenir l'ensemble des dossiers contenant les images de plantes et le csv contenant les features des plantes.
        - Nettoyage du dataset et réorganisation de l'architecture des dossiers afin d'avoir les dossiers correspondant aux catégories 
        - Creation de 3 image supplementaire a partire de l'image source (flip horizontal, flip vertical, flip horizontal et vertical)
2. **Exécuter le fichier FeatureExtractor.py**
    - Pour Windows : `py FeatureExtractor.py`
    - Pour Mac : `python FeatureExtractor.py` ou `python3 FeatureExtractor.py`
    - Pour Linux: `python FeatureExtractor.py`
        - Créer une liste dans laquelle on stocke les images reshape et les id des catégories sous la même forme que l'architecture des dossiers (id_cat > image)
        - À partir de cette liste, on extraie les images et les catégories dans 4 listes séparées, 2 pour le train (90% des données) et 2 pour le test (10% des données)
        - Sauvegarde de ces fichiers (train, test et catégories au format npy) pour une utilisation dans le trainer et le predicter.
3. **Exécuter le fichier trainer.py**
    - Pour Windows : `py trainer.py`
    - Pour Mac : `python trainer.py` ou `python3 trainer.py`
    - Pour Linux: `python trainer.py`
        - Chargement des fichiers contenants les features train et catégories (depuis FeatureExtractor)
        - Configuration du model
        - Training du model
        - Sauvegarde du model au format h5
4. **Exécuter le fichier predicter.py**
    - Pour Windows : `py predicter.py`
    - Pour Mac : `python predicter.py` ou `python3 predicter.py`
    - Pour Linux: `python predicter.py`
        - Chargement des fichiers contenants les features test (depuis FeatureExtractor)
        - Chargement du Model (depuis trainer.py)
        - Evaluation (testing) du model avec les features test

## PERFORMANCE

