Outils pour utilisateurs

Outils du site


yolo_avec_mes_propres_images

Ceci est une ancienne révision du document !


YOLO with my own dataset

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

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 ?

Implementations possibles

Implémentations de AlexeyAB/darknet

DARKFLOW Perdu marche pas et mal expliqué

Avec ou sans GPU

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 …
yolo_avec_mes_propres_images.1553016725.txt.gz · Dernière modification : 2019/03/19 17:32 de serge