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
YOLO 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
- 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 !
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
Darknet
je bosse, soyez patient
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
GPU=1 to build with CUDA to accelerate by using GPU (CUDA should be in /usr/local/cuda) CUDNN=1 to build with cuDNN v5-v7 to accelerate training by using GPU (cuDNN should be in /usr/local/cudnn) CUDNN_HALF=1 to build for Tensor Cores (on Titan V / Tesla V100 / DGX-2 and later) speedup Detection 3x, Training 2x OPENCV=1 to build with OpenCV 3.x/2.4.x - allows to detect on video files and video streams from network cameras or web-cams DEBUG=1 to bould debug version of Yolo OPENMP=1 to build with OpenMP support to accelerate Yolo by using multi-core CPU LIBSO=1 to build a library darknet.so and binary runable file uselib that uses this library. Or you can try to run so LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib test.mp4 How to use this SO-library from your own code - you can look at C++ example: https://github.com/AlexeyAB/darknet/blob/master/src/yolo_console_dll.cpp or use in such a way: LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib data/coco.names cfg/yolov3.cfg yolov3.weights test.mp4
make
do make in the darknet directory
Run test
./darknet detector test ./cfg/coco.data ./cfg/yolov3.cfg ./yolov3.weights
DARKFLOW
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 …