Skip to content

Commit 859ef3b

Browse files
committed
feat: update .gitignore, add CONTRIBUTING.md and LICENSE, restructure project files, and implement data preparation script for Colab
1 parent 3a24bd2 commit 859ef3b

14 files changed

Lines changed: 401 additions & 70 deletions

File tree

.github/workflows/ci.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: CI AgbleDɔ̀
2+
3+
on:
4+
push:
5+
branches:
6+
- develop
7+
- main
8+
pull_request:
9+
branches:
10+
- develop
11+
- main
12+
13+
jobs:
14+
lint-and-test:
15+
name: Lint & Test
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout du code
20+
uses: actions/checkout@v4
21+
22+
- name: Configuration de Python 3.14
23+
uses: actions/setup-python@v5
24+
with:
25+
python-version: "3.14"
26+
allow-prereleases: true
27+
cache: "pip"
28+
29+
- name: Installation des dépendances
30+
run: |
31+
python -m pip install --upgrade pip
32+
pip install -e .[dev]
33+
34+
- name: Vérification du formatage et Linting avec Ruff
35+
run: |
36+
ruff check src/ tests/ app/ api/
37+
38+
- name: Exécution des tests unitaires avec Pytest
39+
run: |
40+
pytest tests/

.gitignore

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,19 @@
11
# Ambiances et environnements
2-
.github/
32
agbledɔ01venv/
43
.env
54

65
# Python
76
.pip-cache
87
__pycache__/
9-
*.py[cod]
10-
*$py.class
11-
*.so
128
.pytest_cache/
139

14-
# Jupyter
15-
.ipynb_checkpoints/
16-
1710
# MLOps et Tracking d'expériences
1811
mlruns/
19-
wandb/
2012
runs/
2113
logs/
2214

2315
# Données
24-
data/*
25-
!data/processed/
26-
data/processed/*
27-
!data/processed/data_summary.csv
16+
data/
2817

2918
# Fichiers de modèles
3019
models/

CONTRIBUTING.md

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
# Guide de Contribution
2+
3+
Merci de votre intérêt pour **AgbleDɔ̀** !
4+
5+
Ce projet vise à développer une solution open source de détection automatique des maladies végétales tropicales à l'aide de l'intelligence artificielle. Toute contribution est la bienvenue : amélioration du code, correction de bugs, documentation, tests, optimisation des modèles ou nouvelles fonctionnalités.
6+
7+
## Comment contribuer
8+
9+
### 1. Signaler un problème
10+
11+
Si vous identifiez un bug, une incohérence ou une amélioration possible :
12+
13+
1. Vérifiez qu'un ticket similaire n'existe pas déjà dans les Issues.
14+
2. Ouvrez une nouvelle Issue en décrivant :
15+
16+
* le problème observé ;
17+
* les étapes permettant de le reproduire ;
18+
* le comportement attendu ;
19+
* votre environnement de travail (OS, Python, versions des dépendances).
20+
21+
## 2. Proposer une amélioration
22+
23+
Les propositions suivantes sont particulièrement encouragées :
24+
25+
* amélioration des performances du modèle ;
26+
* ajout de nouvelles cultures ou maladies ;
27+
* optimisation du pipeline de traitement des données ;
28+
* amélioration de l'explicabilité (Grad-CAM, visualisations, interprétabilité) ;
29+
* développement de l'API FastAPI ;
30+
* développement de l'interface Streamlit ;
31+
* amélioration de la documentation ;
32+
* ajout de tests automatisés.
33+
34+
## 3. Workflow Git
35+
36+
1. Forkez le dépôt.
37+
2. Créez une branche dédiée :
38+
39+
```bash
40+
git checkout -b feature/nom-de-la-fonctionnalite
41+
```
42+
43+
ou
44+
45+
```bash
46+
git checkout -b fix/description-du-correctif
47+
```
48+
49+
3. Effectuez vos modifications.
50+
4. Ajoutez ou mettez à jour les tests si nécessaire.
51+
5. Vérifiez que les tests passent.
52+
6. Commitez vos changements :
53+
54+
```bash
55+
git commit -m "feat: ajout de ..."
56+
```
57+
58+
7. Poussez votre branche :
59+
60+
```bash
61+
git push origin feature/nom-de-la-fonctionnalite
62+
```
63+
64+
8. Ouvrez une Pull Request.
65+
66+
## Standards de développement
67+
68+
### Configuration de l'environnement (Python 3.14)
69+
70+
Nous utilisons **Python 3.14**. Pour contribuer efficacement :
71+
1. Créez votre environnement virtuel (`python3.14 -m venv venv` puis `source venv/bin/activate`).
72+
2. Installez les dépendances (`pip install -r requirements.txt`).
73+
3. Installez les outils de qualité de code (`pip install pytest ruff`).
74+
75+
### Qualité du code (Linting et Tests)
76+
77+
Afin d'assurer une base de code propre et maintenable, nous utilisons **Ruff** (un linter/formateur ultra-rapide) et **Pytest**.
78+
79+
Avant de soumettre une Pull Request, exécutez systématiquement :
80+
81+
```bash
82+
# Pour formater le code automatiquement
83+
ruff format src/ tests/
84+
85+
# Pour vérifier les standards (linting)
86+
ruff check src/ tests/
87+
88+
# Pour exécuter les tests automatisés
89+
pytest tests/
90+
```
91+
92+
Les contributions qui ajoutent de nouvelles fonctionnalités doivent inclure des tests associés dans le dossier `tests/`.
93+
94+
### Format des Pull Requests
95+
96+
Lors de l'ouverture d'une Pull Request, merci d'inclure :
97+
- Un lien vers l'Issue correspondante (si applicable).
98+
- Une description claire du problème résolu ou de la fonctionnalité ajoutée.
99+
- La confirmation que `ruff check` et `pytest` passent sans erreur localement.
100+
101+
## Structure du projet
102+
103+
```text
104+
api/ API FastAPI
105+
app/ Interface utilisateur
106+
configs/ Fichiers de configuration
107+
data/ Jeux de données
108+
models/ Modèles entraînés
109+
notebooks/ Expérimentations et analyses
110+
src/ Scripts et Code source
111+
tests/ Tests automatisés
112+
```
113+
114+
## Données et modèles
115+
116+
Les contributeurs doivent respecter les licences associées aux jeux de données utilisés.
117+
118+
Les poids du modèle principal sont distribués séparément lorsque nécessaire.
119+
120+
Toute contribution impliquant un nouveau jeu de données doit documenter :
121+
122+
* la source ;
123+
* la licence ;
124+
* la méthode de collecte ;
125+
* les éventuels prétraitements réalisés.
126+
127+
## Licence
128+
129+
En contribuant à ce projet, vous acceptez que votre contribution soit distribuée sous la même licence que le projet.
130+
131+
## Code de conduite
132+
133+
Les échanges doivent rester respectueux, constructifs et bienveillants.
134+
135+
Les comportements discriminatoires, insultants ou harcelants ne sont pas tolérés.
136+
137+
## Remerciements
138+
139+
Merci à toutes les personnes qui contribuent à rendre les technologies d'IA plus accessibles au service de l'agriculture africaine.

LICENSE

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Kodjo Jean DEGBEVI
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
13+
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+
SOFTWARE.

README.md

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,39 +9,67 @@ Le projet se concentre sur deux problèmes agricoles fondamentaux documentés au
99

1010
L'objectif de cette solution est de permettre une surveillance scalable sur téléphones mobiles, s'appuyant sur des travaux de recherche locaux (ESA/Université de Lomé).
1111

12+
## Sources de Données
13+
Pour des raisons de volumétrie, le répertoire `data/raw/` n'est pas versionné. Néanmoins, l'intégralité de la méthodologie de préparation et de traitement des données est publique et reproductible (voir `notebooks/` et `src/data/`). Les données s'appuient sur :
14+
- **PlantVillage** : Référence scientifique en conditions contrôlées.
15+
- **CCMT (Cassava & Maize)** : Données acquises en conditions réelles, incluant les maladies documentées localement.
16+
17+
## Bibliographie
18+
Ce projet justifie ses classes et hypothèses par la littérature ouest-africaine :
19+
- **Adjata K.D. et al. (2008)**. *Incidence of Cassava Viral Diseases ... in Togo*. American Journal of Plant Physiology.
20+
- **Koffi D., Agboka K. et al. (2020)**. *Maize Infestation of Fall Armyworm within Agro-Ecological Zones of Togo and Ghana*. Environmental Entomology.
21+
1222
## Structure du Projet
1323

1424
- `data/` : Répertoire des données (brutes et traitées).
1525
- `notebooks/` : Notebooks Jupyter.
1626
- `src/` : Scripts de traitement des données, configuration du modèle et modules spécialisés.
17-
- `api/` : Code de l'API de prédiction.
18-
- `app/` : Interface utilisateur web.
1927
- `configs/` : Fichiers YAML gérant les hyperparamètres et métadonnées du dataset.
2028
- `models/` : Poids entraînés du modèle final (Hébergés ultérieurement).
29+
- `runs/` : Expériences YOLO
30+
- `mlruns` : Expériences MLFlow
31+
- `tests/` : Tests
2132

2233
## Pipeline Technique
2334

2435
- **Modèle de Vision** : YOLOv11s (Ultralytics) — performant et optimisé.
25-
- **Tracking Expérimental** : Expériences versionnées et suivies via [Weights & Biases (W&B)](#).
26-
- **Explicabilité** : Localisation des zones de prédiction via pytorch-grad-cam pour la confiance utilisateurs.
36+
- **Tracking Expérimental** : Expériences versionnées et suivies via [MLFLow](#).
37+
- **Explicabilité** : Localisation des zones de prédiction via Grad CAM pour la confiance utilisateurs.
2738
- **Déploiement** :
2839
- API : Asynchrone sous FastAPI, packagée via Docker.
2940
- IHM : Interface finale servie par Streamlit pour un accès multi-support rapide.
3041

31-
## Guide de Démarrage
42+
## Réalisations
43+
44+
### Plan de réalisation
45+
46+
#### Développement du modèle
47+
- [x] Traitement des données
48+
- [x] Architecture ML
49+
- [x] Entraînement du classifieur
50+
- [x] Évaluation formelle du classifieur
51+
- [] Explicabilité du classifieur
52+
- [] Benchmarks
53+
54+
#### Industrialisation
55+
- [ ] Export ONNX
56+
- [ ] Développement de l'API
57+
- [ ] Interface IHM
58+
- [ ] Conteneurisation (Docker)
59+
60+
#### Mise en production
61+
- [ ] Déploiement
62+
- [ ] Monitoring
63+
- [ ] Maintenance
64+
65+
#### Documentation
66+
- [ ] Documentation technique
67+
- [ ] Guide utilisateur
68+
- [ ] Documentation API
3269

33-
### Pré-requis
34-
- Docker et Docker Compose
35-
- Python 3.1x+ pour exécution classique
70+
### Résultats actuels
3671

37-
### Installation classique
38-
Cloner le répertoire et instancier votre environnement virtuel :
39-
```bash
40-
git clone <url-du-repo>
41-
cd AgbleDo_01
42-
python -m venv agbledɔ01venv #ou source agbledɔ01venv/bin/activate
43-
pip install -r requirements.txt
44-
```
72+
- Modèle `agbledɔ01.pt` disponible sur [Hugging Face](https://huggingface.co/kjd-dktech/agbledo01)
4573

4674
---
4775

configs/model.yaml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,6 @@ lr0: 0.01 # Taux d'apprentissage initial
1818
lrf: 0.01 # Taux d'apprentissage final (lr0 * lrf)
1919
weight_decay: 0.0005 # L2 regularization
2020

21-
# --- Documentation du Class Weighting ---
22-
# J'ai calculé le déséquilibre lors de l'EDA: 1:10 environ.
23-
# Ultralytics (YOLO) calcule automatiquement les poids de classes via la fréquence
24-
# d'occurrence dans les données d'entraînement.
25-
# En l'absence de paramètre explicite comme `class_weights` en v11 via CLI,
26-
# la Focal Loss implicite et l'augmentation de données gèrent une grande partie du biais.
27-
2821
# --- Data Augmentation ---
2922
hsv_h: 0.015 # Ajustement teinte (HSV)
3023
hsv_s: 0.7 # Ajustement saturation
File renamed without changes.

docker/docker-compose.yml

Whitespace-only changes.

docker/frontend.Dockerfile

Whitespace-only changes.

0 commit comments

Comments
 (0)