From eba571a936fb9c9a8bb729125f25f3de7ce5bef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Mureau?= Date: Thu, 10 Sep 2026 01:50:22 +0200 Subject: [PATCH] docs: README bilingue FR/EN Co-authored-by: Cursor --- README.fr.md | 256 ++++++++++++++++++++++++++++++++++++++++++ README.md | 310 ++++++++++++++++++++++++++------------------------- 2 files changed, 412 insertions(+), 154 deletions(-) create mode 100644 README.fr.md diff --git a/README.fr.md b/README.fr.md new file mode 100644 index 0000000..ed0e8ca --- /dev/null +++ b/README.fr.md @@ -0,0 +1,256 @@ +**Source de vérité** : https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits + +```bash +git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits.git +git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits.git +``` + +Dataset : voir `fetch-data.sh` (hors git si volumineux). + +# Projet de Traitement Big Data sur le Cloud - Fruits! + +📘 Ce projet est également disponible en [anglais 🇬🇧](./README.md) + +## 📋 Contexte du projet + +Ce projet a été réalisé dans le cadre d'une mission de consulting pour **Fruits!**, une jeune start-up AgriTech qui développe des solutions innovantes pour la récolte des fruits. L'entreprise souhaite préserver la biodiversité des fruits en permettant des traitements spécifiques pour chaque espèce grâce au développement de robots cueilleurs intelligents. + +## 🎯 Objectifs + +Compléter une chaîne de traitement d'extraction de features dans un environnement Big Data sur le cloud AWS : + +1. **Reprise des travaux** : S'approprier le notebook incomplet d'un alternant précédent +2. **Complétion de la pipeline** : Implémenter les parties manquantes (broadcast des poids, PCA distribuée) +3. **Mise en production** : Déployer la solution sur un cluster AWS EMR conforme au RGPD +4. **Optimisation des coûts** : Maintenir les coûts d'exécution sous 10€ + +L'objectif à long terme est de mettre en place un moteur de classification des images de fruits pour une application mobile de sensibilisation du grand public. + +## 📊 Données + +Le jeu de données utilisé est **Fruits-360**, disponible sur Kaggle : +- **147 691 images** de fruits de différentes variétés +- Format : 100x100 pixels, couleur +- Jeu de test spécifique : 103 images de fruits multiples +- **⚠️ Note importante** : Le jeu de données n'est pas inclus dans ce dépôt en raison de sa taille +- **URL** : https://www.kaggle.com/moltean/fruits + +## 📁 Structure du projet + +``` +├── P11_01_notebook.ipynb +├── P11_02_images/ +│ ├── Results_PCA/ # Résultats PCA au format Parquet +│ │ ├── part-00000-*.parquet +│ │ ├── part-00001-*.parquet +│ │ └── ... +│ └── test-multiple-fruits/ # Images de test (103 images) +│ ├── apple.jpg +│ ├── apples1.jpg +│ └── ... +└── P11_03_présentation.pdf +``` + +### 1. `P11_01_notebook.ipynb` + +**Notebook principal de traitement Big Data PySpark** + +Ce notebook contient la chaîne complète de traitement : + +- **Initialisation** : Configuration de la SparkSession et connexion à S3 +- **Chargement des données** : Lecture des images depuis S3 en format binaire +- **Transfer Learning** : Extraction de features via MobileNetV2 pré-entraîné sur ImageNet + - Suppression de la couche de classification finale + - Extraction de vecteurs de 1280 dimensions + - Broadcast des poids du modèle aux workers (ajout critique) +- **Réduction de dimensionnalité** : PCA distribuée avec Spark ML + - Réduction de 1280 → 70 dimensions + - Conservation de 99,94% de la variance + - Optimisation du stockage et des performances +- **Export des résultats** : Sauvegarde au format Parquet sur S3 + +**Optimisations clés implémentées** : +- Pandas UDF Scalar Iterator pour traitement par batch +- Broadcast des poids du modèle pour éviter les chargements répétitifs +- PCA distribuée avec calcul parallélisé sur le cluster + +### 2. `P11_02_images/` + +**Dossier des images et résultats** + +- **Results_PCA/** : Résultats de la réduction de dimensionnalité stockés au format Parquet distribué (20 fichiers) +- **test-multiple-fruits/** : 103 images de test variées utilisées pour valider la pipeline + +### 3. `P11_03_présentation.pdf` + +**Présentation des résultats** + +Cette présentation synthétise : +- Le contexte et les enjeux du projet +- L'architecture cloud mise en place (AWS EMR, S3, EC2) +- La configuration du cluster et les optimisations Spark +- Le pipeline algorithmique complet +- Les résultats techniques obtenus +- Les perspectives d'amélioration et de déploiement + +## 🛠️ Technologies utilisées + +### Cloud & Infrastructure +- **AWS EMR** : Cluster de calcul distribué (Spark, Hadoop) +- **AWS S3** : Stockage des données et résultats +- **AWS EC2** : Instances m5.xlarge (1 Master + 2 Workers) +- **Région EU-West-3** (Paris) : Conformité RGPD + +### Big Data & Traitement +- **PySpark** : Framework de calcul distribué +- **Hadoop** : Système de fichiers distribué +- **Spark ML** : Bibliothèque de Machine Learning distribuée + +### Machine Learning +- **TensorFlow** : Framework de deep learning +- **MobileNetV2** : Modèle de transfer learning pré-entraîné sur ImageNet +- **PCA** : Algorithme de réduction de dimensionnalité + +### Outils de développement +- **JupyterHub** : Environnement de développement sur le cluster +- **SSH Tunneling** : Accès sécurisé au cluster +- **Python 3** : Langage de programmation + +## 📈 Architecture technique + +### Configuration du Cluster EMR + +**Instances** : +- 1 nœud Master (driver Spark) - m5.xlarge +- 2 nœuds Workers (executors Spark) - m5.xlarge +- Région : eu-west-3 (Paris) + +**Logiciels installés** : +- Hadoop 3.2.1 +- Spark 3.1.2 +- JupyterHub 1.4.1 +- TensorFlow 2.4.1 + +**Bootstrap** : Installation automatique des packages Python +```bash +sudo python3 -m pip install numpy pandas pillow pyarrow fsspec s3fs +``` + +### Accès Sécurisé + +**Tunneling SSH avec Port Forwarding** : +```bash +ssh -i ./emr-keypair.pem -L 8890:localhost:8890 -L 9443:localhost:9443 hadoop@[IP-EMR] +``` +- Port 9443 : JupyterHub (développement) +- Port 8890 : Interface monitoring Spark + +**Avantages** : +- Connexion chiffrée de bout en bout +- Pas de proxy externe nécessaire +- Contrôle précis des accès + +### Pipeline de Traitement + +1. **Chargement des images** : Format binaire depuis S3, extraction des labels depuis les chemins +2. **Transfer Learning** : MobileNetV2 → features 1280 dimensions + - Broadcast des poids pour distribution efficace + - Pandas UDF Scalar Iterator pour traitement par batch +3. **PCA Distribuée** : Réduction 1280 → 70 dimensions + - Calcul distribué de la matrice de covariance + - Extraction des composantes principales + - Transformation des features +4. **Export** : Sauvegarde au format Parquet sur S3 + +## 📝 Méthodologie + +1. **Compréhension** : Analyse du notebook existant et identification des manques +2. **Développement local** : Tests et validation sur échantillon réduit +3. **Migration cloud** : Déploiement sur cluster EMR +4. **Optimisation** : Ajout du broadcast et de la PCA distribuée +5. **Validation** : Tests sur 103 images, vérification de la scalabilité + +## 💰 Gestion des coûts + +**Objectif** : < 10€ pour la validation + +**Stratégies d'optimisation** : +- Utilisation d'un cluster modeste (1 Master + 2 Workers) +- Instances m5.xlarge (compromis performance/coût) +- Tests sur échantillon réduit avant passage à l'échelle +- Arrêt du cluster après utilisation +- Serveur local pour développement et tests + +**Résultat** : Coût de validation < 5€ (moins d'1h de cluster) + +## 🎯 Résultats + +### Techniques + +- ✅ Réduction de dimensionnalité : 1280 → 70 dimensions +- ✅ Variance conservée : **99,94%** +- ✅ Facteur de compression : **x4,1** +- ✅ Pipeline complète et fonctionnelle +- ✅ Architecture scalable validée + +### Conformité + +- ✅ **RGPD** : Région EU-West-3 (Paris) +- ✅ **Sécurité** : Accès SSH, tunneling sécurisé +- ✅ **Coûts** : < 10€ pour la validation + +### Fonctionnalités implémentées + +- ✅ Broadcast des poids MobileNetV2 (manquant dans version initiale) +- ✅ PCA distribuée avec Spark ML (manquant dans version initiale) +- ✅ Optimisation mémoire avec Pandas UDF Scalar Iterator +- ✅ Export des résultats au format Parquet + +## 🚀 Perspectives + +### Court terme + +**Optimisation de la PCA** : +- 70 composantes valables pour 103 images de test +- Avec dataset complet (~150k images), ajuster le nombre de composantes k +- Tester différentes valeurs pour optimiser variance/dimensions + +**Classification finale** : +- Entraîner un modèle de classification sur les features PCA +- Évaluer les performances sur le jeu de test +- Fine-tuning du nombre de composantes + +### Moyen terme + +**Déploiement production** : +- Intégration du modèle dans l'application mobile +- Pipeline CI/CD automatisée +- Monitoring des performances en temps réel +- Gestion des versions du modèle + +### Long terme + +**Extensions futures** : +- Utilisation de l'application comme MVP marketing et technique +- Collecte de nouvelles données terrain +- Amélioration continue du modèle +- Intégration avec les robots cueilleurs intelligents + +## 🎓 Compétences développées + +- Architecture Big Data sur le cloud (AWS EMR, S3, EC2) +- Traitement distribué avec PySpark +- Transfer Learning et extraction de features +- Réduction de dimensionnalité à grande échelle +- Optimisation des performances Spark +- Gestion des coûts cloud +- Conformité RGPD pour le stockage de données + +## 👤 Auteur + +**Grégoire Mureau** +Date de réalisation : Octobre 2025 + +--- + +*Ce projet a été réalisé dans le cadre du parcours AI Engineer* diff --git a/README.md b/README.md index fcf8a43..a39ae49 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,50 @@ -**Source de vérité** : https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits +**Source of truth** : https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits ```bash git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits.git git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p11-bigdata-fruits.git ``` -Dataset : voir `fetch-data.sh` (hors git si volumineux). +Dataset: see `fetch-data.sh` (excluded from git if large). -# Projet de Traitement Big Data sur le Cloud - Fruits! +# Big Data Cloud Processing Project - Fruits! -## 📋 Contexte du projet +📘 This project is also available in [French 🇫🇷](./README.fr.md) -Ce projet a été réalisé dans le cadre d'une mission de consulting pour **Fruits!**, une jeune start-up AgriTech qui développe des solutions innovantes pour la récolte des fruits. L'entreprise souhaite préserver la biodiversité des fruits en permettant des traitements spécifiques pour chaque espèce grâce au développement de robots cueilleurs intelligents. +## 📋 Project Context -## 🎯 Objectifs +This project was carried out as part of a consulting assignment for **Fruits!**, a young AgriTech start-up developing innovative solutions for fruit harvesting. The company aims to preserve fruit biodiversity by enabling species-specific processing through the development of intelligent harvesting robots. -Compléter une chaîne de traitement d'extraction de features dans un environnement Big Data sur le cloud AWS : +## 🎯 Objectives -1. **Reprise des travaux** : S'approprier le notebook incomplet d'un alternant précédent -2. **Complétion de la pipeline** : Implémenter les parties manquantes (broadcast des poids, PCA distribuée) -3. **Mise en production** : Déployer la solution sur un cluster AWS EMR conforme au RGPD -4. **Optimisation des coûts** : Maintenir les coûts d'exécution sous 10€ +Complete a feature extraction processing pipeline in a Big Data environment on the AWS cloud: -L'objectif à long terme est de mettre en place un moteur de classification des images de fruits pour une application mobile de sensibilisation du grand public. +1. **Resuming the work** : Take over the incomplete notebook left by a previous apprentice +2. **Completing the pipeline** : Implement the missing parts (weight broadcasting, distributed PCA) +3. **Production deployment** : Deploy the solution on a GDPR-compliant AWS EMR cluster +4. **Cost optimization** : Keep execution costs under €10 -## 📊 Données +The long-term objective is to build a fruit image classification engine for a mobile app raising public awareness. -Le jeu de données utilisé est **Fruits-360**, disponible sur Kaggle : -- **147 691 images** de fruits de différentes variétés -- Format : 100x100 pixels, couleur -- Jeu de test spécifique : 103 images de fruits multiples -- **⚠️ Note importante** : Le jeu de données n'est pas inclus dans ce dépôt en raison de sa taille +## 📊 Data + +The dataset used is **Fruits-360**, available on Kaggle: +- **147,691 images** of fruits of different varieties +- Format: 100x100 pixels, color +- Specific test set: 103 images of multiple fruits +- **⚠️ Important note** : The dataset is not included in this repository due to its size - **URL** : https://www.kaggle.com/moltean/fruits -## 📁 Structure du projet +## 📁 Project Structure ``` ├── P11_01_notebook.ipynb ├── P11_02_images/ -│ ├── Results_PCA/ # Résultats PCA au format Parquet +│ ├── Results_PCA/ # PCA results in Parquet format │ │ ├── part-00000-*.parquet │ │ ├── part-00001-*.parquet │ │ └── ... -│ └── test-multiple-fruits/ # Images de test (103 images) +│ └── test-multiple-fruits/ # Test images (103 images) │ ├── apple.jpg │ ├── apples1.jpg │ └── ... @@ -51,204 +53,204 @@ Le jeu de données utilisé est **Fruits-360**, disponible sur Kaggle : ### 1. `P11_01_notebook.ipynb` -**Notebook principal de traitement Big Data PySpark** +**Main PySpark Big Data processing notebook** -Ce notebook contient la chaîne complète de traitement : +This notebook contains the complete processing pipeline: -- **Initialisation** : Configuration de la SparkSession et connexion à S3 -- **Chargement des données** : Lecture des images depuis S3 en format binaire -- **Transfer Learning** : Extraction de features via MobileNetV2 pré-entraîné sur ImageNet - - Suppression de la couche de classification finale - - Extraction de vecteurs de 1280 dimensions - - Broadcast des poids du modèle aux workers (ajout critique) -- **Réduction de dimensionnalité** : PCA distribuée avec Spark ML - - Réduction de 1280 → 70 dimensions - - Conservation de 99,94% de la variance - - Optimisation du stockage et des performances -- **Export des résultats** : Sauvegarde au format Parquet sur S3 +- **Initialization** : SparkSession configuration and S3 connection +- **Data loading** : Reading images from S3 in binary format +- **Transfer Learning** : Feature extraction via MobileNetV2 pre-trained on ImageNet + - Removal of the final classification layer + - Extraction of 1280-dimensional vectors + - Broadcasting the model weights to the workers (critical addition) +- **Dimensionality reduction** : Distributed PCA with Spark ML + - Reduction from 1280 → 70 dimensions + - 99.94% of variance retained + - Storage and performance optimization +- **Results export** : Saving in Parquet format on S3 -**Optimisations clés implémentées** : -- Pandas UDF Scalar Iterator pour traitement par batch -- Broadcast des poids du modèle pour éviter les chargements répétitifs -- PCA distribuée avec calcul parallélisé sur le cluster +**Key optimizations implemented** : +- Pandas UDF Scalar Iterator for batch processing +- Broadcasting the model weights to avoid repeated loading +- Distributed PCA with parallelized computation on the cluster ### 2. `P11_02_images/` -**Dossier des images et résultats** +**Images and results folder** -- **Results_PCA/** : Résultats de la réduction de dimensionnalité stockés au format Parquet distribué (20 fichiers) -- **test-multiple-fruits/** : 103 images de test variées utilisées pour valider la pipeline +- **Results_PCA/** : Dimensionality reduction results stored in distributed Parquet format (20 files) +- **test-multiple-fruits/** : 103 varied test images used to validate the pipeline ### 3. `P11_03_présentation.pdf` -**Présentation des résultats** +**Results presentation** -Cette présentation synthétise : -- Le contexte et les enjeux du projet -- L'architecture cloud mise en place (AWS EMR, S3, EC2) -- La configuration du cluster et les optimisations Spark -- Le pipeline algorithmique complet -- Les résultats techniques obtenus -- Les perspectives d'amélioration et de déploiement +This presentation summarizes: +- The context and challenges of the project +- The cloud architecture put in place (AWS EMR, S3, EC2) +- The cluster configuration and Spark optimizations +- The complete algorithmic pipeline +- The technical results obtained +- The improvement and deployment perspectives -## 🛠️ Technologies utilisées +## 🛠️ Technologies Used ### Cloud & Infrastructure -- **AWS EMR** : Cluster de calcul distribué (Spark, Hadoop) -- **AWS S3** : Stockage des données et résultats -- **AWS EC2** : Instances m5.xlarge (1 Master + 2 Workers) -- **Région EU-West-3** (Paris) : Conformité RGPD +- **AWS EMR** : Distributed computing cluster (Spark, Hadoop) +- **AWS S3** : Storage of data and results +- **AWS EC2** : m5.xlarge instances (1 Master + 2 Workers) +- **EU-West-3 Region** (Paris) : GDPR compliance -### Big Data & Traitement -- **PySpark** : Framework de calcul distribué -- **Hadoop** : Système de fichiers distribué -- **Spark ML** : Bibliothèque de Machine Learning distribuée +### Big Data & Processing +- **PySpark** : Distributed computing framework +- **Hadoop** : Distributed file system +- **Spark ML** : Distributed Machine Learning library ### Machine Learning -- **TensorFlow** : Framework de deep learning -- **MobileNetV2** : Modèle de transfer learning pré-entraîné sur ImageNet -- **PCA** : Algorithme de réduction de dimensionnalité +- **TensorFlow** : Deep learning framework +- **MobileNetV2** : Transfer learning model pre-trained on ImageNet +- **PCA** : Dimensionality reduction algorithm -### Outils de développement -- **JupyterHub** : Environnement de développement sur le cluster -- **SSH Tunneling** : Accès sécurisé au cluster -- **Python 3** : Langage de programmation +### Development Tools +- **JupyterHub** : Development environment on the cluster +- **SSH Tunneling** : Secure access to the cluster +- **Python 3** : Programming language -## 📈 Architecture technique +## 📈 Technical Architecture -### Configuration du Cluster EMR +### EMR Cluster Configuration **Instances** : -- 1 nœud Master (driver Spark) - m5.xlarge -- 2 nœuds Workers (executors Spark) - m5.xlarge -- Région : eu-west-3 (Paris) +- 1 Master node (Spark driver) - m5.xlarge +- 2 Worker nodes (Spark executors) - m5.xlarge +- Region: eu-west-3 (Paris) -**Logiciels installés** : +**Installed software** : - Hadoop 3.2.1 - Spark 3.1.2 - JupyterHub 1.4.1 - TensorFlow 2.4.1 -**Bootstrap** : Installation automatique des packages Python +**Bootstrap** : Automatic installation of Python packages ```bash sudo python3 -m pip install numpy pandas pillow pyarrow fsspec s3fs ``` -### Accès Sécurisé +### Secure Access -**Tunneling SSH avec Port Forwarding** : +**SSH Tunneling with Port Forwarding** : ```bash ssh -i ./emr-keypair.pem -L 8890:localhost:8890 -L 9443:localhost:9443 hadoop@[IP-EMR] ``` -- Port 9443 : JupyterHub (développement) -- Port 8890 : Interface monitoring Spark +- Port 9443: JupyterHub (development) +- Port 8890: Spark monitoring interface -**Avantages** : -- Connexion chiffrée de bout en bout -- Pas de proxy externe nécessaire -- Contrôle précis des accès +**Advantages** : +- End-to-end encrypted connection +- No external proxy required +- Precise access control -### Pipeline de Traitement +### Processing Pipeline -1. **Chargement des images** : Format binaire depuis S3, extraction des labels depuis les chemins -2. **Transfer Learning** : MobileNetV2 → features 1280 dimensions - - Broadcast des poids pour distribution efficace - - Pandas UDF Scalar Iterator pour traitement par batch -3. **PCA Distribuée** : Réduction 1280 → 70 dimensions - - Calcul distribué de la matrice de covariance - - Extraction des composantes principales - - Transformation des features -4. **Export** : Sauvegarde au format Parquet sur S3 +1. **Image loading** : Binary format from S3, label extraction from paths +2. **Transfer Learning** : MobileNetV2 → 1280-dimension features + - Broadcasting weights for efficient distribution + - Pandas UDF Scalar Iterator for batch processing +3. **Distributed PCA** : Reduction from 1280 → 70 dimensions + - Distributed computation of the covariance matrix + - Extraction of principal components + - Feature transformation +4. **Export** : Saving in Parquet format on S3 -## 📝 Méthodologie +## 📝 Methodology -1. **Compréhension** : Analyse du notebook existant et identification des manques -2. **Développement local** : Tests et validation sur échantillon réduit -3. **Migration cloud** : Déploiement sur cluster EMR -4. **Optimisation** : Ajout du broadcast et de la PCA distribuée -5. **Validation** : Tests sur 103 images, vérification de la scalabilité +1. **Understanding** : Analysis of the existing notebook and identification of gaps +2. **Local development** : Testing and validation on a reduced sample +3. **Cloud migration** : Deployment on the EMR cluster +4. **Optimization** : Adding weight broadcasting and distributed PCA +5. **Validation** : Testing on 103 images, scalability verification -## 💰 Gestion des coûts +## 💰 Cost Management -**Objectif** : < 10€ pour la validation +**Objective** : < €10 for validation -**Stratégies d'optimisation** : -- Utilisation d'un cluster modeste (1 Master + 2 Workers) -- Instances m5.xlarge (compromis performance/coût) -- Tests sur échantillon réduit avant passage à l'échelle -- Arrêt du cluster après utilisation -- Serveur local pour développement et tests +**Optimization strategies** : +- Use of a modest cluster (1 Master + 2 Workers) +- m5.xlarge instances (performance/cost trade-off) +- Testing on a reduced sample before scaling +- Shutting down the cluster after use +- Local server for development and testing -**Résultat** : Coût de validation < 5€ (moins d'1h de cluster) +**Result** : Validation cost < €5 (less than 1h of cluster time) -## 🎯 Résultats +## 🎯 Results -### Techniques +### Technical -- ✅ Réduction de dimensionnalité : 1280 → 70 dimensions -- ✅ Variance conservée : **99,94%** -- ✅ Facteur de compression : **x4,1** -- ✅ Pipeline complète et fonctionnelle -- ✅ Architecture scalable validée +- ✅ Dimensionality reduction: 1280 → 70 dimensions +- ✅ Variance retained: **99.94%** +- ✅ Compression factor: **x4.1** +- ✅ Complete and functional pipeline +- ✅ Validated scalable architecture -### Conformité +### Compliance -- ✅ **RGPD** : Région EU-West-3 (Paris) -- ✅ **Sécurité** : Accès SSH, tunneling sécurisé -- ✅ **Coûts** : < 10€ pour la validation +- ✅ **GDPR** : EU-West-3 Region (Paris) +- ✅ **Security** : SSH access, secure tunneling +- ✅ **Costs** : < €10 for validation -### Fonctionnalités implémentées +### Implemented features -- ✅ Broadcast des poids MobileNetV2 (manquant dans version initiale) -- ✅ PCA distribuée avec Spark ML (manquant dans version initiale) -- ✅ Optimisation mémoire avec Pandas UDF Scalar Iterator -- ✅ Export des résultats au format Parquet +- ✅ MobileNetV2 weight broadcasting (missing in the initial version) +- ✅ Distributed PCA with Spark ML (missing in the initial version) +- ✅ Memory optimization with Pandas UDF Scalar Iterator +- ✅ Results export in Parquet format -## 🚀 Perspectives +## 🚀 Outlook -### Court terme +### Short term -**Optimisation de la PCA** : -- 70 composantes valables pour 103 images de test -- Avec dataset complet (~150k images), ajuster le nombre de composantes k -- Tester différentes valeurs pour optimiser variance/dimensions +**PCA optimization** : +- 70 components valid for 103 test images +- With the full dataset (~150k images), adjust the number of components k +- Test different values to optimize variance/dimensions -**Classification finale** : -- Entraîner un modèle de classification sur les features PCA -- Évaluer les performances sur le jeu de test -- Fine-tuning du nombre de composantes +**Final classification** : +- Train a classification model on the PCA features +- Evaluate performance on the test set +- Fine-tuning the number of components -### Moyen terme +### Medium term -**Déploiement production** : -- Intégration du modèle dans l'application mobile -- Pipeline CI/CD automatisée -- Monitoring des performances en temps réel -- Gestion des versions du modèle +**Production deployment** : +- Integration of the model into the mobile application +- Automated CI/CD pipeline +- Real-time performance monitoring +- Model version management -### Long terme +### Long term -**Extensions futures** : -- Utilisation de l'application comme MVP marketing et technique -- Collecte de nouvelles données terrain -- Amélioration continue du modèle -- Intégration avec les robots cueilleurs intelligents +**Future extensions** : +- Using the application as a marketing and technical MVP +- Collecting new field data +- Continuous model improvement +- Integration with intelligent harvesting robots -## 🎓 Compétences développées +## 🎓 Skills Developed -- Architecture Big Data sur le cloud (AWS EMR, S3, EC2) -- Traitement distribué avec PySpark -- Transfer Learning et extraction de features -- Réduction de dimensionnalité à grande échelle -- Optimisation des performances Spark -- Gestion des coûts cloud -- Conformité RGPD pour le stockage de données +- Big Data architecture on the cloud (AWS EMR, S3, EC2) +- Distributed processing with PySpark +- Transfer Learning and feature extraction +- Large-scale dimensionality reduction +- Spark performance optimization +- Cloud cost management +- GDPR compliance for data storage -## 👤 Auteur +## 👤 Author **Grégoire Mureau** -Date de réalisation : Octobre 2025 +Completion date: October 2025 --- -*Ce projet a été réalisé dans le cadre du parcours AI Engineer* +*This project was carried out as part of the AI Engineer program*