Outils pour utilisateurs

Outils du site


darknet_letters_essais

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
darknet_letters_essais [2019/11/01 08:49] – créée sergedarknet_letters_essais [2020/12/01 17:43] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 1: Ligne 1:
 ====== Darknet Letters Tous les essais ====== ====== Darknet Letters Tous les essais ======
 +<WRAP center round box 60% centeralign>
 +**{{tagpage>bge|Blender Game Engine}}** ....  **{{tagpage>ia|Intelligence Artificielle}}**
 +</WRAP>
  
 +{{ vimeo>377284950?medium }}
 +\\ \\ 
  
 +**[[darknet_letters|Le projet Darknet Letters]]**
  
 +**[[https://github.com/sergeLabo/darknet-letters|darknet-letters sur Github]]**\\ \\
 +  * Ces recherches s’arrêtent sur un score de 59% de bonnes notes et 34% de mauvaises notes.
 +  * La modulation de la vélocité avec les majuscules à été supprimée.
 +
 +
 +=====Récapitulatif=====
 +{{media_12:suivi_essai_final.png?1000|}}
 +
 +Les essais depuis data_11
 +{{media_03:essais_depuis_data_11.png?200|}}
 +
 +{{media_12:suivi_essais.ods|Le fichier ods}}
 +
 +6 mois de calcul ont coûté entre 100€ et 200€. La carte graphique avait coûté 200€. Les 16 Go de RAM 35€.
 +=====Modèle final retenu=====
 +{{media_08:data_22_8000.png?400|}}
 +Le fichier de poids est: yolov3-tiny_3l_22_8000.weights
 +
 +La vidéo en haut de page est réalisée avec cette configuration.
 +
 +===== Efficacité en fonction du nombre d'itérations =====
 +Courbe d'apprentissage:
 +{{ media_04:chart_22_40000.png?700 |}}
 +
 +Efficacité mesurée avec 6 musiques midi et benchmark.py
 +
 +{{ media_03:essai_27.png?800 |good bad }}
 +
 +===Conclusion===
 +Le fichier **yolov3-tiny_3l_22_8000.weights** est considéré comme **le meilleur des meilleurs.**
 +
 +====Surapprentissage====
 +  * **[[https://www.actuia.com/faq/quest-ce-que-le-surapprentissage/|Qu’est-ce que le surapprentissage ?]]**
 +
 +En intelligence artificielle, on parle de surapprentissage (le terme anglais est overfitting) quand un modèle a trop appris les particularités de chacun des exemples fournis en exemple. Il présente alors un taux de succès très important sur les données d’entraînement (pouvant atteindre jusqu’à 100%), au détriment de ses performances générales réelles.
 +\\ \\ 
 +{{ vimeo>375919053?medium }}
 +\\ \\ 
 +
 +=====Essais avec yolov3.cfg=====
 +===Essai 02===
 +<WRAP group>
 +<WRAP half column>
 +  * fond video
 +  * flou de 3 à 7
 +  * letters_scale = 1.09
 +  * 30 000 images
 +  * 90 000 itérations
 +  * Shadeless pas de variation de couleurs et éclairage
 +</WRAP>
 +Résultat:
 +{{ media_04:chart_30000.png?300 |}}
 +<WRAP half column>
 +</WRAP>
 +</WRAP>
 +Pas mal mais trop de lettres ne sont pas reconnues, et certaines avec 2 reconnaissances. La musique résultante est reconnaissable. C'est le meilleurs résultat des essais 02 à 06
 + 
 +===Essai 03===
 +<WRAP group>
 +<WRAP third column>
 +  * fond noir
 +  * pas de flou
 +  * taille 416
 +  * 50 000 images
 +  * vérification du nombre de lettres: objectif 2000 par lettres, réel 1948
 +  * changement du json utilisé par créer les shot: minuscules et majuscules séparées et pas de séparation des polices avec des canaux vides.
 +</WRAP>
 +<WRAP third column>
 +  * yolo_v3.cfg
 +  * letters_scale = 1.01
 +  * plage_x = 4.5
 +  * plage_y = 4.5
 +  * size_min = 0.6
 +  * size_max = 0.9
 +  * variation de couleurs et éclairage avec un Sun
 +  * début 25/09/2019 à 10h, fin 01/10/2019 à 6h55
 +  * 50 000 itérations
 +</WRAP>
 +<WRAP third column>
 +{{ media_05:chart_03.png?300 |}}
 +Efficacité 99% mais reconnaît très mal les lettres, et la détection de leur position très très large par rapport au réel. La musique résultante n'est pas reconnaissable.
 +</WRAP>
 +</WRAP>
 +
 +===Essai 04===
 +  * Idem Essai 03 mais fond video
 +  * Relance de 50 000 itérations supplémentaires.
 +<WRAP group>
 +<WRAP half column>
 +{{ media_04:chart_04_50000.png?300 |}}
 +</WRAP>
 +<WRAP half column>
 + {{ media_04:chart_04_92500.png?300 |}}
 +</WRAP>
 +</WRAP>
 +Reconnaissance médiocre ! La musique résultante n'est pas reconnaissable.\\
 +
 +===Essai 05===
 +<WRAP group>
 +<WRAP third column>
 +Modification par rapport à 4 et 3
 +  * fond video
 +  * flou: 3 à 7
 +  * taille 416
 +  * 50 000 images
 +  * yolo_v3_05.cfg
 +</WRAP>
 +<WRAP third column>
 +  * letters_scale = 1.08
 +  * plage_x = 4.5
 +  * plage_y = 4.5
 +  * size_min = 0.6
 +  * size_max = 0.9
 +  * variation de couleurs et éclairage avec un Sun
 +</WRAP>
 +<WRAP third column>
 +{{ media_04:chart_05_50000.png?300 |}}
 +Très mauvaise reconnaissance !
 +</WRAP>
 +</WRAP>
 +
 +
 +
 +=====Essais avec yolov3-tiny_3l.cfg=====
 +  * [[https://github.com/AlexeyAB/darknet#how-to-train-tiny-yolo-to-detect-your-custom-objects|how-to-train-tiny-yolo-to-detect-your-custom-objects]]
 +
 +For training for both small and large objects use modified models:
 +  * Tiny-model: 3 yolo layers: https://raw.githubusercontent.com/AlexeyAB/darknet/master/cfg/yolov3-tiny_3l.cfg
 +    
 +====Essai 06====
 +Le fichier tiny.cfg est paramétré pour 80 objets, et la doc dit qu'il est bien optimisé: [[https://pjreddie.com/darknet/tiny-darknet/|Je cite pjreddie.com]] It's only 28 MB but more importantly, it's only 8x10<sup>10</sup> floating point operations. The original Alexnet is 2.3*10<sup>12</sup>. Darknet is 2.9 times faster and it's small and it's 4% more accurate.
 +
 +Même image que Essai 05, mais avec [[https://github.com/sergeLabo/darknet-letters/blob/master/letters/darknet/data_06/yolov3-tiny_06.cfg|yolov3-tiny_06.cfg]] du [[yolo_darknet_avec_un_vrai_semaphore|Sémaphore]], adapté pour 380 objets et images de 416x416.
 +
 +Le fichier yolov3-tiny_06_best.weights fait 40,1 Mo, l'apprentissage est 2 fois plus rapide que yolov3.cfg, soit 2.7 jours
 +
 +La reconnaissance est très décevante, le FPS sur HD5000 est de 1.8 au lieu de 0.4,
 +mais trop de lettres ne sont pas reconnues.
 +
 +L'analyse des % de reconnaissance calculés à la fin de l'apprentissage, montre que ce sont les lettres avec la couleur gris clair qui sont les plus mal reconnues.
 +
 +{{media_04:chart_50000_06.png?400|}} {{media_03:efficacite_font_0.png?400|}}
 +
 +====Essai 07====
 +<WRAP group>
 +<WRAP third column>
 +  * size_min = 0.9
 +  * size_max = 1.2
 +  * shot_size = 416
 +  * blur_mini = 3
 +  * blur_maxi = 7
 +  * letters_scale = 1.07
 +  * sun_energy_min = 3
 +  * sun_energy_min = 4
 +  * sun_color_min = 0.6
 +  * sun_color_max = 1.0
 +  * police 0 en blanc au lieu de gris clair
 +  * les lettres sont plus grandes
 +  * le sun plus fort
 +</WRAP>
 +
 +<WRAP third column>
 +{{media_03:shot_16.png?250|}}
 +</WRAP>
 +
 +<WRAP third column>
 +Résultat:\\ 
 +{{media_04:chart_07_50000.png?250|}}
 +</WRAP>
 +</WRAP>
 +**Efficacité**
 +<code>
 +name font_0_i 85.00
 +name font_0_l 85.79
 +name font_2_j 87.91
 +name font_2_q 89.78
 +name font_2_o 90.16
 +name font_2_g 90.20
 +name font_0_n 90.22
 +name font_1_I 90.57
 +name font_1_J 91.31
 +name font_2_I 91.33
 +name font_0_e 91.56
 +</code>
 +Certaines lettres se ressemblent beaucoup et sont mal reconnues.
 +====Essai 08====
 +Suppression des majuscules: le volume sera défini à 127 pour toutes les notes, il ne reste plus que 190 objets ! 10 polices avec les lettres de b à t.
 +
 +  * Moins de lettres par shot en corrigeant le script json_get_shot.py
 +  * Taille des lettres plus grandes
 +  * 38 000 images avec 10 lettres par image, les 10 b, 10 c, ... , 10 t
 +  * 30 000 itérations
 +  * fond = "video"
 +  * shot_size = 480
 +  * plage_x = 4.5
 +  * plage_y = 4.5
 +  * size_min = 1.0
 +  * size_max = 1.4
 +  * blur_mini = 0
 +  * blur_maxi = 6
 +  * letters_scale = 1.07
 +  * sun_energy_min = 3
 +  * sun_energy_max = 4
 +  * sun_color_min = 0.8
 +  * sun_color_max = 1.0
 +Les images sont à shot_size = 416 --> ????
 +
 +Cette courbe est parfaite, et pourtant c'est tout faux !!!!!!!!!
 +{{ media_04:chart_08_30000.png?400 |}}
 +
 +====Essai 09====
 +idem essai 08 mais shot_size = 480 pour la config et les images:
 +{{ media_04:chart_09_20000.png?400 |}}
 +
 +20 000 itérations ne suffisent pas !
 +
 +=====Shadeless sur toutes les textures=====
 +<WRAP group>
 +<WRAP half column>
 +Avec shaders\\
 +{{media_03:shot_21_avec_shaders.png?400|}}
 +</WRAP>
 +
 +<WRAP half column>
 +Sans shaders\\
 +{{media_03:shot_21_sans_shaders.png?400|}}\\
 +Les couleurs sont plus denses.
 +</WRAP>
 +</WRAP>
 +
 +====Essai 10====
 +===Apprentissage===
 +<WRAP group>
 +<WRAP half column>
 +  * total = 38000
 +  * fond = "video"
 +  * shot_size = 416
 +  * plage_x = 4.5
 +  * plage_y = 4.5
 +  * size_min = 0.5
 +  * size_max = 2.0
 +  * letters_scale = 1.09
 +</WRAP>
 +
 +<WRAP half column>
 +{{media_04:chart_10_40000.png?300|}}\\ 
 +De belles courbes d'apprentissage !
 +</WRAP>
 +</WRAP>
 +===Reconnaissance de musiques===
 +  * Fond noir, nuage RGB foncé, video de ciel: c'est quif quif. On reconnaît certaines musiques et d'autres pas, voire aucune notes n'est jouée !
 +  * Flou: 0 et 3
 +
 +=====Pour mémoire: Résumé des modifications suite à apprentissage finissant sur une erreur=====
 +  * 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'image shot_xxx.png: nom de l'objet au lieu du numéro de l'objet !
 +  * fond noir
 +  * fond noir remplacé par un nuage gris
 +  * nuage gris remplacé par une video de ciel !
 +  * Message dans le terminal: "Processus arrêté." Achat de DDR3 1600 mHz 16 Go pour remplacer les 4 Go existants.
 +  * 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'image et donc les superpositions.
 +  * Reprise des 400 images des lettres pour les cadrer serrées (20 heures de boulot) !
 +  * Ne pas déclarer des objets qui ne sont jamais dans les images !
 +  * SWAP de 64 Go au lieu de 8 Go
 +
 +
 +{{tag> ia sb bge yolo_darknet}}
darknet_letters_essais.txt · Dernière modification : 2020/12/01 17:43 de serge