Wir werden die Datenanalyse von Wiire automatisieren! Teil3
Hallo, das ist Yajun!
Dieser Artikel ist eine Serie, Teil 3. Wenn Sie möchten, hoffe ich, dass Sie es zusammen lesen können.
- Teil 1 Artikel ist eine Erstellung einer Zeichenerkennungssoftware, die Zeichendaten aus Übereinstimmungsergebnisbildern extrahiert.
- Artikel von Teil 2 erstellt eine Software zur grafischen Darstellung der extrahierten Daten.
Die Software ist in Python geschrieben. ■ Referenz-URL
■ Werbung
- Bot für Ereignisbenachrichtigung von Wiire Ich habe es erstellt, also hoffe ich, dass Sie es verwenden können.
- Dank der Übertragung von Inhalten konnte ich mich auf der Einführungsseite für die Personalabteilung von E-Sports registrieren. Link
- In Zukunft planen wir, in Verbindung mit einer Analysesoftware auf Youtube zu arbeiten. Link
■ Einführung
- Durch meine bisherigen Aktivitäten wollte ich neue Funktionen hinzufügen, indem ich Software von der Datenextraktion bis zur Diagrammanalyse erstellte!
"Sammeln Sie mehr Daten und führen Sie eine neue Analyse durch!"
"Lassen Sie uns eine Strategie für Wiire finden!"
Ein Problem hat jedoch die Entwicklungseffizienz stark verringert ...
** Die Genauigkeit der von mir erstellten Zeichenerkennungssoftware betrug 95%! ** **.
▼ Der Grund, warum 95% Genauigkeit nicht gut ist
- Veröffentlichte den Datenfluss
Wenn die Genauigkeit von "② Zeichendatenextraktion" 95% beträgt, muss der Fehler der verbleibenden 5% korrigiert werden.
Es fühlt sich an, als würde man mehrere Stellen mit den Daten für ein Spiel reparieren.
Angenommen, Sie möchten den Analysedienst für 10 Kunden 6 Monate lang fortsetzen.
Angenommen, Sie erhalten Daten für 2000 Spiele pro Jahr, die sich an Profis und Distributoren richten.
10 Personen x 2000 Spiele (1 Jahr) x 0,5 (ein halbes Jahr) = 10000 Spiele
Selbst wenn Sie ein paar Spiele in einem Spiel reparieren, wird es zusammenbrechen, wenn es 10.000 Spiele sind. .. ..
Daher ist eine Genauigkeit von ** 100% der Datenextraktion eine zwingende Voraussetzung. ** **.
■ Ziel
- Das Ziel war es, "die Genauigkeit der Datenextraktion aus dem Spielergebnisbild von Wiire auf 100% zu bringen".
■ Methode
▼ Methode: OCR
- Zunächst haben wir basierend auf OCR Anstrengungen unternommen, um eine 100% ige Genauigkeit zu erreichen.
OCR ist eine Technologie, die Zeichendaten aus den in einem Bild enthaltenen Zeichen extrahiert.
Zusammenfassend konnte keine Leistung erzielt werden.
** Aber ich werde meine Erfahrung Ingenieuren überlassen, die OCR verwenden möchten. ** **.
Die Genauigkeit der OCR setzt sich aus den folgenden Faktoren zusammen.
① Eingangsdatenrauschen
(2) Leistung der Werkzeugbibliothek
③ Betriebsart
④ Entfernen Sie Rauschen aus dem Ausgabeergebnis
① Eingabedaten
- Es ist schwierig, die Bildqualität usw. zu verbessern, da das Bild von der angehängten Screenshot-Funktion von PS4 erfasst wird.
Die Qualität der Eingabedaten ist wichtig, da OCR Features aus Objekten extrahiert.
(2) Leistung der Werkzeugbibliothek
- Die aus Teil 1 übernommene ist tesseract-ocr.
Es ist eine kostenlose Bibliothek, die häufig in Python verwendet wird, und es gibt viele Websites, auf die Sie verweisen können.
- Als Nächstes habe ich Google Vision API in Betracht gezogen -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 + es ist% 7C + JP +% 7C + ja +% 7C + Vision +% 7C + API +% 7C + en-KWID_43700016119073988-KWD-154.107.679.017 & userloc_1009288 & utm_term = KW_% 2Bgoogle% 20% 2Bvision% 20% 2Bapi & gclid = Cj0KCQiAkePyBRCEARIsAMy5SctboKWtsTtMGinWFY2UB6glu5SBsspKPxXs3o6MKp25rJ0cb18Ih0caAtheEALw_wcB).
Was für eine göttliche Spezifikation, dass Sie eine Demo auf der Tool-Einführungsseite ausführen können! Wie erwartet Google. .. .. Ich wollte in die Firma eintreten. .. ..
Ich habe sofort versucht, das Match-Ergebnis-Bild von Wiire einzufügen.
-
Es ist eine coole Benutzeroberfläche! Informationen werden für jede Registerkarte bereitgestellt.
Labal
Logos
Web
Text
Properties
Safe Search
-
Der Fokus liegt auf der Registerkarte "Text", auf der Zeichendaten aus Bildern erkannt werden.
** Aus der Schlussfolgerung geht hervor, dass die erwartete Leistung nicht erreicht wird. ** **.
Die als Zeichen erkannten Stellen sind grün umrahmt, numerische Daten wie "Anzahl der Kreuze" werden jedoch nicht erkannt.
(Ich war persönlich beeindruckt, die Fußballmannschaft anhand des Logos zu identifizieren!)
- Ich habe über andere Bibliotheken nachgedacht, aber angesichts der Leistung von Google Teacher ist dies wahrscheinlich nutzlos.
Ich habe mich ehrlich entschieden, bei Tesseract weiterzuentwickeln.
③ Betriebsart
- Betriebsmodus kann in der OCR-Bibliothek angegeben werden.
Das Analyseziel ist "Ist es ein Zeichen?" "Ist es eine Zeichenkette?" "Ist es vertikale Schrift?" "Ist es horizontale Schrift?" "Ist es eine Zahl?" "Ist es ein Alphabet?"
Wenn das Ausgabeergebnis keine Zahl ist, ändern Sie den Betriebsmodus und führen Sie ihn erneut aus.
④ Entfernen Sie Rauschen aus dem Ausgabeergebnis
- Die letzte Zeichenfolge kann Rauschen wie "." Oder [|] enthalten.
Schreiben Sie daher eine Software, um andere Zeichen als numerische Daten aus der Zeichenfolge zu löschen.
** Das Ergebnis ist eine Erkennungsgenauigkeit von 95%. .. .. ** **.
Für diejenigen, die das tatsächliche Ausgabeergebnis sehen möchten, [■ Ergebnis](https://qiita.com/junya0001000/items/8f519cdb3846fcec397a#%E7%B5%90%E6%9E%9C--%E5%87%BA%E5 % 8A% 9B% E7% B5% 90% E6% 9E% 9C)
▼ Methode: Template Matching
- ** Komm schon! ** **.
Template Matching ist eine der Bildverarbeitungen zur Suche nach einem bestimmten Bild aus einem bestimmten Bild. Die Bibliothek verwendet Opencv.
Die Eingabedaten "Wiire-Match-Ergebnis" haben eine vorteilhafte Funktion für das Template-Matching.
Das Detail ist unten.
Dreht sich nicht
Nicht verzerren
Die Position der einzelnen Daten ist einheitlich
Einheitliche Schriftart
Einheitliche Größe
・ Vorbereitung
- Nachdem Sie die Funktionen kennen, können Sie fortfahren!
Sammeln Sie "numerische Datenbilder" aus den Übereinstimmungsergebnissen von Wiire als Daten für die Vorlagenübereinstimmung.
(Es ist mühsam !!)
・ Demo spielen
- Führen Sie die Vorlagenübereinstimmung mit den gesammelten Bilddaten als Vorlage aus.
Die verwendete Funktion ist cv2.matchTemplate ().
Schreiben Sie den Demo-Code und führen Sie ihn aus, der von einem grünen Rahmen für kleinere Zahlen und einem roten Rahmen für größere Zahlen umgeben ist.
Es übertrifft definitiv die Leistung der Google Vision API! !!
Speichern Sie die Daten so, als ob sich an der Stelle, an der der Rahmen angezeigt wird, eine entsprechende Nummer befindet.
Zu diesem Zeitpunkt handelt es sich um einen Mechanismus zum Extrahieren von Daten aus dem Bild, indem Sie je nach Standort beurteilen können, "welcher Parameter die Zahl ist".
· Erkennungsempfindlichkeit
- In dieser Spalte schreibe ich eine technische Geschichte für Ingenieure.
Beim Template Matching stört die "Erkennungsempfindlichkeit" die Ingenieure.
Falsch positiv und falsch negativ ändert sich abhängig von der "Erkennungsempfindlichkeit".
Nehmen Sie diese Software als Beispiel
Falsch positiv: An einem Ort, an dem es keine Nummer gibt, wird beurteilt, dass es eine Nummer gibt.
Falsch negativ: Es wird beurteilt, dass an der Stelle, an der die Zahl tatsächlich "Ja" lautet, keine Nummer vorhanden ist.
"Erkennungsempfindlichkeit" kann dies einstellen.
"Sie sollten die Erkennungsempfindlichkeit so einstellen, dass sowohl falsch positive als auch falsch negative Ergebnisse verschwinden!"
Sie könnten denken, aber es ist normalerweise nicht möglich!
Der Grund dafür ist, dass "der Abschnitt zur Erkennungsempfindlichkeit mit falsch positiven und falsch negativen Ergebnissen häufig abdeckt".
- Also, was machst du?
** Stellen Sie die Erkennungsempfindlichkeit auf "nur eines von falsch positiven und falsch negativen" ein. ** **.
Schreiben Sie danach eine Software, um Fälschungen im Ergebnis zu finden und zu entfernen.
Wenn die Empfindlichkeit so ist, dass falsch positive und falsch negative Ergebnisse nebeneinander existieren, wird der Code kompliziert.
Übrigens schwingt diese Software auf die falsch positive Seite.
Dies liegt daran, dass falsche Negative nicht erkannt werden können, da die Anzahl der Objekte (Anzahl der Zahlen) unbestimmt ist.
▼ Logik zum Erkennen falsch negativer Ergebnisse ▼
Anzahl der Zahlen, die sein sollten - Anzahl der Zahlen, die erkannt werden konnten = Falsch negativ, wenn es einen Unterschied gibt
■ Ergebnisse
- Ich habe versucht, die Software mit den folgenden 5 Bildern als Eingabebilder auszuführen.
▼ Ergebnis: Eingabebild
▼ Ergebnis: Ausgabeergebnis
- Ausgabedaten werden im CSV-Format ausgegeben.
Um den Unterschied leicht verständlich zu machen, werden wir auch die Ergebnisse der "verbesserten OCR-Software" vergleichen.
Im Vergleich zu den richtigen Antwortdaten werden die falschen Zellen farbig angezeigt.
** 100% korrekte Antwortrate erreicht! !! Wow (Urlaub) **
■ Fazit
- Danke, dass Sie so weit gelesen haben!
Da die Zeichenerkennungsgenauigkeit 100% betrug, konnten wir alles von der Datenextraktion bis zur Grafikerstellung vollständig automatisieren!
Damit können Sie beliebig viele Spiele analysieren ♪
Ich denke auch, dass Ingenieure auch etwas über Software-Design gelernt haben, das falsch positive / falsch negative Ergebnisse berücksichtigt.
Ich hoffe es hilft jemandem.
Wir werden weiterhin Funktionen hinzufügen und die Leistung der Software verbessern.
Bleib dran für Teil 4!
■ Referenz-URL
- Spielen Sie mit Python + OpenCV (OCR)
- Abrufen der Anzahl der Dimensionen, Form und Größe (Gesamtzahl der Elemente) des NumPy-Arrays ndarray
- Testen Sie die Google Cloud Vision-API
- Template Matching
- Listenelemente (Array) in Python entfernen
- Verwendung der abs-Funktion zum Ermitteln des Absolutwerts