Outils pour utilisateurs

Outils du site


yolo_darknet_avec_un_vrai_semaphore

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édentes Révision précédente
Prochaine révision
Révision précédente
yolo_darknet_avec_un_vrai_semaphore [2019/05/06 17:34]
serge
yolo_darknet_avec_un_vrai_semaphore [2020/02/04 17:43] (Version actuelle)
serge ↷ Liens modifiés en raison d'un déplacement.
Ligne 3: Ligne 3:
 **{{tagpage>​semaphore|Sémaphores}}** ​ ....  **{{tagpage>​bge|Blender Game Engine}}** ....  **{{tagpage>​ia|Intelligence Artificielle}}** **{{tagpage>​semaphore|Sémaphores}}** ​ ....  **{{tagpage>​bge|Blender Game Engine}}** ....  **{{tagpage>​ia|Intelligence Artificielle}}**
 </​WRAP>​ </​WRAP>​
-<WRAP center round box 60% centeralign>​+ 
 +<WRAP group> 
 +<WRAP half column>​ 
 +<WRAP center round box 95% centeralign>​
 C'est quoi un sémaphore ? C'est quoi un sémaphore ?
 {{ youtube>​F3sY6_fOx2I?​medium }} {{ youtube>​F3sY6_fOx2I?​medium }}
 {{ :​chappe.jpeg?​400 }} {{ :​chappe.jpeg?​400 }}
 </​WRAP>​ </​WRAP>​
-\\ \\  +</​WRAP>​ 
-<WRAP center round box 80% centeralign>​+ 
 +<WRAP half column> 
 +<WRAP center round box 95% centeralign>​
 //​**Reconnaissance d'un vrai sémaphore avec YOLO Darknet**//​\\ //​**Reconnaissance d'un vrai sémaphore avec YOLO Darknet**//​\\
 </​WRAP>​ </​WRAP>​
-{{ :2019_05:​shot_106_y.png?​600 |}}+{{ media_03:​shot_106_y.png?​400 |}} 
 +Ce sémaphore est une image virtuelle ! 
 +</​WRAP>​ 
 +</​WRAP>​
  
 =====Suite et fin===== =====Suite et fin=====
-[[y:yolo_darknet_sur_un_portable_optimus|Yolo Darknet sur un portable Optimus]]+De **[[yolo_darknet_sur_un_portable_optimus|Yolo Darknet sur un portable Optimus]]**
  
 +Un sémaphore a été construit dans le monde réel avec des pièces réalisées sur Imprimante 3D.
 +Ce projet crée ce même sémaphore dans le Blender Game Engine donc dans un monde virtuel dans lequel je suis dieu tout puissant. Ce sémaphore est parfait.
 +Cela permet d'​obtenir 60 000 images pour l'​apprentissage et le test de l'​intelligence de Yolo Darknet V3.
 +Le BGE permet de faire varier les éclairage et leur couleurs, de le faire bouger et donner du random sur les angles des bras.
 +
 +Par contre, le BGE ne permet une sortie d'​image qu'en png. Il faut les convertir en jpg et les flouter en convolutive.
  
 =====Les sources sur GitHub===== =====Les sources sur GitHub=====
-  * [[https://​github.com/​sergeLabo/​semaphore_blend_yolo|semaphore_blend_yolo]]+  ​* **[[https://​github.com/​sergeLabo/​semaphore_blend_yolo|semaphore_blend_yolo]]** 
 +=====Installation===== 
 +Voir 
 +  * [[yolo_darknet_sur_un_portable_optimus#​installation_de_cuda_100_sur_xubuntu_1804|Cuda]] 
 +  * [[yolo_darknet_sur_un_portable_optimus#​installation_de_yolo_darknet|Darknet]] 
 + 
 +Blender 2.79b mais pas 2.80 qui n'a plus de BGE. Sur Xubuntu 18.04: 
 +  sudo apt-get install blender 
 +=====Fabrication des images===== 
 +Avec le lanceur create_shot.sh 
 + 
 +Important: Ne pas déplacer ou agrandir la fenêtre de Blender pendant que les 
 +images défilent. 
 + 
 +===Contrôle de la pertinence des fichiers txt=== 
 +Avec le script control.py du dossier control, en modifiant les chemins. 
 + 
 +===Conversion en jpg=== 
 +Avec convert_png_to_jpg.py,​ en modifiant les chemins. 
 + 
 +===Ajout d'un flou convolutionnel=== 
 +Avec blur_jpg.py,​ en modifiant les chemins. 
 + 
 +Le flou est important (0 à 5), enregistrées en jpg 90%. Des images parfaites semble ne pas convenir pour l'​apprentissage. 
 + 
 +=====Apprentissage===== 
 +====cfg==== 
 +Relire tout le readme pour bien configurer en particulier:​ 
 +  * for training for both small and large objects use modified models: **yolov3-tiny_3l.cfg** soit [[https://​github.com/​sergeLabo/​semaphore_blend_yolo/​blob/​master/​darknet/​calcul_1/​calcul_1_9000_jpg_90_small_var.cfg|calcul_1_9000_jpg_90_small_var.cfg]] 
 +  * If you train the model to distinguish Left and Right objects as separate classes (left/right hand, left/​right-turn on road signs, ...) then for disabling flip data augmentation - add flip=0 
 + 
 +====Apprentissage==== 
 +Adapter les chemins ! 
 +  ./darknet partial blend/​calcul_1_9000_jpg_90_small_var.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 
 +  ./darknet detector train blend/​obj.data blend/​calcul_1_9000_jpg_90_small_var.cfg ​ yolov3-tiny.conv.15 -map 
 +   
 +====3 calcul==== 
 +===Calcul 1 sur 1060 GTX=== 
 +  * **jpg 90, faible variation d'​angle,​ faible variation de couleur et lumière** 
 +  * 9 000 itérations 
 +{{ media_03:​chart_avec_blur_sub_16_9000.png?​200 |}} 
 +  * Détails des résultats: [[:​yolo_darknet_avec_un_vrai_semaphore_resultat_des_calculs#​calcul_1|Calcul 1]] 
 + 
 +===Calcul 2 sur 1060 GTX=== 
 +Suite du calcul 1, en repartant à 12000, et avec 54 000 itérations. 
 +{{ media_03:​chart_54000.png?​200 |}} 
 +  * Détails des résultats: [[:​yolo_darknet_avec_un_vrai_semaphore_resultat_des_calculs#​calcul_2|Calcul 2]] 
 + 
 +===Calcul 3 sur 765 GTX=== 
 +  * **jpg 100, forte variation d'​angle,​ forte variation de couleur et lumière, grand mât** 
 +  * 12 000 itérations sur carte 765 GTX et subdivision=32 pour palier à la trop faible RAM du GPU. 
 +{{ media_03:​chart_big_var_12000.png?​200 |}} 
 +  * Détails des résultats: [[:​yolo_darknet_avec_un_vrai_semaphore_resultat_des_calculs#​calcul_3|Calcul 3]] 
 + 
 + 
 +====Comparaison==== 
 +{{ media_03:​result.pdf |}} 
 +{{media_03:​result.png?​300|}} 
 +=====Reconnaissance dans le monde réel===== 
 +La partie reconnaissance est dans le dossier [[https://​github.com/​sergeLabo/​semaphore_blend_yolo/​tree/​master/​darknet|semaphore_blend_yolo/​darknet]] 
 + 
 +Une webcam regarde le sémaphore. Cette webcam ne peut-être que: 
 +  * **Microsoft HD5000** ça m’attriste cette pub ! 
 + 
 + 
 + 
 + 
 +====Rappel des pages pour l'​installation sur xubuntu amd64==== 
 +  * Installation de cuda, cudnn, opencv, .... [[yolo_darknet_sur_un_portable_optimus#​installation_de_cuda_100_sur_xubuntu_1804]] 
 +  * Installation de darnet [[yolo_darknet_sur_un_portable_optimus#​installation_de_yolo_darknet]] 
 + 
 +====Mise à jour des sources==== 
 +  * Dans le dossier /​data/​projets/​semaphore_blend_yolo 
 + 
 +  git reset --hard origin/​master 
 + 
 +Copier le fichier libdarknet.so des sources compilées de darknet dans semaphore_blend_yolo/​darknet . 
 + 
 +====Exécution de la reconnaissance==== 
 +Dans le dossier semaphore_blend_yolo/​darknet 
 +  python3 get_semaphore_message 0 2  
 +   
 +===Arguments=== 
 +  * numéro de cam: 0 de /​dev/​video0 
 +  * numéro du calcul: 2 (1 ou 2 ou 3 sont possibles, 2 semble le meilleur)! 
 +   
 +===Fenêtre de message=== 
 +  * Espace: reset du message 
 +  * Echap: Quitter 
 + 
 +===Fenêtre de réglage=== 
 +  * threshold: entre 1 et 100, commencer entre 20 et 50. 
 +  * pile_size: Taille de la pile FIFO qui sert à valider les lettres, entre 1 et 2 fois le FPS (sur 1060GTX: FPS = 30) 
 + 
 +===Principe de la construction du message===  
 +  * une lettre est validée si toutes les lettres de la pile sont les mêmes, cela bloque l'​ajout de lettre 
 +  * une nouvelle lettre est possible si il y a au moins un intrus dans la pile, c'est le débloquage. 
 +  * Retour à la ligne toutes les 20 lettres 
 +  * Reset du message si plus de 100 lettres 
 + 
 +=====Nvidia Jetson Nano===== 
 +  * Reconnaissance sur une **[[:​nvidia_jetson_nano|Nvidia Jetson Nano]]** 
 + 
 +<WRAP group> 
 +<WRAP half column>​ 
 +{{ semaphore_jetson_nano_1.jpg?​400 |}}\\ 
 +Affichage d'un sémaphore virtuel devant la webcam du Jetson Nano 
 +</​WRAP>​ 
 +<WRAP half column>​ 
 +{{ semaphore_jetson_nano_2.jpg?​400 |}}\\ 
 +La reconnaissance sur le jetson Nano 
 +</​WRAP>​ 
 +</​WRAP>​
  
-{{tag> ia sb semaphore}}+{{ vimeo>​344757901?​large }} 
 +=====Bonus: Réglage d'une webcam en cours d'​utilisation par un programme===== 
 +  sudo apt install v4l2ucp 
 +  v4l2ucp 
 +Reporter dans un fichier de configuration. 
 +{{tag> ia sb semaphore ​bge yolo_darknet deap_learning}}
  
yolo_darknet_avec_un_vrai_semaphore.1557156889.txt.gz · Dernière modification: 2019/05/06 17:34 par serge