
Ja, tatsĂ€chlich konnten wir das neuronale Netzwerk des Sportscouts ersetzen und begannen automatisch, Daten ĂŒber das Spiel zu sammeln. Und jetzt wissen wir mehr ĂŒber das Sportereignis als das anwesende Publikum und manchmal den Richter.
Wir (
Constanta ) sind auf die Entwicklung von IT-Wettprodukten spezialisiert: mobile Anwendungen, Websites und entwickeln kĂŒrzlich Projekte im Bereich Computer Vision und maschinelles Lernen. Einer von ihnen wird diskutiert.
WĂ€hrend Athleten um groĂe und kleine Siege kĂ€mpfen, muss der Buchmacher den Verlauf der Ereignisse in Echtzeit kennen, um die Koeffizienten neu berechnen zu können, nach denen tatsĂ€chlich Wetten angenommen werden. Zu diesem Zweck sammeln und ĂŒbertragen Sport-Scouts direkt auf den SpielplĂ€tzen mithilfe einer speziellen Anwendung auf einem Smartphone eine groĂe Datenmenge. Ein Pfadfinder ist dieselbe Person wie wir alle, daher entstehen natĂŒrlich Risiken, die mit dem menschlichen Faktor verbunden sind. Unser Ziel ist es, sie zu minimieren und gleichzeitig das Volumen und die Geschwindigkeit der Datenerfassung und -ĂŒbertragung zu erhöhen sowie die Kosten fĂŒr all diese Arbeiten zu senken. Ein kleiner Ball fliegt ĂŒber einen Tennistisch oder einen Ball auf einem FuĂballfeld - die technische Seite der Implementierung eines Computer-Vision-Systems zur Datenerfassung weist keine konzeptionellen Unterschiede auf. Wir fanden es interessanter, sofort ein System fĂŒr ein Spiel mit einer groĂen Anzahl interagierender BĂ€lle zu bauen, wie beim Billard.
Ich brauche die Koordinaten und Geschwindigkeiten all deiner BĂ€lle und dein Stichwort.Beachten Sie, dass Sie bei der Analyse vieler Sportspiele, um das Ergebnis korrekt zu bestimmen, die Ereigniskette genau verfolgen mĂŒssen. Daher die hohen Anforderungen an die ZuverlĂ€ssigkeit der Komponenten, die fĂŒr die Bestimmung dieser Ereignisse verantwortlich sind. Lassen Sie uns in einem einfachen Beispiel erklĂ€ren: Wenn die Spieler im Durchschnitt alle BĂ€lle fĂŒr 20 SchlĂ€ge in die Taschen rollen, betrĂ€gt die Wahrscheinlichkeit, den Gewinner eines Unentschieden zu bestimmen, bei einer ZuverlĂ€ssigkeit von 99% nur etwa 82% (0,99
20 â 0,817). Das Spiel dauert bis zu fĂŒnf Siege eines der Spieler, dh es finden durchschnittlich 5 bis 9 Unentschieden statt. Mit einer solchen ZuverlĂ€ssigkeit bei der Bestimmung von Ereignissen wird das durchschnittliche Ergebnis des Spiels im Durchschnitt mit einer Wahrscheinlichkeit von nur etwa 24% erzielt (0,817
7 â0, 24). Die Fehlerwahrscheinlichkeit betrug aber zunĂ€chst nur 1%!
Neun Pool
Betrachten Sie Pool-9 aus der Vielzahl der Billardspiele. Der Gewinner ist der Spieler, der den Ball mit der Nummer 9 in die Tasche gesteckt hat. Die âNeunâ befindet sich zunĂ€chst in der Mitte einer Raute aus farbigen Kugeln. Der Zielball, auf den der Spielball schlagen soll, ist der Ball mit der niedrigsten Zahl auf dem Tisch. Wenn ein Spieler beispielsweise keinen einfarbigen Ball oder Foul erzielen konnte, den Zielball nicht getroffen oder einen Spielball im Loch erzielt hat, geht der Zug zum Gegner. Um einen Punkt richtig zu erzielen, ist es notwendig, den Treffer von BĂ€llen in den Taschen und alle Ereignisse zu bestimmen, die zu einem Spielerwechsel fĂŒhren.
Computer Vision
Lassen Sie uns zunĂ€chst darĂŒber sprechen, wie ein neuronales Netzwerk Daten empfĂ€ngt. Eingabeinformationsstrom - VideoĂŒbertragung von einer Kamera ĂŒber dem Tisch mit einer Frequenz von 60 Bildern pro Sekunde.
Ein Beispiel fĂŒr einen Frame eines vom System verarbeiteten Videostreams.Eine SchlĂŒsselstufe bei der Verarbeitung eines Videostreams durch ein neuronales Netzwerk ist die semantische Segmentierung. Dies ist eine klassische Aufgabe des Computer Vision, die darin besteht, dass der Algorithmus einer oder mehreren Klassen Bildpixel zuweisen sollte. Einfach ausgedrĂŒckt, auf Videobildern mĂŒssen Sie bestimmen, was was ist. Das neuronale Netzwerk erzeugt "Masken", die Pixel hervorheben, die sich beispielsweise auf einen Ball oder Spieler beziehen. Nach einer Reihe von Nachbearbeitungsalgorithmen wird die âMaskeâ der Kugeln zu Koordinaten. Demnach werden nach dem GlĂ€tten durch einen Filter fĂŒr jeden Ball die Geschwindigkeit und die Bewegungsbahn bestimmt. In diesem Stadium werden Ereignisse auf niedriger Ebene oder auf mittlerer Ebene, wie z. B. Kollisionen von BĂ€llen untereinander und mit den Seiten des Tisches, verfolgt. Die empfangenen Daten werden an das Regelverarbeitungsmodul gesendet, das die gesamte Logik des Spiels implementiert. Am Ende gibt er es dem Endverbraucher, d.h. Buchmacher, hochrangige Events: BĂ€lle in Taschen treiben, Fouls, ĂbergĂ€nge von ZĂŒgen und in der Tat das Ergebnis des Spiels.
Das allgemeine Schema des Systems.Um das Problem zu lösen, mĂŒssen zunĂ€chst die Position des Tisches auf dem Rahmen und alle darauf befindlichen Kugeln ermittelt werden. Ein weiterer wichtiger Teilnehmer an der Aktion ist das Stichwort. Er bestimmt die Richtung des Schlags und dementsprechend die Flugbahn des Spielballs. Die Spieler beugen sich ĂŒber den Tisch und decken ihn teilweise von der Kamera ab. Aus Sicht der Analyse des Spiels handelt es sich um âFremdkörperâ wie einen StĂ€nder fĂŒr BĂ€lle sowie um Mobiltelefone, Handschuhe, Servietten und andere Dinge, die nach dem Willen der Spieler an den Seiten des Tisches erscheinen. Somit werden mehrere Zielklassen fĂŒr die semantische Segmentierung von Bildern erhalten: eine Tabelle, ihre Seiten, Taschen, ein Stichwort, Fremdkörper und natĂŒrlich BĂ€lle. ZusĂ€tzlich wird jeder Ball je nach Farbe durch eine eigene Klasse dargestellt.
FĂŒr die semantische Segmentierung wird ein vollstĂ€ndig
gefaltetes neuronales Netzwerk mit
LinkNet-34- Architektur
verwendet . Es funktioniert relativ schnell und hat sich in verschiedenen âKampfâ -Aufgaben von Computer-Vision-Wettbewerben bewĂ€hrt. Um den obigen Satz von Klassen zu bestimmen, wird nur ein neuronales Netzwerk verwendet, das alle Probleme der Bildverarbeitung löst.
LinkNet-34-Netzwerkarchitektur (siehe arXiv ).Bilder werden eingegeben und ein Stapel von "Masken" aller erforderlichen Klassen wird an der Ausgabe erhalten. "Vorhersagemasken" sind zweidimensionale Anordnungen von Zahlen mit Werten von 0 bis 1. Der Wert jedes Elements der "Maske" entspricht dem Vertrauen des Netzwerks, dass das entsprechende Pixel zur Klasse dieser "Maske" gehört. FĂŒr die endgĂŒltige Klassifizierung von Pixeln werden die erhaltenen Vorhersagen durch ein Schwellenwertfilter binĂ€risiert.
Sie können ein neuronales Netzwerk trainieren, um Pixel anhand einer groĂen Anzahl von Beispielen mit entsprechenden âMaskenâ zu klassifizieren. Zu diesem Zweck haben wir viele Videos gesammelt, die in Frames unterteilt sind, und die Markup-Abteilung hat manuell âMaskenâ fĂŒr sie vorbereitet. In schwierigen FĂ€llen waren zusĂ€tzliche DatensĂ€tze erforderlich. Wenn zum Beispiel ein Ball in eine Tasche âtauchtâ oder in der NĂ€he der Seite des Tisches steht, fĂ€llt ein Schatten darauf, wodurch die Farben unterschiedlich aussehen. Oder wenn ein Spieler eine Raute bricht, fliegen die BĂ€lle schnell auf komplexen Pfaden, weshalb ihre Bilder unscharf sind. Wenn das neuronale Netzwerk einige solcher Beispiele âgesehenâ hat, ist die korrekte Klassifizierung schwierig.
Ein Beispiel fĂŒr ein Bild und das zugehörige Markup. Die Aufgabe des neuronalen Netzwerks besteht darin, solche "Masken" aus dem Eingabebild zu erhalten.Schnell, schneller, noch schneller ...
Der Endbenutzer von Daten benötigt Informationen in Echtzeit (oder noch besser - schneller als in Echtzeit). Zur Beschleunigung des neuronalen Netzwerks wurden verschiedene Techniken verwendet, z. B. die Kombination der Paketnormalisierung mit der 2D-Faltung (BatchNorm Fusion), mit der Sie ein gleichwertiges Netzwerk ohne mehrere Schichten erhalten können. Das Vorbereiten und Laden eines neuen Rahmens parallel zur Verarbeitung des vorherigen auf der Grafikkarte liefert ebenfalls ein gutes Ergebnis. DarĂŒber hinaus werden ein Teil der Vorbereitungsarbeiten mit Personal und die Nachbearbeitung von âMaskenâ auf GPU durchgefĂŒhrt. Schon eine einfache Idee hat dazu beigetragen, die Gesamtverarbeitungszeit fĂŒr jeden Frame zu reduzieren - das Ergebnis des Netzwerks nach der BinĂ€risierung in Form von uint8 von der Grafikkarte in den RAM zu ĂŒbertragen, anstatt das vom float32-Netzwerk empfangene.
Die semantische Segmentierung eines Frames mit allen erforderlichen Vor- und Nachbearbeitungen dauert daher durchschnittlich nur 17 ms! Und fĂŒr den Betrieb des Systems reicht nur eine Gaming-Grafikkarte aus.
Gab es einen ZusammenstoĂ?
Wir bestimmen die Koordinaten der BĂ€lle durch âMaskenâ, aber zuerst mĂŒssen wir ausschlieĂen, was nur einem Ball Ă€hnelt, zum Beispiel runde Streifen auf den T-Shirts der Spieler. Hier kommen Heuristiken ins Spiel: Form und GröĂe der BĂ€lle, ihre Position relativ zur Vergangenheit, sind bekannt. Wenn mit der âMaskeâ alles in Ordnung ist, wird der Schwerpunkt zur Verarbeitung herangezogen.
Billardspieler in den schrecklichen TrĂ€umen der Entwickler.Es ist auf den ersten Blick seltsam, aber Tatsache ist, dass das Ergebnis der Bestimmung der Position von BĂ€llen auch bei bewegungslosen BĂ€llen zwischen den Frames unterschiedlich sein kann. Die ErklĂ€rung ist einfach: Das âRauschenâ eines echten Videos, Videostream-Komprimierungsartefakte, die zusammen mit einem Fehler bei der Bestimmung der Position unscharfer Bilder von sich bewegenden BĂ€llen dazu fĂŒhren, dass die Ergebnisse geglĂ€ttet werden mĂŒssen.
Basierend auf den Koordinaten der vom Netzwerk empfangenen und in den vorherigen Frames bestimmten BĂ€lle wird die Geschwindigkeit als numerische Ableitung geschĂ€tzt. Die Anzahl der berĂŒcksichtigten Punkte und das Intervall zwischen ihnen werden wĂ€hrend des Systembetriebs abhĂ€ngig von der VerfĂŒgbarkeit von Daten und Ereignissen wie Kollisionen adaptiv ausgewĂ€hlt. AnschlieĂend werden die Informationen zu Position und Geschwindigkeit der Kugeln an den
Kalman- Sigma-Punkt-
Filter gesendet. Damit können Sie verrauschte Daten glĂ€tten, was besonders wichtig fĂŒr die Bestimmung der Geschwindigkeit und ihrer Richtung ist. DarĂŒber hinaus kann das Ergebnis des dynamischen Modells daraus verwendet werden, um die nahe Zukunft vorherzusagen.
Demonstration der GlÀttung der Bestimmung der Position und Geschwindigkeit von BÀllen durch den Kalman-Filter.
Links: Roh: das Ergebnis der direkten Messung, die Vektoren der Kugeln entsprechen der Geschwindigkeit, die Zahlen geben eine SchÀtzung der Geschwindigkeit an; UKF: Filterergebnis.
Rechts: Ein Beispiel fĂŒr die GlĂ€ttung der Geschwindigkeitsrichtung eines Balls mit einem Kalman-Filter. Blaue Farbe zeigt die Messergebnisse, rot - das Ergebnis der Filterung. Plötzliche RichtungssprĂŒnge entsprechen Ballkollisionen.Die Daten ĂŒber den Zustand und die Flugbahn der BĂ€lle ermöglichen es, das Auftreten des sogenannten Low-Level-Ereignisses zu bestimmen, selbst wenn es âzwischen Framesâ fiel.

BĂ€lle bewegen sich wĂ€hrend eines Treffers so schnell, dass es oft keinen Rahmen gibt, der ein Ereignis direkt anzeigt, beispielsweise eine Kollision von BĂ€llen. Daher wird fĂŒr alle Arten von Interaktionen (Kollision von BĂ€llen miteinander, mit dem Brett oder Fallen in das Loch) zunĂ€chst eine Liste möglicher Ereignisse erstellt. Es gibt zwei Kriterien. Erstens die kritisch enge gegenseitige Anordnung der BĂ€lle. Bei langsamer Bewegung tritt ein groĂer relativer Fehler bei der Bestimmung der Geschwindigkeit und der Flugbahn auf. Daher ist der Abstand zwischen interagierenden Objekten wichtig. Zweitens werden bei einer hohen Bewegungsgeschwindigkeit der Kugeln mögliche Ereignisse durch den Schnittpunkt der aus dem dynamischen Modell erhaltenen Trajektorien bestimmt. Dieser Ansatz bietet einen sehr schönen Bonus: die FĂ€higkeit, den wahrscheinlichen Treffer des Balls in der Tasche ein wenig im Voraus vorherzusagen.
Sequentielle Frames des Videostreams wĂ€hrend des anfĂ€nglichen Brechens einer Raute aus BĂ€llen. Ohne ein Modell, das die Flugbahnen der BĂ€lle beschreibt, ist es schwierig zu bestimmen, auf welchen Ball der Spielball gerichtet war.Eine Ănderung der Richtung und GröĂe des Geschwindigkeitsvektors ermöglicht es uns zu beurteilen, dass ein Ereignis, nĂ€mlich eine Kollision, aufgetreten ist. Wenn der Ball in eine Tasche gerollt wird, âverschwindetâ er. Es gibt jedoch einen wichtigen Punkt: Es ist notwendig, Daten ĂŒber seine Flugbahn zu verwenden und zu ĂŒberprĂŒfen, ob der Ball genau gehĂ€mmert wurde und nicht aus dem Sichtfeld der Kamera verschwand, da sich die Hand eines Spielers oder ein anderes Objekt versehentlich darĂŒber befand.
Und wenn etwas schief gelaufen ist? Nehmen wir an, einige der Ereignisse sind aufgrund eines Frame-Verlusts oder einer ĂŒber dem Tisch hĂ€ngenden Spielerfigur gefallen. Solche Auslassungen sind fĂŒr die Spielelogik von entscheidender Bedeutung. Speichert ein heuristisches Autokorrektur-System, das die StabilitĂ€t des Systems erhöht. Wenn beispielsweise ein Treffer auf dem Spielball erkannt wird und der Zielball in das Loch fĂ€llt, aber keine Spielballkollisionen erkannt werden und andere BĂ€lle bewegungslos bleiben, ist es logisch, eine Spielballkollision mit dem Zielball hinzuzufĂŒgen.
Spielen wir also oder nicht?
BĂ€lle rollen, kollidieren, fallen in die Taschen ... Aber lĂ€uft das Spiel in diesem Moment wirklich? Oder im Gegenteil, alles auf dem Tisch scheint unerschĂŒtterlich ... Also hat das Spiel aufgehört? Die richtige Antwort auf diese Fragen ist wahrscheinlich genauso wichtig wie die Definition von Kollisionen. Wenn sich ein Spieler auf einen Schlag vorbereitet, darĂŒber nachdenkt, zielt, gibt es keine Bewegung. Aber es passiert und umgekehrt, in Momenten auĂerhalb des Spiels kann das Leben auf dem Tisch sehr dynamisch verlaufen: Verstopfte BĂ€lle werden von einer Tasche zur anderen bewegt, der Spielball kann nach einem Foul um den Tisch gerollt werden, und dies geschieht einschlieĂlich der Spitze des Spielfelds (sehr Ă€hnlich einem Schlag! ) Wenn das Ende des aktuellen Treffers leicht bestimmt werden kann - nach einem korrekten Treffer hören alle BĂ€lle auf, sich zu bewegen, dann ist zu Beginn nicht alles so klar. NatĂŒrlich können Sie das neuronale Netzwerk trainieren, um Ereignisse im Video zu erkennen, einschlieĂlich realer Cue-Strikes auf dem Cue-Ball. AuĂerdem können Sie eine Reihe von Heuristiken erstellen, die die Position und den Winkel des Cues, die Flugbahn und Geschwindigkeit seiner Enden sowie die Flugbahn des Cue-Balls nach dem mutmaĂlichen Aufprall analysieren. Wir sind den zweiten Weg gegangen und das Ergebnis war ein sehr schneller und zuverlĂ€ssiger Algorithmus, der den aktuellen Status des Spiels bestimmt.
Das System versucht zu verstehen, ob das Spiel gestartet wurde oder nicht.Und wer hat letztendlich gewonnen?
Alle Daten zu Ereignissen auf niedriger Ebene (ein Treffer auf dem Spielball, die Position und Kollision von BÀllen, die in die Taschen fallen) werden an das Modul gesendet, das anhand seiner Reihenfolge feststellt, ob ein Foul aufgetreten ist oder der Ball korrekt in das Loch gefallen ist, der Zug vergangen ist oder das Spiel endet. Das unparteiische Modul punktet und gibt den Gewinner bekannt. Seine Besonderheit ist, dass es ohne automatische Korrekturen und Heuristiken funktioniert und einfach die Spielregeln formal anwendet. Der Regelblock kann vollstÀndig ersetzt werden, sodass Sie ihn ohne nennenswerte Eingriffe in das System an die lokalen Regeln des Turniers anpassen oder andere Arten von Billardspielen verarbeiten können.
Da unbemannte Fahrzeuge den Testingenieur in der Kabine, der die Sicherheit ĂŒberwacht, noch nicht vollstĂ€ndig beseitigt haben, ermöglicht unser Regelmodul eine externe manuelle Steuerung ĂŒber das Webinterface. Ein Eingriff kann erforderlich sein, wenn das automatische System ausfĂ€llt. DarĂŒber hinaus mĂŒssen Sie Daten, die nicht im Videostream enthalten sind, manuell eingeben: Informationen zu einem AnfĂ€nger, spezielle Treffer, die wĂ€hrend des Spiels per Sprache angekĂŒndigt werden usw. Eine Person kann möglicherweise mehrere Spiele gleichzeitig ĂŒberwachen.
Wie funktioniert es?
Nach einem erfolgreichen Start und der Einrichtung des Systems erhielten wir nicht nur die erforderlichen Daten, sondern entdeckten auch viele interessante Dinge. Manchmal kann der Richter am Tisch nicht sicher feststellen, ob der Spielball den Zielball oder einen anderen in der NĂ€he getroffenen Ball getroffen hat. Die objektive Sicht auf unser System ermöglicht es uns zu sehen, wie sich die Situation tatsĂ€chlich entwickelt hat. DarĂŒber hinaus sammelt das System viele Informationen, die fĂŒr die weitere Analyse nĂŒtzlich sind und die eine Person einfach nicht in Echtzeit bestimmen und ĂŒbertragen kann: die Position und Geschwindigkeit der BĂ€lle, die Parameter der Cue-SchlĂ€ge jedes Spielers.

Derzeit funktioniert das System und wird vom Buchmacher verwendet. In Zukunft ist geplant, das System zu verbessern, einschlieĂlich der automatischen Identifizierung von Spielern und der automatischen Ermittlung der Ergebnisse des ersten Schlags.
Technische Visualisierung der Funktionsweise des Systems. Der Ball neben dem âSpielballâ zeigt an, auf welchen ersten Ball der Spielball gerichtet war. "Zustand" - der Zustand des Systems: Es kann "warten" - bis der Spieler getroffen hat - und "spielen" - wĂ€hrend die BĂ€lle in Bewegung sind; "Spieler" - aktueller Spieler; Die Zahlen um die Kugeln geben die GeschwindigkeitsschĂ€tzung in cm / s an.