## 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