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/10/31 14:06] – [Essai 08] 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>
-<WRAP center round box 80% centeralign> +<WRAP center round box 60% centeralign> 
-{{::2019_08:shot_22.png?400|}} {{:2019_08:shot_17.png?400|}} +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]**
-Le fond noir ne convient pas, il faut une video !+
 </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 ===== ===== 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 ====
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
-  * **380 objets**+  * **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**   * **Images de 416x416**
-  * **5.5 jours d'apprentissage** +  * **1 à 2 jours d'apprentissage** 
-  * **Ne pas mettre de fond noir** +  * **Fond video pour l'apprentissage, noir pour la détection** 
-  * **Les zones de définitions des objets dans les images doivent être un peu large** +  * **Pas de flou dans les images **
-  * **Mettre un peu de flou dans les images **+
 </WRAP> </WRAP>
 <WRAP half column> <WRAP half column>
Ligne 38: Ligne 56:
 **Créer et testé sur Debian Buster 10** **Créer et testé sur Debian Buster 10**
  
-{{:2019_08:letters_1.png?300|Le jeu}} +{{media_02:letters_1.png?300|Le jeu}} 
-{{::shot_12.png?300|Avec un fond video}} +{{media_03:shot_12.png?300|Avec un fond video}} 
-{{:2019_08:letters_3.png?300|Avec un fond noir: la reconnaissance est très mauvaise}}+{{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 97: Ligne 115:
    
 <code txt> <code txt>
- - Retour au 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 
- 4 - Conversion en json + - Conversion d'une musique en image
- - Conversion d'une musique en image+
  H - Help  H - Help
  R - Reset  R - Reset
Ligne 108: Ligne 124:
 </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. Malheureusement, la conversion dans le Blender Game Engine est très lente, plusieurs heures au lieu de quelques minutes avec le script analyse_play_midi.py +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 132: Ligne 146:
 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 250: Ligne 264:
 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.
  
-===Modifications suite à apprentissage finissant sur une erreur==+=====Apprentissage avec yolov3-tiny_3l.cfg===== 
-  * Test avec yolov3-tiny.cfg +**3 layers** 
-  * Test avec yolov3_5l.cfg +  ./darknet partial data_09/yolov3-tiny_3l_09.cfg yolov3-tiny.weights data_09/yolov3-tiny.conv.15 15 
-  * Test avec yolov3-tiny_3l.cfg +  ./darknet detector train data_09/obj.data data_09/yolov3-tiny_3l_09.cfg data_09/yolov3-tiny.conv.15 -map 
-  * 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 + Le fichier yolov3-tiny_3l_xx_best.weights fait 38.1 Mo 
-  * fond noir remplacé par un nuage gris +=====Apprentissage avec yolov3-tiny.cfg===== 
-  * nuage gris remplacé par une video de ciel ! +**2 layers** 
-  * Message dans le terminal: "Processus arrêté." Achat de DDR3 1600 mHz 16 Go pour remplacer les 4 Go existants. +  ./darknet partial data_12/yolov3-tiny_12.cfg yolov3-tiny.weights data_12/yolov3-tiny.conv.15 15 
-  * Diminution des superpositions avec size de 0.6 à 0.9 +  ./darknet detector train data_12/obj.data data_12/yolov3-tiny_12.cfg data_12/yolov3-tiny.conv.15 -map 
-  * 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) ! + Le fichier yolov3-tiny_12_best.weights fait 38 Mo. Malheureusementça plante ! 
-  * Ne pas déclarer des objets qui ne sont jamais dans les images ! +=====Tous les essais===== 
-  * SWAP de 64 Go au lieu de 8 Go +  * **[[darknet_letters_essais|Tous les essais sur cette page]]**
- +
-===Essai 02=== +
-<WRAP group> +
-<WRAP half column> +
-  fond video +
-  flou de à 7 +
-  letters_scale = 1.09 +
-  30 000 images +
-  * 90 000 itérations +
-  * Shadeless pas de variation de couleurs et éclairage +
-</WRAP> +
-Résultat: +
-{{ ::chart_30000.png?300 |}} +
-<WRAP half column> +
-</WRAP> +
-</WRAP> +
-Pas mal mais trop de lettres ne sont pas reconnues, et certaines avec 2 reconnaissancesLa musique résultante est reconnaissableC'est le meilleurs résultat des essais 02 à 06 +
-  +
-===Essai 03=== +
-<WRAP group> +
-<WRAP third column> +
-  * 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. +
-</WRAP> +
-<WRAP third column> +
-  * yolo_v3.cfg +
-  * letters_scale = 1.01 +
-  * plage_x = 4.+
-  * 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 +
-</WRAP> +
-<WRAP third column> +
-{{ :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. +
-</WRAP> +
-</WRAP> +
- +
-===Essai 04=== +
-  * Idem Essai 03 mais fond video +
-  * Relance de 50 000 itérations supplémentaires. +
-<WRAP group> +
-<WRAP half column> +
-{{ ::chart_04_50000.png?300 |}} +
-</WRAP> +
-<WRAP half column> +
- {{ ::chart_04_92500.png?300 |}} +
-</WRAP> +
-</WRAP> +
-Reconnaissance médiocre ! La musique résultante n'est pas reconnaissable.\\ +
- +
-===Essai 05=== +
-<WRAP group> +
-<WRAP third column> +
-Modification par rapport à 4 et 3 +
-  * fond video +
-  * flou: 3 à 7 +
-  * taille 416 +
-  * 50 000 images +
-  * yolo_v3_05.cfg +
-</WRAP> +
-<WRAP third column> +
-  * letters_scale = 1.08 +
-  * plage_x = 4.5 +
-  * plage_y = 4.5 +
-  * size_min = 0.+
-  * size_max = 0.+
-  * variation de couleurs et éclairage avec un Sun +
-</WRAP> +
-<WRAP third column> +
-{{ ::chart_05_50000.png?300 |}} +
-Très mauvaise reconnaissance ! +
-</WRAP> +
-</WRAP> +
- +
- +
- +
-=====yolov3-tiny_3l.cfg===== +
-  [[https://github.com/AlexeyAB/darknet#how-to-train-tiny-yolo-to-detect-your-custom-objects|how-to-train-tiny-yolo-to-detect-your-custom-objects]] +
- +
-For training for both small and large objects use modified models: +
-  * Tiny-model: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg +
-     +
-====Essai 06==== +
-Le fichier tiny.cfg est paramétré pour 80 objets, et la doc dit qu'il est bien optimisé: [[https://pjreddie.com/darknet/tiny-darknet/|Je cite pjreddie.com]] It's only 28 MB but more importantly, it's only 8x10<sup>10</sup> floating point operations. The original Alexnet is 2.3*10<sup>12</sup>. Darknet is 2.9 times faster and it's small and it's 4% more accurate+
- +
-Même image que Essai 05, mais avec [[https://github.com/sergeLabo/darknet-letters/blob/master/letters/darknet/data_06/yolov3-tiny_06.cfg|yolov3-tiny_06.cfg]] du [[yolo_darknet_avec_un_vrai_semaphore|Sémaphore]], adapté pour 380 objets et images de 416x416+
- +
-Le fichier yolov3-tiny_06_best.weights fait 40,1 Mo, l'apprentissage est 2 fois plus rapide que yolov3.cfgsoit 2.7 jours +
- +
-La reconnaissance est très décevante, le FPS sur HD5000 est de 1.8 au lieu de 0.4, +
-mais trop de lettres ne sont pas reconnues. +
- +
-L'analyse des % de reconnaissance calculés à la fin de l'apprentissage, montre que ce sont les lettres avec la couleur gris clair qui sont les plus mal reconnues. +
- +
-{{::chart_50000_06.png?400|}} {{::efficacite_font_0.png?400|}} +
- +
-====Essai 07==== +
-<WRAP group> +
-<WRAP third column> +
-  * size_min 0.9 +
-  * size_max 1.2 +
-  * shot_size = 416 +
-  blur_mini = 3 +
-  blur_maxi = 7 +
-  * letters_scale = 1.07 +
-  * sun_energy_min = 3 +
-  * sun_energy_min = 4 +
-  * sun_color_min = 0.6 +
-  * sun_color_max = 1.0 +
-  * police 0 en blanc au lieu de gris clair +
-  * les lettres sont plus grandes +
-  * le sun plus fort +
-</WRAP> +
- +
-<WRAP third column> +
-{{::shot_16.png?250|}} +
-</WRAP> +
- +
-<WRAP third column> +
-Résultat:\\  +
-{{::chart_07_50000.png?250|}} +
-</WRAP> +
-</WRAP> +
-**Efficacité** +
-<code> +
-name font_0_i 85.00 +
-name font_0_l 85.79 +
-name font_2_j 87.91 +
-name font_2_q 89.78 +
-name font_2_o 90.16 +
-name font_2_g 90.20 +
-name font_0_n 90.22 +
-name font_1_I 90.57 +
-name font_1_J 91.31 +
-name font_2_I 91.33 +
-name font_0_e 91.56 +
-</code> +
-Certaines lettres se ressemblent beaucoup et sont mal reconnues. +
-====Essai 08==== +
-Suppression des majuscules: le volume sera défini à 127 pour toutes les notes, il ne reste plus que 190 objets ! 10 polices avec les lettres de b à t. +
- +
-  Moins de lettres par shot en corrigeant le script json_get_shot.py +
-  Taille des lettres plus grandes +
-  * 38 000 images avec 10 lettres par image, les 10 b, 10 c, ... 10 B, ..10 T +
-  * 30 000 itérations +
-  * fond = "video" +
-  * shot_size = 480 +
-  * plage_x = 4.5 +
-  * plage_y = 4.5 +
-  * size_min = 1.0 +
-  * size_max = 1.4 +
-  * blur_mini = 0 +
-  * blur_maxi = 6 +
-  * letters_scale = 1.07 +
-  * sun_energy_min = 3 +
-  * sun_energy_max = 4 +
-  * sun_color_min = 0.8 +
-  * sun_color_max = 1.0 +
-Les images sont à shot_size = 416 --> ???? +
- +
-{{ ::chart_08_30000.png?400 |}}+
  
-====Essai 09==== 
-idem essai 08 mais shot_size = 480 pour la config et les images: 
-{{ ::chart_09_20000.png?400 |}} 
 ===== Reconversion d'images en musique ===== ===== Reconversion d'images en musique =====
 ====Test sur le jeu d'image de json_to_image==== ====Test sur le jeu d'image de json_to_image====
Ligne 456: Ligne 298:
 <WRAP quarter column> <WRAP quarter column>
   * Nuages   * Nuages
-{{::s_j_to_i_593.jpg?200|}}+{{media_12:s_j_to_i_593.jpg?200|}}
 </WRAP> </WRAP>
  
 <WRAP quarter column> <WRAP quarter column>
   * Plasma   * Plasma
-{{::s_j_to_i_537.jpg?200|}}+{{media_12:s_j_to_i_537.jpg?200|}}
 </WRAP> </WRAP>
  
 <WRAP quarter column> <WRAP quarter column>
-  * boney_m +  * nuage RGB clair 
-{{:2019_08:boney_m.png?200|}}+{{media_04:boney_m.png?200|}}
 </WRAP> </WRAP>
  
 <WRAP quarter column> <WRAP quarter column>
   * Très foncé en RGB   * Très foncé en RGB
-{{::s_j_to_i_122.png?200|}}+{{media_12:s_j_to_i_122.png?200|}}
 </WRAP> </WRAP>
  
 </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===== =====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 489: Ligne 332:
   * **[[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
 +
 +===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===== =====Benchmark=====
   * https://github.com/ryujaehun/pytorch-gpu-benchmark   * https://github.com/ryujaehun/pytorch-gpu-benchmark
Ligne 504: Ligne 364:
 **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}}
darknet_letters.1572530781.txt.gz · Dernière modification : 2019/10/31 14:06 de serge