Outils pour utilisateurs

Outils du site


yolo_darknet_sur_un_portable_optimus

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
yolo_darknet_sur_un_portable_optimus [2019/03/24 11:31] – [Installation de CUDA 10.0] sergeyolo_darknet_sur_un_portable_optimus [2020/12/27 15:09] (Version actuelle) serge
Ligne 1: Ligne 1:
 ======Yolo Darknet sur un portable Optimus====== ======Yolo Darknet sur un portable Optimus======
-<WRAP center round box 80% centeralign> +<WRAP center round box 60% centeralign> 
-**{{tagpage>semaphore|Sémaphores}}**  ....  **{{tagpage>bge|Blender Game Engine}}** ....  **{{tagpage>ia|Intelligence Artificielle}}**+**{{tagpage>ia|Intelligence Artificielle}}**     **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fyolo_darknet_sur_un_portable_optimus|English Version]]**
 </WRAP> </WRAP>
-<WRAP center round box 80% centeralign>+<WRAP center round box 60% centeralign> 
 +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]** 
 +</WRAP> 
 + 
 +<WRAP center round box 60% centeralign> 
 +**{{tagpage>semaphore|Sémaphores}}**  ....  **{{tagpage>bge|Blender Game Engine}}** 
 +</WRAP> 
 +<WRAP center round box 60% centeralign> 
 +C'est quoi un sémaphore ? 
 +{{ youtube>F3sY6_fOx2I?medium }} 
 +{{ media_05:chappe.jpeg?400 }} 
 +</WRAP> 
 +\\ \\  
 +<WRAP center round box 60% centeralign>
 //**Installation de YOLO Darknet sur un portable avec 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**//\\
 </WRAP> </WRAP>
  
-=====Considération générales===== 
-  * **Ubuntu Mate 18.04 CUDA 10.0 CUDNN 7.0 ** 
-  * **Valable aussi pour un Desktop avec une carte graphique Nvidia** 
-  * **Ubuntu est nécessaire pour avoir le driver Nvidia en permanence** 
-  * CUDA 10.1 et CUDNN 7.5 a été un échec 
  
-  skipping incompatible /usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so when searching for -lcudnn + 
-signifierait qu'il y a une incompatibilité entre cudnn et darknet ?+ 
 +=====Considération générales===== 
 +  * **Xubuntu 18.04 CUDA 10.0 CUDNN 7.4.1.5 **  
 +  * **Ne pas utiliser le bureau 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 !  
 +  * **Ce tuto a été écrit avec des tests réalisés sur un portable avec une carte 765GTX et sur une tour avec une carte 1060GTX**
 =====Ressources et documentation de YOLO Darknet===== =====Ressources et documentation de YOLO Darknet=====
 ===Darknet=== ===Darknet===
-  * **[[https://github.com/AlexeyAB/darknet|darknet de AlexeyAB sur GitHub]] Nous allons suivre à la lettre ce README** +  * **[[https://github.com/AlexeyAB/darknet|darknet de AlexeyAB sur GitHub]] Nous allons suivre ce README à la lettre.**
-  * **[[https://medium.com/@manivannan_data/how-to-train-yolov2-to-detect-custom-objects-9010df784f36|Détection avec YOLO v2]] Les explications pour créer les images training et test**  +
-  * **[[https://medium.com/@manivannan_data/how-to-train-yolov3-to-detect-custom-objects-ccbcafeb13d2|Détection avec YOLO v3]]** +
-  * **[[https://medium.com/@manivannan_data/how-to-train-multiple-objects-in-yolov2-using-your-own-dataset-2b4fee898f17|Détection avec YOLO v2 avec plusieurs objets]]** +
-===Portable Optimus=== +
-  * https://towardsdatascience.com/how-to-use-tensorflow-on-the-gpu-of-your-laptop-with-ubuntu-18-04-554e1d5ea189 +
-  * https://medium.com/@taylordenouden/installing-tensorflow-gpu-on-ubuntu-18-04-89a142325138 +
-  * https://medium.com/@agathver/nvidia-gpu-optimus-prime-and-ubuntu-18-04-woes-f52e7f850f3d +
-  * [[https://gist.github.com/mari-linhares/cef4cb3440408e44963d1447a7db5ae0|Setting up a MSI laptop with GPU @ github.com]] +
-  * https://www.tensorflow.org/install/gpu#ubuntu_1804_cuda_10+
  
-=====Installation du driver Nvidia===== +=====Installation de CUDA 10.0 sur Xubuntu 18.04===== 
-Avec pilotes additionnels, installation de nvidia-driver-390Redémarrer, nvidia-settings est actif, la carte nvidia est utilisée en permanence, ça souffle, ça consomme !+  * [[https://www.tensorflow.org/install/gpu#ubuntu_1804_cuda_10| CUDA 10 sur Ubuntu 18.04 @ tensorflow.org]] 
 +====Installation du driver Nvidia==== 
 +Avec le Gestionnaire de pilotes supplémentaires 
 +====Installation de cuda,cudnn, opencv-python==== 
 +Le tout va télécharger 3 à 4 Go ! 
 +<code> 
 +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 
 +sudo pip3 install opencv-python==3.4.5.20 scikit-image 
 +</code>
  
-=====Installation de CUDA 10.0===== +Après installation, ne pas faire de mises à jour système: ça casserai libcudnn7=7.4.1.5-1+cuda10.0
-Darknet demande CUDA dans /usr/local/cuda+
  
 +Pour faire les mises à jour, il faudrait d'abord bloquer les versions de cuda et cudnn, y compris les dev.
 +
 +====Installation complémentaire pour mes projets====
 +Installation de mon module personnel: [[:pymultilame|Python: pymultilame]]
 +
 +
 +
 +=====Installation de YOLO Darknet=====
 +Dans les [[https://github.com/AlexeyAB/darknet|sources]] décompressée de darknet:
 +
 +Pour ajouter la libération de la RAM GPU entre 2 détections dans un script python,
 +[[Darknet Letters unload GPU RAM in python script|Darknet Letters unload GPU RAM in python script]]
 +====Options de Makefile avec GPU avec CUDA avec OPENCV====
 <code> <code>
-wget -c https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.105-418.39_1.0-1_amd64.deb +GPU=1 
-sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.105-418.39_1.0-1_amd64.deb +CUDNN=1 
-sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub +CUDNN_HALF=
-sudo apt-key add /var/cuda-repo-10-1-local-10.1.105-418.39/7fa2af80.pub +OPENCV=1 
-sudo apt-get update +AVX=
-sudo apt-get install cuda+OPENMP=0 
 +LIBSO=
 +ZED_CAMERA=0
 </code> </code>
-=====Installation de CUDNN 7.0===== +====Compil==== 
-  * https://developer.nvidia.com/cudnn +<code> 
-  * https://developer.nvidia.com/rdp/cudnn-archive+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 
 +</code> 
 +L'excécutable est dans le dossier root de darknet.
  
-Il faut avoir un compte sur Nvidia et se loguer pour pouvoir télécharger:+Le fichier libdarknet.so de 1060GTX: {{ media_07:libdarknet.so.zip |}} 
 +=====Préparation===== 
 +Voir la page **[[yolo_avec_mes_propres_images|Yolo avec mes propres images]]** pour la construction de **60 000 images 640x640** et des fichiers *.txt correspondants. 
 + 
 +Ici nous utilisons **[[https://github.com/sergeLabo/semaphore_cv_yolo|Création d'images pour utiliser Yolo Darknet avec OpenCV]]**. 
 + 
 +Les axes blanc sont probablement important pour la reconnaissance. 
 + 
 +{{media_01:shot_53_z.jpg?200|}} 
 +{{media_01:shot_455_w.jpg?200|}} 
 +{{media_01:shot_894_c.jpg?200|}} 
 +{{media_01:shot_1916_z.jpg?200|}} 
 +{{media_01:shot_59248_j.jpg?200|}}
      
 +**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 !
 +<WRAP group>
 +<WRAP half column>
 +**axe/obj.data**\\
 +Ce fichier définit les chemins vers les fichiers de configuration.
 +<code>
 +classes= 27
 +train  = axe/train.txt  
 +valid  = axe/test.txt  
 +names = axe/obj.names  
 +backup = axe/backup
 +</code>
 +</WRAP>
 +
 +<WRAP half column>
 +**Créer un fichier axe/obj.names:**
 +<code>
 +a
 +space
 +b
 +c
 +d
 +etc .....
 +x
 +y
 +z
 +</code>
 +</WRAP>
 +</WRAP>
 +
 +===train.txt et test.txt===
 +Les créer en collant le script **[[https://github.com/sergeLabo/semaphore_cv_yolo/blob/master/get_opencv_shot/create_train_test_txt.py|create_train_test_txt.py]]** dans le dossier axe. Puis:
 +  * installer [[:pymultilame|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===
 +  * **[[https://github.com/sergeLabo/semaphore_cv_yolo/blob/master/axe/yolov3-obj_3l_labo_axe.cfg|yolov3-obj_3l_labo_axe.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=====
 +  ./darknet detector train axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg darknet53.conv.74 -map
 +
 +{{ media_01:chart.png?300 |}}
 +
 +===Message final===
 +<code>
 + calculation mAP (mean average precision)...
 +6000
 + detections_count = 9091, unique_truth_count = 6000  
 +class_id = 0, name = a, ap = 100.00%    (TP = 216, FP = 1) 
 +class_id = 1, name = space, ap = 98.59%    (TP = 218, FP = 6) 
 +class_id = 2, name = b, ap = 100.00%    (TP = 203, FP = 0) 
 +class_id = 3, name = c, ap = 99.99%    (TP = 227, FP = 0) 
 +class_id = 4, name = d, ap = 100.00%    (TP = 223, FP = 0) 
 +class_id = 5, name = e, ap = 86.90%    (TP = 129, FP = 26) 
 +class_id = 6, name = f, ap = 100.00%    (TP = 225, FP = 1) 
 +class_id = 7, name = g, ap = 100.00%    (TP = 218, FP = 0) 
 +class_id = 8, name = h, ap = 100.00%    (TP = 252, FP = 1) 
 +class_id = 9, name = i, ap = 98.82%    (TP = 196, FP = 2) 
 +class_id = 10, name = j, ap = 100.00%    (TP = 217, FP = 0) 
 +class_id = 11, name = k, ap = 100.00%    (TP = 243, FP = 0) 
 +class_id = 12, name = l, ap = 100.00%    (TP = 222, FP = 1) 
 +class_id = 13, name = m, ap = 100.00%    (TP = 229, FP = 0) 
 +class_id = 14, name = n, ap = 93.93%    (TP = 200, FP = 88) 
 +class_id = 15, name = o, ap = 100.00%    (TP = 217, FP = 4) 
 +class_id = 16, name = p, ap = 100.00%    (TP = 241, FP = 16) 
 +class_id = 17, name = q, ap = 100.00%    (TP = 235, FP = 15) 
 +class_id = 18, name = r, ap = 99.52%    (TP = 184, FP = 0) 
 +class_id = 19, name = s, ap = 100.00%    (TP = 222, FP = 2) 
 +class_id = 20, name = t, ap = 99.98%    (TP = 212, FP = 24) 
 +class_id = 21, name = u, ap = 100.00%    (TP = 198, FP = 1) 
 +class_id = 22, name = v, ap = 74.66%    (TP = 76, FP = 0) 
 +class_id = 23, name = w, ap = 100.00%    (TP = 205, FP = 0) 
 +class_id = 24, name = x, ap = 100.00%    (TP = 245, FP = 0) 
 +class_id = 25, name = y, ap = 100.00%    (TP = 223, FP = 0) 
 +class_id = 26, name = z, ap = 100.00%    (TP = 223, FP = 0) 
 +
 + for thresh = 0.25, precision = 0.97, recall = 0.95, F1-score = 0.96 
 + for thresh = 0.25, TP = 5699, FP = 188, FN = 301, average IoU = 87.69 % 
 + IoU threshold = 50 %, used Area-Under-Curve for each unique Recall 
 + mean average precision (mAP@0.50) = 0.982366, or 98.24 % 
 + mean_average_precision (mAP@0.5) = 0.982366 
 +</code>
 +
 +=====Testing=====
 +====Test sur une image====
 +  ./darknet detector test axe/obj.data  axe/yolov3-obj_3l_labo_axe.cfg axe/backup/yolov3-obj_3l_labo_axe_final.weights axe/shot_36_space.jpg
 +
 +Le résultat est dans l'image predictions.jpg du dossier axe. 
 +<WRAP group>
 +<WRAP half column>
 +{{media_01:predictions_b_h.jpg?400|}}
 +</WRAP>
 +<WRAP half column>
 +{{media_01:predictions_space.jpg?400|}}\\
 +shot_36_space.jpg: Predicted in 58.519000 milli-seconds:\\
 +space: 40%
 +</WRAP>
 +</WRAP>
 +  
 +====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-obj_3l_labo_axe_final.weights axe/semaphore.avi -i 0 -thresh 0.10 -out_filename axe/res_semaphore.avi
 +
 +{{ vimeo>330471526?medium }}
 +====Test avec webcam et enregistrement du résultat====
 +Pour webcam=0
 +  ./darknet detector demo axe/obj.data axe/yolov3-obj_3l_labo_axe.cfg axe/backup/yolov3-obj_3l_labo_axe_final.weights -thresh 0.25 -c 0 
 +{{ vimeo>330723924?medium }}
 +
 +=====Avec un vrai sémaphore=====
 +  * **[[yolo_darknet_avec_un_vrai_semaphore|Yolo Darknet avec un vrai sémaphore]]**
 +  * **[[https://github.com/sergeLabo/semaphore_blend_yolo|et les sources correspondantes sur GitHub]]**
 +
 +{{tag> ia sb semaphore yolo_darknet }}
  
-Décompresser, dans le dossier: 
-  sudo cp -P /media/data/cuda/targets/ppc64le-linux/lib/libcudnn* /usr/local/cuda-10.1/lib64/ 
-  sudo cp  /media/data/cuda/targets/ppc64le-linux/include/cudnn.h /usr/local/cuda-10.1/include/ 
-  sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h /usr/local/cuda/lib64/libcudnn* 
  
-{{tag> ia sb semaphore }} 
yolo_darknet_sur_un_portable_optimus.1553427090.txt.gz · Dernière modification : 2019/03/24 11:31 de serge