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
C'est la partie la plus facile pour un pro de l'image et de la couleur: c'est moi –> applaudissement !!
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
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 Plus rapide que darknet mais pas de YOLO V3. C'est très bien pour commencer !
Darknet
Dépendances
Sur Debian 10 Buster avec NVIDIA Corporation GK106M [GeForce GTX 765M] et Bumblebee
- CMake >= 3.8 for modern CUDA soit cmake 3.13.4-1
- CUDA 10.0: https://developer.nvidia.com/cuda-toolkit-archive (on Linux do Post-installation Actions)
- OpenCV < 4.0 sudo pip3 install opencv-python==3.4.5.20
- cuDNN >= 7.0 for CUDA 10.0 https://developer.nvidia.com/rdp/cudnn-archive On Linux in .bashrc-file
- GPU with CC >= 3.0: https://en.wikipedia.org/wiki/CUDA#GPUs_supported
- GCC or Clang
Compilation
Modification des options dans Makefile Sans GPU
GPU=0 CUDNN=0 CUDNN_HALF=0 OPENCV=1 DEBUG=0 OPENMP=1 LIBSO=1
make
Dans le dossier darknet
make
Run test
./darknet detector test ./cfg/coco.data ./cfg/yolov3.cfg ./yolov3.weights
Training avec les images du sémaphore
Création des fichiers test.txt et train.txt
avec le script create_train_test_txt.py
DARKFLOW Perdu marche pas 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
1
Chemins relatifs depuis le dossier root des sources
Dans le fichier flow, corriger python en python3
#! /usr/bin/env python3
2
Les labels doivent être dans un format “annotation” !!
3
- Pour la suite, rien n'est bien expliqué !!
- structure des dossiers, des fichiers …