Je vais confirmer le sujet car c'est un bon matériel d'étude qui m'inquiétait un peu.
J'ai entendu sur Twitter des polices japonaises "uniquement" illisibles!? Je pensais que c'était stupide, mais je ne peux pas la lire parce qu'elle semble vraiment lisible! (Http://togetter.com/li/887973)
** "Les éléments lisibles et illisibles (= indiscernables) changent-ils selon qu'il existe ou non une fonction de reconnaissance du katakana (ou d'une forme proche)?" **
C'est pourquoi j'ai décidé de le vérifier en utilisant un réseau neuronal convolutif. Quelqu'un l'a peut-être déjà essayé, mais c'est une chose parce que c'est étudier.
L'explication du réseau neuronal convolutif est omise ici. Je ne sais pas.
Un classificateur qui ne peut classer que l'anglais est plus précis qu'un classificateur qui peut classer Katakana + anglais.
En comparant les 5 modèles suivants, nous évaluerons l'effet de la différence des caractères connus sur la précision.
No. | Données d'entraînement | Nombre de classes de sortie |
---|---|---|
1 | Alphabet + chiffre uniquement | 62 (sensible à la casse) |
2 | No.1 + hiragana uniquement | 62+48 = 110 |
3 | No.1 + Katakana uniquement | 62+48 = 110 |
4 | No.1 + hiragana + katakana | 62+48*2 = 158 |
5 | No.1 + caractère hébreu | 62+28 = 89 |
Pour le n ° 5, http://dic.nicovideo.jp/a/%E3%83%98%E3%83%96%E3%83%A9%E3%82%A4%E6%96%87%E5% La «lettre» et la «forme finale» décrites dans AD% 97 sont traitées comme des classes distinctes. (En premier lieu, pour Tsukkomi qui a dit "caractères hébreux", la raison est que je l'ai ajouté à titre de comparaison car il y avait un commentaire dans l'ensemble "j'ai l'impression que c'est un peu comme des caractères hébreux.")
Je pensais utiliser des données gratuites pour l'OCR, mais je n'ai pas trouvé la bonne, alors je l'ai créée moi-même.
Générez de nombreuses images à 1 caractère avec Pillow (PIL) (http://qiita.com/lazykyama/items/65bcce351f3d1cf07d8e) J'ai créé une image d'un seul caractère pour le nombre de caractères cibles et y ai ajouté du bruit aléatoire pour gonfler les données. Dans cette vérification, 30 images avec du bruit par caractère sont générées dynamiquement et utilisées comme données d'apprentissage.
En outre, l'image de test utilisée a été découpée manuellement à partir de l'image d'exemple à l'adresse http://www.dafont.com/electroharmonix.font.
Les données d'entraînement et les données de test utilisent des images en échelle de gris 64x64.
La structure du classificateur est comme indiqué dans le code ci-dessous. Divers paramètres sont appropriés.
self.__model = chainer.FunctionSet(
conv1=F.Convolution2D(1, 16, 5),
conv2=F.Convolution2D(16, 16, 5),
l3=F.Linear(784, 784),
softmax4=F.Linear(784, class_num))
#Omission
x = chainer.Variable(source)
h = F.max_pooling_2d(F.relu(self.__model.conv1(x)), ksize=2, stride=2)
h = F.max_pooling_2d(F.relu(self.__model.conv2(h)), ksize=3, stride=4)
h = F.dropout(F.relu(self.__model.l3(h)), train=train)
y = self.__model.softmax4(h)
Comme vous pouvez le voir, nous utilisons Chainer pour cette implémentation. (Merci de vous référer à http://qiita.com/hogefugabar/items/312707a09d29632e7288.)
Cette expérience utilise les paramètres suivants pour tous les modèles. (J'essaye diverses autres choses)
Les résultats dans ces conditions sont les suivants.
No. | Données d'entraînement | Taux de réponse correct |
---|---|---|
1 | Alphabet + chiffre uniquement | 46.2% (12 / 26) |
2 | No.1 + hiragana uniquement | 34.6% ( 9 / 26) |
3 | No.1 + Katakana uniquement | 15.4% ( 4 / 26) |
4 | No.1 + hiragana + katakana | 26.9% ( 7 / 26) |
5 | No.1 + caractère hébreu | 23.1% ( 6 / 26) |
En premier lieu, le pourcentage de réponses correctes n'est pas très élevé, mais même ainsi, la précision lorsqu'il est mélangé avec le katakana est terrible. .. .. Après tout, il peut être difficile pour le japonais de lire.
Enfin, le journal au moment du test est décrit ci-dessous. (Dans le journal, "capsV" etc. indique qu'il est en majuscules. L'électroharmonix ciblé cette fois semble avoir la même forme en majuscules et en minuscules, il est donc traité comme la bonne réponse, quelle que soit celle qui correspond. )
test models.
[PATTERN1]: English only.
2015-10-19 08:08:39,112 [INFO] #data: 26
2015-10-19 08:08:39,186 [INFO] correct: v, answer: capsV => RIGHT
2015-10-19 08:08:39,186 [INFO] correct: g, answer: capsT => WRONG
2015-10-19 08:08:39,186 [INFO] correct: s, answer: capsE => WRONG
2015-10-19 08:08:39,187 [INFO] correct: o, answer: capsD => WRONG
2015-10-19 08:08:39,187 [INFO] correct: i, answer: capsZ => WRONG
2015-10-19 08:08:39,187 [INFO] correct: r, answer: capsR => RIGHT
2015-10-19 08:08:39,187 [INFO] correct: u, answer: capsU => RIGHT
2015-10-19 08:08:39,187 [INFO] correct: a, answer: capsA => RIGHT
2015-10-19 08:08:39,187 [INFO] correct: h, answer: capsH => RIGHT
2015-10-19 08:08:39,188 [INFO] correct: l, answer: capsD => WRONG
2015-10-19 08:08:39,188 [INFO] correct: k, answer: capsN => WRONG
2015-10-19 08:08:39,188 [INFO] correct: n, answer: capsO => WRONG
2015-10-19 08:08:39,188 [INFO] correct: q, answer: capsT => WRONG
2015-10-19 08:08:39,188 [INFO] correct: d, answer: capsD => RIGHT
2015-10-19 08:08:39,188 [INFO] correct: m, answer: capsM => RIGHT
2015-10-19 08:08:39,189 [INFO] correct: t, answer: n => WRONG
2015-10-19 08:08:39,189 [INFO] correct: e, answer: capsE => RIGHT
2015-10-19 08:08:39,189 [INFO] correct: x, answer: x => RIGHT
2015-10-19 08:08:39,189 [INFO] correct: p, answer: capsF => WRONG
2015-10-19 08:08:39,189 [INFO] correct: w, answer: capsQ => WRONG
2015-10-19 08:08:39,189 [INFO] correct: z, answer: capsZ => RIGHT
2015-10-19 08:08:39,189 [INFO] correct: y, answer: capsY => RIGHT
2015-10-19 08:08:39,189 [INFO] correct: c, answer: capsT => WRONG
2015-10-19 08:08:39,190 [INFO] correct: b, answer: capsZ => WRONG
2015-10-19 08:08:39,190 [INFO] correct: f, answer: capsF => RIGHT
2015-10-19 08:08:39,190 [INFO] correct: j, answer: capsZ => WRONG
2015-10-19 08:08:39,190 [INFO] test accuracy: 0.461538461538 (12 / 26)
[PATTERN2]: English and hiragana.
2015-10-19 08:08:39,314 [INFO] #data: 26
2015-10-19 08:08:39,387 [INFO] correct: v, answer: capsV => RIGHT
2015-10-19 08:08:39,387 [INFO] correct: g, answer: capsT => WRONG
2015-10-19 08:08:39,387 [INFO] correct: s, answer: capsB => WRONG
2015-10-19 08:08:39,387 [INFO] correct: o, answer: capsB => WRONG
2015-10-19 08:08:39,388 [INFO] correct: i, answer: capsZ => WRONG
2015-10-19 08:08:39,388 [INFO] correct: r, answer:Ho=> WRONG
2015-10-19 08:08:39,388 [INFO] correct: u, answer: capsU => RIGHT
2015-10-19 08:08:39,388 [INFO] correct: a, answer: l => WRONG
2015-10-19 08:08:39,388 [INFO] correct: h, answer:sensationnel=> WRONG
2015-10-19 08:08:39,388 [INFO] correct: l, answer: capsU => WRONG
2015-10-19 08:08:39,388 [INFO] correct: k, answer: capsT => WRONG
2015-10-19 08:08:39,389 [INFO] correct: n, answer: capsD => WRONG
2015-10-19 08:08:39,389 [INFO] correct: q, answer: capsT => WRONG
2015-10-19 08:08:39,389 [INFO] correct: d, answer: capsD => RIGHT
2015-10-19 08:08:39,389 [INFO] correct: m, answer: capsM => RIGHT
2015-10-19 08:08:39,389 [INFO] correct: t, answer:Su=> WRONG
2015-10-19 08:08:39,389 [INFO] correct: e, answer: capsE => RIGHT
2015-10-19 08:08:39,390 [INFO] correct: x, answer: x => RIGHT
2015-10-19 08:08:39,390 [INFO] correct: p, answer: capsT => WRONG
2015-10-19 08:08:39,390 [INFO] correct: w, answer:je=> WRONG
2015-10-19 08:08:39,390 [INFO] correct: z, answer: capsZ => RIGHT
2015-10-19 08:08:39,390 [INFO] correct: y, answer: capsY => RIGHT
2015-10-19 08:08:39,390 [INFO] correct: c, answer: capsE => WRONG
2015-10-19 08:08:39,391 [INFO] correct: b, answer: capsT => WRONG
2015-10-19 08:08:39,392 [INFO] correct: f, answer: capsT => WRONG
2015-10-19 08:08:39,392 [INFO] correct: j, answer: capsJ => RIGHT
2015-10-19 08:08:39,392 [INFO] test accuracy: 0.346153846154 (9 / 26)
[PATTERN3]: English and katakana.
2015-10-19 08:08:39,517 [INFO] #data: 26
2015-10-19 08:08:39,591 [INFO] correct: v, answer: capsV => RIGHT
2015-10-19 08:08:39,591 [INFO] correct: g, answer: capsQ => WRONG
2015-10-19 08:08:39,591 [INFO] correct: s, answer:La=> WRONG
2015-10-19 08:08:39,591 [INFO] correct: o, answer:sensationnel=> WRONG
2015-10-19 08:08:39,591 [INFO] correct: i, answer:ヱ=> WRONG
2015-10-19 08:08:39,592 [INFO] correct: r, answer:sensationnel=> WRONG
2015-10-19 08:08:39,592 [INFO] correct: u, answer: capsU => RIGHT
2015-10-19 08:08:39,592 [INFO] correct: a, answer:Mu=> WRONG
2015-10-19 08:08:39,592 [INFO] correct: h, answer: r => WRONG
2015-10-19 08:08:39,592 [INFO] correct: l, answer: capsQ => WRONG
2015-10-19 08:08:39,592 [INFO] correct: k, answer:sensationnel=> WRONG
2015-10-19 08:08:39,592 [INFO] correct: n, answer:sensationnel=> WRONG
2015-10-19 08:08:39,593 [INFO] correct: q, answer: capsR => WRONG
2015-10-19 08:08:39,593 [INFO] correct: d, answer:sensationnel=> WRONG
2015-10-19 08:08:39,593 [INFO] correct: m, answer: capsO => WRONG
2015-10-19 08:08:39,593 [INFO] correct: t, answer: l => WRONG
2015-10-19 08:08:39,593 [INFO] correct: e, answer:La=> WRONG
2015-10-19 08:08:39,593 [INFO] correct: x, answer:Moi=> WRONG
2015-10-19 08:08:39,593 [INFO] correct: p, answer:UNE=> WRONG
2015-10-19 08:08:39,593 [INFO] correct: w, answer: capsQ => WRONG
2015-10-19 08:08:39,593 [INFO] correct: z, answer: capsZ => RIGHT
2015-10-19 08:08:39,593 [INFO] correct: y, answer: capsY => RIGHT
2015-10-19 08:08:39,594 [INFO] correct: c, answer: capsE => WRONG
2015-10-19 08:08:39,594 [INFO] correct: b, answer:Puissance=> WRONG
2015-10-19 08:08:39,594 [INFO] correct: f, answer: 5 => WRONG
2015-10-19 08:08:39,594 [INFO] correct: j, answer: capsT => WRONG
2015-10-19 08:08:39,594 [INFO] test accuracy: 0.153846153846 (4 / 26)
[PATTERN4]: English and hiragana and katakana.
2015-10-19 08:08:39,718 [INFO] #data: 26
2015-10-19 08:08:39,792 [INFO] correct: v, answer:Non=> WRONG
2015-10-19 08:08:39,792 [INFO] correct: g, answer: capsQ => WRONG
2015-10-19 08:08:39,792 [INFO] correct: s, answer:La=> WRONG
2015-10-19 08:08:39,793 [INFO] correct: o, answer: capsQ => WRONG
2015-10-19 08:08:39,793 [INFO] correct: i, answer: capsT => WRONG
2015-10-19 08:08:39,793 [INFO] correct: r, answer:UNE=> WRONG
2015-10-19 08:08:39,793 [INFO] correct: u, answer: capsU => RIGHT
2015-10-19 08:08:39,793 [INFO] correct: a, answer:Mu=> WRONG
2015-10-19 08:08:39,793 [INFO] correct: h, answer:sensationnel=> WRONG
2015-10-19 08:08:39,793 [INFO] correct: l, answer:Ri=> WRONG
2015-10-19 08:08:39,794 [INFO] correct: k, answer:sensationnel=> WRONG
2015-10-19 08:08:39,794 [INFO] correct: n, answer:sensationnel=> WRONG
2015-10-19 08:08:39,794 [INFO] correct: q, answer: capsQ => RIGHT
2015-10-19 08:08:39,794 [INFO] correct: d, answer: capsD => RIGHT
2015-10-19 08:08:39,795 [INFO] correct: m, answer: capsM => RIGHT
2015-10-19 08:08:39,795 [INFO] correct: t, answer:N / a=> WRONG
2015-10-19 08:08:39,795 [INFO] correct: e, answer: capsE => RIGHT
2015-10-19 08:08:39,795 [INFO] correct: x, answer:Moi=> WRONG
2015-10-19 08:08:39,795 [INFO] correct: p, answer:UNE=> WRONG
2015-10-19 08:08:39,796 [INFO] correct: w, answer:B=> WRONG
2015-10-19 08:08:39,796 [INFO] correct: z, answer: capsZ => RIGHT
2015-10-19 08:08:39,796 [INFO] correct: y, answer:Non=> WRONG
2015-10-19 08:08:39,796 [INFO] correct: c, answer: capsQ => WRONG
2015-10-19 08:08:39,796 [INFO] correct: b, answer: capsZ => WRONG
2015-10-19 08:08:39,796 [INFO] correct: f, answer:Te=> WRONG
2015-10-19 08:08:39,796 [INFO] correct: j, answer: capsJ => RIGHT
2015-10-19 08:08:39,796 [INFO] test accuracy: 0.269230769231 (7 / 26)
[PATTERN5]: English and Hebrew.
2015-10-19 08:08:39,921 [INFO] #data: 26
2015-10-19 08:08:39,994 [INFO] correct: v, answer: capsV => RIGHT
2015-10-19 08:08:39,995 [INFO] correct: g, answer: ם => WRONG
2015-10-19 08:08:39,995 [INFO] correct: s, answer: capsZ => WRONG
2015-10-19 08:08:39,995 [INFO] correct: o, answer: capsH => WRONG
2015-10-19 08:08:39,995 [INFO] correct: i, answer: capsZ => WRONG
2015-10-19 08:08:39,995 [INFO] correct: r, answer: capsK => WRONG
2015-10-19 08:08:39,995 [INFO] correct: u, answer: capsH => WRONG
2015-10-19 08:08:39,996 [INFO] correct: a, answer: capsA => RIGHT
2015-10-19 08:08:39,996 [INFO] correct: h, answer: b => WRONG
2015-10-19 08:08:39,996 [INFO] correct: l, answer: ם => WRONG
2015-10-19 08:08:39,996 [INFO] correct: k, answer: ל => WRONG
2015-10-19 08:08:39,996 [INFO] correct: n, answer: capsH => WRONG
2015-10-19 08:08:39,997 [INFO] correct: q, answer: capsH => WRONG
2015-10-19 08:08:39,997 [INFO] correct: d, answer: capsD => RIGHT
2015-10-19 08:08:39,997 [INFO] correct: m, answer: capsM => RIGHT
2015-10-19 08:08:39,997 [INFO] correct: t, answer: l => WRONG
2015-10-19 08:08:39,997 [INFO] correct: e, answer: z => WRONG
2015-10-19 08:08:39,997 [INFO] correct: x, answer: capsX => RIGHT
2015-10-19 08:08:39,997 [INFO] correct: p, answer: capsT => WRONG
2015-10-19 08:08:39,998 [INFO] correct: w, answer: capsQ => WRONG
2015-10-19 08:08:39,998 [INFO] correct: z, answer: capsZ => RIGHT
2015-10-19 08:08:39,998 [INFO] correct: y, answer: capsV => WRONG
2015-10-19 08:08:39,998 [INFO] correct: c, answer: capsQ => WRONG
2015-10-19 08:08:39,998 [INFO] correct: b, answer: capsM => WRONG
2015-10-19 08:08:39,998 [INFO] correct: f, answer: capsM => WRONG
2015-10-19 08:08:39,998 [INFO] correct: j, answer: 5 => WRONG
2015-10-19 08:08:39,999 [INFO] test accuracy: 0.230769230769 (6 / 26)
Même dans le modèle anglais uniquement, "g" est confondu avec "T", donc je ne peux rien dire à ce sujet. ↑ "g" de electroharmonix
↑ "T" des données d'entraînement
Cependant, s'il s'agit d'un modèle anglais + katakana, cela ne sert à rien car "s" est confondu avec "la" ... ↑ "s" de electroharmonix
↑ "La" des données d'entraînement
… Pas vraiment. Cela semble être faux.
J'ai oublié d'en écrire, je vais donc l'ajouter.
Quittez l'ensemble des sources. https://gist.github.com/lazykyama/f586419cd72d5312288e
Recommended Posts