Ceci est une ancienne révision du document !
Table des matières
YOLO with my own dataset
Cette page teste YOLO de MASK R-CNN vs YOLO vs Deeplab Xception
Création du set d'apprentissage
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 !
70.000 images créées avec OpenCV
Images: 1024×1024
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_68000_n.txt pour shot_68000_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
- Mon YOLO pour un Prix Nobel sur portable Optimus
- YOLO sans carte graphique Tous les calculs se font sur le GPU, un certain temps de 1 jour pour 900 images 416×416 !!
DARKFLOW Perdu marche pas et mal expliqué
Avec ou sans GPU
- Détection d'objet avec YOLO implémentations et comment les utiliser avec ses propres données: darkflow sur GitHub
Dépendances
Sur debian 10 buster Requis:
- python 3.7
- tensorflow 1.0
- opencv 3
sudo pip3 install tensorflow sudo pip3 install numpy sudo pip3 install opencv sudo pip3 install pytest
Version:
- tensorflow 1.13.1
- opencv 4.0.0
Bazar
- Chemins relatifs depuis le dossier root des sources
- Dans le fichier flow, corriger python en python3
- #! /usr/bin/env python3
- Les labels doivent être dans un format “annotation” !!
- Pour la suite, rien n'est bien expliqué !!
- structure des dossiers, des fichiers …