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/09/22 07:57] – [Conversion d'un fichier *.midi en *.json] 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]]**
 </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 17: 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 66: Ligne 105:
   - 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 76: 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 87: 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 4: Les fichiers midi sont traduits en json pour être facilement utilisé en python. +
- +
-En 5: Crée un jeu d'images pour ensuite tester l'IA avec show_letters.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 3: Crée un jeu d'images pour ensuite tester l'IA avec play_letters.py
  
 ===== Création du set d'images pour l'apprentissage ===== ===== Création du set d'images pour l'apprentissage =====
Ligne 113: 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=====
 ==== 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 136: Ligne 171:
 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 197: Ligne 231:
  
 ===obj.data=== ===obj.data===
-Défini les chemins des fichiers utilisés: les chmin relatif sont comptés depuis le dossier darknet, d'où sera lancé la commande de l'apprentissage automatique, voir ci-dessous:+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 .....   ./darknet .....
      
Ligne 208: Ligne 242:
 </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ées (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 238: Ligne 256:
  
 ===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===== 
-  10 jours 24 0.2 kW 48 kwh à 0.17 € le kWh soit 8 €+**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]]**
  
-====Comment aller plus vite ?==== +===== Reconversion d'images en musique ===== 
-  * **Quel serait le coût sur un Pentaflops  ?*+====Test sur le jeu d'image de json_to_image==== 
-  * **Et si La Labomedia achète un Pentaflops ?**+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.
  
-===Ressources=== +Créer les images de json_to_image avec l'option 5 du jeu letters
-Je cite: **[[https://timdettmers.com/2019/04/03/which-gpu-for-deep-learning/|Which GPU(s) to Get for Deep Learning]]**:+
  
-**La meilleure GPU: RTX 2070** +Les fichiers midi qui seront convertis en images sont ceux de /letters/midi/music/non_git/pour_ia
-  * GPUs à éviter:  +
-    * Toutes les Tesla +
-    * Toutes les Quadro +
-    * Toutes les Founders Edition card +
-    * Titan RTX, Titan V, Titan XP +
-  * Bon Coût Efficacité mais chère: RTX 2070 +
-  * Cost-efficient and pas chère:  RTX 2060, **GTX 1060** +
-  * Je n'ai pas beaucoup d'argent: **GTX 1060** +
-  * Je suis très pauvre: GTX 1050 Ti (4GB). Alternative: CPU (pour premier test simple, fait avec [[l_intelligence_du_semaphore|L'intelligence du sémaphore]]). +
-  * Je fais du[[https://fr.wikipedia.org/wiki/Kaggle|Kaggle]]: RTX 2070. Ou si vous êtes pauvre GTX 1060 (6GB) ou GTX Titan (Pascal) d'occasion pour prototypage et AWS (Amazon Web Services) pour training final. Les services en ligne sont chers ! +
-  * Je suis un chercheur compétitif en vision par ordinateur: GTX 2080 Ti avec un kit Water Cooling. Pour les gros réseaux de neurones RTX Titans (2200€ avec l'OFFRE SPÉCIALE ÉDUCATION! sinon [[https://www.ldlc.com/fiche/PB00264879.html|PNY Quadro RTX 6000 5500 € avec 24 Go de DDR6]]). Et n'hésitez pas à investir dans 2 cartes soit un PC à 15000€. +
-  * Je suis un chercheur en Programmation neuro-linguistique: RTX 2080 Ti en 16-bit. +
-  * Je veux construire une ferme de GPU: c'est très compliqué. +
-  * Je débute sérieusement en apprentissage automatique: Commencez avec une RTX 2070. Montez en gamme après 6/9 mois, et voyez grand au bout de 2 ans. +
-  * Je veux essayer, mais pas sérieusement: GTX 1050 Ti (4 ou 2GB). Et utiliser votre vieil ordinateur!+
  
-===Bilan=== +Définir le FPS dans letters.ini dans la section [json_to_image] 
-**Je suis un chercheur compétitif, près de mes sous, pauvre, passionné par l'apprentissage automatique: GTX 1060 (6GB) en fin de série à 200 € + 35 € de RAM** dans un ordinateur d'emprunt !+
  
 +Il n'y a que 10 canaux midi au maximum possibles.
  
-=====Idées pour approfondir le sujet !===== +====Quel fond d'image utiliser ?===== 
-  * Repasser à un fond noir +<WRAP group> 
-  * Modifier le flou +<WRAP quarter column> 
-  * Aggrandir les images avec une RTX 2070 +  * Nuages 
-===== Test ===== +{{media_12:s_j_to_i_593.jpg?200|}} 
-====Test simple sur une image==== +</WRAP>
-  ./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 lettersDéfinir le fichier json à convertir en images en définissant json_to_image dans letters.ini+<WRAP quarter column> 
 +  * Plasma 
 +{{media_12:s_j_to_i_537.jpg?200|}} 
 +</WRAP>
  
-Il n'que 10 canaux midi au maximum possibles.+<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=====
Ligne 301: 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.1569139035.txt.gz · Dernière modification : 2019/09/22 07:57 de serge