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/09/09 14:46] – [A faire] serge | darknet_letters [2019/11/08 08:22] – [Apprentissage avec yolov3-tiny.cfg] serge | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
<WRAP center round box 80% centeralign> | <WRAP center round box 80% centeralign> | ||
{{:: | {{:: | ||
+ | Le fond noir ne convient pas, il faut une video ! | ||
</ | </ | ||
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
- | 2 0.37 0.31 0.18 0.18 \\ | + | **De l' |
- | 356 0.07 0.27 0.13 0.13 \\ | + | |
- | 29 0.44 0.14 0.1 0.1 \\ | + | |
- | 127 0.54 0.49 0.13 0.13 \\ | + | |
- | 99 0.27 0.95 0.21 0.21\\ | + | |
</ | </ | ||
- | < | + | ===== YOLO Darknet V3 ===== |
- | **De l'Intelligence Artificielle pour reconnaître | + | ==== Conclusion des différents apprentissages ==== |
+ | < | ||
+ | <WRAP half column> | ||
+ | | ||
+ | * **Images de 416x416** | ||
+ | * **5.5 jours d'apprentissage** | ||
+ | * **Ne pas mettre de fond noir** | ||
+ | * **Les zones de définitions | ||
+ | * **Mettre un peu 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 38: | ||
**Créer et testé sur Debian Buster 10** | **Créer et testé sur Debian Buster 10** | ||
- | {{: | + | {{: |
- | {{:2019_08:letters_2.png? | + | {{::shot_12.png?300|Avec un fond video}} |
- | {{: | + | {{: |
====Conversion d'un fichier *.midi en *.json==== | ====Conversion d'un fichier *.midi en *.json==== | ||
Ligne 41: | Ligne 56: | ||
===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 74: | Ligne 87: | ||
- Si il y a un bug, corriger dans les scripts, toujours de façon explicite, et envoyer un message à l' | - 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: | + | Dans ce fichier, définir |
* **les chemins de /shot/ et / | * **les chemins de /shot/ et / | ||
* **le nombre d' | * **le nombre d' | ||
Ligne 84: | Ligne 97: | ||
<code txt> | <code txt> | ||
- | 1 - Affichage du logo | + | 1 - Retour au logo |
- | 2 - Lancement de letters | + | 2 - Lancement de letters |
- | SPACE pour changer de musique | + | |
- | 3 - Fabrication des shot pour l'IA | + | 3 - Fabrication des shot pour l'IA |
- | 4 - Conversion en json | + | 4 - Conversion en json |
- | H - Help | + | 5 - Conversion d'une musique en image |
- | R - Reset | + | H - Help |
+ | R - Reset | ||
+ | Echap - Quitter | ||
</ | </ | ||
Ligne 97: | Ligne 112: | ||
En 3: Pour l' | En 3: Pour l' | ||
- | 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. |
- | Le jeu crée les images | + | En 5: Crée un jeu d'images pour ensuite tester |
===== Création du set d' | ===== Création du set d' | ||
====Création des images==== | ====Création des images==== | ||
* Création des images avec l' | * Création des images avec l' | ||
- | Pour chaque image toto.png, un fichier | + | 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 121: | Ligne 137: | ||
==== Ressources ==== | ==== Ressources ==== | ||
* **https:// | * **https:// | ||
+ | |||
+ | * [[https:// | ||
==== Installation de CUDA ==== | ==== Installation de CUDA ==== | ||
Ligne 139: | Ligne 157: | ||
ARCH= -gencode arch=compute_61, | ARCH= -gencode arch=compute_61, | ||
</ | </ | ||
- | |||
====Détection de mes objets lettres==== | ====Détection de mes objets lettres==== | ||
Ligne 200: | Ligne 217: | ||
===obj.data=== | ===obj.data=== | ||
- | Défini | + | Définit |
+ | ./darknet ..... | ||
+ | | ||
<code txt> | <code txt> | ||
classes = 380 | classes = 380 | ||
Ligne 209: | Ligne 228: | ||
</ | </ | ||
- | ====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' | + | |
- | * fond noir | + | |
- | * fond noir remplacé par un nuage gris | + | |
- | * nuage gris remplacé par une video de ciel ! | + | |
- | * Message dans le terminal: " | + | |
- | * 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' | + | |
- | * 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 ! | + | |
- | + | ||
- | ===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' | Lors de l' | ||
Ligne 239: | Ligne 242: | ||
===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/ | ./darknet detector train data/ | ||
Les chemins " | Les chemins " | ||
- | =====Durée d'un calcul et consommation électrique===== | + | =====Apprentissage avec yolov3-tiny_3l.cfg===== |
- | * 5 jours * 24 * 0.2 kW = 24 kwh à 0.17 € le kWh soit 4 € | + | **3 layers** |
+ | | ||
+ | ./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 Mo | ||
+ | =====Tous les essais===== | ||
+ | * **[[darknet_letters_essais|Tous les essais sur cette page]]** | ||
- | Questions: | + | ===== 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 | ||
+ | {{:: | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Plasma | ||
+ | {{:: | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * nuage RGB clair | ||
+ | {{: | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Très foncé en RGB | ||
+ | {{:: | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | =====Bug: Vidage de la RAM GPU à la fin d'une détection===== | ||
+ | **Bug: Vidage de la RAM GPU à la fin d'une détection en gardant le script python actif.** | ||
+ | |||
+ | * unload network in python script https:// | ||
+ | |||
+ | ===./ | ||
+ | <code c> | ||
+ | void show_total_time(); | ||
+ | |||
+ | // ajout alexandre pour vider la memoire | ||
+ | // network.h | ||
+ | LIB_API void free_network(network net); | ||
+ | |||
+ | #ifdef __cplusplus | ||
+ | } | ||
+ | # | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | ===./ | ||
+ | <code c> | ||
+ | predict_image.restype = POINTER(c_float) | ||
+ | |||
+ | # alexandre lien entre lib api de darknet.c et play_letters | ||
+ | free_network = lib.free_network | ||
+ | free_network.argtypes = [c_void_p] | ||
+ | |||
+ | def array_to_image(arr): | ||
+ | </ | ||
+ | |||
+ | |||
+ | =====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 € | ||
+ | |||
+ | =====Quels matériels pour un apprentissage rapide ?===== | ||
* **Quel serait le coût sur un Pentaflops | * **Quel serait le coût sur un Pentaflops | ||
* **Et si La Labomedia achète un Pentaflops ?** | * **Et si La Labomedia achète un Pentaflops ?** | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
- | =====Idées pour approfondir le sujet !===== | + | ===Remise spéciale Education=== |
- | * Repasser à un fond noir | + | * **[[https:// |
- | | + | =====Benchmark===== |
- | + | | |
- | ===== Test ===== | + | ====Bilan==== |
- | | + | **Je suis un chercheur compétitif, |
=====Morale du jour===== | =====Morale du jour===== |
darknet_letters.txt · Dernière modification : 2020/12/27 15:11 de serge