Application WildAIprint complète (front web + API Flask) connectée au modèle de classification d’empreintes animales.
Soumission d’images, inférence en temps réel, stockage des traces et restitution des informations espèces.
La documentation du projet est répartie sur deux README complémentaires :
- Ce dépôt – WildAIprint App : application front/back (interface + API Flask).
- WildAIprint – Modèle IA : entraînement et export du modèle (
model.keras) – github.com/Rateur/WildAIprint-Modele-CNN.
- À propos
1.1. Pitch & objectifs
1.2. Documentation projet - Technologies & outils
- Architecture & modules
- Installation & lancement
- API & intégration
- Structure du dépôt
- CI/CD & qualité
- Interface web permettant d’uploader une photo d’empreinte et d’obtenir une prédiction instantanée.
- Back-end Flask intégrant le modèle Keras pré-entraîné (ResNet50 fine-tuné).
- Persistance des observations (espèce, localisation, date, image) dans une base SQLite.
- API REST exposant les routes principales :
predict,tracks,animals. - Déploiement local simple via Docker Compose (2 services : front et api).
- Documentation exhaustive (contexte, parcours utilisateur, choix techniques) :
Notion – WildAIprint Documentation Projet - Complément côté IA : voir le dépôt WildAIprint – Modèle IA.
|
HTML5 |
CSS3 |
Vanilla JS |
Python 3.10+ |
|
Flask |
Docker |
SQLite |
Git & CI |
- Inference IA : chargement du modèle
model.keras(TensorFlow/Keras), mappingclass_names.json. - Suivi : scripts de tests (
test_api.py) + pipeline.gitlab-ci.yml.
- Front (HTML/CSS/JS) : formulaire d’upload, aperçu de l’image, affichage des prédictions et informations espèces.
- API Flask :
- route
/predict: traitement de l’image, préprocess, inference, réponse JSON enrichie, - routes
/tracks(POST/GET) : sauvegarde et lecture des observations, - route
/animals: catalogue des espèces avec métadonnées (infos_especes.csv).
- route
- Persistance : base SQLite
wildprint.dbinitialisée viaconnection_db.py. - Containerisation : services
frontendetapiorchestrés pardocker-compose.yml.
utilisateur → front (formulaire, fetch) → API Flask → modèle Keras → réponse JSON → affichage + stockage
Schéma répertoire
/
├── api/
│ ├── app.py
│ ├── connection_db.py
│ ├── class_names.json
│ ├── infos_especes.csv
│ ├── model.keras
│ ├── requirements.txt
│ ├── test_api.py
│ └── Dockerfile
├── front/
│ ├── index.html
│ ├── script.js
│ ├── style.css
│ ├── assets/
│ └── Dockerfile
├── docker-compose.yml
└── README.md
- Python 3.10+
- Docker (optionnel mais recommandé pour un lancement rapide)
- Navigateur récent (Chrome/Firefox)
git clone https://github.com/Rateur/wildaiprint-App.git
cd wildaiprint-Appdocker-compose build
docker-compose up- Front disponible sur
http://localhost:8080 - API accessible sur
http://localhost:5000
# Back-end
cd api
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py
# Front-end (depuis la racine ou front/)
python -m http.server 8080- Adapter le champ
API_URLdansfront/script.jssi l’API tourne sur une autre adresse/port.
| Méthode | Endpoint | Content-Type | Corps / Description |
|---|---|---|---|
POST |
/predict |
multipart/form-data |
Champ image (JPEG/PNG). Retourne l’espèce prédite + métadonnées. |
POST |
/tracks |
application/json |
{ "species": "...", "location": "...", "date": "...", "picture": "..." } |
GET |
/tracks |
application/json |
Liste paginable des observations stockées dans SQLite. |
GET |
/animals |
application/json |
Catalogue des espèces connues (nom, famille, habitat, anecdote). |
Exemple de réponse /predict
{
"animal": {
"species": "Chat",
"name": "Felis silvestris",
"family": "Mammifère",
"region": "Amérique, Europe, Asie occidentale et Afrique",
"size": "46 à 51 cm sans la queue",
"picture": "chat.jpg",
"description": "Le Chat (Felis silvestris) est une espèce de félins présent dans divers types d'habitats.",
"funfact": "Un chat ne peut pas voir directement sous son nez !"
},
"confidence": 0.87,
"class_id": 2
}/
├── api/ # API Flask + modèle IA + tests
├── front/ # Interface web statique
├── docker-compose.yml # Orchestration front/api
└── README.md # Ce guide
- Les artefacts lourds (
model.keras,class_names.json,mlruns/) sont ignorés via.gitignore. - Les notebooks et scripts d’entraînement sont disponibles dans le dépôt IA compagnon.
.gitlab-ci.yml: pipeline de build/test (Docker) utilisé sur l’infrastructure GitLab d’origine.api/test_api.py: test d’intégration simulant un appel complet à l’API/predict.- Recommandé : lancer des tests après toute modification backend (
pytest api/test_api.py).
