Ceci est une ancienne révision du document !
Table des matières
YOLO avec mes propres images
Cette page teste YOLO de MASK R-CNN vs YOLO vs Deeplab Xception
Création du set d'apprentissage
Les sources sur GitHub
Création de 27 images pour 27 classes d'objets avec un canal alpha
Avec Blender et par un homo-sapiens Taille 40×40 Images en violet sur alpha, avec un sémaphore qui occupe toute l'image. Exemple pour le a: Les images sorties de Blender n'ont pas de canal alpha: passage dans Gimp pour faire un couleur (blanc) vers alpha. Il ne doit donc pas y avoir de blanc (ou de gris) dans la couleur du sémaphore ! Puis les images sont retaillées pour contenir au plus près les sémaphores.
1.000 images créées avec OpenCV
Images: 416×416
En insérant une des images ci-dessus sur un shot d'une video, avec variation taille position flou du sémaphore,
et en créant un fichier image.txt pour chaque image.png dans le même dossier, exemple:
shot_680_n.txt pour shot_680_n.png
Pour chaque fichier *.txt
<object-class> <x> <y> <width> <height>
Avec:
<object-class> - entier de 0 à 26 <x> <y> <width> <height> valeurs relatives de 0 à 1
320 * 320 avec un a
centre du a: absolute_x = 130, absolute_y = 140 absolute_height = 200 hauteur du a absolute_width = 200 largeur du a
0 (130/320)=0,40625 (140/320)=0,43752 (200/320)=0,625 (200/320)=0,625
ligne à écrire dans a.txt
0 0,40625 0,43752 0,625 0,625
Fichier de la liste des images avec leur chemin, training et test
Installation de pymultilame
- Détection avec YOLO v2 Ce tuto parle d'un script python: process.py
Je l'ai amélioré et renommer create_train_test_txt.py Il faut adapter current_dir à votre cas, c'est le dossier où sont toutes les images, sans sous-dossiers.
- create_train_test_txt.py
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # Installation de pymultilame # sudo pip3 install -e git+https://github.com/sergeLabo/pymultilame.git#egg=pymultilame from pymultilame import MyTools mt = MyTools() # Dossier des images et txt, à adapter à votre cas current_dir = '/media/data/3D/projets/mon_semaphore/mon_semaphore/shot' # liste de toutes les images files = mt.get_all_files_list(current_dir, '.jpg') test_percentage = 10 index_test = int(len(files)/test_percentage) counter = 0 test, train = "", "" for f in files: if counter < index_test: test += f + "\n" else: train += f + "\n" counter += 1 # Ecriture dans les fichiers mt.write_data_in_file(test, "test.txt", "w") mt.write_data_in_file(train, "train.txt", "w") print("Done.")
Exemple
YOLO Darknet avec mes propres images
Nos images sont des images du sémaphore
Nous allons créer 27 classes des 27 lettres possibles.
Quel YOLO ?
- pjreddie/darknet les sources de YOLO darknet
- AlexeyAB/darknet forked from pjreddie/darknet pour linux et avec un readme très riche
- Détection avec YOLO v2 pour construire le dataset. L'auteur colle son logo dans des images du monde réel.
Implementations possibles
- Darknet Implémentation “officielle”
- AlexeyAB/darknet Fork du précédent, bien pour sa doc
- Darkflow Mal documenté !!
Implémentations de AlexeyAB/darknet
Avec les images, les fichiers test.txt et train.txt, nous passons sur YOLO, avec ou sans GPU.
- Yolo Darknet sur un portable Optimus sur portable Optimus
- YOLO sans carte graphique Tous les calculs se font sur le CPU, un certain temps de 1 jour pour 900 images 416×416 !!