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édente | ||
darknet_letters [2019/08/06 11:54] – [Darknet Letters] serge | darknet_letters [2020/12/27 15:11] (Version actuelle) – serge | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Darknet Letters ====== | ====== Darknet Letters ====== | ||
+ | <WRAP center round box 60% centeralign> | ||
+ | **{{tagpage> | ||
+ | </ | ||
+ | <WRAP center round box 60% centeralign> | ||
+ | **[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]** | ||
+ | </ | ||
- | {{ :: | ||
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
- | font_0_h 0.37 0.31 0.18 0.18 | + | **{{tagpage> |
- | font_0_l 0.07 0.27 0.13 0.13 | + | </ |
- | font_0_t 0.44 0.14 0.1 0.1 | + | <WRAP center round box 60% centeralign> |
- | font_0_C 0.54 0.49 0.13 0.13 | + | {{media_02: |
- | font_0_O 0.27 0.95 0.21 0.21 | + | Le fond noir ne convient pas, il faut une video ! |
+ | </ | ||
+ | <WRAP center round box 60%> | ||
+ | * **De l' | ||
+ | * **Créer des images correspondant à une musique midi** | ||
+ | * **Lecture des images par l' | ||
</ | </ | ||
+ | |||
+ | {{ vimeo> | ||
+ | \\ \\ | ||
+ | **[[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' | ||
+ | * 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' | ||
+ | ==== 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:// | ||
- | ===== Ressources | + | =====Le jeu letters pour créer les images d' |
+ | **Créer et testé sur Debian Buster 10** | ||
+ | |||
+ | {{media_02: | ||
+ | {{media_03: | ||
+ | {{media_02: | ||
+ | |||
+ | ====Conversion d'un fichier *.midi en *.json==== | ||
+ | Le fichier python darknet-letters/ | ||
+ | * jouer un fichier midi | ||
+ | * convertir des fichier *.midi en *.json | ||
+ | * jouer un fichier *.json | ||
+ | |||
+ | ===Principe de la conversion d'un fichier midi en json=== | ||
+ | Les fichiers midi sont très optimisés. La conversion en json permet d' | ||
+ | |||
+ | Les fichiers *.midi (" | ||
+ | |||
+ | Les *.json seront créés dans le dossier " | ||
+ | |||
+ | ===Message d' | ||
+ | Pour éviter ce message: | ||
+ | fluidsynth: warning: Failed to set thread to high priority | ||
+ | fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible. | ||
+ | Editer: | ||
+ | sudo nano / | ||
+ | |||
+ | Ajouter: | ||
+ | @audio | ||
+ | @audio | ||
+ | |||
+ | Le user doit être dans le groupe audio! | ||
+ | ====Installation==== | ||
+ | <code txt> | ||
+ | sudo pip3 install numpy | ||
+ | sudo pip3 install opencv-python | ||
+ | # Blender 2.79b mais pas 2.80 qui n'a plus de BGE | ||
+ | sudo apt install blender | ||
+ | sudo pip3 install mido | ||
+ | sudo apt install fluidsynth | ||
+ | </ | ||
+ | |||
+ | Installation de mon package perso: **[[pymultilame|pymultilame]]** | ||
+ | |||
+ | La Font midi peut être TimGM6mb.sf2 de **[[http:// | ||
+ | C'est à définir dans letters.ini | ||
+ | |||
+ | ====Modification de la configuration==== | ||
+ | **Règles générales** | ||
+ | - 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, et envoyer un message à l' | ||
+ | - 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==== | ||
+ | Dans le dossier darknet-letters, | ||
+ | ./ | ||
+ | |||
+ | <code txt> | ||
+ | 1 - Lancement de letters | ||
+ | SPACE pour changer de musique | ||
+ | 2 - Fabrication des shot pour l'IA | ||
+ | 3 - Conversion d'une musique en image | ||
+ | H - Help | ||
+ | R - Reset | ||
+ | Echap - Quitter | ||
+ | </ | ||
+ | |||
+ | En 1: Les fichiers du dossier /json_60 seront jouées. | ||
+ | |||
+ | En 2: Pour l' | ||
+ | |||
+ | En 3: Crée un jeu d' | ||
+ | |||
+ | ===== Création du set d' | ||
+ | ====Création des images==== | ||
+ | * 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==== | ||
+ | ===Conversion=== | ||
+ | Tous les shot doivent être floutés et converti en jpg avec le script **./ | ||
+ | |||
+ | ===Création des fichiers train.txt et test.txt=== | ||
+ | Avec le script **./ | ||
+ | |||
+ | ===Controle des fichiers txt de chaque image=== | ||
+ | Avec le script **./ | ||
+ | |||
+ | {{ media_03: | ||
+ | |||
+ | ===== Yolo V3 Darknet===== | ||
+ | ==== Ressources | ||
* **https:// | * **https:// | ||
- | ====How to detect your custom objects==== | + | * [[https:// |
- | * Pre-trained weights | + | |
- | | + | ==== Installation de CUDA ==== |
+ | * **[[yolo_darknet_sur_un_portable_optimus# | ||
+ | |||
+ | ==== Compilation de Darknet ==== | ||
+ | * **[[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==== | ||
+ | ===Dossier data=== | ||
+ | Dans les sources de YOLO Darknet: | ||
+ | | ||
+ | * Créer un dossier data avec: | ||
+ | * train.txt | ||
+ | * test.txt | ||
+ | * obj.data | ||
+ | * obj.names | ||
+ | * yolov3.cfg | ||
+ | * le dossier /backup | ||
+ | |||
+ | ===Fichier *.cfg=== | ||
+ | Copie de darknet/ | ||
+ | <code txt> | ||
+ | change line 8 and 9 to shot size = 640 | ||
+ | change line batch to batch=64 | ||
+ | change line subdivisions to subdivisions=64 | ||
+ | change line max_batches to (classes*2000), | ||
+ | change line steps to 80% and 90% of max_batches, | ||
+ | |||
+ | change line classes=80 to your number of objects in each of 3 [yolo]-layers: | ||
+ | Line 610 | ||
+ | Line 696 | ||
+ | Line 783 | ||
+ | classes=380 | ||
+ | |||
+ | change [filters=255] to filters=(classes + 5)x3 in the 3 [convolutional] before each [yolo] layer | ||
+ | Line 603 | ||
+ | Line 689 | ||
+ | Line 776 | ||
+ | filters = (classes + 5)x3 = (380 + 5) * 3 = 1155 | ||
+ | |||
+ | Distinction main gauche main droite | ||
+ | ligne 17 flip = 0 | ||
+ | </ | ||
+ | |||
+ | ===train.txt test.txt=== | ||
+ | Les fichiers train.txt et test.txt doivent être collés dans data | ||
+ | <code txt> | ||
+ | exemple | ||
+ | / | ||
+ | /chemin/absolu/darknet-letters/ | ||
+ | / | ||
+ | ... | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | ===obj.names=== | ||
+ | Les noms doivent être dans l' | ||
+ | <code txt> | ||
+ | font_0_b | ||
+ | ... | ||
+ | ... | ||
+ | font_9_S | ||
+ | font_9_T | ||
+ | </ | ||
+ | |||
+ | ===obj.data=== | ||
+ | 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' | ||
+ | ./darknet ..... | ||
| | ||
- | | + | <code txt> |
- | Full-model: 5 yolo layers: | + | classes = 380 |
- | https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3_5l.cfg | + | train = data/ |
+ | valid = data/ | ||
+ | names = data/ | ||
+ | backup = data/ | ||
+ | </ | ||
+ | |||
+ | =====Apprentissage soit Training appelé train===== | ||
+ | Non! pas de locomotive à vapeur ici ! | ||
+ | |||
+ | ====Hardware==== | ||
+ | ===RAM et SWAP=== | ||
+ | Lors de l' | ||
+ | |||
+ | Avec 10% des images en images test, soit 3000 images 416x416, les images occupent: | ||
+ | | ||
+ | * SWAP: 19.7 Go sur 64 Go | ||
+ | |||
+ | **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: | ||
+ | ./darknet detector train data/ | ||
+ | Les chemins " | ||
+ | |||
+ | =====Apprentissage avec yolov3-tiny_3l.cfg===== | ||
+ | **3 layers** | ||
+ | ./darknet partial data_09/ | ||
+ | ./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 partial data_12/ | ||
+ | ./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 / | ||
+ | |||
+ | Définir le FPS dans letters.ini dans la section [json_to_image] | ||
+ | |||
+ | Il n'y a que 10 canaux midi au maximum possibles. | ||
+ | |||
+ | ====Quel fond d' | ||
+ | <WRAP group> | ||
+ | <WRAP quarter column> | ||
+ | * Nuages | ||
+ | {{media_12: | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Plasma | ||
+ | {{media_12: | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * nuage RGB clair | ||
+ | {{media_04: | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Très foncé en RGB | ||
+ | {{media_12: | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | =====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:// | ||
+ | * **[[https:// | ||
+ | | ||
+ | * **[[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:// | ||
+ | * **[[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===== | ||
+ | **Einstein** a dit: | ||
+ | |||
+ | **" | ||
+ | **Mais, en ce qui concerne l' | ||
+ | {{tag> ia sb bge yolo_darknet}} |
darknet_letters.1565092495.txt.gz · Dernière modification : 2019/08/06 11:54 de serge