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/08/13 09:55]
serge [Apprentissage]
darknet_letters [2019/08/21 10:49] (Version actuelle)
serge [Apprentissage]
Ligne 6: Ligne 6:
 {{ ::​2019_08:​shot_22.png?​400 |}} {{ ::​2019_08:​shot_22.png?​400 |}}
 <WRAP center round box 60% centeralign>​ <WRAP center round box 60% centeralign>​
-font_0_h ​0.37 0.31 0.18 0.18 \\ +0.37 0.31 0.18 0.18 \\ 
-font_0_l ​0.07 0.27 0.13 0.13 \\ +356 0.07 0.27 0.13 0.13 \\ 
-font_0_t ​0.44 0.14 0.1 0.1 \\ +29 0.44 0.14 0.1 0.1 \\ 
-font_0_C ​0.54 0.49 0.13 0.13 \\ +127 0.54 0.49 0.13 0.13 \\ 
-font_0_O ​0.27 0.95 0.21 0.21\\+99 0.27 0.95 0.21 0.21\\
 </​WRAP>​ </​WRAP>​
  
-<WRAP center round box 80% centeralign>​ +<WRAP center round box 60% centeralign>​ 
-**De l'​Intelligence ​artificielle ​pour reconnaitre ​des lettres dans différentes polices, ​ en faire des cauchemars et de la musique ​en midi.**+**De l'​Intelligence ​Artificielle ​pour reconnaître ​des lettres dans différentes polices,  ​convertir les lettres d'un texte en musique midi.**
 </​WRAP>​ </​WRAP>​
 ===== Les sources sur GitHub ===== ===== Les sources sur GitHub =====
Ligne 25: Ligne 25:
 {{:​2019_08:​letters_2.png?​300|}} {{:​2019_08:​letters_2.png?​300|}}
 {{:​2019_08:​letters_3.png?​300|}} {{:​2019_08:​letters_3.png?​300|}}
 +
 ====Conversion d'un fichier *.midi en *.json==== ====Conversion d'un fichier *.midi en *.json====
 Le fichier python darknet-letters/​letters/​midi/​analyse_play_midi.py permet de: Le fichier python darknet-letters/​letters/​midi/​analyse_play_midi.py permet de:
Ligne 31: Ligne 32:
   * jouer un fichier *.json   * jouer un fichier *.json
  
-===Installation===+====Installation====
 <code txt> <code txt>
 sudo pip3 install numpy sudo pip3 install numpy
Ligne 39: Ligne 40:
 sudo pip3 install mido sudo pip3 install mido
 sudo apt install fluidsynth sudo apt install fluidsynth
-# FluidR3_GM.sf2 +</​code>​
-sudo apt install fluid-soundfont-gm +
- </​code>​+
  
-Installation de [[pymultilame|Python: ​pymultilame]]+Installation de mon package perso: **[[pymultilame|pymultilame]]**
  
-===Principe=== +La Font midi utilisée est TimGM6mb.sf2 de **[[http://​www.timbrechbill.com/​saxguru/​Timidity.php|Tim Brechbill]]** qui est dans le dossier letters/​midi/​my_pretty_midi des sources 
-Les fichiers midi sont très optimisés. La conversion en json permet d'​accéder aux instruments,​ notes, volumes facilement. ​+ 
 +====Principe ​de la conversion d'un fichier midi en json==== 
 +Les fichiers midi sont très optimisés. La conversion en json permet d'​accéder ​en python ​aux instruments,​ notes, volumes facilement. ​
  
 Les fichiers *.midi ("​.midi",​ "​mid",​ "​kar",​ "​Mid",​ "​MID"​) doivent être copié dans le dossier darknet-letters/​letters/​midi/​music Les fichiers *.midi ("​.midi",​ "​mid",​ "​kar",​ "​Mid",​ "​MID"​) doivent être copié dans le dossier darknet-letters/​letters/​midi/​music
  
-Les *.json seront créés dans le dossier "​json"​ +Les *.json seront créés dans le dossier "​json"​
-====Lancement ​du jeu==== + 
-Dans le dossier darknet-letters: +====Règles générales==== 
-  play_letters.sh+  - Ne pas bidouiller les scripts, à moins que vous ne soyez hollandais. 
 +  - Si il y a un bug, corriger dans les scripts, toujours de façon explicite. 
 +  - Les modifications de configuration se font dans ./​letters/​letters.ini 
 + 
 +====Modification de la configuration==== 
 +En particulier,​ définir: 
 +  [blend] 
 +  shot_size = 1024 
 +  [darknet] 
 +  shot_size = 704 
 +  [dirertories] 
 +  shot = "​votre/​dossier/​shot"​ 
 +  shot_jpg = "/​votre/​dossier/​shot_jpg"​ 
 +Les dossiers vont faire 6 à 8 Go !\\ 
 +L'​apprentissage utilise 4 à 6 Go de RAM de la carte graphique avec des images 704x704 ! 
 + 
 + 
 + 
 + 
 +===== Création ​du set d'​images pour l'​apprentissage ===== 
 +====Le ​jeu letters==== 
 +Dans le dossier darknet-letters, lancer 
 +  ​./play_letters.sh
    
 <code txt> <code txt>
-SPACE pour changer de music +Affichage du logo 
-1 Affichage du logo +Lancement de letters 
-2 Lancement de music and letters +    SPACE pour changer de musique 
-Lancement de get shot +- Fabrication des shot pour l'IA 
-Création des json +- Conversion en json 
-help +- Help 
-Echap Quitter+R - Reset
 </​code>​ </​code>​
  
Ligne 71: Ligne 94:
 En 4: Les fichiers midi sont traduits en json pour être facilement utilisé en python. En 4: Les fichiers midi sont traduits en json pour être facilement utilisé en python.
  
-===Shot=== +====Préparation de Darknet====
-Les shots seront enregistrés dans le dossier défini dans le fichier **darknet-letters/​letters/​global.ini**,​ ligne 10 +
-  shot_dir ​"​votre/​dossier/​shot"​ +
 ===Conversion=== ===Conversion===
-Tous les shot doivent être floutés et converti en jpg avec le script **darknet-letters/​darknet/​blur_and_convert.py** +Tous les shot doivent être floutés et converti en jpg avec le script **./letters/​darknet/​blur_and_convert.py**
- +
-Définir ligne 81 le chemin vers votre dossier  +
-  shot = "​votre/​dossier/​shot"​+
  
 ===Création des fichiers train.txt et test.txt=== ===Création des fichiers train.txt et test.txt===
-Avec le script **darknet-letters/​darknet/​create_train_test_txt.py** +Avec le script **./letters/​darknet/​create_train_test_txt.py** 
-Définir ligne 10+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'​objetvoir  
-  ​shot_jpg = '​votre/​dossier/​shot_jpg/​'+[[yolo_avec_mes_propres_images#​creation_du_set_d_apprentissage|Création du set d'apprentissage]]
  
 ===Controle des fichiers txt de chaque image=== ===Controle des fichiers txt de chaque image===
-Avec le script **darknet-letters/​letters/​control/​control.py** +Avec le script **./​letters/​control/​control.py** 
-Définir le chemin de shot ligne 15. +{{ ::shot_4000.jpg?400 |}}
  
 ===== Yolo V3 Darknet===== ===== Yolo V3 Darknet=====
Ligne 101: Ligne 117:
 ==== Compilation de Darknet ==== ==== Compilation de Darknet ====
   * **[[yolo_darknet_sur_un_portable_optimus#​installation_de_yolo_darknet|Installation de Yolo Darknet]]**   * **[[yolo_darknet_sur_un_portable_optimus#​installation_de_yolo_darknet|Installation de Yolo Darknet]]**
- 
  
 ====Détection de mes objets lettres==== ====Détection de mes objets lettres====
 ===Pre-trained weights=== ===Pre-trained weights===
   wget -c https://​pjreddie.com/​media/​files/​darknet53.conv.74   wget -c https://​pjreddie.com/​media/​files/​darknet53.conv.74
-et coller le fichier dans le dossier letters_0+et coller le fichier dans le dossier ​"​darknet"​ des sources de YOLO. 
 + 
 +===Dossier ​letters_0=== 
 +Créer un dossier dossier letters_0 dans les sources de YOLO Darknet avec: 
 +  * train.txt 
 +  * test.txt 
 +  * obj.data 
 +  * obj.names 
 +  * yolov3_letters.cfg 
 +  * le dossier /backup
  
 ===Fichier *.cfg=== ===Fichier *.cfg===
-Errors with 5 yolo layers 
- 
 Copie de darknet/​cfg/​yolov3.cfg dans darknet-letters/​darknet/​letters_0 et renommer en yolov3_letters.cfg,​ faire les modifications suivantes: Copie de darknet/​cfg/​yolov3.cfg dans darknet-letters/​darknet/​letters_0 et renommer en yolov3_letters.cfg,​ faire les modifications suivantes:
  
Ligne 138: Ligne 160:
 ===train.txt test.txt=== ===train.txt test.txt===
 Les fichiers train.txt et test.txt doivent être collés dans letters_0 Les fichiers train.txt et test.txt doivent être collés dans letters_0
 +<code txt>
 +exemple
 +/​chemin/​absolu/​darknet-letters/​letters/​shot_jpg/​0/​shot_33.jpg
 +/​chemin/​absolu/​darknet-letters/​letters/​shot_jpg/​0/​shot_18.jpg
 +/​chemin/​absolu/​darknet-letters/​letters/​shot_jpg/​0/​shot_51.jpg
 +...
 +...
 +</​code>​
  
-=====Apprentissage===== +===obj.names=== 
-Ou Training appelé train (non pas de locomotive à vapeur!)+<code txt> 
 +font_0_a 
 +font_0_b 
 +... 
 +... 
 +font_9_S 
 +font_9_T 
 +</​code>​
  
 +===obj.data===
 +Défini les chemins des fichiers utilisés:
 +<code txt>
 +classes = 400
 +train = letters_0/​train.txt
 +valid = letters_0/​test.txt
 +names = letters_0/​obj.names
 +backup = letters_0/​backup
 +</​code>​
 +
 +====Apprentissage====
 +Ou Training appelé train (non! pas de locomotive à vapeur ici!)
 +
 +===Essais 5 yolo layers===
 +  * fini sur error
 +
 +===tiny===
 +Utilisation de la configuration yolov3-tiny.cfg\\
 +Création de yolov3-tiny.conv.15 dans letters_tiny/:​
 +  ./darknet partial letters_tiny/​yolov3-tiny-letters.cfg letters_tiny/​yolov3-tiny.weights letters_tiny/​yolov3-tiny.conv.15 15
 +Apprentissage:​
 +  ./darknet detector train letters_tiny/​obj.data letters_tiny/​yolov3_letters.cfg letters_tiny/​yolov3-tiny.conv.15 -map
 +  ​
 +Efficacité:​ 0.02 % et plantage!
 +
 +===yolov3.cfg===
   export PATH=/​usr/​local/​cuda-10.0/​bin${PATH:​+:​${PATH}}   export PATH=/​usr/​local/​cuda-10.0/​bin${PATH:​+:​${PATH}}
-  ./darknet detector train letters_0/​obj.data letters_0/​yolov3-letters.cfg ​letters_0/darknet53.conv.74 -map+  ./darknet detector train letters_0/​obj.data letters_0/​yolov3-letters.cfg darknet53.conv.74 -map 
 + 
 + 
 + 
  
 ===== Test ===== ===== Test =====
Ligne 149: Ligne 216:
   ./darknet detector test letters_0/​obj.data letters_0/​yolov3_letters.cfg letters_0/​backup/​yolov3_letters_3000.weights letters_0/​shot_0.jpg   ./darknet detector test letters_0/​obj.data letters_0/​yolov3_letters.cfg letters_0/​backup/​yolov3_letters_3000.weights letters_0/​shot_0.jpg
  
-{{tag> ia sb}}+=====Morale du jour===== 
 +Einstein a dit: "Deux choses sont infinies: l'​univers et la bêtise humaine. Pour l'​univers,​ je ne suis pas sûr !" 
 + 
 +{{tag> ia sb bge}}
  • darknet_letters.1565682908.txt.gz
  • Dernière modification: 2019/08/13 09:55
  • par serge