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/20 10:03] – [Essais] 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 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> </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 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 94: 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 105: 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. +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 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 135: Ligne 152:
   * **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 259:
  **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 +{{media_12: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 +{{media_12:s_j_to_i_537.jpg?200|}} 
-  * variation de couleurs et éclairage avec un Sun +</WRAP> 
-  * 100 000 itérations + 
-{{ ::chart_05_50000.png?300 |}} +<WRAP quarter column> 
-Très mauvais résultat !+  * 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>
  
-===Essai 06 avec Tiny du Sémaphore==+=====BugLibération de la RAM GPU à la fin d'une détection=====
-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.+
  
-=====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 335: 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
-=====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 ! 
  
-===== Test ===== +===Pour une startup fortunée=== 
-====Test simple sur une image==== +  * **[[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 
-  ./darknet detector test data/obj.data data/yolov3.cfg data/backup/yolov3_3000.weights shot_0.jpg +  * **[[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
-====Test sur le jeu d'image de json_to_image==== +
-Et le script show_letters.pyIl 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 lettersDéfinir le fichier json à convertir en images en définissant json_to_image dans letters.ini+===Juin 2020=== 
 +  * **[[https://lambdalabs.com/blog/choosing-a-gpu-for-deep-learning/|Choosing the Best GPU for Deep Learning in 2020]]**
  
-Il n'y a que 10 canaux midi au maximum possibles.+    * 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 20205500€
  
 +
 +=====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=====
Ligne 365: 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.1571565783.txt.gz · Dernière modification : 2019/10/20 10:03 de serge