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
Prochaine révisionLes deux révisions suivantes
darknet_letters [2019/08/12 10:49] – [Conversion d'un fichier *.midi en *.json] sergedarknet_letters [2019/08/21 08:49] – [Apprentissage] serge
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.
  
-===Fichier *.cfg=== +===Dossier letters_0=== 
-Errors with 5 yolo layers+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===
 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 ===== 
 +Coller, dans le dossier compilé de darknet, le dossier letters_0 
 +  ./darknet detector test letters_0/obj.data letters_0/yolov3_letters.cfg letters_0/backup/yolov3_letters_3000.weights letters_0/shot_0.jpg
  
 +=====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}}+{{tag> ia sb bge}}
darknet_letters.txt · Dernière modification : 2020/12/27 15:11 de serge