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édentes Révision précédente
Prochaine révision
Révision précédente
darknet_letters [2019/09/09 16:46]
serge [A faire]
darknet_letters [2020/06/20 09:05] (Version actuelle)
serge [Quels matériels pour un apprentissage rapide ?]
Ligne 4: Ligne 4:
 </​WRAP>​ </​WRAP>​
 <WRAP center round box 80% centeralign>​ <WRAP center round box 80% centeralign>​
-{{::2019_08:​shot_22.png?​400|}} {{:2019_08:​shot_17.png?​400|}}+{{media_02:​shot_22.png?​400|}} {{media_02:​shot_17.png?​400|}} 
 +Le fond noir ne convient pas, il faut une video !
 </​WRAP>​ </​WRAP>​
-<WRAP center round box 60% centeralign+<WRAP center round box 60%> 
-2 0.37 0.31 0.18 0.18 \\ +  * **De l'​Intelligence Artificielle pour reconnaître des lettres dans différentes polices** 
-356 0.07 0.27 0.13 0.13 \\ +  * **Créer des images correspondant à une musique midi** 
-29 0.44 0.14 0.1 0.1 \\ +  * **Lecture des images par l'​Intelligence Artificielle et rejouer le midi**
-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+{{ vimeo>377284950?​medium }} 
-**De l'Intelligence Artificielle pour reconnaître ​des lettres dans différentes polices,  ​convertir ​les lettres ​d'un texte en musique midi.**+\\ \\  
 +**[[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 puissanteset 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 imagesPasser 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>​
 +<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 49:
 **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 67:
  
 ===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 74: Ligne 98:
   - Si il y a un bug, corriger dans les scripts, toujours de façon explicite, et envoyer un message à l'​auteur.   - 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:+Dans ce fichier, définir ​en particulier:
   * **les chemins de /shot/ et /​shot_jpg/​**   * **les chemins de /shot/ et /​shot_jpg/​**
   * **le nombre d'​images à créer: 20000**   * **le nombre d'​images à créer: 20000**
Ligne 84: Ligne 108:
    
 <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 du set d'​images pour l'​apprentissage =====
 ====Création des images==== ====Création des images====
   * Création des images avec l'​option 3.   * Création des images avec l'​option 3.
-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 +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]] [[yolo_avec_mes_propres_images#​creation_du_set_d_apprentissage|Création du set d'​apprentissage]]
 +
 ====Préparation de Darknet==== ====Préparation de Darknet====
 ===Conversion=== ===Conversion===
Ligne 116: Ligne 139:
 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 139: Ligne 164:
 ARCH= -gencode arch=compute_61,​code=sm_61 -gencode arch=compute_61,​code=compute_61 ARCH= -gencode arch=compute_61,​code=sm_61 -gencode arch=compute_61,​code=compute_61
 </​code>​ </​code>​
- 
  
 ====Détection de mes objets lettres==== ====Détection de mes objets lettres====
Ligne 200: Ligne 224:
  
 ===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 209: Ligne 235:
 </​code>​ </​code>​
  
-====Apprentissage soit Training appelé train====+=====Apprentissage soit Training appelé train=====
 Non! pas de locomotive à vapeur ici ! Non! pas de locomotive à vapeur ici !
  
-===Modifications suite à Apprentissage raté=== +====Hardware====
-  * Test avec yolov3-tiny.cfg +
-  * Test avec yolov3_5l.cfg +
-  * Test avec yolov3-tiny_3l.cfg +
-  * Grosse erreur perso: 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é."​ Achat de DDR3 1600 mHz 16 Go pour remplacer les 4 Go existants. +
-  * Diminution des superpositions avec size de 0.6 à 0.9 +
-  * Images avec minuscules seules et images avec majuscules seules pour diminuer le nombre de lettres dans l'​image et donc les superpositions. +
-  * 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 ! +
- +
-===Erreur de segmentation avec yolov3-tiny.cfg=== +
-**yolov3-tiny** va plus vite en test mais fini toujours par une erreur de segmentation après quelques images. +
 ===RAM et SWAP=== ===RAM et SWAP===
 Lors de l'​estimation de l'​efficacité,​ les images de test définies dans test.txt sont certainement chargées en mémoire. Lors de l'​estimation de l'​efficacité,​ les images de test définies dans test.txt sont certainement chargées en mémoire.
Ligne 239: Ligne 249:
  
 ===Taille de la RAM GPU=== ===Taille de la RAM GPU===
-  * RAM GPU > 4 Go+  * RAM GPU > 4.5 Go
  **La taille maxi des images possible est 416x416 avec 6 Go de Ram GPU**   **La taille maxi des images possible est 416x416 avec 6 Go de Ram GPU** 
  
-===yolov3.cfg===+=====Apprentissage avec yolov3.cfg=====
 Dans le dossier /darknet: 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. Les chemins "​data/​..."​ doivent être cohérent avec obj.data, le dossier "​backup"​ doit exister.
  
-=====Durée d'un calcul et consommation électrique===== +=====Apprentissage avec yolov3-tiny_3l.cfg===== 
-  * jours * 24 * 0.2 kW = 24 kwh à 0.17 € le kWh soit 4 €+**3 layers** 
 +  ./darknet partial data_09/​yolov3-tiny_3l_09.cfg yolov3-tiny.weights data_09/​yolov3-tiny.conv.15 15 
 +  ./darknet detector train data_09/​obj.data data_09/​yolov3-tiny_3l_09.cfg data_09/​yolov3-tiny.conv.15 -map 
 +   
 + 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]]** 
 + 
 +===== Reconversion d'​images en musique ===== 
 +====Test sur le jeu d'​image de json_to_image==== 
 +Et le script play_letters.py du dossier play_letters. Il faut copier les fichiers: 
 +  * 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]  
 + 
 +Il n'y a que 10 canaux midi au maximum possibles. 
 + 
 +====Quel fond d'​image utiliser ?===== 
 +<WRAP group> 
 +<WRAP quarter column>​ 
 +  * Nuages 
 +{{::​s_j_to_i_593.jpg?​200|}} 
 +</​WRAP>​ 
 + 
 +<WRAP quarter column>​ 
 +  * Plasma 
 +{{::​s_j_to_i_537.jpg?​200|}} 
 +</​WRAP>​ 
 + 
 +<WRAP quarter column>​ 
 +  * nuage RGB clair 
 +{{:​boney_m.png?​200|}} 
 +</​WRAP>​ 
 + 
 +<WRAP quarter column>​ 
 +  * Très foncé en RGB 
 +{{::​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]]**
  
-Questions:  +    * RTX 2060 (6 GB)if you want to explore deep learning in your spare time. 360€ 
-  * **Quel serait le coût sur un Pentaflops ​ ?** +    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. 
-  * **Et si La Labomedia achète un Pentaflops ?**+    ​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€
  
-=====Idées pour approfondir le sujet !===== 
-  * Repasser à un fond noir 
-  * Modifier le flou 
  
-===== Test ===== +=====Benchmark===== 
-  ​./darknet detector test data/obj.data data/yolov3.cfg data/backup/​yolov3_3000.weights shot_0.jpg+  ​* 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=====
Ligne 268: Ligne 357:
 **Mais, en ce qui concerne l'​Univers,​ je n'en ai pas encore acquis la certitude absolue."​** **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 deap_learning}}
darknet_letters.1568040385.txt.gz · Dernière modification: 2019/09/09 16:46 par serge