Ceci est une ancienne révision du document !
Table des matières
Yolo Darknet avec un vrai sémaphore
Reconnaissance d'un vrai sémaphore avec YOLO Darknet
Suite et fin
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.
Installation
Voir
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
- 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
- Détails des résultats: Calcul 1
Calcul 2 sur 1060 GTX
Suite du calcul 1, en repartant à 12000, et avec 54 000 itérations.
- Détails des résultats: 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.
- Détails des résultats: Calcul 3
Comparaison
Reconnaissance dans le monde réel
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 !
Installation
- Installation de cuda, cudnn, opencv, …. installation_de_cuda_100_sur_xubuntu_1804
- Installation de darnet installation_de_yolo_darknet
Préparation
Copier le fichier libdarknet.so du dossier semaphore_blend_yolo/darknet dans le dossier darknet, des sources compilées de darknet.
Exécution de la reconnaissance
Dans le dossier semaphore_blend_yolo/darknet
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} python3 get_semaphore_message 0 2 0.5 0.5 0.45
ou dans le dossier semaphore_blend_yolo/darknet, modifier semaphore.sh puis
./semaphore.sh
Arguments
- numéro de cam: 0
- numéro du calcul: 2 (1 ou 2 ou 3 sont possibles, 2 semble le meilleur)!
- thresh: 0.5 (entre 0 et 1) The detection threshold
- hier_thresh: 0.5 (entre 0 et 1) pas de doc
- nms: 0.45 (entre 0 et 1) pas de doc
Les sources sur GitHub
Bonus: Réglage d'une webcam en cours d'utilisation par un programme
sudo apt install v4l2ucp v4l2ucp
Reporter dans un fichier de configuration.