Skip to content
Snippets Groups Projects
Commit 8eae998d authored by Hudelot's avatar Hudelot
Browse files

Update Rasp

parent a2a919c9
No related branches found
No related tags found
No related merge requests found
#Prise en main de votre Raspberry
Pour ce projet, avant même de commencer les développements, il faut démarrer avec votre nano-ordinateur.
Votre première journée va donc être consacrée à cela :
- Déballer et mettre en marche votre Raspberry Pi
- [Premiers pas](https://www.raspberrypi-france.fr/premiere-utilisation-raspberry-pi/)
- [Premiers pas](https://alain-michel.canoprof.fr/eleve/tutoriels/raspberry/premiers-pas-raspberrypi/index.xhtml)
- [Guide débutant](https://the-raspberry.com/guide-debutant)
- ...
- L'utiliser de manière correcte
- [Diffuser l'écran raspberry sur un pc portable](https://forums.framboise314.fr/viewtopic.php?t=3384)
- [Diffuser l'écran raspberry sur un pc portable](http://mycoolpizza.blogspot.com/2013/07/raspberry-pi-connecter-directement-sur.html)
- Utiliser la caméra
- [Premiers pas avec la caméra ](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera).
- [OpenCV](https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/)
Vous pouvez maintenant commencez votre projet par [Sprint 0 : Reflexion autour de la conception](./Sprint0Conception.md)
\ No newline at end of file
# Fonctionnalité 3 : Structuration et constitution de la base de données
\ No newline at end of file
# Fonctionnalité 3 : Structuration et constitution de la base de données
......@@ -48,4 +48,4 @@ Ici, ce travail a été fait pour vous mais, il faudra le faire pour votre proje
Nous allons maintenant passer à l'étape de developpement par la réalisation de la [**Fonctionnalité 1** : Charger et afficher une image.](./Facerecognition_S1_displayimage.md)
Nous allons maintenant passer à l'étape de developpement par la réalisation de la [**Fonctionnalité 0** : Demarrage avec le raspberry pi.](./Facerecognition_S0.md)
......@@ -17,6 +17,18 @@ Si ce n'est pas déjà fait, [créer un projet Pycharm](./pycharm.md) que vous a
Comme vous devrez apprendre à le faire de manière systématique pour tout travail de développement informatique à plusieurs, vous devez passer le projet **`facerecognition`** sous Git.
Pour commencer, et pour comprendre git, faites le rapide tutorial disponible [ici](http://rogerdudler.github.io/git-guide/index.fr.html).
D'autres tutoriaux très bien:
+ [http://marklodato.github.io/visual-git-guide/index-en.html](http://marklodato.github.io/visual-git-guide/index-en.html)
+ [https://openclassrooms.com/fr/courses/1233741-gerez-vos-codes-source-avec-git](https://openclassrooms.com/fr/courses/1233741-gerez-vos-codes-source-avec-git)
+ ...
Puis, créer un dépôt git pour votre projet.
+ Depuis Pycharm, vous pouvez le faire depuis le menu **(`VCS | Enable Version Control Integration`)**.
+ Faire un premier `commit`contenant le fichier `__init__.py`
+ Créer un dépôt **`facerecognition`** sur GitLab qui vous servira de **depôt distant**.
......@@ -45,7 +57,28 @@ Vous allez maintenant ajouter votre binôme et votre enseignant comme collaborat
## Déposer sur GitLab
Il vous sera demandé plusieurs fois le long du projet et des séances de pousser votre code sur le dépôt distant. Pour ceux d'entre vous qui débutent, on se contentera de suivre un workflow classique sans branches, avec des `commit` sur la branche principale `master`chaque fois que cela vous est demandé et systématiquement en fin de séance. Pour ceux d'entre vous qui sont déjà très familiarisés avec git, vous pourrez adopter la démarche plus classique consistant à développer une branche par fonctionnalité et à fusionner ensuite dans la branche `master`.
Il vous sera demandé plusieurs fois le long du projet et des séances de pousser votre code sur le dépôt distant.
Pour ceux d'entre vous qui débutent, il serait plus facile de se contenter au début de suivre un workflow classique sans branches, avec des `commit` sur la branche principale `master`chaque fois que cela vous est demandé et systématiquement en fin de séance. Pour ceux d'entre vous qui sont déjà très familiarisés avec git, vous savez que la démarche plus classique consiste à développer une branche par fonctionnalité et à fusionner ensuite dans la branche `master`.
Nous allons procéder comme suit pour le projet :
+ Vous aurez un dépôt distant commun pour le binôme.
+ Chaque membre du binôme construira une branche qui lui sera proche.
```
git checkout -b projet_membre_x
git push origin projet_membre_x
```
+ A chaque fois que vous terminerez une fonctionnalité, vous procederez alors à un `merge request` avec la commande
`git merge <branch>`
+ Il vous faudra donc pour ne pas avoir trop de problèmes sur cette opération, vous mettre d'accord sur votre code (en faisant une sorte de cycle de *pair programming*.
Vous pouvez maintenant continuez par le [Sprint 0 : Analyse du problème](./Sprint0Analyse.md).
\ No newline at end of file
......@@ -2,7 +2,7 @@
L'**objectif** de ce mini-projet est de developper, de manière très incrémentale, un système de reconnaissance faciale à l'aide d'un Raspberry Pi afin de vous former aux bonnes pratiques de la programmation et à la culture de la qualité logicielle. En particulier, au travers de ce projet, vous decouvrirez plusieurs principes du mouvement dit du [*Software Craftmanship*](https://www.octo.com/fr/publications/20-culture-code).
L'**objectif** de ce mini-projet est de developper, de manière très incrémentale, un système de reconnaissance faciale à l'aide d'un Raspberry Pi afin de vous former aux bonnes pratiques de la programmation et à la culture de la qualité logicielle. Vous découvriez aussi un ensemble d'outils pour faire de la vision par ordinateur et de l'apprentissage profond. Enfin, au travers de ce projet, vous decouvrirez plusieurs principes du mouvement dit du [*Software Craftmanship*](https://www.octo.com/fr/publications/20-culture-code).
Ce projet vous permettre aussi de vous initier à la vision par ordinateur ainsi qu'aux nano-ordinateurs. Il est très largement inspiré des très bons tutorials de [Adrian Rosebrock](https://www.pyimagesearch.com/about/) sur ces différents sujets.
......@@ -20,7 +20,15 @@ Quelques exemples de sites de projets autour du Raspberry Pi :
## A propos de la reconnaissance faciale
La [reconnaissance faciale](https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_reconnaissance_faciale) est une tâche de reconnaissance visuelle qui consiste à identifier une personne à partir d'une image ou d'une vidéo de son visage. c'est une tâche qui a très longuement animé la communauté de la vision par ordinateur et pour laquelle nous avons aujourd'hui des méthodes très efficaces basées sur des techniques d'apprentissage profond et de transfert de connaissances. L'objectif de ce projet n'est pas de vous enseigner la vision par ordinateur et l'apprentissage profond mais de vous permettre de faire un projet de programmation de bout en bout et il faudra donc accepter d'utiliser des approches sans forcement les maîtriser.
La [reconnaissance faciale](https://fr.wikipedia.org/wiki/Syst%C3%A8me_de_reconnaissance_faciale) est une tâche de reconnaissance visuelle qui consiste à identifier une personne à partir d'une image ou d'une vidéo de son visage. c'est une tâche qui a très longuement animée la communauté de la vision par ordinateur et pour laquelle nous avons aujourd'hui des méthodes très efficaces basées sur des techniques d'apprentissage profond et de transfert de connaissances. Vous pouvez lire rapidement ce [tutorial](https://towardsdatascience.com/face-recognition-for-beginners-a7a9bd5eb5c2) pour comprendre dans les grandes lignes comme cela marche ou [celui là](https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78) qui est très bien aussi.
L'objectif de ce projet n'est pas de vous enseigner la vision par ordinateur et l'apprentissage profond mais de vous permettre de faire un projet de programmation de bout en bout et il faudra donc accepter d'utiliser des approches sans forcement les maîtriser. Nous nous baserons pour cela sur l'utilisation de plusieurs bibliothèques :
+ La bibliothèque [opencv](https://pypi.org/project/opencv-python/) pour la vision par ordinateur.
+ La bibliothèque [dlib](https://pypi.org/project/dlib/) pour l'apprentissage profond.
+ et d'autres...
......@@ -33,7 +41,7 @@ Ce travail de découpage a été fait pour vous mais c'est une des premières é
### **Objectif 1 (MVP): Un système simple de reconnaissance de visage** (JOUR 1)
### **Objectif 1 (MVP): Un système simple de reconnaissance de visage** (JOUR 1 et 2)
L'objectif de cette première journée est de constuire et d'implémenter une chaine algorithmique simple à l'aide de modules existants pour faire de la reconnaissance de visage (l'objectif principal de notre projet). Ce système pourrait être qualifié de **[MVP (Minimum Viable product)](https://medium.com/creative-wallonia-engine/un-mvp-nest-pas-une-version-simplifi%C3%A9e-de-votre-produit-89017ac748b0)** même s'il n'est pas porté sur Raspberry car il pourra permettre d'avoir des premiers retours utilisateurs par exemple.
......@@ -51,57 +59,25 @@ Ce concept de MVP a été introduit par Eric Ries, l'auteur de [The Lean Startup
+ [**Fonctionnalité 1** : Charger et afficher une image.](./Facerecognition_S1_displayimage.md)
+ [**Fonctionnalité 2** : Effectuer un traitement sur une image et afficher le résultat du traitement.](./Facerecognition_S1_traitement.md)
+ **Sprint 2 : Constition d'une base de données de visages**
+ **Sprint 2 : Constitution d'une base de données de visages**
+ [**Fonctionnalité 3** : Structuration et constitution de la base de données](./Facerecognition_S2_database.md)
+ **Sprint 3** : **Une module de reconnaissance visuelle par apprentissage profond**
+ [**Fonctionnalité 4** : Reconnaître un visage](./2048_S3_regles.md)
+ [**Fonctionnalité 5** : Tester la fin du jeu](./2048_S3_Finjeu.md)
+ [**Fonctionnalité 4** : Reconnaître un visage](./S3_facerecognition.md)
+ [**Fonctionnalité 5** : Tester la reconnaissanace sur la base de données](./S3_testrecognition.md)
### **Objectif 2 : (MVP) Reconnaitre un visage avec un Raspberry Pi** (JOUR 2)
### **Objectif 2 : (MVP) Reconnaitre un visage avec un Raspberry Pi** (JOUR 3)
### **Objectif 3 : Ajouter des utilisateurs : reconnaître les visages du groupe projet** (JOUR 3)
+ **Sprint 4 : Prise en main de votre Raspberry Pi**
+ [**Fonctionnalité 6** : Un Raspberry Pi en ordre de marche pour la reconnaissance visualle](./Facerecognition_S1_displayimage.md)
+ [**Fonctionnalité 2** : Effectuer un traitement sur une image et afficher le résultat du traitement.](./Facerecognition_S1_traitement.md)
### **Objectif 3 : Ajouter des utilisateurs : reconnaître les visages du groupe projet** (JOUR 4)
**<span style='color:red'>(A venir)</span>**
### **Objectif 4 : Et si on ajoutait un peu de reconnaissance vocale** (JOUR 4)
**<span style='color:red'>(A venir)</span>**
+ **Sprint 0** :
+ [Installation du socle technique.](./Sprint0Install.md)
+ [Analyse des besoins.](./Sprint0Analyse.md)
+ [Refexion autour de la conception.](./Sprint0Conception.md)
+ **Sprint 1 : Mise en place des données du jeu**
+ [**Fonctionnalité 1** : Représenter une grille de jeu.](./2048_S1_Grille.md)
+ [**Fonctionnalité 2** : Afficher une grille de jeu.](./2048_S1_Grille.md)
+ **Sprint 2** : **Actions des joueurs**
+ [**Fonctionnalité 3** : Faire jouer le joueur](./2048_S1_Donnerinstruction.md) - Donner une instruction de jeu.
+ **Sprint 3** : **Gestions des déplacements des tuiles**
+ [**Fonctionnalité 4** : Gestion des déplacements](./2048_S3_regles.md)
+ [**Fonctionnalité 5** : Tester la fin du jeu](./2048_S3_Finjeu.md)
+ **Sprint 4** : **Jouer !**
+ [**Fonctionnalité 6** : Faire jouer un joueur](./2048_S4_Playing.md)
+ [**Fonctionnalité 7** : Ajout d'un timer](./2048_S4_Timer.md)
### Objectif 2 : Un 2048 avec une interface graphique (Amélioration du MVP) (JOUR 3)
Lors du test de votre MVP, vous avez du trouver le jeu sans interface graphique assez pénible et notre objectif de la journée d'aujourd'hui est d'améliorer l'interface de notre jeu en lui ajoutant une interface graphique.
+ **Sprint 5 :**
+ [Montée en compétences : les interfaces graphiques en python](./2048_S5_GUI_Tutorial.md)
+ **Sprint 6 :** Creation de l'interface pour la grille de jeu.
+ [**Fonctionnalité 8** : Affichage de la grille de jeu dans une fenêtre Tkinter](./2048_S6_affichagegrille.md)
+ [**Fonctionnalité 9** : Permettre la configuration du jeu via l'interface graphique](./2048_S6_configgrille.md)
### Objectif 3 : Un 2048 avec gestion des joueurs, de leur score, suggestions de coups et cie (JOUR 4)
( A venir)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment