diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 453403c..c79eed9 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -50,7 +50,7 @@ jobs: run: | set -eu REGISTRY="${GITHUB_SERVER_URL#https://}" - IMAGE="${REGISTRY}/grgmro/oc-p08-street-vision" + IMAGE="${REGISTRY}/openclassroom-ai/oc-p08-street-vision" SHORT_SHA="$(echo "${GITHUB_SHA}" | cut -c1-12)" export DOCKER_BUILDKIT=0 docker build \ @@ -74,7 +74,7 @@ jobs: fi echo "${DOCKER_HUB_TOKEN}" | docker login docker.io -u "${DOCKER_HUB_USER}" --password-stdin SHORT_SHA="$(echo "${GITHUB_SHA}" | cut -c1-12)" - SRC="${GITHUB_SERVER_URL#https://}/grgmro/oc-p08-street-vision" + SRC="${GITHUB_SERVER_URL#https://}/openclassroom-ai/oc-p08-street-vision" DST="docker.io/${DOCKER_HUB_USER}/street-vision_api" docker tag "${SRC}:latest" "${DST}:latest" docker tag "${SRC}:latest" "${DST}:${SHORT_SHA}" diff --git a/README.MD b/README.MD index dca04d5..aa3e84e 100644 --- a/README.MD +++ b/README.MD @@ -1,289 +1,289 @@ -# 🚗 Segmentation Multi-Classes pour VĂ©hicules Autonomes - -**Source de vĂ©ritĂ©** : [Forgejo](https://git.gregoiremureau.com/grgmro/oc-p08-street-vision) (auto-hĂ©bergĂ©). - -```bash -git clone https://git.gregoiremureau.com/grgmro/oc-p08-street-vision.git -git clone https://git.gregoiremureau.com/grgmro/oc-p08-street-vision.git -``` - -Prod : https://api.gregoiremureau.com/ml/street-vision/ - -Dataset complet : `./fetch-data.sh` (Cityscapes **hors** git ; petit Ă©chantillon dĂ©jĂ  dans `notebooks/content/data/`). - -## 📋 Description du Projet - -Ce projet dĂ©veloppe un systĂšme de segmentation sĂ©mantique d'images de rue destinĂ© aux vĂ©hicules autonomes. Il permet l'identification et la segmentation automatique de diffĂ©rents Ă©lĂ©ments urbains : vĂ©hicules, piĂ©tons, mobilier urbain, infrastructure routiĂšre, etc. - -Le systĂšme s'inscrit dans une chaĂźne complĂšte de vision par ordinateur embarquĂ©e pour l'automobile autonome, traitant les images en temps rĂ©el pour alimenter les systĂšmes de dĂ©cision. - -## đŸ—‚ïž Structure du Projet - -``` -├── notebooks/ -│ ├── p8_notebook.ipynb # Notebook principal d'entraĂźnement des modĂšles -│ └── content/ -│ └── data/ -│ ├── new_images_to_predict/ # Images diverses pour tests d'infĂ©rence -│ └── test_images_sample/ # Échantillon Cityscapes avec masques -├── utils/ -│ └── utils.py # Fonctions communes (prĂ©traitement, chargement, infĂ©rence) -├── app/ # API et Interface Web -│ ├── main.py # API FastAPI avec routes de segmentation -│ ├── streamlit_app.py # Interface web interactive -│ └── requirements.txt # DĂ©pendances pour l'API et l'interface -├── cityscapes_config.json # Configuration des classes Cityscapes -├── .env.example # Template de variables d'environnement -├── Dockerfile # Configuration Docker -├── docker-compose.yml.example # Template Docker Compose -├── nginx.conf # Configuration reverse proxy -├── start.sh # Script de dĂ©marrage des services -├── .dockerignore # Optimisation du build Docker -└── README.md -``` - -> **Note** : Les modĂšles entraĂźnĂ©s sont stockĂ©s et versionnĂ©s via **MLFlow** avec artefacts sur **MinIO**, pas en local. - -**État actuel du dĂ©veloppement :** -- ✅ **EntraĂźnement des modĂšles** : Complet (notebook + MLFlow + MinIO) -- ✅ **Fonctions d'infĂ©rence** : DĂ©veloppĂ©es et prĂȘtes -- ✅ **API FastAPI** : API complĂšte avec endpoints de segmentation -- ✅ **Interface Web** : Interface Streamlit pour upload et visualisation -- ✅ **DĂ©ploiement** : Conteneurisation Docker complĂšte + reverse proxy nginx - -## đŸ·ïž Classes de Segmentation - -Le modĂšle identifie **8 catĂ©gories principales** : - -1. **Route** - ChaussĂ©e et surfaces roulantes -2. **Trottoir** - Zones piĂ©tonnes -3. **BĂątiments** - Structures architecturales -4. **VĂ©gĂ©tation** - Arbres, buissons, espaces verts -5. **VĂ©hicules** - Voitures, camions, bus -6. **Personnes** - PiĂ©tons, cyclistes -7. **Signalisation** - Panneaux, feux de circulation -8. **Mobilier urbain** - Poteaux, barriĂšres, abribus - -## 🧠 Architecture Technique - -### ModĂšles ImplĂ©mentĂ©s -Utilisation de la bibliothĂšque **[segmentation_models](https://github.com/qubvel/segmentation_models)** de qubvel pour l'implĂ©mentation des architectures. - -**Architectures principales :** -- **U-Net** : Architecture encoder-decoder classique -- **FPN** (Feature Pyramid Network) : RĂ©seau Ă  pyramide de caractĂ©ristiques - -**Backbones testĂ©s :** -```python -# ModĂšles avec backbones par dĂ©faut -('U-Net', None) # Backbone U-Net intĂ©grĂ© -('FPN', None) # Backbone VGG16 par dĂ©faut - -# ModĂšles avec backbones prĂ©-entraĂźnĂ©s (encodeurs gelĂ©s) -('U-Net', 'mobilenetv2') -('U-Net', 'efficientnetb0') -('FPN', 'mobilenetv2') -('FPN', 'efficientnetb0') -('FPN', 'resnet34') - -# Fine-tuning sĂ©lectif (encodeurs entraĂźnables) -('U-Net', 'mobilenetv2') -('FPN', 'efficientnetb0') -('FPN', 'resnet34') -``` - -**StratĂ©gies d'entraĂźnement :** -- **Encodeurs gelĂ©s** : Transfer learning avec features prĂ©-entraĂźnĂ©es figĂ©es -- **Fine-tuning** : Ajustement fin des encodeurs prĂ©-entraĂźnĂ©s -- **EntraĂźnement from scratch** : Sans prĂ©-entraĂźnement (backbones par dĂ©faut) - -### Stack Technologique -- **Framework** : Keras/TensorFlow -- **Architectures** : [segmentation_models](https://github.com/qubvel/segmentation_models) (qubvel) -- **Gestion des expĂ©riences** : MLFlow -- **Stockage des artefacts** : MinIO (S3-compatible) -- **API** : FastAPI avec validation Pydantic -- **Interface** : Streamlit pour l'interaction utilisateur -- **Reverse Proxy** : nginx pour routage API/Interface -- **DĂ©ploiement** : Docker + NAS personnel *(solutions souveraines)* - -## 📊 Dataset - -- **Source** : Cityscapes Dataset -- **Organisation locale** : - - `notebooks/content/data/test_images_sample/` : Échantillon avec masques de vĂ©ritĂ© pour tests d'infĂ©rence - - `notebooks/content/data/new_images_to_predict/` : Images de test diverses pour validation - -## 🚀 Installation et Configuration - -### Option 1: DĂ©ploiement Docker (RecommandĂ©) - -#### Configuration rapide -```bash -# Cloner le projet -git clone https://git.gregoiremureau.com/grgmro/oc-p08-street-vision.git -cd oc-p08-street-vision - -# Copier et adapter la configuration -cp .env.example .env -cp docker-compose.yml.example docker-compose.yml - -# Éditer les variables d'environnement -nano .env -``` - -#### Variables d'environnement requises -```bash -# Configuration du serveur -NGINX_PORT=8080 - -# Configuration MLflow -MLFLOW_TRACKING_URI=http://localhost:5000 -MLFLOW_S3_ENDPOINT_URL=http://localhost:9000 -AWS_ACCESS_KEY_ID=your_access_key -AWS_SECRET_ACCESS_KEY=your_secret_key - -# URL de base de l'API (pour Streamlit) -MULTISEG_API_BASE_URL=http://localhost:8080/api -``` - -#### DĂ©ploiement -```bash -# Construction et lancement -docker-compose up --build - -# Ou en arriĂšre-plan -docker-compose up -d --build - -# AccĂšs Ă  l'application -# Interface web: http://localhost:8080 -# API docs: http://localhost:8080/api/docs -# Health check: http://localhost:8080/health -``` - -#### Test local sans docker-compose -```bash -# Lancement avec port personnalisĂ© -docker build -t multiseg-api . -docker run -p 3000:3000 \ - -e NGINX_PORT=3000 \ - -e MLFLOW_TRACKING_URI=http://host.docker.internal:5000 \ - -e MULTISEG_API_BASE_URL=http://localhost:3000/api \ - multiseg-api -``` - -### Option 2: Installation Locale (DĂ©veloppement) - -#### Pour l'expĂ©rimentation et l'entraĂźnement -```bash -cd notebooks -pip install -r requirements.txt -``` - -#### Pour l'API uniquement -```bash -cd app -pip install -r requirements.txt - -# Lancement manuel des services -# Terminal 1: FastAPI -uvicorn app.main:app --host 0.0.0.0 --port 8000 - -# Terminal 2: Streamlit -streamlit run app/streamlit_app.py --server.port 8501 -``` - -## 🌐 Utilisation de l'API - -### Endpoints Principaux - -#### Segmentation d'image -```bash -# Upload et segmentation via curl -curl -X POST "http://localhost:8080/api/segment" \ - -F "file=@image.jpg" \ - -F "model_name=unet_mobilenetv2" \ - -F "confidence_threshold=0.5" -``` - -#### Informations sur les modĂšles -```bash -# Liste des modĂšles disponibles -curl "http://localhost:8080/api/models" - -# DĂ©tails d'un modĂšle -curl "http://localhost:8080/api/models/unet_mobilenetv2" -``` - -#### Monitoring -```bash -# Health check -curl "http://localhost:8080/health" - -# MĂ©triques API -curl "http://localhost:8080/api/metrics" -``` - -### Interface Web - -L'interface Streamlit accessible sur `http://localhost:8080` permet : -- **Upload d'images** par glisser-dĂ©poser ou sĂ©lection -- **SĂ©lection du modĂšle** parmi les modĂšles disponibles -- **Ajustement des paramĂštres** (seuil de confiance, etc.) -- **Visualisation** des rĂ©sultats avec overlay des segmentations -- **TĂ©lĂ©chargement** des masques de segmentation - -## 🔧 Architecture de DĂ©ploiement - -### Structure des Services -``` -┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ -│ nginx:8080 │────│ FastAPI:8000 │────│ MLFlow/MinIO │ -│ (Reverse Proxy)│ │ (API Backend) │ │ (Model Storage) │ -└─────────┬───────┘ └──────────────────┘ └─────────────────┘ - │ -┌─────────▌───────┐ -│ Streamlit:8501 │ -│ (Web Interface) │ -└─────────────────┘ -``` - -### Volumes et Persistance -- **ModĂšles** : TĂ©lĂ©chargĂ©s depuis MLFlow/MinIO au dĂ©marrage -- **Uploads temporaires** : Stockage en mĂ©moire (pas de persistance) -- **Logs** : Accessibles via `docker-compose logs` - -### Monitoring et Logs -```bash -# Logs en temps rĂ©el -docker-compose logs -f - -# Logs d'un service spĂ©cifique -docker-compose logs -f multiseg-api - -# MĂ©triques de performance -curl http://localhost:8080/api/metrics -``` - -## 🔼 AmĂ©liorations Futures - -### ModĂšles et Performance -- **PrĂ©traitement adaptatif** : PrĂ©traitement spĂ©cifique Ă  chaque backbone au lieu de la normalisation gĂ©nĂ©rique -- **Optimisation temps rĂ©el** : AmĂ©lioration des performances d'infĂ©rence pour dĂ©ploiement embarquĂ© -- **RĂ©solution d'entraĂźnement amĂ©liorĂ©e** : L'API accepte toutes les rĂ©solutions d'images, mais l'entraĂźnement a Ă©tĂ© effectuĂ© sur des images redimensionnĂ©es Ă  224x224. Un rĂ©entraĂźnement sur des rĂ©solutions supĂ©rieures (512x512, 1024x1024) pourrait amĂ©liorer la prĂ©cision en capturant plus de dĂ©tails fins, au prix d'une augmentation des besoins en puissance de calcul -- **Transfer learning ciblĂ©** : Utilisation de backbones prĂ©-entraĂźnĂ©s sur Mapillary Vistas - -### Infrastructure et DĂ©ploiement -- **Scaling horizontal** : Support Kubernetes pour dĂ©ploiement multi-instances -- **Cache intelligent** : Mise en cache des prĂ©dictions pour images similaires -- **API Gateway** : IntĂ©gration d'un gateway pour authentification et rate limiting -- **Monitoring avancĂ©** : IntĂ©gration Prometheus/Grafana pour mĂ©triques dĂ©taillĂ©es - -### DonnĂ©es et GĂ©nĂ©ralisation -- **GĂ©nĂ©ralisation des conditions** : Extension au-delĂ  des conditions urbaines de Cityscapes -- **Segmentation des personnes** : AmĂ©lioration de l'IoU via data augmentation (IA gĂ©nĂ©rative) -- **Datasets additionnels** : IntĂ©gration de datasets complĂ©mentaires pour robustesse - ---- - -*Projet dĂ©veloppĂ© dans une approche de souverainetĂ© technologique, privilĂ©giant les solutions open-source et l'hĂ©bergement sur infrastructure personnelle.* +# 🚗 Segmentation Multi-Classes pour VĂ©hicules Autonomes + +**Source de vĂ©ritĂ©** : [Forgejo](https://git.gregoiremureau.com/openclassroom-ai/oc-p08-street-vision) (auto-hĂ©bergĂ©). + +```bash +git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p08-street-vision.git +git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p08-street-vision.git +``` + +Prod : https://api.gregoiremureau.com/ml/street-vision/ + +Dataset complet : `./fetch-data.sh` (Cityscapes **hors** git ; petit Ă©chantillon dĂ©jĂ  dans `notebooks/content/data/`). + +## 📋 Description du Projet + +Ce projet dĂ©veloppe un systĂšme de segmentation sĂ©mantique d'images de rue destinĂ© aux vĂ©hicules autonomes. Il permet l'identification et la segmentation automatique de diffĂ©rents Ă©lĂ©ments urbains : vĂ©hicules, piĂ©tons, mobilier urbain, infrastructure routiĂšre, etc. + +Le systĂšme s'inscrit dans une chaĂźne complĂšte de vision par ordinateur embarquĂ©e pour l'automobile autonome, traitant les images en temps rĂ©el pour alimenter les systĂšmes de dĂ©cision. + +## đŸ—‚ïž Structure du Projet + +``` +├── notebooks/ +│ ├── p8_notebook.ipynb # Notebook principal d'entraĂźnement des modĂšles +│ └── content/ +│ └── data/ +│ ├── new_images_to_predict/ # Images diverses pour tests d'infĂ©rence +│ └── test_images_sample/ # Échantillon Cityscapes avec masques +├── utils/ +│ └── utils.py # Fonctions communes (prĂ©traitement, chargement, infĂ©rence) +├── app/ # API et Interface Web +│ ├── main.py # API FastAPI avec routes de segmentation +│ ├── streamlit_app.py # Interface web interactive +│ └── requirements.txt # DĂ©pendances pour l'API et l'interface +├── cityscapes_config.json # Configuration des classes Cityscapes +├── .env.example # Template de variables d'environnement +├── Dockerfile # Configuration Docker +├── docker-compose.yml.example # Template Docker Compose +├── nginx.conf # Configuration reverse proxy +├── start.sh # Script de dĂ©marrage des services +├── .dockerignore # Optimisation du build Docker +└── README.md +``` + +> **Note** : Les modĂšles entraĂźnĂ©s sont stockĂ©s et versionnĂ©s via **MLFlow** avec artefacts sur **MinIO**, pas en local. + +**État actuel du dĂ©veloppement :** +- ✅ **EntraĂźnement des modĂšles** : Complet (notebook + MLFlow + MinIO) +- ✅ **Fonctions d'infĂ©rence** : DĂ©veloppĂ©es et prĂȘtes +- ✅ **API FastAPI** : API complĂšte avec endpoints de segmentation +- ✅ **Interface Web** : Interface Streamlit pour upload et visualisation +- ✅ **DĂ©ploiement** : Conteneurisation Docker complĂšte + reverse proxy nginx + +## đŸ·ïž Classes de Segmentation + +Le modĂšle identifie **8 catĂ©gories principales** : + +1. **Route** - ChaussĂ©e et surfaces roulantes +2. **Trottoir** - Zones piĂ©tonnes +3. **BĂątiments** - Structures architecturales +4. **VĂ©gĂ©tation** - Arbres, buissons, espaces verts +5. **VĂ©hicules** - Voitures, camions, bus +6. **Personnes** - PiĂ©tons, cyclistes +7. **Signalisation** - Panneaux, feux de circulation +8. **Mobilier urbain** - Poteaux, barriĂšres, abribus + +## 🧠 Architecture Technique + +### ModĂšles ImplĂ©mentĂ©s +Utilisation de la bibliothĂšque **[segmentation_models](https://github.com/qubvel/segmentation_models)** de qubvel pour l'implĂ©mentation des architectures. + +**Architectures principales :** +- **U-Net** : Architecture encoder-decoder classique +- **FPN** (Feature Pyramid Network) : RĂ©seau Ă  pyramide de caractĂ©ristiques + +**Backbones testĂ©s :** +```python +# ModĂšles avec backbones par dĂ©faut +('U-Net', None) # Backbone U-Net intĂ©grĂ© +('FPN', None) # Backbone VGG16 par dĂ©faut + +# ModĂšles avec backbones prĂ©-entraĂźnĂ©s (encodeurs gelĂ©s) +('U-Net', 'mobilenetv2') +('U-Net', 'efficientnetb0') +('FPN', 'mobilenetv2') +('FPN', 'efficientnetb0') +('FPN', 'resnet34') + +# Fine-tuning sĂ©lectif (encodeurs entraĂźnables) +('U-Net', 'mobilenetv2') +('FPN', 'efficientnetb0') +('FPN', 'resnet34') +``` + +**StratĂ©gies d'entraĂźnement :** +- **Encodeurs gelĂ©s** : Transfer learning avec features prĂ©-entraĂźnĂ©es figĂ©es +- **Fine-tuning** : Ajustement fin des encodeurs prĂ©-entraĂźnĂ©s +- **EntraĂźnement from scratch** : Sans prĂ©-entraĂźnement (backbones par dĂ©faut) + +### Stack Technologique +- **Framework** : Keras/TensorFlow +- **Architectures** : [segmentation_models](https://github.com/qubvel/segmentation_models) (qubvel) +- **Gestion des expĂ©riences** : MLFlow +- **Stockage des artefacts** : MinIO (S3-compatible) +- **API** : FastAPI avec validation Pydantic +- **Interface** : Streamlit pour l'interaction utilisateur +- **Reverse Proxy** : nginx pour routage API/Interface +- **DĂ©ploiement** : Docker + NAS personnel *(solutions souveraines)* + +## 📊 Dataset + +- **Source** : Cityscapes Dataset +- **Organisation locale** : + - `notebooks/content/data/test_images_sample/` : Échantillon avec masques de vĂ©ritĂ© pour tests d'infĂ©rence + - `notebooks/content/data/new_images_to_predict/` : Images de test diverses pour validation + +## 🚀 Installation et Configuration + +### Option 1: DĂ©ploiement Docker (RecommandĂ©) + +#### Configuration rapide +```bash +# Cloner le projet +git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p08-street-vision.git +cd oc-p08-street-vision + +# Copier et adapter la configuration +cp .env.example .env +cp docker-compose.yml.example docker-compose.yml + +# Éditer les variables d'environnement +nano .env +``` + +#### Variables d'environnement requises +```bash +# Configuration du serveur +NGINX_PORT=8080 + +# Configuration MLflow +MLFLOW_TRACKING_URI=http://localhost:5000 +MLFLOW_S3_ENDPOINT_URL=http://localhost:9000 +AWS_ACCESS_KEY_ID=your_access_key +AWS_SECRET_ACCESS_KEY=your_secret_key + +# URL de base de l'API (pour Streamlit) +MULTISEG_API_BASE_URL=http://localhost:8080/api +``` + +#### DĂ©ploiement +```bash +# Construction et lancement +docker-compose up --build + +# Ou en arriĂšre-plan +docker-compose up -d --build + +# AccĂšs Ă  l'application +# Interface web: http://localhost:8080 +# API docs: http://localhost:8080/api/docs +# Health check: http://localhost:8080/health +``` + +#### Test local sans docker-compose +```bash +# Lancement avec port personnalisĂ© +docker build -t multiseg-api . +docker run -p 3000:3000 \ + -e NGINX_PORT=3000 \ + -e MLFLOW_TRACKING_URI=http://host.docker.internal:5000 \ + -e MULTISEG_API_BASE_URL=http://localhost:3000/api \ + multiseg-api +``` + +### Option 2: Installation Locale (DĂ©veloppement) + +#### Pour l'expĂ©rimentation et l'entraĂźnement +```bash +cd notebooks +pip install -r requirements.txt +``` + +#### Pour l'API uniquement +```bash +cd app +pip install -r requirements.txt + +# Lancement manuel des services +# Terminal 1: FastAPI +uvicorn app.main:app --host 0.0.0.0 --port 8000 + +# Terminal 2: Streamlit +streamlit run app/streamlit_app.py --server.port 8501 +``` + +## 🌐 Utilisation de l'API + +### Endpoints Principaux + +#### Segmentation d'image +```bash +# Upload et segmentation via curl +curl -X POST "http://localhost:8080/api/segment" \ + -F "file=@image.jpg" \ + -F "model_name=unet_mobilenetv2" \ + -F "confidence_threshold=0.5" +``` + +#### Informations sur les modĂšles +```bash +# Liste des modĂšles disponibles +curl "http://localhost:8080/api/models" + +# DĂ©tails d'un modĂšle +curl "http://localhost:8080/api/models/unet_mobilenetv2" +``` + +#### Monitoring +```bash +# Health check +curl "http://localhost:8080/health" + +# MĂ©triques API +curl "http://localhost:8080/api/metrics" +``` + +### Interface Web + +L'interface Streamlit accessible sur `http://localhost:8080` permet : +- **Upload d'images** par glisser-dĂ©poser ou sĂ©lection +- **SĂ©lection du modĂšle** parmi les modĂšles disponibles +- **Ajustement des paramĂštres** (seuil de confiance, etc.) +- **Visualisation** des rĂ©sultats avec overlay des segmentations +- **TĂ©lĂ©chargement** des masques de segmentation + +## 🔧 Architecture de DĂ©ploiement + +### Structure des Services +``` +┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ +│ nginx:8080 │────│ FastAPI:8000 │────│ MLFlow/MinIO │ +│ (Reverse Proxy)│ │ (API Backend) │ │ (Model Storage) │ +└─────────┬───────┘ └──────────────────┘ └─────────────────┘ + │ +┌─────────▌───────┐ +│ Streamlit:8501 │ +│ (Web Interface) │ +└─────────────────┘ +``` + +### Volumes et Persistance +- **ModĂšles** : TĂ©lĂ©chargĂ©s depuis MLFlow/MinIO au dĂ©marrage +- **Uploads temporaires** : Stockage en mĂ©moire (pas de persistance) +- **Logs** : Accessibles via `docker-compose logs` + +### Monitoring et Logs +```bash +# Logs en temps rĂ©el +docker-compose logs -f + +# Logs d'un service spĂ©cifique +docker-compose logs -f multiseg-api + +# MĂ©triques de performance +curl http://localhost:8080/api/metrics +``` + +## 🔼 AmĂ©liorations Futures + +### ModĂšles et Performance +- **PrĂ©traitement adaptatif** : PrĂ©traitement spĂ©cifique Ă  chaque backbone au lieu de la normalisation gĂ©nĂ©rique +- **Optimisation temps rĂ©el** : AmĂ©lioration des performances d'infĂ©rence pour dĂ©ploiement embarquĂ© +- **RĂ©solution d'entraĂźnement amĂ©liorĂ©e** : L'API accepte toutes les rĂ©solutions d'images, mais l'entraĂźnement a Ă©tĂ© effectuĂ© sur des images redimensionnĂ©es Ă  224x224. Un rĂ©entraĂźnement sur des rĂ©solutions supĂ©rieures (512x512, 1024x1024) pourrait amĂ©liorer la prĂ©cision en capturant plus de dĂ©tails fins, au prix d'une augmentation des besoins en puissance de calcul +- **Transfer learning ciblĂ©** : Utilisation de backbones prĂ©-entraĂźnĂ©s sur Mapillary Vistas + +### Infrastructure et DĂ©ploiement +- **Scaling horizontal** : Support Kubernetes pour dĂ©ploiement multi-instances +- **Cache intelligent** : Mise en cache des prĂ©dictions pour images similaires +- **API Gateway** : IntĂ©gration d'un gateway pour authentification et rate limiting +- **Monitoring avancĂ©** : IntĂ©gration Prometheus/Grafana pour mĂ©triques dĂ©taillĂ©es + +### DonnĂ©es et GĂ©nĂ©ralisation +- **GĂ©nĂ©ralisation des conditions** : Extension au-delĂ  des conditions urbaines de Cityscapes +- **Segmentation des personnes** : AmĂ©lioration de l'IoU via data augmentation (IA gĂ©nĂ©rative) +- **Datasets additionnels** : IntĂ©gration de datasets complĂ©mentaires pour robustesse + +--- + +*Projet dĂ©veloppĂ© dans une approche de souverainetĂ© technologique, privilĂ©giant les solutions open-source et l'hĂ©bergement sur infrastructure personnelle.*