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édentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
b:yolo_darknet_avec_un_vrai_semaphore [2019/04/29 17:16] – ↷ Page déplacée de 2019_04:yolo_darknet_avec_un_vrai_semaphore à b:yolo_darknet_avec_un_vrai_semaphore sergeyolo_darknet_avec_un_vrai_semaphore [2020/02/04 16:27] – ↷ Liens modifiés en raison d'un déplacement. serge
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>
 +{{ shot_106_y.png?400 |}}
 +Ce sémaphore est une image virtuelle !
 +</WRAP>
 +</WRAP>
 +
 +=====Suite et fin=====
 +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=====
 +  * **[[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> </WRAP>
  
 +{{ 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.txt · Dernière modification : 2020/12/27 15:09 de serge