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/10/10 14:53]
serge [Durée d'un calcul et consommation électrique]
darknet_letters [2020/02/04 17:43] (Version actuelle)
serge ↷ Liens modifiés en raison d'un déplacement.
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 ! Le fond noir ne convient pas, il faut une video !
 </​WRAP>​ </​WRAP>​
- +<WRAP center round box 60%> 
- +  ​* ​**De l'​Intelligence Artificielle pour reconnaître des lettres dans différentes polices** 
-<WRAP center round box 60% centeralign+  * **Créer des images correspondant à une musique midi** 
-**De l'​Intelligence Artificielle pour reconnaître des lettres dans différentes polices convertir les lettres d'un texte en musique midi.**+  * **Lecture des images par l'​Intelligence Artificielle et rejouer le midi**
 </​WRAP>​ </​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 ===== ===== 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 ==== ==== Conclusion des différents apprentissages ====
-  ​* **380 objets**+<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**   * **GPU Nvidia 1060 GTX**
-  * **6 jours d'​apprentissage** +  * **RAM de 16 Go**  
-  * **Ne pas mettre ​de fond noir** +  * **RAM GPU de 6 Go** 
-  * **Les zones de définitions des objets dans les images doivent être un peu large** +  * **SWAP de 64 Go sur SSD** 
-  * **Mettre un peu de flou dans les images **+</​WRAP>​ 
 +</​WRAP>​ 
  
-====Hardware==== 
-  * Images de 416x416 
-  * RAM de 16 Go  
-  * RAM GPU de 6 Go 
-  * SWAP de 64 Go sur SSD 
 ===== 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 35: 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 94: Ligne 108:
    
 <code txt> <code txt>
- ​1 ​- Retour au logo + 1 - Lancement de letters
- ​2 ​- 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 
- 4 - Conversion en json + - Conversion d'une musique en image
- ​5 ​- Conversion d'une musique en image+
  H - Help  H - Help
  R - Reset  R - Reset
Ligne 105: Ligne 117:
 </​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 4: Les fichiers midi sont traduits en json pour être facilement utilisé en python. +En 3: Crée un jeu d'​images pour ensuite tester l'IA avec play_letters.py
- +
-En 5: Crée un jeu d'​images pour ensuite tester l'IA avec show_letters.py+
  
 ===== Création du set d'​images pour l'​apprentissage ===== ===== Création du set d'​images pour l'​apprentissage =====
Ligne 129: 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=====
Ligne 135: Ligne 145:
   * **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 ​scolar.+  * [[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 242: Ligne 252:
  **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** 
  
-====Apprentissage avec 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.
  
-====Essais==== +=====Apprentissage avec yolov3-tiny_3l.cfg===== 
-===Erreur de segmentation ​avec yolov3-tiny.cfg=== +**3 layers** 
-**yolov3-tiny** ​va plus vite en test mais fini toujours par une erreur de segmentation après quelques images.+  ./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]]**
  
-===Modifications suite à apprentissage finissant sur une erreur=== +===== Reconversion d'​images en musique ===== 
-  ​* ​Test avec yolov3-tiny.cfg +====Test sur le jeu d'image de json_to_image==== 
-  * Test avec yolov3_5l.cfg +Et le script play_letters.py du dossier play_lettersIl faut copier ​les fichiers: 
-  * Test avec yolov3-tiny_3l.cfg +  * darknet.py 
-  * 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 ! +  * libdarknet.so 
-  * fond noir +des sources compilées ​de darknet ​dans le dossier play_letters.
-  * 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ées (20 heures ​de boulot) ! +
-  * Ne pas déclarer des objets qui ne sont jamais ​dans les images ! +
-  * SWAP de 64 Go au lieu de 8 Go+
  
-===Essai 02=== +Créer les images de json_to_image ​avec l'​option 5 du jeu letters
-  * fond video +
-  * flou de 3 à 7 +
-  * letters_scale = 1.09 +
-  * 30 000 images +
-  * 90 000 itérations +
-  * Shadeless pas de variation de couleurs et éclairage +
-Résultat:​ +
-{{ ::​chart_30000.png?​300 |}} +
-Pas mal mais trop de lettres ne sont pas reconnues, et certaines ​avec 2 reconnaissances. La musique résultante est reconnaissable.+
  
-===Essai 03=== +Les fichiers midi qui seront convertis en images ​sont ceux de /letters/midi/music/non_git/​pour_ia
-  * fond noir +
-  * pas de flou +
-  * taille 416 +
-  * 50 000 images +
-  * vérification du nombre ​de lettres: objectif 2000 par lettres, réel 1948 +
-  * changement du json utilisé par créer les shot: minuscules et majuscules séparées et pas de séparation des polices avec des canaux vides. +
-  * yolo_v3.cfg +
-  * letters_scale = 1.01 +
-  * plage_x = 4.5 +
-  * plage_y = 4.5 +
-  * size_min = 0.6 +
-  * size_max = 0.9 +
-  * variation de couleurs et éclairage avec un Sun +
-  * début 25/09/2019 à 10h, fin 01/10/2019 à 6h55 +
-  * 50 000 itérations +
-{{ :​chart_03.png?​300 |}} +
-Efficacité 99% mais reconnaît très mal les lettres, et la détection de leur position très très large par rapport au réel. La musique résultante n'est pas reconnaissable.+
  
-===Essai 04=== +Définir le FPS dans letters.ini dans la section [json_to_image] ​
-Idem Essai 03 mais: +
-  * fond video +
-{{ ::​chart_04_50000.png?​300 |}} +
-Reconnaissance médiocre ! La musique résultante n'est pas reconnaissable.\\ +
-Relance de 50 000 itérations supplémentaires.+
  
-===Essai 05=== +Il n'y a que 10 canaux midi au maximum possibles. 
-Modification par rapport à 4 et 3 + 
-  * fond video +====Quel fond d'​image utiliser ?===== 
-  * flou3 à 7 +<WRAP group> 
-  * taille 416 +<WRAP quarter column> 
-  * 50 000 images +  * Nuages 
-  * yolo_v3_05.cfg +{{::​s_j_to_i_593.jpg?​200|}} 
-  * letters_scale = 1.08 +</​WRAP>​ 
-  * plage_x = 4.5 + 
-  * plage_y = 4.5 +<WRAP quarter column> 
-  * size_min = 0.6 +  * Plasma 
-  * size_max = 0.9 +{{::​s_j_to_i_537.jpg?200|}} 
-  * variation de couleurs et éclairage avec un Sun +</​WRAP>​ 
-  * 100 000 itérations+ 
 +<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=====
  
-=====Durée d'un calcul et consommation électrique=====+[[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 €   * 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 ?===== =====Quels matériels pour un apprentissage rapide ?=====
-  * **Quel serait le coût sur un Pentaflops ​ ?** 
-  * **Et si La Labomedia achète un Pentaflops ?** 
   * **[[https://​timdettmers.com/​2019/​04/​03/​which-gpu-for-deep-learning/​|timdettmers.com]]** Which GPU(s) to Get for Deep Learning   * **[[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://​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€.
Ligne 330: Ligne 325:
   * **[[https://​blog.slavv.com/​picking-a-gpu-for-deep-learning-3d4795c273b9|slavv.com/​]]** Picking a GPU for Deep Learning   * **[[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://​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=== ===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   * **[[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
 +Each Microway system is customized to your requirements. Final pricing depends upon configuration and any applicable educational or government discounts.
 +
 +
 =====Benchmark===== =====Benchmark=====
   * https://​github.com/​ryujaehun/​pytorch-gpu-benchmark   * https://​github.com/​ryujaehun/​pytorch-gpu-benchmark
 ====Bilan==== ====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 ! **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 !
- 
-===== Test ===== 
-====Test simple sur une image==== 
-  ./darknet detector test data/​obj.data data/​yolov3.cfg data/​backup/​yolov3_3000.weights shot_0.jpg 
-  ​ 
-====Test sur le jeu d'​image de json_to_image==== 
-Et le script show_letters.py. Il faut copier les fichiers: 
-  * darknet.py 
-  * libdarknet.so 
-des sources compilées de darknet dans le dossier darknet de letters. 
- 
-Créer les images de json_to_image avec l'​option 5 du jeu letters. Définir le fichier json à convertir en images en définissant json_to_image dans letters.ini 
- 
-Il n'y a que 10 canaux midi au maximum possibles. 
- 
  
 =====Morale du jour===== =====Morale du jour=====
Ligne 360: Ligne 349:
 **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.1570712039.txt.gz · Dernière modification: 2019/10/10 14:53 par serge