Skip to content

raveriss/Leaffliction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌿 Leaffliction — Plant Disease Classification (Computer Vision)

Python CI Coverage Norme 42mypy Mutation pre-commitblack security License

Ce projet fait partie de mon 🔗 PORTFOLIO orientĂ© Data / IA / Software Engineering

📑 Table des matiùres


📌 Overview

Leaffliction est un projet de Computer Vision visant Ă  dĂ©tecter automatiquement les maladies prĂ©sentes sur des feuilles de plantes Ă  partir d’images.

Il suit le sujet Leaffliction de l’École 42 et implĂ©mente un pipeline complet :

  • 📊 Analyse du dataset
  • 🔄 Data augmentation (≄ 6 techniques pour Ă©quilibrer les classes)
  • 🎹 Transformations d’images (≄ 6 transformations)
  • 🧠 Classification par Deep Learning (CNN)
  • ✔ Accuracy ≄ 90 %
  • 🔐 Signature SHA1 pour validation
  • 📂 Compatible avec toutes les plantes du dataset (tous les sous-dossiers)
  • đŸ—‚ïž Les scripts doivent fonctionner avec n’importe quelle organisation du dataset
  • đŸš« Le dataset, les images augmentĂ©es ou les modĂšles ne doivent jamais ĂȘtre commit

Développé en Python 3.10+, géré via Poetry, avec une stack qualité complÚte : pytest, ruff, mypy, mutmut, black, bandit, pre-commit, GitHub Actions & Codecov.


📁 Structure du projet

Leaffliction/
├── src/leaffliction/
│   ├── __init__.py
│   ├── distribution.py
│   ├── augmentation.py
│   ├── transformation.py
│   ├── training.py
│   ├── prediction.py
│   └── cli.py
│
├── scripts/
│   ├── Distribution.py
│   ├── Augmentation.py
│   ├── Transformation.py
│   ├── train.py
│   └── predict.py
│
├── tests/
│   ├── test_distribution.py
│   ├── test_augmentation.py
│   ├── test_transformation.py
│   ├── test_training.py
│   └── test_prediction.py
│
├── .github/workflows/ci.yml
├── .pre-commit-config.yaml
├── .ruff.toml
├── mypy.ini
├── .coveragerc
├── codecov.yml
├── pyproject.toml
├── poetry.lock
├── LICENSE
└── signature.txt

⚠ Avertissement :

  • Le dataset NE DOIT PAS apparaĂźtre dans le dĂ©pĂŽt (sinon 0 direct).
  • Les images augmentĂ©es, transformĂ©es et le modĂšle entraĂźnĂ© NE DOIVENT PAS ĂȘtre commit.
  • Seul signature.txt doit ĂȘtre prĂ©sent.

đŸ§Ș 1. Dataset Analysis — Distribution.py

Objectifs :

  • Explorer la structure du dataset
  • Calculer la rĂ©partition par maladies
  • GĂ©nĂ©rer pie charts & bar charts
  • Le programme doit fonctionner avec toutes les plantes du dataset
  • Le nom des colonnes doit correspondre exactement au nom des dossiers des classes
  • Les images doivent ĂȘtre correctement dĂ©tectĂ©es mĂȘme si les chemins contiennent des espaces

Exemple d’exĂ©cution :

poetry run python scripts/Distribution.py ./Apple

Répartition du dataset

Répartition des images par catégories pour la plante Apple.
UtilisĂ© pour analyser l’équilibre du dataset avant augmentation.


🔄 2. Data Augmentation — Augmentation.py

Objectifs :

  • Équilibrer les classes
  • Appliquer ≄ 6 augmentations :
    • Flip, Rotate, Skew, Shear, Crop, Distortion
  • Les images augmentĂ©es doivent ĂȘtre enregistrĂ©es dans le mĂȘme dossier que l’original
  • Une fois l’augmentation terminĂ©e, un dataset Ă©quilibrĂ© doit ĂȘtre produit dans :
augmented_directory/

Exemple :

poetry run python scripts/Augmentation.py ./Apple/apple_healthy/image.jpg

Exemples de data augmentation

Exemples des 6 augmentations appliquées (Flip, Rotate, Skew, Shear, Crop, Distortion) sur une feuille healthy de la classe apple_healthy.


🎹 3. Image Transformation — Transformation.py

Transformations possibles :

  • Gaussian blur
  • Mask
  • ROI
  • Object analysis
  • Pseudolandmarks
  • Color histograms
  • Le script doit accepter une seule image (affichage)
  • Et un dossier complet (sauvegarde des rĂ©sultats dans un dossier destination)
  • Une aide doit ĂȘtre disponible via :

Exemples :

poetry run python scripts/Transformation.py ./Apple/apple_healthy/image.jpg

Pipeline de transformations

Pipeline des transformations appliquées : original, Gaussian blur, mask, ROI objects,
analyse d’objet, pseudolandmarks et histogramme de couleurs.

Batch mode :

poetry run python scripts/Transformation.py -src ./Apple/apple_healthy -dst out/

🧠 4. Classification — train.py

Objectifs :

  • EntraĂźner un CNN
  • GĂ©rer train/validation
  • Atteindre ≄ 90 % accuracy
  • Exporter un .zip conforme au sujet
  • Le modĂšle doit ĂȘtre entraĂźnĂ© sur un dataset Ă©quilibrĂ© et transformĂ©
  • Le set de validation doit contenir au moins 100 images
  • Le .zip final doit contenir :
    • le modĂšle entraĂźnĂ©
    • les images nĂ©cessaires
    • toutes les mĂ©tadonnĂ©es utiles pour recharger le modĂšle
  • Le modĂšle doit pouvoir ĂȘtre rechargĂ© uniquement Ă  partir du .zip

Commande :

poetry run python scripts/train.py ./Apple

🔍 5. Prediction — predict.py

poetry run python scripts/predict.py ./Apple/apple_healthy/image.jpg

Exemple de prédiction DL

Exemple complet du script predict.py :
image originale (gauche), image transformée (droite)
→ Classe prĂ©dite : peach_bacterial_spot.

Affiche :

  • image originale

  • transformation

  • prĂ©diction

  • L’image prĂ©dite doit appartenir Ă  une plante utilisĂ©e pour l’entraĂźnement

  • Le script doit afficher la classe prĂ©dite de maniĂšre lisible


🔐 6. Signature SHA1 — signature.txt

sha1sum leaffliction_dataset_model.zip

Copier la valeur dans :

signature.txt

⚠ Mismatch = note 0.

  • Le .zip doit inclure exactement :
    • le dataset prĂ©parĂ© (augmentĂ© et transformĂ©)
    • le modĂšle entraĂźnĂ©
    • les fichiers nĂ©cessaires Ă  la prĂ©diction
  • Le hash SHA1 fourni doit correspondre exactement au .zip utilisĂ© pendant la soutenance
  • Toute diffĂ©rence → 0 point

đŸ§© Norme Python (42)

Le sujet impose :

pip install flake8
alias norminette_python="flake8"

Vérifier la norme 42 Python

norminette_python src/ scripts/

flake8 est requis pour le module 42, mĂȘme si le projet utilise aussi ruff, black, mypy, bandit & mutmut pour une qualitĂ© industrielle.


đŸ› ïž Installation & environnement Poetry

1. Cloner

git clone https://github.com/raveriss/Leaffliction
cd Leaffliction

2. Installer

poetry install

3. Activer

poetry shell

ou :

poetry run <commande>

▶ Exemples de commandes

Analyse :

poetry run python scripts/Distribution.py ./Apple

Augmentation :

poetry run python scripts/Augmentation.py ./Apple/apple_healthy/image.jpg

Transformations :

poetry run python scripts/Transformation.py -src ./Apple/apple_healthy -dst out/

Training :

poetry run python scripts/train.py ./Apple

Prediction :

poetry run python scripts/predict.py ./Apple/apple_healthy/image.jpg

✅ QualitĂ© logicielle

⚠ Toute erreur, crash, exception Python, ou arrĂȘt inattendu dans un des scripts
entraĂźne l’arrĂȘt immĂ©diat de l’évaluation (note potentiellement 0).

Tests :

poetry run pytest

Coverage :

poetry run pytest --cov=leaffliction --cov-report=term-missing

Mutation testing :

poetry run mutmut run

Lint:

poetry run ruff check src tests

Format :

poetry run black src tests

Typing :

poetry run mypy src

Sécurité :

poetry run bandit -r src

Pre-commit :

poetry run pre-commit run --all-files

📚 Stack technique

  • Langage & packaging

    • Python 3.10+
    • Poetry (gestion des dĂ©pendances & scripts)
  • Computer Vision & ML

    • PyTorch (CNN de classification)
    • NumPy / Pandas
    • Pillow / OpenCV / PlantCV
  • Tests & qualitĂ©

    • pytest, coverage, Codecov
    • flake8 (norme 42 via norminette_python)
    • ruff, black, mypy
    • mutmut (mutation testing)
    • bandit (analyse de sĂ©curitĂ©)
    • pre-commit (orchestration des hooks)
  • CI/CD

    • GitHub Actions (lint + tests + coverage + upload Codecov)

🎯 Objectifs pĂ©dagogiques

  • Pipeline complet de Computer Vision
  • Data augmentation avancĂ©e
  • CNN robuste avec >90% accuracy
  • Projet reproductible via Poetry
  • CI/CD & qualitĂ© logicielle niveau entreprise

© Licence

MIT License.


đŸ‘€ Auteur

Rafael Verissimo
Étudiant IA/Data — École 42 Paris
GitHub : https://github.com/raveriss
LinkedIn : https://www.linkedin.com/in/verissimo-rafael/
Portfolio : https://raveriss.dev/

About

🌿 Projet de Computer Vision basĂ© sur un dataset de feuilles malades : analyse exploratoire, data augmentation, transformations d’images et classification CNN. Pipeline complet en Python, tests, visualisations, reproductibilitĂ© et modĂšle >90% accuracy.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors