Outils pour utilisateurs

Outils du site


darknet_letters

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
darknet_letters [2019/08/30 15:10] – [Test] sergedarknet_letters [2020/12/27 15:11] (Version actuelle) serge
Ligne 1: Ligne 1:
 ====== Darknet Letters ====== ====== Darknet Letters ======
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
-**{{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%2Fdarknet_letters|English Version]]**
-</WRAP> +
-<WRAP center round box 80% centeralign> +
-{{::2019_08:shot_22.png?400|}} {{:2019_08:shot_17.png?400|}}+
 </WRAP> </WRAP>
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
-2 0.37 0.31 0.18 0.18 \\ +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]**
-356 0.07 0.27 0.13 0.13 \\ +
-29 0.44 0.14 0.1 0.1 \\ +
-127 0.54 0.49 0.13 0.13 \\ +
-99 0.27 0.95 0.21 0.21\\+
 </WRAP> </WRAP>
  
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
-**De l'Intelligence Artificielle pour reconnaître des lettres dans différentes polices,  convertir les lettres d'un texte en musique midi.**+**{{tagpage>bge|Blender Game Engine}}**
 </WRAP> </WRAP>
 +<WRAP center round box 60% centeralign>
 +{{media_02:shot_22.png?400|}} {{media_02:shot_17.png?400|}}\\
 +Le fond noir ne convient pas, il faut une video !
 +</WRAP>
 +<WRAP center round box 60%>
 +  * **De l'Intelligence Artificielle pour reconnaître des lettres dans différentes polices**
 +  * **Créer des images correspondant à une musique midi**
 +  * **Lecture des images par l'Intelligence Artificielle et rejouer le midi**
 +</WRAP>
 +
 +{{ vimeo>377284950?medium }}
 +\\ \\ 
 +**[[darknet_letters_essais|Darknet Letters Tous les essais]]**
 +
 +**[[https://github.com/sergeLabo/darknet-letters|darknet-letters sur Github]]**\\ \\ 
 +===== YOLO Darknet V3 =====
 +====Conclusion finale====
 +  * Le nombre de paramètres à optimiser est important. Pour pouvoir faire beaucoup de simulation, les calculs doivent être rapide, il est nécessaire d'avoir des cartes graphiques puissantes, et chères !
 +  * Pour faire mieux, une GTX 1060 ne suffit pas. Il en faudrait au minimum 2, et mieux encore RTX 2080 Ti 11GB à 1100€
 +  * Cela permettrait de tester les modèles plus lourds et d'agrandir les images. Passer de 416x416 à 832x832 !
 +==== Conclusion des différents apprentissages ====
 +<WRAP group>
 +<WRAP half column>
 +  * **Suppression des majuscules pour diminuer le nombre d'ojects de 380 à 190**
 +  * **Le modèle yolov3.cfg est trop lourd, le yolov3-tiny_3l.cfg suffit**
 +  * **Images de 416x416**
 +  * **1 à 2 jours d'apprentissage**
 +  * **Fond video pour l'apprentissage, noir pour la détection**
 +  * **Pas de flou dans les images **
 +</WRAP>
 +<WRAP half column>
 +**Hardware**
 +  * **GPU Nvidia 1060 GTX**
 +  * **RAM de 16 Go** 
 +  * **RAM GPU de 6 Go**
 +  * **SWAP de 64 Go sur SSD**
 +</WRAP>
 +</WRAP>
 +
 +
 ===== Les sources sur GitHub ===== ===== Les sources sur GitHub =====
   * **[[https://github.com/sergeLabo/darknet-letters|darknet-letters]]**   * **[[https://github.com/sergeLabo/darknet-letters|darknet-letters]]**
Ligne 23: Ligne 56:
 **Créer et testé sur Debian Buster 10** **Créer et testé sur Debian Buster 10**
  
-{{:2019_08:letters_1.png?300|}} +{{media_02:letters_1.png?300|Le jeu}} 
-{{:2019_08:letters_2.png?300|}} +{{media_03:shot_12.png?300|Avec un fond video}} 
-{{:2019_08:letters_3.png?300|}}+{{media_02:letters_3.png?300|Avec un fond noir: la reconnaissance est très mauvaise}}
  
 ====Conversion d'un fichier *.midi en *.json==== ====Conversion d'un fichier *.midi en *.json====
Ligne 41: Ligne 74:
  
 ===Message d'erreur=== ===Message d'erreur===
-<code> +Pour éviter ce message: 
-Pour éviter ce message: +  fluidsynth: warning: Failed to set thread to high priority 
-fluidsynth: warning: Failed to set thread to high priority +  fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible. 
-fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible.+Editer: 
 +  sudo nano /etc/security/limits.conf
  
-sudo nano /etc/security/limits.conf +Ajouter:
- +
-Ajouter:+
   @audio    rtprio      90   @audio    rtprio      90
   @audio    memlock     unlimited   @audio    memlock     unlimited
  
-Le user doit être dans le gropue audio! +Le user doit être dans le groupe audio!
-</code>+
 ====Installation==== ====Installation====
 <code txt> <code txt>
Ligne 68: Ligne 99:
 La Font midi peut être TimGM6mb.sf2 de **[[http://www.timbrechbill.com/saxguru/Timidity.php|Tim Brechbill]]** qui est dans le dossier letters/midi/soundfont\\ La Font midi peut être TimGM6mb.sf2 de **[[http://www.timbrechbill.com/saxguru/Timidity.php|Tim Brechbill]]** qui est dans le dossier letters/midi/soundfont\\
 C'est à définir dans letters.ini C'est à définir dans letters.ini
- 
- 
- 
- 
- 
- 
  
 ====Modification de la configuration==== ====Modification de la configuration====
 **Règles générales** **Règles générales**
   - Ne pas bidouiller les scripts, à moins que vous ne soyez hollandais.   - Ne pas bidouiller les scripts, à moins que vous ne soyez hollandais.
-  - Si il y a un bug, corriger dans les scripts, toujours de façon explicite.+  - Si il y a un bug, corriger dans les scripts, toujours de façon explicite, et envoyer un message à l'auteur.
   - Les modifications de configuration se font dans ./letters/letters.ini   - Les modifications de configuration se font dans ./letters/letters.ini
 +Dans ce fichier, définir en particulier:
 +  * **les chemins de /shot/ et /shot_jpg/**
 +  * **le nombre d'images à créer: 20000**
 +  * **la taille des images: 416**
  
 ====Le jeu letters==== ====Le jeu letters====
Ligne 86: Ligne 115:
    
 <code txt> <code txt>
-- Affichage du logo + 1 - Lancement de letters 
-- Lancement de letters +     SPACE pour changer de musique 
-    SPACE pour changer de musique + - Fabrication des shot pour l'IA 
-- Fabrication des shot pour l'IA + - Conversion d'une musique en image 
-- Conversion en json + H - Help 
-H - Help + R - Reset 
-R - Reset+ Echap - Quitter
 </code> </code>
  
-En 2: Les fichiers du dossier /json seront jouées.+En 1: Les fichiers du dossier /json_60 seront jouées.
  
-En 3: Pour l'apprentissage, le fichier json/get_shot.json sera utilisé. Il a été construit avec darknet-letters/letters/midi/json_for_get_shot.py+En 2: Pour l'apprentissage, le fichier json/get_shot.json sera utilisé. Il a été construit avec darknet-letters/letters/midi/json_for_get_shot.py
  
-En 4Les fichiers midi sont traduits en json pour être facilement utilisé en python.+En 3Crée un jeu d'images pour ensuite tester l'IA avec play_letters.py
  
-Le jeu crée les images et pour chaque image le **[[yolo_avec_mes_propres_images#fichier_txt_localisant_le_ou_les_objets_dans_l_image| fichier txt]]** correspondant qui décrit le numéro de classe et la position des objets dans l'image.+===== Création du set d'images pour l'apprentissage ===== 
 +====Création des images==== 
 +  * Création des images avec l'option 3. 
 +Pour chaque image toto.png, un fichier [[yolo_avec_mes_propres_images#fichier_txt_localisant_le_ou_les_objets_dans_l_image| fichier txt]] est créé pour décrire les objets dans l'image, avec le numéro de l'objet: voir  
 +[[yolo_avec_mes_propres_images#creation_du_set_d_apprentissage|Création du set d'apprentissage]]
  
- 
-===== Création du set d'images pour l'apprentissage ===== 
-Avec l'option 3 du menu ci-dessus. 
 ====Préparation de Darknet==== ====Préparation de Darknet====
 ===Conversion=== ===Conversion===
Ligne 112: Ligne 142:
 ===Création des fichiers train.txt et test.txt=== ===Création des fichiers train.txt et test.txt===
 Avec le script **./letters/darknet/create_train_test_txt.py** Avec le script **./letters/darknet/create_train_test_txt.py**
-Pour chaque image toto.png, un fichier toto.txt est créé pour décrire les objets dans l'image, avec le numéro de l'objet: voir  
-[[yolo_avec_mes_propres_images#creation_du_set_d_apprentissage|Création du set d'apprentissage]] 
  
 ===Controle des fichiers txt de chaque image=== ===Controle des fichiers txt de chaque image===
 Avec le script **./letters/control/control.py** Avec le script **./letters/control/control.py**
  
-{{ ::shot_14.jpg?400 |}}+{{ media_03:shot_14.jpg?400 |}}
  
 ===== Yolo V3 Darknet===== ===== Yolo V3 Darknet=====
- 
 ==== Ressources ==== ==== Ressources ====
   * **https://github.com/AlexeyAB/darknet**   * **https://github.com/AlexeyAB/darknet**
 +
 +  * [[https://scholar.google.fr/scholar?q=yolo+artificial+intelligence&hl=fr&as_sdt=0&as_vis=1&oi=scholart|Recherche]] sur ressources universitaires avec Google scholar.
  
 ==== Installation de CUDA ==== ==== Installation de CUDA ====
Ligne 130: Ligne 159:
 ==== Compilation de Darknet ==== ==== Compilation de Darknet ====
   * **[[yolo_darknet_sur_un_portable_optimus#installation_de_yolo_darknet|Installation de Yolo Darknet]]**   * **[[yolo_darknet_sur_un_portable_optimus#installation_de_yolo_darknet|Installation de Yolo Darknet]]**
 +
 +Modification du Makefile pour une carte GTX 1060:
 +<code>
 +# ARCH= -gencode arch=compute_30,code=sm_30 \
 +#       -gencode arch=compute_35,code=sm_35 \
 +#       -gencode arch=compute_50,code=[sm_50,compute_50] \
 +#       -gencode arch=compute_52,code=[sm_52,compute_52] \
 +#       -gencode arch=compute_61,code=[sm_61,compute_61]
 +
 +# GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4
 +ARCH= -gencode arch=compute_61,code=sm_61 -gencode arch=compute_61,code=compute_61
 +</code>
  
 ====Détection de mes objets lettres==== ====Détection de mes objets lettres====
Ligne 190: Ligne 231:
  
 ===obj.data=== ===obj.data===
-Défini les chemins des fichiers utilisés:+Définit les chemins des fichiers utilisés: les chemins relatifs sont comptés depuis le dossier darknet, d'où sera lancé la commande de l'apprentissage: 
 +  ./darknet ..... 
 +  
 <code txt> <code txt>
 classes = 380 classes = 380
Ligne 199: Ligne 242:
 </code> </code>
  
-====Apprentissage==== +=====Apprentissage soit Training appelé train===== 
-Ou Training appelé train (non! pas de locomotive à vapeur ici!)+Non! pas de locomotive à vapeur ici !
  
-===Modifications suite à Apprentissage raté=== +====Hardware==== 
-  * yolov3-tiny.cfg +===RAM et SWAP=== 
-  * yolov3_5l.cfg +Lors de l'estimation de l'efficacité, les images de test définies dans test.txt sont certainement chargées en mémoire.
-  * yolov3-tiny_3l.cfg +
-  * dans shot_xxx.txt de l'image shot_xxx.png: non de l'objet au lieu du numéro de l'objet ! +
-  * fond noir +
-  * fond noir remplacé par un nuage gris +
-  * nuage gris remplacé par une video de ciel ! +
-  * Message dans le terminal: "Processus arrêté." Pas assez de RAM sur le PC de calcul ! 4 Go insuffisant pour des images > 416x416 ! La swap n'est pas utilisée ! Achat de DDR3 1600 mHz 16 Go. +
-  * Diminution des supperpositions avec size de 0.6 à 0.9 +
-  * Images avec minuscules seules et images avec majuscules seules +
-  * Reprise des 400 images des lettres pour les cadrer serré (20 heures de boulot) ! +
-  * Ne pas déclarer des objets qui ne sont jamais dans les images !+
  
-===Taille des images et taille des RAM=== +Avec 10% des images en images test, soit 3000 images 416x416, les images occupent: 
-  * **Images de 416*416** +  * RAM:  15.Go sur 15.7 Go 
-    * RAM 3.Go +  * SWAP: 19.Go sur 64 Go
-    * RAM GPU ~ 3 Go +
-  * **Images de 640*640** +
-    * RAM 5.Go utilisé +
-    * RAM GPU ~ 5.3 Go au démarrage, baisse ensuite. La carte 1060GTX à 6 Go de RAM: **la taille maxi des images possible est donc 640x640** +
  
-===yolov3.cfg=== +**Prévoir une grosse SWAP, par exemple 64 Go !** 
-  export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}+ 
 +===Taille de la RAM GPU=== 
 +  * RAM GPU > 4.5 Go 
 + **La taille maxi des images possible est 416x416 avec 6 Go de Ram GPU**  
 + 
 +=====Apprentissage avec yolov3.cfg====
 +Dans le dossier /darknet:
   ./darknet detector train data/obj.data data/yolov3.cfg darknet53.conv.74 -map   ./darknet detector train data/obj.data data/yolov3.cfg darknet53.conv.74 -map
 +Les chemins "data/..." doivent être cohérent avec obj.data, le dossier "backup" doit exister.
  
-=====Durée d'un calcul===== +=====Apprentissage avec yolov3-tiny_3l.cfg===== 
-  1er calcul = 1 semaine = 7*24 = 168 heures +**3 layers** 
-=====Consommation électrique===== +  ./darknet partial data_09/yolov3-tiny_3l_09.cfg yolov3-tiny.weights data_09/yolov3-tiny.conv.15 15 
-à 0.17 € le kWh +  ./darknet detector train data_09/obj.data data_09/yolov3-tiny_3l_09.cfg data_09/yolov3-tiny.conv.15 -map 
-soit 15 € le calcul+   
 + Le fichier yolov3-tiny_3l_xx_best.weights fait 38.1 Mo 
 +=====Apprentissage avec yolov3-tiny.cfg===== 
 +**2 layers** 
 +  ./darknet partial data_12/yolov3-tiny_12.cfg yolov3-tiny.weights data_12/yolov3-tiny.conv.15 15 
 +  ./darknet detector train data_12/obj.data data_12/yolov3-tiny_12.cfg data_12/yolov3-tiny.conv.15 -map 
 +   
 + Le fichier yolov3-tiny_12_best.weights fait 38 Mo. Malheureusement, ça plante ! 
 +=====Tous les essais===== 
 +  * **[[darknet_letters_essais|Tous les essais sur cette page]]**
  
-Question: Quel serait le coût sur un pentaflops +===== Reconversion d'images en musique ===== 
-=====A faire===== +====Test sur le jeu d'image de json_to_image==== 
-  * Repasser à un fond noir +Et le script play_letters.py du dossier play_letters. Il faut copier les fichiers: 
-  * Modifier le flou+  * darknet.py 
 +  * libdarknet.so 
 +des sources compilées de darknet dans le dossier play_letters.
  
 +Créer les images de json_to_image avec l'option 5 du jeu letters. 
  
 +Les fichiers midi qui seront convertis en images sont ceux de /letters/midi/music/non_git/pour_ia
  
 +Définir le FPS dans letters.ini dans la section [json_to_image] 
  
-===== Test ===== +Il n'y a que 10 canaux midi au maximum possibles. 
-  ./darknet detector test data/obj.data data/yolov3.cfg data/backup/yolov3_3000.weights shot_0.jpg+ 
 +====Quel fond d'image utiliser ?===== 
 +<WRAP group> 
 +<WRAP quarter column> 
 +  * Nuages 
 +{{media_12:s_j_to_i_593.jpg?200|}} 
 +</WRAP> 
 + 
 +<WRAP quarter column> 
 +  * Plasma 
 +{{media_12:s_j_to_i_537.jpg?200|}} 
 +</WRAP> 
 + 
 +<WRAP quarter column> 
 +  * nuage RGB clair 
 +{{media_04:boney_m.png?200|}} 
 +</WRAP> 
 + 
 +<WRAP quarter column> 
 +  * Très foncé en RGB 
 +{{media_12:s_j_to_i_122.png?200|}} 
 +</WRAP> 
 + 
 +</WRAP> 
 + 
 +=====Bug: Libération de la RAM GPU à la fin d'une détection===== 
 + 
 +[[darknet_letters_unload_gpu_ram_in_python_script|Voir la page Darknet Letters unload GPU RAM in python script]] 
 +=====Durée d'un calcul et consommation électrique avec yolov3.cfg===== 
 +  * 50000 itérations de 50 000 images de 416x416 = 6 jours * 24 * 0.2 kW =  kwh à 0.17 € le kWh soit 5 € 
 + 
 +**6 mois de calcul = 150 €** 
 +=====Quels matériels pour un apprentissage rapide ?===== 
 +  * **[[https://timdettmers.com/2019/04/03/which-gpu-for-deep-learning/|timdettmers.com]]** Which GPU(s) to Get for Deep Learning 
 +  * **[[https://www.quora.com/What-is-currently-the-best-GPU-for-deep-learning|www.quora.com]]** avec un graphique qui teste alexnet (yolo ?) conseille [[https://www.amazon.fr/MSI-GTX-1080-Graphique-GeForce/dp/B06XT3TVKP/ref=sr_1_4?keywords=gtx+1080+ti&qid=1569416932&s=gateway&sr=8-4|une GTX 1080 Ti]] à 750€ (en fin de série) ou [[https://www.ldlc.com/fiche/PB00263052.html|une RTX 2080 Ti 11GB]] à 1100€. 
 +  * **[[https://timdettmers.com/2018/12/16/deep-learning-hardware-guide/|timdettmers.com]]** A Full Hardware Guide to Deep Learning. La carte mère et le CPU peuvent être très modeste ! 
 +  * **[[https://lambdalabs.com/blog/best-gpu-tensorflow-2080-ti-vs-v100-vs-titan-v-vs-1080-ti-benchmark/|lambdalabs.com]]** Deep Learning GPU Benchmarks - Tesla V100 vs RTX 2080 Ti vs GTX 1080 Ti vs Titan V 
 +  * **[[https://blog.slavv.com/picking-a-gpu-for-deep-learning-3d4795c273b9|slavv.com/]]** Picking a GPU for Deep Learning 
 +  * **[[https://hackernoon.com/how-to-create-your-own-deep-learning-rig-a-complete-hardware-guide-7cdc71e174aa|hackernoon.com]]** How to create your own deep learning rig: A complete hardware guide 
 +  * https://www.tooploox.com/blog/deep-learning-with-gpu sur alexnet 
 + 
 +===Remise spéciale Education=== 
 +  * **[[https://www.nvidia.com/fr-fr/titan/titan-rtx/|NVIDIA TITAN RTX]]** 20% de remise sur 2720€ soit €2,159.20 
 + 
 +===Pour une startup fortunée=== 
 +  * **[[https://www.microway.com/preconfiguredsystems/whisperstation-deep-learning/| WhisperStation™- Deep Learning Ultra-Quiet Computing for Deep Learning Researchers]]** System Price: $11,265 to $40,047 
 +  * **[[https://www.microway.com/preconfiguredsystems/nvidia-dgx-station-deep-learning-workstation/|NVIDIA DGX Station for Deep Learning System]]** Price: $51,861 (academic pricing, includes 1 year support) to $73,830 (commercial, includes 1 year support) 
 +  * **[[https://www.microway.com/preconfiguredsystems/gpu-accelerated-workstation-cst-studio-suite/|Microway’s GPU-Accelerated Workstation for CST STUDIO SUITE®]]** System Price: $15,000 to $45,000 
 + 
 +===Juin 2020=== 
 +  * **[[https://lambdalabs.com/blog/choosing-a-gpu-for-deep-learning/|Choosing the Best GPU for Deep Learning in 2020]]** 
 + 
 +    * RTX 2060 (6 GB): if you want to explore deep learning in your spare time. 360€ 
 +    * RTX 2070 or 2080 (8 GB): if you are serious about deep learning, but your GPU budget is $600-800. Eight GB of VRAM can fit the majority of models. 
 +    * RTX 2080 Ti (11 GB): if you are serious about deep learning and your GPU budget is ~$1,200. The RTX 2080 Ti is ~40% faster than the RTX 2080. 
 +    * Titan RTX and Quadro RTX 6000 (24 GB): if you are working on SOTA models extensively, but don't have budget for the future-proofing available with the RTX 8000. 4000€ 
 +    * Quadro RTX 8000 (48 GB): you are investing in the future and might even be lucky enough to research SOTA deep learning in 2020. 5500€ 
 + 
 + 
 +=====Benchmark===== 
 +  * https://github.com/ryujaehun/pytorch-gpu-benchmark 
 +====Bilan==== 
 +**Je suis un chercheur compétitif, près de mes sous, pauvre, fou d'apprentissage automatique et comme Salvador Dali du chocolat Lanvin: GTX 1060 (6GB) en fin de série à 200 € + 35 € de RAM** dans un ordinateur d'emprunt !
  
 =====Morale du jour===== =====Morale du jour=====
-Einstein a dit: "Deux choses sont infinies: l'univers et la bêtise humaine. Pour l'univers, je ne suis pas sûr !"+**Einstein** a dit:  
 + 
 +**"Deux choses sont infinies : l'Univers et la bêtise humaine.** 
 + 
 +**Mais, en ce qui concerne l'Univers, je n'en ai pas encore acquis la certitude absolue."**
  
-{{tag> ia sb bge}}+{{tag> ia sb bge yolo_darknet}}
darknet_letters.1567177841.txt.gz · Dernière modification : 2019/08/30 15:10 de serge