Ceci est une ancienne révision du document !
Table des matières
Yolo Darknet sur un portable Optimus
C'est quoi un sémaphore ?
Installation de YOLO Darknet sur un portable avec Optimus
Test avec des images du sémaphore
Valable aussi pour un Desktop avec une carte graphique Nvidia
Considération générales
- Xubuntu 18.04 CUDA 10.0 CUDNN 7.4.1.5 Ne pas utiliser Ubuntu Mate, il y a un conflit de dépendances entre CUDA et Mate Desktop
- Sur Ubuntu, l'installation du driver propriétaire est facile, et il est possible d'avoir le driver Nvidia en permanence. Sur Debian, bbswitch permet d'utiliser la carte Nvidia en lançant un programme avec optirun. Ce serait bien d'essayer cette installation sur Debian !
Ressources et documentation de YOLO Darknet
Darknet
- darknet de AlexeyAB sur GitHub Nous allons suivre ce README à la lettre.
Installation de CUDA 10.0 sur Xubuntu 18.04
Installation du driver Nvidia
Avec le Gestionnaire de pilotes supplémentaires
Installation
Le tout va télécharger 3 à 4 Go !
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub sudo apt-get update sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb sudo apt-get update sudo apt-get install --no-install-recommends cuda-10-0 sudo apt-get install --no-install-recommends libcudnn7=7.4.1.5-1+cuda10.0 libcudnn7-dev=7.4.1.5-1+cuda10.0 sudo apt-get install cmake clang python3-pip libopencv-dev libopencv-core-dev libopencv-highgui-dev libopencv-flann-dev libopencv-photo-dev libopencv-video-dev libopencv-dev sudo pip3 install opencv-python==3.4.5.20
Installation de YOLO Darknet
Dans les sources décompressée de darknet:
Options de Makefile avec GPU avec CUDA avec OPENCV
GPU=1 CUDNN=1 CUDNN_HALF=0 OPENCV=1 AVX=0 OPENMP=0 LIBSO=0 ZED_CAMERA=0
Compil
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} # Vérification du bon fonctionnement de CUDA nvidia-smi nvcc -V # Pour 8 coeurs make -j8
L'excécutable est dans le dossier root de darknet.
Préparation
Voir la page Yolo avec mes propres images pour la construction de 60 000 images 640×640 et des fichiers *.txt correspondants.
Les commandes pour exécuter .darknet ont comme argument:
axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg darknet53.conv.74
darknet53.conv.74
wget https://pjreddie.com/media/files/darknet53.conv.74
Coller le fichier dans le dossier darknet
Créer un dossier axe où nous allons ranger les éléments de notre projet. Pourquoi “axe” ? parce que mon sémaphore à des axes !
axe/obj.data
Ce fichier définit les chemins vers les fichiers de configuration.
classes= 27 train = axe/train.txt valid = axe/test.txt names = axe/obj.names backup = axe/backup
Créer un fichier axe/obj.names:
a space b c d etc ..... x y z
train.txt et test.txt
Les créer en collant le script create_train_test_txt.py dans le dossier axe. Puis:
- installer pymultilame
- adapter le chemin vers le dossier root des images dans le script
python3 create_train_test_txt.py Les fichiers train.txt et test.txt sont dans le dossier axe.
Le fichier *cfg
Pour avoir Yolo v3 avec:
- Des objets main droite différent des objets main gauche
- Des petits et des grands objets
- vérifier avec le readme de Alexei
Training
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet detector train axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg darknet53.conv.74 -map
Le fichier final obtenu:
Tests
Test sur une image
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet detector test axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg axe/backup/yolov3-tiny_30000.weights axe/shot_36_space.jpg
Le résultat est dans l'image predictions.jpg du dossier axe.
Test sur une video et enregistrement du résultat
./darknet detector demo axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg axe/backup/yolov3-tiny_30000.weights axe/semaphore.avi -i 0 -thresh 0.25 -output axe/res_semaphore.avi
Test avec webcam
Pour webcam=0
./darknet detector demo axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg axe/backup/yolov3-tiny_30000.weights -thresh 0.25 -c 0