yolo_darknet_sur_un_portable_optimus
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| yolo_darknet_sur_un_portable_optimus [2019/03/26 07:16] – [Avec GPU avec CUDA sans OPENCV] serge | yolo_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> | + | **{{tagpage> |
| </ | </ | ||
| - | <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 center round box 60% centeralign> | ||
| + | **{{tagpage> | ||
| + | </ | ||
| + | <WRAP center round box 60% centeralign> | ||
| + | C'est quoi un sémaphore ? | ||
| + | {{ youtube> | ||
| + | {{ media_05: | ||
| + | </ | ||
| + | \\ \\ | ||
| + | <WRAP center round box 60% centeralign> | ||
| // | // | ||
| + | //**Test avec des images du sémaphore**// | ||
| + | //**Valable aussi pour un Desktop avec une carte graphique Nvidia**// | ||
| </ | </ | ||
| + | |||
| + | |||
| + | |||
| =====Considération générales===== | =====Considération générales===== | ||
| - | * **Xubuntu 18.04 CUDA 10.0 CUDNN 7.4.1.5 ** Ne pas utiliser | + | * **Xubuntu 18.04 CUDA 10.0 CUDNN 7.4.1.5 |
| - | * **Valable aussi pour un Desktop avec une carte graphique Nvidia** | + | * **Ne pas utiliser |
| - | * **Ubuntu est nécessaire pour avoir le driver Nvidia en permanence** | + | * **Sur Ubuntu, l' |
| + | * **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:// | + | * **[[https:// |
| - | * **[[https:// | + | |
| - | * **[[https:// | + | |
| - | * **[[https:// | + | |
| - | ===Portable Optimus=== | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * https:// | + | |
| - | * [[https:// | + | |
| - | * https:// | + | |
| =====Installation de CUDA 10.0 sur Xubuntu 18.04===== | =====Installation de CUDA 10.0 sur Xubuntu 18.04===== | ||
| - | * https:// | + | * [[https:// |
| ====Installation du driver Nvidia==== | ====Installation du driver Nvidia==== | ||
| Avec le Gestionnaire de pilotes supplémentaires | Avec le Gestionnaire de pilotes supplémentaires | ||
| - | ====Installation==== | + | ====Installation |
| + | Le tout va télécharger 3 à 4 Go ! | ||
| < | < | ||
| wget https:// | wget https:// | ||
| wget http:// | wget http:// | ||
| - | </ | ||
| - | < | ||
| sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb | sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb | ||
| sudo apt-key adv --fetch-keys http:// | sudo apt-key adv --fetch-keys http:// | ||
| Ligne 40: | Ligne 50: | ||
| sudo apt-get install --no-install-recommends cuda-10-0 | 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 | sudo apt-get install --no-install-recommends libcudnn7=7.4.1.5-1+cuda10.0 | ||
| - | sudo apt-get install cmake | + | 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 apt-get | + | sudo pip3 install |
| </ | </ | ||
| - | =====YOLO Darknet===== | + | Après installation, |
| - | ====Premier test sans GPU sans CUDA sans OPENCV==== | + | |
| - | Commencer avec une copie des sources originale de darknet. | + | |
| - | ===Options de Makefile=== | + | |
| - | < | + | |
| - | GPU=0 | + | |
| - | CUDNN=0 | + | |
| - | CUDNN_HALF=0 | + | |
| - | OPENCV=0 | + | |
| - | AVX=0 | + | |
| - | OPENMP=0 | + | |
| - | LIBSO=0 | + | |
| - | ZED_CAMERA=0 | + | |
| - | </ | + | |
| - | ===Compil=== | + | |
| - | < | + | |
| - | export PATH=/ | + | |
| - | nvcc -V | + | |
| - | make | + | |
| - | </ | + | |
| - | ====Avec GPU avec CUDA avec OPENCV==== | + | Pour faire les mises à jour, il faudrait d' |
| - | Recommencer avec une copie des sources originale | + | |
| - | ===Installation | + | ====Installation complémentaire pour mes projets==== |
| - | < | + | Installation |
| - | sudo apt-get install 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 | + | |
| - | </ | + | |
| - | ===Options de Makefile=== | + | =====Installation |
| + | Dans les [[https:// | ||
| + | |||
| + | Pour ajouter la libération de la RAM GPU entre 2 détections dans un script | ||
| + | [[Darknet Letters unload GPU RAM in python script|Darknet Letters unload GPU RAM in python script]] | ||
| + | ====Options de Makefile | ||
| < | < | ||
| GPU=1 | GPU=1 | ||
| Ligne 80: | Ligne 76: | ||
| AVX=0 | AVX=0 | ||
| OPENMP=0 | OPENMP=0 | ||
| - | LIBSO=0 | + | LIBSO=1 |
| ZED_CAMERA=0 | ZED_CAMERA=0 | ||
| </ | </ | ||
| - | ===Compil=== | + | ====Compil==== |
| < | < | ||
| export PATH=/ | export PATH=/ | ||
| + | # Vérification du bon fonctionnement de CUDA | ||
| + | nvidia-smi | ||
| nvcc -V | nvcc -V | ||
| + | # Pour 8 coeurs | ||
| make -j8 | make -j8 | ||
| </ | </ | ||
| + | L' | ||
| - | =====Application sur le sémaphore===== | + | Le fichier libdarknet.so de 1060GTX: {{ media_07: |
| - | [[yolo_sans_carte_graphique|YOLO sans carte graphique]] | + | =====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:// | ||
| + | |||
| + | Les axes blanc sont probablement important pour la reconnaissance. | ||
| + | |||
| + | {{media_01: | ||
| + | {{media_01: | ||
| + | {{media_01: | ||
| + | {{media_01: | ||
| + | {{media_01: | ||
| + | | ||
| **darknet53.conv.74** | **darknet53.conv.74** | ||
| wget https:// | wget https:// | ||
| + | Coller le fichier dans le dossier darknet | ||
| - | **cfg/obj.data** | + | Créer un dossier axe où nous allons ranger les éléments de notre projet. Pourquoi " |
| + | <WRAP group> | ||
| + | <WRAP half column> | ||
| + | **axe/obj.data**\\ | ||
| + | Ce fichier définit les chemins vers les fichiers de configuration. | ||
| < | < | ||
| classes= 27 | classes= 27 | ||
| - | train = train.txt | + | train = axe/train.txt |
| - | valid = test.txt | + | valid = axe/test.txt |
| - | names = obj.names | + | names = axe/obj.names |
| - | backup = backup/ | + | backup = axe/backup |
| </ | </ | ||
| + | </ | ||
| - | **cfg/tiny-yolo.cfg** | + | <WRAP half column> |
| + | **Créer un fichier axe/obj.names:** | ||
| < | < | ||
| - | Line 2: batch=24 | + | a |
| - | Line 3: set subdivisions=8 | + | space |
| - | Line 120: set classes=1 | + | b |
| - | Line 114: filters=160 | + | c |
| + | d | ||
| + | etc ..... | ||
| + | x | ||
| + | y | ||
| + | z | ||
| </ | </ | ||
| + | </ | ||
| + | </ | ||
| - | **test.txt et train.txt** sont à coller | + | ===train.txt et test.txt=== |
| - | Les chemins dans ces fichiers sont absolus ! | + | Les créer en collant le script |
| + | * installer [[: | ||
| + | * 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 | ||
| + | |||
| + | ===Le fichier *cfg=== | ||
| + | * **[[https:// | ||
| + | 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 | ||
| + | |||
| + | {{ media_01: | ||
| + | |||
| + | ===Message final=== | ||
| + | < | ||
| + | | ||
| + | 6000 | ||
| + | | ||
| + | class_id = 0, name = a, ap = 100.00% | ||
| + | class_id = 1, name = space, ap = 98.59% | ||
| + | class_id = 2, name = b, ap = 100.00% | ||
| + | class_id = 3, name = c, ap = 99.99% | ||
| + | class_id = 4, name = d, ap = 100.00% | ||
| + | class_id = 5, name = e, ap = 86.90% | ||
| + | class_id = 6, name = f, ap = 100.00% | ||
| + | class_id = 7, name = g, ap = 100.00% | ||
| + | class_id = 8, name = h, ap = 100.00% | ||
| + | class_id = 9, name = i, ap = 98.82% | ||
| + | class_id = 10, name = j, ap = 100.00% | ||
| + | class_id = 11, name = k, ap = 100.00% | ||
| + | class_id = 12, name = l, ap = 100.00% | ||
| + | class_id = 13, name = m, ap = 100.00% | ||
| + | class_id = 14, name = n, ap = 93.93% | ||
| + | class_id = 15, name = o, ap = 100.00% | ||
| + | class_id = 16, name = p, ap = 100.00% | ||
| + | class_id = 17, name = q, ap = 100.00% | ||
| + | class_id = 18, name = r, ap = 99.52% | ||
| + | class_id = 19, name = s, ap = 100.00% | ||
| + | class_id = 20, name = t, ap = 99.98% | ||
| + | class_id = 21, name = u, ap = 100.00% | ||
| + | class_id = 22, name = v, ap = 74.66% | ||
| + | class_id = 23, name = w, ap = 100.00% | ||
| + | class_id = 24, name = x, ap = 100.00% | ||
| + | class_id = 25, name = y, ap = 100.00% | ||
| + | class_id = 26, name = z, ap = 100.00% | ||
| + | |||
| + | 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 % | ||
| + | | ||
| + | </ | ||
| + | |||
| + | =====Testing===== | ||
| + | ====Test sur une image==== | ||
| + | ./darknet detector test axe/ | ||
| + | |||
| + | Le résultat est dans l' | ||
| + | <WRAP group> | ||
| + | <WRAP half column> | ||
| + | {{media_01: | ||
| + | </ | ||
| + | <WRAP half column> | ||
| + | {{media_01: | ||
| + | shot_36_space.jpg: | ||
| + | space: 40% | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ====Test sur une video et enregistrement du résultat==== | ||
| + | ./darknet detector demo axe/ | ||
| - | ====Apprentissage==== | + | {{ vimeo> |
| - | ./darknet detector | + | ====Test avec webcam et enregistrement du résultat==== |
| + | Pour webcam=0 | ||
| + | ./darknet detector | ||
| + | {{ vimeo> | ||
| - | ça crée un dossier darknet/ | + | =====Avec |
| + | * **[[yolo_darknet_avec_un_vrai_semaphore|Yolo Darknet | ||
| + | * **[[https:// | ||
| - | **yolov3-tiny_1000.weights\\ | + | {{tag> ia sb semaphore yolo_darknet }} |
| - | yolov3-tiny_2000.weights\\ | + | |
| - | yolov3-tiny_3000.weights | + | |
| - | ** | + | |
| - | =====Contexte===== | + | |
| - | ==== Laptop ==== | + | |
| - | * 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 | + | |
| - | ====GPU==== | ||
| - | * NVIDIA Corporation GK106M [[https:// | ||
| - | * Core | ||
| - | * Architecture: | ||
| - | * 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/ | ||
| - | * Date de présentation: | ||
| - | {{tag> ia sb semaphore }} | ||
yolo_darknet_sur_un_portable_optimus.1553584595.txt.gz · Dernière modification : de serge
