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/15 09:08] – [Durée d'un calcul et consommation électrique] 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]]** | ||
- | ====Comment aller plus vite ?==== | + | ===== Reconversion d' |
- | * **Quel serait | + | ====Test sur le jeu d' |
- | * **Et si La Labomedia achète un Pentaflops ?** | + | Et le script play_letters.py du dossier play_letters. Il faut copier les fichiers: |
- | * **** | + | * darknet.py |
- | Je cite: **[[https:// | + | * libdarknet.so |
+ | des sources compilées de darknet dans le dossier play_letters. | ||
- | <code> | + | Créer les images de json_to_image avec l' |
- | Best GPU overall: RTX 2070 | + | |
- | GPUs to avoid: Any Tesla card; any Quadro card; any Founders Edition card; Titan RTX, Titan V, Titan XP | + | Les fichiers midi qui seront convertis en images sont ceux de / |
- | Cost-efficient but expensive: RTX 2070 | + | |
- | Cost-efficient and cheap: RTX 2060, GTX 1060 (6GB). | + | Définir le FPS dans letters.ini dans la section [json_to_image] |
- | I have little money: GTX 1060 (6GB) | + | |
- | I have almost no money: GTX 1050 Ti (4GB).Alternatively: CPU (prototyping) + AWS/TPU (training); or Colab. | + | Il n'y a que 10 canaux midi au maximum possibles. |
- | I do Kaggle: RTX 2070. If you do not have enough money go for a GTX 1060 (6GB) or GTX Titan (Pascal) from eBay for prototyping and AWS for final training. Use fastai library. | + | |
- | I am a competitive computer vision or machine translation researcher: GTX 2080 Ti with the blower fan design. If you train very large networks get RTX Titans. | + | ====Quel fond d' |
- | I am an NLP researcher: RTX 2080 Ti use 16-bit. | + | <WRAP group> |
- | I want to build a GPU cluster: This is really complicated, | + | <WRAP quarter column> |
- | I started deep learning and I am serious about it: Start with an RTX 2070. Buy more RTX 2070 after 6-9 months and you still want to invest more time into deep learning. Depending on what area you choose next (startup, Kaggle, research, applied deep learning) sell your GPU and buy something more appropriate after about two years. | + | * Nuages |
- | I want to try deep learning, but I am not serious about it: GTX 1050 Ti (4 or 2GB). This often fits into your standard desktop and does not require a new PSU. If it fits, do not buy a new computer! | + | {{::s_j_to_i_593.jpg?200|}} |
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * Plasma | ||
+ | {{::s_j_to_i_537.jpg?200|}} | ||
+ | </ | ||
+ | |||
+ | <WRAP quarter column> | ||
+ | * nuage RGB clair | ||
+ | {{:boney_m.png?200|}} | ||
+ | </ | ||
+ | |||
+ | <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://github.com/ | ||
+ | |||
+ | ===./ | ||
+ | <code c> | ||
+ | void show_total_time(); | ||
+ | |||
+ | // ajout alexandre pour vider la memoire | ||
+ | // network.h | ||
+ | LIB_API void free_network(network net); | ||
+ | |||
+ | #ifdef __cplusplus | ||
+ | } | ||
+ | # | ||
+ | # | ||
</ | </ | ||
- | **Je suis près de mes sous et pauvre: GTX 1060 (6GB)** et pourtant passionné par l' | + | ===./ |
+ | <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] | ||
- | =====Idées pour approfondir le sujet !===== | + | def array_to_image(arr): |
- | * Repasser | + | </ |
- | * Modifier | + | |
+ | |||
+ | =====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 | ||
+ | * **Et si La Labomedia achète un Pentaflops ?** | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
- | ===== Test ===== | + | ===Remise spéciale Education=== |
- | | + | * **[[https:// |
+ | =====Benchmark===== | ||
+ | | ||
+ | ====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