Bonjour Licht. Suivant ici, Tutoriel Deep Learning Chapitre 4 Je parlerai de l'amélioration de la précision de la reconnaissance en élargissant les données.
La dernière fois (chapitre 3), la perte de 0,526 à l'époque 16 était le meilleur score. Cependant, ce n'est pas bon car il est rarement mal reconnu, même en version imprimée.
Cependant, même si vous en apprenez plus tel quel, seule la perte de train diminuera et la perte de test continuera d'augmenter. Un "surapprentissage" se produira et la précision de la reconnaissance ne s'améliorera pas. Afin d'éviter le surapprentissage et d'améliorer la précision, augmentons les données d'apprentissage.
Il est idéal d'augmenter les données d'entraînement d'origine, mais il faut du temps et de l'argent pour collecter les données d'entraînement, nous allons donc étendre les données.
À propos des types d'expansion de données
Amincissement pour éliminer la dépendance de la reconnaissance à l'épaisseur des caractères
Normalement, l'image inversée n'est pas entrée, donc cela semble être une expansion de données défavorable à première vue, mais elle est efficace du point de vue de TTA (expansion de données même pendant les tests).
La rotation utilise des nombres aléatoires tels que l'angle de rotation et l'axe de rotation (tridimensionnel), et le mouvement utilise des nombres aléatoires tels que le nombre de pixels en mouvement, il existe donc un nombre infini de combinaisons d'expansion des données. Je vais y arriver. Le nombre de feuilles agrandies et le résultat sont les suivants.
Numéro agrandi | test de perte meilleur score |
---|---|
10 feuilles | 0.526 |
100 feuilles | 0.277 |
300 feuilles | 0.260 |
500 feuilles | 0.237 |
Quelque chose est léger, mais ça fait du bien. Les données ne sont-elles pas dupliquées lorsqu'elles sont agrandies à 500 feuilles? Je pense, mais à la fin c'est OK.
À propos, la distorsion élastique ressemble à un élargissement idéal des données, mais elle est en fait difficile à gérer car elle prend du temps à traiter et provoque un surapprentissage (histoire d'expérience).
Même avec 500 feuilles, la précision augmente régulièrement (la perte diminue), alors j'ai ensuite essayé de passer à ** 3500 feuilles **. (Cependant, comme il y a une limite en termes de mémoire et de temps de traitement (sur mon PC), elle est limitée à seulement 5 feuilles, «A», «I», «U», «E» et «O».)
('epoch', 1)
train mean loss=0.167535232874, accuracy=0.937596153205
test mean loss=0.23016545952, accuracy=0.914285708447
('epoch', 2)
train mean loss=0.0582337708299, accuracy=0.979920332723
test mean loss=0.132406316127, accuracy=0.955102039843
('epoch', 3)
train mean loss=0.042050985039, accuracy=0.985620883214
test mean loss=0.0967423064653, accuracy=0.959183678335
('epoch', 4)
train mean loss=0.0344518882785, accuracy=0.98846154267
test mean loss=0.0579228501539, accuracy=0.983673472794
Le résultat ressemble à ceci. La perte est tombée à 0,057 à l'époque 4. Comme mentionné au chapitre 3, je pourrais en quelque sorte reconnaître l'hiragana manuscrit avec le modèle de perte 0,237, donc je peux m'y attendre cette fois. Par conséquent, j'ai écrit 50 feuilles de hiragana à portée de main et testé la précision.
Cette fois, le résultat de la reconnaissance est évalué après avoir étendu les données à 30 feuilles au moment du test. (Il n'y a pas de raison particulière à ce "30 feuilles")
$ python AIUEONN_predictor.py --model loss0057model --img ../testAIUEO/o0.png
init done
Numéro de neurone candidat:4, Unicode:304a,Hiragana:Oh
.
.(Omis)
.
Numéro de neurone candidat:4, Unicode:304a,Hiragana:Oh
Numéro de neurone candidat:4, Unicode:304a,Hiragana:Oh
Numéro de neurone candidat:3, Unicode:3048,Hiragana:e
Numéro de neurone candidat:4, Unicode:304a,Hiragana:Oh
**Numéro de neurone du jugement final:4, Unicode:304a,Hiragana:Oh**
C'est bon.
46 réponses correctes sur 50. Avec 4 erreurs, la précision était de 92%! Au fait, seules ces 4 photos ont été manquées. "A" a un caractère sale (sueur;
Certaines des choses qui ont fonctionné
Il est difficile à exprimer car il s'agit d'un ensemble de données de test du miso avant, mais il a une bonne précision. Je ressens la possibilité du Deep Learning car il s'agit de données d'apprentissage centrées sur le type et applicables aux caractères manuscrits. Le chapitre 4 se termine ici. Dans le prochain chapitre 5, j'aimerais apprendre des bases des réseaux de neurones en me référant au blog de Hi-King.
chapitre | Titre |
---|---|
Chapitre 1 | Construire un environnement Deep Learning basé sur le chainer |
Chapitre 2 | Création d'un modèle de prédiction Deep Learning par Machine Learning |
chapitre 3 | Reconnaissance de caractères à l'aide d'un modèle |
Chapitre 4 | Amélioration de la précision de la reconnaissance en élargissant les données |
Chapitre 5 | Introduction à Neural Net et explication du code source |
Chapitre 6 | Amélioration de l'efficacité d'apprentissage en sélectionnant Optimizer |
Chapitre 7 | TTA,Amélioration de l'efficacité de l'apprentissage par la normalisation des lots |
Recommended Posts