Nous automatiserons l'analyse des données de Wiire! part3
Bonjour, c'est Yajun!
Cet article est une série, partie 3. Si vous le souhaitez, j'espère que vous pourrez le lire ensemble.
- Article de la partie 1 est une création d'un logiciel de reconnaissance de caractères qui extrait les données de caractères des images de résultats de correspondance.
- article de la partie 2 consiste à créer un logiciel pour représenter graphiquement les données extraites.
Le logiciel est écrit en Python. ■ URL de référence
■ Publicité
- Bot pour la notification d'événements de Wiire Je l'ai créé, donc j'espère que vous pourrez l'utiliser.
- Grâce à la transmission du contenu, j'ai pu m'inscrire sur le site d'introduction des ressources humaines e-sports. Lien
- À l'avenir, nous prévoyons de travailler sur Youtube en conjonction avec un logiciel d'analyse. Lien
■ Présentation
- A travers mes activités jusqu'à présent, je cherchais à ajouter de nouvelles fonctions en créant des logiciels allant de l'extraction de données à l'analyse de graphes!
"Collectez plus de données et faites une nouvelle analyse!"
"Trouvons une stratégie pour Wiire!"
Cependant, un problème a considérablement réduit l'efficacité du développement ...
** La précision du logiciel de reconnaissance de caractères que j'ai créé était de 95%! ** **
▼ La raison pour laquelle une précision de 95% n'est pas bonne
- Publié le flux d'analyse des données
Si la précision de «② Extraction des données de caractères» est de 95%, les 5% restants de l'erreur doivent être corrigés.
On a l'impression de réparer plusieurs endroits avec les données d'un jeu.
Supposons que vous souhaitiez continuer le service d'analyse pour 10 clients pendant 6 mois.
Ciblant les professionnels et les distributeurs, supposons que vous obteniez des données pour 2000 jeux par an.
10 personnes x 2000 jeux (1 an) x 0,5 (six mois) = 10000 jeux
Même si vous corrigez quelques jeux dans un seul jeu, il échouera s'il s'agit de 10 000 jeux. .. ..
Par conséquent, ** 100% d'exactitude de l'extraction des données est une exigence obligatoire. ** **
■ Objectif
- L'objectif était de "rendre l'exactitude de l'extraction des données à partir de l'image de résultat de match de Wiire à 100%".
■ Méthode
▼ Méthode: OCR
- Au début, sur la base de OCR, nous avons fait des efforts pour atteindre une précision de 100%.
OCR est une technologie qui extrait les données de caractères des caractères contenus dans une image.
En conclusion, les performances n'ont pas pu être atteintes.
** Mais je laisse mon expérience aux ingénieurs qui souhaitent utiliser l'OCR. ** **
La précision de l'OCR est composée des facteurs suivants.
① Bruit des données d'entrée
(2) Performances de la bibliothèque d'outils
③ Mode de fonctionnement
④ Supprimez le bruit du résultat de sortie
① Données d'entrée
- Il est difficile d'améliorer la qualité d'image, etc. car l'image est acquise par la fonction de capture d'écran jointe à partir de PS4.
La qualité des données d'entrée est importante car l'OCR extrait les caractéristiques des objets.
(2) Performances de la bibliothèque d'outils
- Celui utilisé dans la partie 1 est tesseract-ocr.
C'est une bibliothèque gratuite, souvent utilisée en python, et il existe de nombreux sites auxquels vous pouvez vous référer.
- Ensuite, j'ai examiné [API Google Vision](https://cloud.google.com/vision/?hl=ja&utm_source=google&utm_medium=cpc&utm_campaign=japac-JP-all-ja-dr-bkws-all-all -trial-b-dr-1008074 & utm_content = text-ad-none-none-DEV_c-CRE_285865409470-ADGP_Hybrid +% 7C + AW + SEM +% 7C + BKWS + ~ + T1 +% 7C + BMM +% 7C + ML +% 7C + M: 1 + il est% 7C + JP +% 7C + ja +% 7C + Vision +% 7C + API +% 7C + en-KWID_43700016119073988-kwd-154107679017 & userloc_1009288 & utm_term = KW_% 2Bgoogle% 20% 2Bvision% 20% 2Bapi & gclid = Cj0KCQiAkePyBRCEARIsAMy5SctboKWtsTtMGinWFY2UB6glu5SBsspKPxXs3o6MKp25rJ0cb18Ih0caAtheEALw_wcB).
Quelle spécification de Dieu que vous pouvez exécuter une démo sur la page d'introduction de l'outil! Comme prévu, Google. .. .. Je voulais rejoindre l'entreprise. .. ..
Immédiatement, j'ai essayé d'insérer l'image de résultat du match de Wiire.
-
C'est une interface utilisateur sympa! Des informations sont fournies pour chaque onglet.
Labal
Logos
Web
Text
Properties
Safe Search
-
L'accent est mis sur l'onglet "Texte", qui reconnaît les données de caractères des images.
** De la conclusion, il semble que la performance attendue ne soit pas atteinte. ** **
Les lieux reconnus comme caractères sont encadrés en vert, mais les données numériques telles que "nombre de croix" ne sont pas reconnues.
(J'ai été personnellement impressionné d'identifier l'équipe de football à partir du logo!)
- J'ai pensé à d'autres bibliothèques, mais cela risque d'être inutile compte tenu des performances du professeur Google.
J'ai honnêtement décidé de procéder au développement chez Tesseract.
③ Mode de fonctionnement
- Mode de fonctionnement peut être spécifié dans la bibliothèque OCR.
La cible de l'analyse est "s'agit-il d'un caractère?" "Est-ce une chaîne de caractères?" "Est-ce une écriture verticale?" "Est-ce une écriture horizontale?" "Est-ce un nombre?" "Est-ce un alphabet?"
Si le résultat de sortie n'est pas un nombre, changez le mode de fonctionnement et réexécutez.
④ Supprimez le bruit du résultat de sortie
- La chaîne de caractères finale peut avoir du bruit tel que "." Ou [|].
Par conséquent, écrivez un logiciel pour supprimer des caractères autres que des données numériques de la chaîne de caractères.
** Le résultat de cette opération est une précision de reconnaissance de 95%. .. .. ** **
Pour ceux qui veulent voir le résultat de sortie réel, [■ Result](https://qiita.com/junya0001000/items/8f519cdb3846fcec397a#%E7%B5%90%E6%9E%9C--%E5%87%BA%E5 % 8A% 9B% E7% B5% 90% E6% 9E% 9C)
▼ Méthode: correspondance des modèles
- ** Allons! ** **
Template Matching est l'un des traitements d'image pour rechercher une image spécifique à partir d'une certaine image. La bibliothèque utilise Opencv.
Les données d'entrée, "Wiire Match Results", ont une fonction avantageuse pour la correspondance de modèles.
le détail est juste en dessous.
Ne tourne pas
Ne déforme pas
La position de chaque donnée est unifiée
Police unifiée
Taille unifiée
・ Préparation
- Maintenant que vous connaissez les fonctionnalités, passons à autre chose!
Collectez des "images de données numériques" à partir des résultats de correspondance de Wiire comme données pour la correspondance de modèles.
(C'est gênant !!)
・ Jeu de démonstration
- Exécuter le modèle correspondant aux données d'image collectées en tant que modèle.
La fonction utilisée est cv2.matchTemplate ().
Écrivez et exécutez le code de démonstration entouré d'un cadre vert pour les nombres plus petits et d'un cadre rouge pour les nombres plus grands.
Cela dépasse définitivement les performances de l'API Google Vision! !!
Enregistrez les données comme s'il y avait un numéro correspondant à l'endroit où le cadre est affiché.
A ce moment, c'est un mécanisme pour extraire des données de l'image en vous laissant juger "quel paramètre est le nombre" en fonction de l'emplacement.
· Sensibilité de détection
- Dans cette chronique, j'écrirai une histoire technique pour les ingénieurs.
Pour le Template Matching, c'est la "sensibilité de détection" qui dérange les ingénieurs.
Faux positif et faux négatif change en fonction de la "sensibilité de détection".
Prenant ce logiciel comme exemple
Faux positif: dans un endroit où il n'y a pas de nombre, on juge qu'il y a un nombre.
Faux négatif: il est jugé qu'il n'y a pas de nombre à l'endroit où le nombre est en fait «oui».
La "sensibilité de détection" peut régler cela.
"Vous devez ajuster la sensibilité de détection pour que les faux positifs et les faux négatifs disparaissent!"
Vous pourriez penser, mais ce n'est généralement pas possible!
La raison en est que "la section de sensibilité de détection avec des faux positifs et des faux négatifs couvre souvent".
- Donc que fais-tu?
** Réglez la sensibilité de détection sur "un seul des faux positifs et des faux négatifs". ** **
Après cela, écrivez un logiciel pour trouver et éliminer les faux du résultat.
Si la sensibilité est telle que les faux positifs et les faux négatifs coexistent, le code devient compliqué.
Au fait, ce logiciel évolue du côté des faux positifs.
En effet, les faux négatifs ne peuvent pas être détectés car le nombre d'objets (nombre de nombres) est indéfini.
▼ Logique de détection des faux négatifs ▼
Nombre de nombres qui devraient être -Nombre de nombres qui pourraient être détectés = Faux négatif s'il y a une différence
■ Résultats
- J'ai essayé d'exécuter le logiciel en utilisant les 5 images suivantes comme images d'entrée.
▼ Résultat: Image d'entrée
▼ Résultat: résultat de sortie
- Les données de sortie sont sorties au format CSV.
Pour rendre la différence facile à comprendre, nous comparerons également les résultats du «logiciel OCR amélioré».
Par rapport aux données de réponse correctes, les cellules incorrectes sont affichées en couleur.
** Taux de réponse correct de 100% atteint! !! Wow (vacances) **
■ Conclusion
- Merci d'avoir lu jusqu'ici!
La précision de la reconnaissance des caractères étant de 100%, nous avons pu tout automatiser, de l'extraction des données à la création de graphiques!
Avec cela, vous pouvez analyser n'importe quel nombre de jeux ♪
De plus, je pense que les ingénieurs ont également appris la conception de logiciels qui prend en compte les faux positifs / faux négatifs.
J'espère que cela aide quelqu'un.
Nous continuerons d'ajouter des fonctions et d'améliorer les performances du logiciel.
Restez à l'écoute pour part4!
■ URL de référence
- Jouez avec Python + OpenCV (OCR)
- Obtenez le nombre de dimensions, de forme et de taille (nombre total d'éléments) du tableau NumPy ndarray
- Essayez l'API Google Cloud Vision
- Correspondance des modèles
- Supprimer les éléments de liste (tableau) en Python
- Comment utiliser la fonction abs pour trouver la valeur absolue