Ceci est une ancienne révision du document !
Table des matières
Yolo Darknet sur un portable Optimus
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, il est possible d'avoir le driver Nvidia en permanence. Sur Debian, bbswitch permet d'utiliser la carte Intel à Nvidia en lançant un programme avec optirun.
Ressources et documentation de YOLO Darknet
Darknet
- darknet de AlexeyAB sur GitHub Nous allons suivre à la lettre ce README
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:
Avec GPU avec CUDA avec OPENCV
Recommencer avec une copie des sources originale de darknet
Options de Makefile
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 sans carte graphique pour la construction des images et des fichiers train.txt et test.txt
darknet53.conv.74
wget https://pjreddie.com/media/files/darknet53.conv.74
cfg/obj.data
Ce fichier définit les chemins vers les fichiers de configuration. Par exemple, tout mettre dans un dossiers, ici “axe”
classes= 27 train = axe/train.txt valid = axe/test.txt names = axe/obj.names backup = axe/backup
Créer un fichier obj.names:
a space b c d etc ..... x y z
cfg/tinyv3-yolo.cfg
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
Training
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet detector train cfg/obj.data cfg/tiny-yolo.cfg darknet53.conv.74 -map
Le calcul crée des fichiers de poids dans le dossier darknet/backup:
yolov3-tiny_1000.weights … yolov3-tiny_2000.weights … yolov3-tiny_3000.weights
Test
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet detector test cfg/obj.data cfg/yolov3-tiny.cfg backup/yolov3-tiny_15000.weights predictions_space.jpg
Le résultat est dans l'image predictions.jpg du dossier darknet.
64 000 images 704x704
Essai 1
Apprentissage
3 jours entiers de calcul ! 15 fichiers de poids
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet detector train cfg/obj.data cfg/tiny-yolo.cfg darknet53.conv.74
Test sur une image
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet detector test cfg/obj.data cfg/tiny-yolo.cfg backup/tiny-yolo_15000.weights /media/data/projets/64k_704/shot/shot_50004_n.jpg i: 64% n: 34%
Test sur des videos
./darknet detector demo ./cfg/obj.data ./cfg/tiny-yolo.cfg ./backup/tiny-yolo_15000.weights /media/data/projets/video/semaphore.avi -i 0 -thresh 0.25
Test avec webcam
Pour webcam=0
./darknet detector demo ./cfg/obj.data ./cfg/tiny-yolo.cfg ./backup/tiny-yolo_15000.weights -c 0
Plus grand, plus gros, plus puissant
Yolo v3 tiny
export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}} ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 ./darknet detector train cfg/obj.data cfg/yolov3-tiny_obj_labo.cfg yolov3-tiny.conv.15 -map
Le portable Optimus utilisé
Les calculs vont en gros 6 fois mois vite que sur une carte 1060GTX
- Intel® Core™ i7-Intel® Core™ i7-4702MQ CPU @ 2.20GHz × 84702MQ CPU @ 2.20GHz × 8
- Memory Device
- Total Width: 64 bits
- Size: 8192 MB
- Type: DDR3
- Speed: 1600 MHz
- Configured Clock Speed: 1600 MHz
- Vitesse maximale du processeur en MHz : 3200,0000
- Vitesse minimale du processeur en MHz : 800,0000
- Ram 7,7 Gio
- NVIDIA Corporation GK106M GeForce GTX 765M
- Core
- Architecture: Kepler
- CUDA Cores 768
- Clock Freq (MHz) 850 + Boost
- Memory
- Memory Clock (MHz) 2000
- Standard Memory Configuration GDDR5
- Memory Interface Width 128 bit
- Memory Bandwidth (GB/sec)64.0
- Date de présentation: 30.05.2013