darknet_letters
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
darknet_letters [2019/08/31 07:46] – [Apprentissage] serge | darknet_letters [2020/10/30 10:29] – serge | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
</ | </ | ||
<WRAP center round box 80% centeralign> | <WRAP center round box 80% centeralign> | ||
- | {{::2019_08: | + | {{media_02: |
+ | Le fond noir ne convient pas, il faut une video ! | ||
</ | </ | ||
- | <WRAP center round box 60% centeralign> | + | <WRAP center round box 60%> |
- | 2 0.37 0.31 0.18 0.18 \\ | + | * **De l' |
- | 356 0.07 0.27 0.13 0.13 \\ | + | * **Créer des images correspondant à une musique midi** |
- | 29 0.44 0.14 0.1 0.1 \\ | + | * **Lecture des images par l' |
- | 127 0.54 0.49 0.13 0.13 \\ | + | |
- | 99 0.27 0.95 0.21 0.21\\ | + | |
</ | </ | ||
- | <WRAP center round box 60% centeralign> | + | {{ vimeo>377284950? |
- | **De l'Intelligence Artificielle pour reconnaître | + | \\ \\ |
+ | **[[darknet_letters_essais|Darknet Letters Tous les essais]]** | ||
+ | |||
+ | **[[https:// | ||
+ | ===== 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 | ||
+ | ==== Conclusion des différents apprentissages ==== | ||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | * **Suppression des majuscules pour diminuer le nombre d' | ||
+ | * **Le modèle yolov3.cfg est trop lourd, le yolov3-tiny_3l.cfg suffit** | ||
+ | * **Images de 416x416** | ||
+ | * **1 à 2 jours d' | ||
+ | * **Fond video pour l' | ||
+ | * **Pas de flou dans les images | ||
</ | </ | ||
+ | <WRAP half column> | ||
+ | **Hardware** | ||
+ | * **GPU Nvidia 1060 GTX** | ||
+ | * **RAM de 16 Go** | ||
+ | * **RAM GPU de 6 Go** | ||
+ | * **SWAP de 64 Go sur SSD** | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
===== Les sources sur GitHub ===== | ===== Les sources sur GitHub ===== | ||
* **[[https:// | * **[[https:// | ||
Ligne 23: | Ligne 49: | ||
**Créer et testé sur Debian Buster 10** | **Créer et testé sur Debian Buster 10** | ||
- | {{:2019_08: | + | {{media_02: |
- | {{:2019_08: | + | {{media_03:shot_12.png?300|Avec un fond video}} |
- | {{:2019_08: | + | {{media_02: |
====Conversion d'un fichier *.midi en *.json==== | ====Conversion d'un fichier *.midi en *.json==== | ||
Ligne 41: | Ligne 67: | ||
===Message d' | ===Message d' | ||
- | < | + | Pour éviter ce message: |
- | # Pour éviter ce message: | + | fluidsynth: warning: Failed to set thread to high priority |
- | fluidsynth: warning: Failed to set thread to high priority | + | fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible. |
- | fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible. | + | Editer: |
+ | sudo nano / | ||
- | sudo nano / | + | Ajouter: |
- | + | ||
- | # Ajouter: | + | |
@audio | @audio | ||
@audio | @audio | ||
- | # Le user doit être dans le gropue | + | Le user doit être dans le groupe |
- | </ | + | |
====Installation==== | ====Installation==== | ||
<code txt> | <code txt> | ||
Ligne 68: | Ligne 92: | ||
La Font midi peut être TimGM6mb.sf2 de **[[http:// | La Font midi peut être TimGM6mb.sf2 de **[[http:// | ||
C'est à définir dans letters.ini | C'est à définir dans letters.ini | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
====Modification de la configuration==== | ====Modification de la configuration==== | ||
**Règles générales** | **Règles générales** | ||
- Ne pas bidouiller les scripts, à moins que vous ne soyez hollandais. | - 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. | + | - Si il y a un bug, corriger dans les scripts, toujours de façon explicite, et envoyer un message à l' |
- Les modifications de configuration se font dans ./ | - Les modifications de configuration se font dans ./ | ||
+ | Dans ce fichier, définir en particulier: | ||
+ | * **les chemins de /shot/ et / | ||
+ | * **le nombre d' | ||
+ | * **la taille des images: 416** | ||
====Le jeu letters==== | ====Le jeu letters==== | ||
Ligne 86: | Ligne 108: | ||
<code txt> | <code txt> | ||
- | 1 - Affichage du logo | + | 1 - Lancement de letters |
- | 2 - Lancement de letters | + | |
- | SPACE pour changer de musique | + | 2 - Fabrication des shot pour l'IA |
- | 3 - Fabrication des shot pour l'IA | + | 3 - Conversion |
- | 4 - Conversion en json | + | H - Help |
- | H - Help | + | R - Reset |
- | R - Reset | + | Echap - Quitter |
</ | </ | ||
- | En 2: Les fichiers du dossier /json seront jouées. | + | En 1: Les fichiers du dossier /json_60 |
- | En 3: Pour l' | + | En 2: Pour l' |
- | + | ||
- | En 4: Les fichiers midi sont traduits en json pour être facilement utilisé en python. | + | |
- | + | ||
- | Le jeu crée les images et pour chaque image le **[[yolo_avec_mes_propres_images# | + | |
+ | En 3: Crée un jeu d' | ||
===== Création du set d' | ===== Création du set d' | ||
====Création des images==== | ====Création des images==== | ||
- | * Conversion des midi en json avec l' | ||
- | * Définir le dossier shot dans letters.ini, | ||
* Création des images avec l' | * Création des images avec l' | ||
+ | Pour chaque image toto.png, un fichier [[yolo_avec_mes_propres_images# | ||
+ | [[yolo_avec_mes_propres_images# | ||
+ | |||
====Préparation de Darknet==== | ====Préparation de Darknet==== | ||
===Conversion=== | ===Conversion=== | ||
Ligne 115: | Ligne 135: | ||
===Création des fichiers train.txt et test.txt=== | ===Création des fichiers train.txt et test.txt=== | ||
Avec le script **./ | Avec le script **./ | ||
- | Pour chaque image toto.png, un fichier toto.txt est créé pour décrire les objets dans l' | ||
- | [[yolo_avec_mes_propres_images# | ||
===Controle des fichiers txt de chaque image=== | ===Controle des fichiers txt de chaque image=== | ||
Avec le script **./ | Avec le script **./ | ||
- | {{ :: | + | {{ media_03: |
===== Yolo V3 Darknet===== | ===== Yolo V3 Darknet===== | ||
- | |||
==== Ressources ==== | ==== Ressources ==== | ||
* **https:// | * **https:// | ||
+ | |||
+ | * [[https:// | ||
==== Installation de CUDA ==== | ==== Installation de CUDA ==== | ||
Ligne 133: | Ligne 152: | ||
==== Compilation de Darknet ==== | ==== Compilation de Darknet ==== | ||
* **[[yolo_darknet_sur_un_portable_optimus# | * **[[yolo_darknet_sur_un_portable_optimus# | ||
+ | |||
+ | Modification du Makefile pour une carte GTX 1060: | ||
+ | < | ||
+ | # ARCH= -gencode arch=compute_30, | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030, Titan Xp, Tesla P40, Tesla P4 | ||
+ | ARCH= -gencode arch=compute_61, | ||
+ | </ | ||
====Détection de mes objets lettres==== | ====Détection de mes objets lettres==== | ||
Ligne 193: | Ligne 224: | ||
===obj.data=== | ===obj.data=== | ||
- | Défini | + | Définit |
+ | ./darknet ..... | ||
+ | | ||
<code txt> | <code txt> | ||
classes = 380 | classes = 380 | ||
Ligne 202: | Ligne 235: | ||
</ | </ | ||
- | ====Apprentissage==== | + | =====Apprentissage |
- | Ou Training appelé train (non! pas de locomotive à vapeur ici!) | + | Non! pas de locomotive à vapeur ici ! |
- | ===Modifications suite à Apprentissage raté=== | + | ====Hardware==== |
- | * yolov3-tiny.cfg | + | ===RAM et SWAP=== |
- | * yolov3_5l.cfg | + | Lors de l'estimation |
- | * yolov3-tiny_3l.cfg | + | |
- | * dans shot_xxx.txt | + | |
- | * fond noir | + | |
- | * fond noir remplacé par un nuage gris | + | |
- | * nuage gris remplacé par une video de ciel ! | + | |
- | * Message | + | |
- | * Diminution des supperpositions avec size de 0.6 à 0.9 | + | |
- | * Images avec minuscules seules et images avec majuscules seules | + | |
- | * Reprise des 400 images des lettres pour les cadrer serré (20 heures de boulot) ! | + | |
- | * **Ne pas déclarer des objets qui ne sont jamais dans les images !** | + | |
- | ===Taille | + | Avec 10% des images |
- | | + | * RAM: 15.5 Go sur 15.7 Go |
- | | + | * SWAP: 19.7 Go sur 64 Go |
- | * RAM GPU ~ 3 Go | + | |
- | * **Images de 640*640** | + | |
- | * RAM 5.4 Go utilisé | + | |
- | * RAM GPU ~ 5.3 Go au démarrage, baisse ensuite. La carte 1060GTX à 6 Go de RAM: **la taille maxi des images possible est donc 640x640** | + | |
- | ===yolov3.cfg=== | + | **Prévoir une grosse SWAP, par exemple 64 Go !** |
+ | |||
+ | ===Taille de la RAM GPU=== | ||
+ | * RAM GPU > 4.5 Go | ||
+ | **La taille maxi des images possible est 416x416 avec 6 Go de Ram GPU** | ||
+ | |||
+ | =====Apprentissage avec yolov3.cfg===== | ||
Dans le dossier /darknet: | Dans le dossier /darknet: | ||
./darknet detector train data/ | ./darknet detector train data/ | ||
Les chemins " | Les chemins " | ||
- | =====Durée d'un calcul===== | ||
- | * 1er calcul = 1 semaine = 7*24 = 168 heures | ||
- | =====Consommation électrique===== | ||
- | à 0.17 € le kWh | ||
- | soit 15 € le calcul | ||
- | Question: Quel serait le coût sur un pentaflops | + | =====Apprentissage avec yolov3-tiny_3l.cfg===== |
- | =====A faire===== | + | **3 layers** |
- | * Repasser à un fond noir | + | ./darknet partial data_09/ |
- | * Modifier le flou | + | ./darknet detector train data_09/ |
+ | |||
+ | Le fichier yolov3-tiny_3l_xx_best.weights fait 38.1 Mo | ||
+ | =====Apprentissage avec yolov3-tiny.cfg===== | ||
+ | **2 layers** | ||
+ | | ||
+ | ./darknet detector train data_12/ | ||
+ | |||
+ | Le fichier yolov3-tiny_12_best.weights fait 38 Mo. Malheureusement, | ||
+ | =====Tous les essais===== | ||
+ | * **[[darknet_letters_essais|Tous les essais sur cette page]]** | ||
+ | ===== Reconversion d' | ||
+ | ====Test sur le jeu d' | ||
+ | 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. | ||
+ | Créer les images de json_to_image avec l' | ||
+ | Les fichiers midi qui seront convertis en images sont ceux de / | ||
- | ===== Test ===== | + | Définir le FPS dans letters.ini dans la section [json_to_image] |
- | ./darknet detector test data/obj.data data/ | + | |
+ | Il n'y a que 10 canaux midi au maximum possibles. | ||
+ | |||
+ | ====Quel fond d' | ||
+ | <WRAP group> | ||
+ | <WRAP quarter column> | ||
+ | | ||
+ | {{:: | ||
+ | </WRAP> | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Plasma | ||
+ | {{:: | ||
+ | </WRAP> | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * nuage RGB clair | ||
+ | {{media_04: | ||
+ | </WRAP> | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Très foncé en RGB | ||
+ | {{:: | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | =====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/ | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * https:// | ||
+ | |||
+ | ===Remise spéciale Education=== | ||
+ | * **[[https:// | ||
+ | |||
+ | ===Pour une startup fortunée=== | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | |||
+ | ===Juin 2020=== | ||
+ | * **[[https:// | ||
+ | |||
+ | * 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, | ||
+ | * 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:// | ||
+ | ====Bilan==== | ||
+ | **Je suis un chercheur compétitif, | ||
=====Morale du jour===== | =====Morale du jour===== | ||
- | **Einstein a dit: "Deux choses sont infinies: l'univers | + | **Einstein** a dit: |
+ | |||
+ | **"Deux choses sont infinies : l'Univers | ||
+ | |||
+ | **Mais, en ce qui concerne | ||
- | {{tag> ia sb bge}} | + | {{tag> ia sb bge yolo_darknet}} |
darknet_letters.txt · Dernière modification : 2020/12/27 15:11 de serge