Ceci est une ancienne révision du document !


Yolo Darknet avec un vrai sémaphore

C'est quoi un sémaphore ?

chappe.jpeg

Reconnaissance d'un vrai sémaphore avec YOLO Darknet

Ce sémaphore est une image virtuelle !

De 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.

Voir

Blender 2.79b mais pas 2.80 qui n'a plus de BGE. Sur Xubuntu 18.04:

sudo apt-get install blender

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.

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
  • 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

 export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
./darknet detector train blend/obj.data blend/yolov3-obj_3l_blend.cfg darknet53.conv.74 -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

Calcul 2 sur 1060 GTX

Suite du calcul 1, en repartant à 12000, et avec 54 000 itérations.

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.

Comparaison

La partie reconnaissance est dans le dossier 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

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


Affichage d'un sémaphore virtuel devant la webcam du Jetson Nano


La reconnaissance sur le jetson Nano

sudo apt install v4l2ucp
v4l2ucp

Reporter dans un fichier de configuration.

  • yolo_darknet_avec_un_vrai_semaphore.1565283564.txt.gz
  • Dernière modification: 2019/08/08 18:59
  • par serge