Outils pour utilisateurs

Outils du site


jeu_du_semaphore_dans_le_blender_game_engine

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
jeu_du_semaphore_dans_le_blender_game_engine [2019/01/22 17:38] – [Learning] sergejeu_du_semaphore_dans_le_blender_game_engine [2020/12/27 15:06] (Version actuelle) serge
Ligne 1: Ligne 1:
 ====== Jeu du sémaphore dans le Blender Game Engine ====== ====== Jeu du sémaphore dans le Blender Game Engine ======
-<WRAP center round box 80% centeralign> + 
-**{{tagpage>semaphore|Sémaphores}}**  ....  **{{tagpage>bge|Blender Game Engine}}** ....  **{{tagpage>ia|Intelligence Artificielle}}**+<WRAP center round box 60% centeralign> 
 +**{{tagpage>ia|Intelligence Artificielle}}**     **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fjeu_du_semaphore_dans_le_blender_game_engine|English Version]]** 
 +</WRAP> 
 +<WRAP center round box 60% centeralign> 
 +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]**
 </WRAP> </WRAP>
  
-Une image pour l'apprentissage {{shot_24006_e.png?250|}}  +<WRAP center round box 60% centeralign> 
-Une image à décrypter {{shot_98_e.png?250|}}+**{{tagpage>semaphore|Sémaphores}}**  ....  **{{tagpage>bge|Blender Game Engine}}** 
 +</WRAP> 
 +<WRAP center round box 60% centeralign> 
 +C'est quoi un sémaphore ? 
 +{{ youtube>F3sY6_fOx2I?medium }} 
 +</WRAP> 
 +{{ media_05:chappe.jpeg?400 }} 
 +\\ \\ \\ 
 +<WRAP center round box 60% centeralign> 
 +Des images pour l'apprentissage\\ 
 +{{media_01:shot_0_a.png?100|}} 
 +{{media_01:shot_1_.png?100|}} 
 +{{media_01:shot_2_b.png?100|}} 
 +</WRAP>
  
-Ce jeu va permettre de générer 60 000 images avec une multitude de positions d'un sémaphore noir sur fond blanc, pour créer une **{{tagpage>ia|Intelligence Artificielle}} capable de reconnaître les signes**. Les images finales sont en gris en basse résolution 40x40 floutées, le sémaphore bouge et tourne au hasard. 
  
-Il est aussi possible de générer des images d'un vrai sémaphore à partir d'un texte saisi au clavier, avec un fond variable tiré d'un film, que l'intelligence doit reconnaître. 
  
  
-===== Principe ===== +===== Le projet sur Github ===== 
-Ce jeu lit des textes en latin, sans caractères accentués ni spéciauxChaque lettre est affiché dans le jeupuis une capture de la fenêtre est enregistrée. La fréquence est maxi de 12 fps.+  * **[[https://github.com/sergeLabo/semaphore|Sémaphore]]** 
 +  * **Réalisé sur Debian 10 Buster**ne fonctionne pas sur Win$ 
 +  * **python 3.7**
  
-====Learning==== 
-===Principe=== 
-Le Blender Game Engine 2.79 permet un affichage mini de 320x280. Les images du jeu sont donc en 320x320. Un script python3 avec opencv **[[https://github.com/sergeLabo/semaphore/blob/master/ori_to_40x40.py|ori_to_40x40.py]]** resize les images à 40x40 et les floutent. 
  
-{{:2019_01:shot_8_i.png?100|}} {{:2019_01:shot_10_k.png?100|}} +====Installation==== 
-{{:2019_01:shot_13_n.png?100|}} {{:2019_01:shot_16_q.png?100|}} +  * Blender 2.79b 
-{{:2019_01:shot_24_y.png?100|}} {{:2019_01:shot_35_i.png?100|}} +  * opencv 
-{{:2019_01:shot_38_s.png?100|}} {{:2019_01:shot_39_y.png?100|}}+  * numpy 
 +  * mon module perso pymultilame 
 + 
  
 +  sudo apt install python3-pip
 +  sudo pip3 install numpy
 +  sudo pip3 install opencv-python
 +  sudo apt install blender
 +Mon module personnel:
 +  sudo pip3 install -e git+https://github.com/sergeLabo/pymultilame.git#egg=pymultilame
 +Mise à jour:
 +  sudo pip3 install --upgrade git+https://github.com/sergeLabo/pymultilame.git#egg=pymultilame
 +  
 +====Excécution====
 +Lancer ./semaphore.sh
  
-===Le jeu=== +et faire les 5 étapes, 3 heures et demi pour 1, et un certain temps pour les autres .... 
-  * **[[https://github.com/sergeLabo/semaphore/tree/master/game_NB|game_NB]]**+ 
 +Bug connu: le treminal se ferme à la fin de la création des shots avec Blender ! Relancer le terminal et continuer avec 2 
 +===== L'intelligence du sémaphore ===== 
 +<WRAP group> 
 +<WRAP third column> 
 +Sortie Blender 320x320\\ 
 +{{media_01:shot_0_a_320.png?100|}} 
 +{{media_01:shot_1_space_320.png?100|}} 
 +{{media_01:shot_2_b_320.png?100|}} 
 +</WRAP> 
 +<WRAP third column> 
 +40x40, floue en gris\\ 
 +{{media_01:shot_0_a_gray.png?100|}} 
 +{{media_01:shot_1_space_gray.png?100|}} 
 +{{media_01:shot_2_b_gray.png?100|}} 
 +</WRAP> 
 +<WRAP third column> 
 +40x40 en Noir et Blanc\\ 
 +{{media_01:shot_0_a.png?100|}} 
 +{{media_01:shot_1_.png?100|}} 
 +{{media_01:shot_2_b.png?100|}} 
 +</WRAP> 
 +</WRAP> 
 + 
 +====1 - Création de 70 000 images==== 
 +Dans un jeu Blender, 70 000 images sont créées, 60 0000 pour entraîner l'IA, 10 000 pour la tester. 
 +Ce jeu lit soit un texte en latin de Cicéron, sans caractères accentués ni spéciaux, soit l'alphabet avec un espace. Il y a donc 27 caractères différents.  
 + 
 +Chaque lettre est affiché dans le jeu, puis une capture de la fenêtre est enregistrée. La fréquence est maxi de 6 fps, en allant plus vite l'image enregistrée n'a pas toujours la bonne lettre. Il faut plus de 3h pour récupérer ces images. 
 + 
 +<wrap em> 
 +<wrap hi> 
 +Ne jamais déplacer ou réduire la fenêtre de Blender pendant la création des images ! 
 +</wrap> 
 +</wrap> 
 +====2 - Retaillage et flou==== 
 +Le Blender Game Engine 2.79b permet un affichage mini de 320x280. Les images du jeu sont donc en 320x320. Un script python3 avec opencv resize les images à 40x40, les floutent. 
 + 
 + 
 +====3 - Compression==== 
 +Pour avoir une excécution plus rapide pour les étapes suivantes. 
 +====4 - Création du fichier de poids de l'IA==== 
 +  * **[[l_intelligence_du_semaphore|L'intelligence du sémaphore]]** 
 + 
 +====5 - Test de l'efficacité de l'IA==== 
 +Le résultat s'exprime par un pourcentage. L'objectif est d'avoir au moins 95% (de bonne reconnaissance). 
 + 
 +====6 - Modification de la configuration==== 
 +Choisir au moins 60000 images au total, avec: 
 +<WRAP group> 
 +<WRAP third column> 
 +  * training = 30000 
 +  * testing  = 30000 
 +</WRAP> 
 +<WRAP third column> 
 +  * training = 35000 
 +  * testing  = 35000  
 +</WRAP> 
 +<WRAP third column> 
 +  * training = 60000 
 +  * testing  = 10000  
 +</WRAP> 
 +</WRAP> 
 + 
 +Les meilleurs résultats sont obtenu avec: 
 +  * gray = 0 
 +  * blur = 6 
 +  * learningrate = 0.022 
 +====Recherche de la meilleure configuration possible==== 
 +**Les hyperparamètres sont tous les paramètres à optimiser : learningrate, nombre de couches, différentes méthodes d'initialisation aléatoire des poids ** 
 + 
 +  * **[[https://supportivy.com/algorithmes-doptimisation-dhyperparametre-en-python/|Algorithmes d'optimisation d'hyperparamètre en Python]]** 
 +  * http://www.datacorner.fr/tuninghpml/ 
 +  * [[https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn.model_selection.GridSearchCV|GridSearchCV]] de [[https://scikit-learn.org/stable/index.html|scikit-learn.org]] 
 +  * [[https://github.com/scikit-learn/scikit-learn|scikit-learn]] sur github.com 
 +Le fichier best_config_search.py fait ce boulot en autodidacte, mais c'est un bricolage réservé aux spélialistes qui se sont plongés dans tout le projet. 
 + 
 +====Molière==== 
 +**Le chemin est long du projet à la chose.**
  
-===Le zip des images=== 
-  * **[[https://github.com/sergeLabo/semaphore/blob/master/shot_resize.zip|60 000 Images pour l'apprentissage]]** Cliquer sur **Download** 
-==== Reconnaissance de signes ==== 
  
-En arrière plan, défile le documentaire **NOTHING TO HIDE** pour avoir un fond très varié: 
-{{ youtube>djbwzEIv7gE?medium }} 
  
-=== Le jeu === 
-  * **[[https://github.com/sergeLabo/semaphore/tree/master/game_test|game_test]]** 
-==== Le projet sur Github ==== 
-  * **[[https://github.com/sergeLabo/semaphore|Sémaphore]]** 
  
 ===== Ressources sur les sémaphores et le télégraphe de Chappe ===== ===== Ressources sur les sémaphores et le télégraphe de Chappe =====
Ligne 45: Ligne 141:
  
 ==== Un alphabet possible ==== ==== Un alphabet possible ====
-{{semaphore_am.png?300|}} {{code_a_i.jpg?300|}} {{code_j_z.jpg?300|}}+{{media_12:semaphore_am.png?200|}} {{media_05:code_a_i.jpg?200|}} {{media_05:code_j_z.jpg?200|}}
  
 ==== Notre alphabet ==== ==== Notre alphabet ====
 +**j = &**
 <WRAP group> <WRAP group>
 <WRAP quarter column> <WRAP quarter column>
-  * **a** {{shot_0_a.png?100|}} +  * **a** {{media_03:shot_0_a.png?30|}} 
-  * **b** {{shot_1_b.png?100|}} +  * **b** {{media_03:shot_1_b.png?30|}} 
-  * **c** {{shot_2_c.png?100|}} +  * **c** {{media_03:shot_2_c.png?30|}} 
-  * **d** {{shot_3_d.png?100|}} +  * **d** {{media_03:shot_3_d.png?30|}} 
-  * **e** {{shot_4_e.png?100|}} +  * **e** {{media_03:shot_4_e.png?30|}} 
-  * **f** {{shot_5_f.png?100|}} +  * **f** {{media_03:shot_5_f.png?30|}} 
-  * **g** {{shot_6_g.png?100|}}+  * **g** {{media_03:shot_6_g.png?30|}}
 </WRAP> </WRAP>
  
 <WRAP quarter column> <WRAP quarter column>
-  * **h** {{shot_7_h.png?100|}} +  * **h** {{media_03:shot_7_h.png?30|}} 
-  * **i** {{shot_8_i.png?100|}} +  * **i** {{media_03:shot_8_i.png?30|}} 
-  * **j** {{shot_9_j.png?100|}} +  * **j** {{media_03:shot_9_j.png?30|}} 
-  * **k** {{shot_10_k.png?100|}} +  * **k** {{media_03:shot_10_k.png?30|}} 
-  * **l** {{shot_11_l.png?100|}} +  * **l** {{media_03:shot_11_l.png?30|}} 
-  * **m** {{shot_12_m.png?100|}} +  * **m** {{media_03:shot_12_m.png?30|}} 
-  * **n** {{shot_13_n.png?100|}}+  * **n** {{media_03:shot_13_n.png?30|}}
 </WRAP> </WRAP>
  
 <WRAP quarter column> <WRAP quarter column>
-  * **o** {{shot_14_o.png?100|}} +  * **o** {{media_03:shot_14_o.png?30|}} 
-  * **p** {{shot_15_p.png?100|}} +  * **p** {{media_03:shot_15_p.png?30|}} 
-  * **q** {{shot_16_q.png?100|}} +  * **q** {{media_03:shot_16_q.png?30|}} 
-  * **r** {{shot_17_r.png?100|}} +  * **r** {{media_03:shot_17_r.png?30|}} 
-  * **s** {{shot_18_s.png?100|}} +  * **s** {{media_03:shot_18_s.png?30|}} 
-  * **t** {{shot_19_t.png?100|}} +  * **t** {{media_03:shot_19_t.png?30|}} 
-  * **u** {{shot_20_u.png?100|}}+  * **u** {{media_03:shot_20_u.png?30|}}
 </WRAP> </WRAP>
  
 <WRAP quarter column> <WRAP quarter column>
-  * **v** {{shot_21_v.png?100|}} +  * **v** {{media_03:shot_21_v.png?30|}} 
-  * **w** {{shot_22_w.png?100|}} +  * **w** {{media_03:shot_22_w.png?30|}} 
-  * **x** {{shot_23_x.png?100|}} +  * **x** {{media_03:shot_23_x.png?30|}} 
-  * **y** {{shot_24_y.png?100|}} +  * **y** {{media_03:shot_24_y.png?30|}} 
-  * **z** {{shot_25_z.png?100|}} +  * **z** {{media_03:shot_25_z.png?30|}} 
-  * **espace** {{shot_26_ .png?100|}}+  * **espace** {{media_03:shot_26_.png?30|}}
 </WRAP> </WRAP>
- 
 </WRAP> </WRAP>
 +
 +{{tag> bge ia sb semaphore }}
  
  
-{{tag>bge sb ia realisations_logicielles semaphore}} 
  
jeu_du_semaphore_dans_le_blender_game_engine.1548178738.txt.gz · Dernière modification : 2019/01/22 17:38 de serge