AI-alapú csalásfelismerő rendszer, amely hitelessé tette az online sakkversenyeket, és felvásárláshoz vezetett

A SzuperChess logója

A kihívás

A koronavírus-járvány alatt a sakk szinte egyik napról a másikra az internetre költözött. A Lichessen és a Chess.com-on versenyek ezreit rendezték meg, sokat közülük valódi pénzdíjjal. Egy nagy gond azonban volt: a csalás. Aki sakkprogramot futtatott egy második képernyőn, a telefonját az asztalon tartotta, botot használt, vagy akinek a szoba másik végéből súgták a lépéseket, alig kockáztatta, hogy lebukik.

A legtöbb szervező Zoommal vagy Skype-pal próbálta ezt kézben tartani. Ezek az eszközök azonban értekezletekre készültek, nem arra, hogy egyszerre több tucat versenyzőt figyeljenek. Egy versenybíró nem tudta egyszerre követni minden játékos tekintetét, képernyőjét és környezetét, és gyanús eredmény esetén nem volt mit visszanézni. A becsületes játékosok bizalma megrendült, a csalók jó része pedig bizonyíték híján megúszta.

A SzuperChess alapítója világos elképzeléssel érkezett hozzánk: egy „sakkversenyekre szabott Zoomot” akart. Minden játékos egy linken keresztül csatlakozik. A rendszer külön rögzíti a kameráját, a mikrofonját és a képernyőjét, a mesterséges intelligencia pedig jelez, ha valami gyanús. A végső döntés a versenybíróké marad, de sokkal több adat alapján és sokkal kevesebb kézi figyeléssel.

Az első változatnak (MVP) a következőket kellett tudnia:
  • Rögzítse minden játékos kameráját, mikrofonját, a számítógép hangját és a képernyőjét, és ezeket élőben továbbítsa a versenybíróknak
  • Vezesse végig a játékost egy rövid beléptetésen: az arc legyen a képben, legyen megfelelő a fény, és mutassa meg mindkét fülét
  • Az AI ismerje fel a gyanús viselkedést: ha a játékos elnéz a képernyőről, tiltott program jelenik meg a képernyőn, beszédet hallani a szobában, vagy a játékos kilép a kamera képéből
  • A versenybírók egyetlen felületen lássák az összes játékost, és a riasztásokat élőben, pár másodperc alatt ellenőrizhessék
  • Egy angol és spanyol nyelvű nyilvános weboldal kezelje a regisztrációt, a versenyeket és a játékosprofilokat
  • Legalább 64 játékost bírjon egyszerre, Windowson és macOS-en

Az első verseny időpontja rögzített volt, így az MVP elkészítésére nagyjából tíz hét jutott.

A SzuperChess weboldal „Our story” oldala
A SzuperChess weboldal „Our story” oldala bemutatja, milyen problémára kínál megoldást a cég
A SzuperChess nyitóoldala
A SzuperChess nyitóoldala, amelyet csapatunk tervezett és fejlesztett

A megoldás

Ötfős alapcsapattal indultunk: két fejlesztővel (az egyik az AI-ra és a streamelésre, a másik a webplatformra fókuszált), egy grafikussal, az operatív vezetőnkkel és a cégvezetőnkkel. A második szakaszban UX/UI-tervezővel, további Laravel-fejlesztőkkel és egy felhőmérnökkel bővült a csapat. Kéthetes sprintekben dolgoztunk, rendszeres demókkal, az alapító pedig minden lépésbe be volt vonva.

Architektúra. A rendszer négy, egymással együttműködő részből áll. A játékos gépén futó asztali kliens rögzíti a képet és a hangot. A streamingszerver fogadja és tárolja a folyamokat, majd rövid szakaszokra bontja őket. Az AI-elemzők ezeket a szakaszokat vizsgálják. A SzuperChess webplatform pedig mindent megmutat a játékosoknak, a versenybíróknak és az adminisztrátoroknak. Az egyes részek jól definiált API-kon keresztül kommunikálnak, így bármelyik elemzőt fejleszteni vagy cserélni lehet anélkül, hogy a rendszer többi részéhez hozzá kellene nyúlni.

Játékoskliens és beléptetés. .NET-ben, Avalonia keretrendszerrel többplatformos asztali klienst fejlesztettünk. A játékos a SzuperChess-fiókjával lép be, a kliens pedig végigvezeti a beléptetésen. Ellenőrzi, hogy látszik-e az arc és jó-e a fény, majd megkéri, hogy fordítsa el a fejét, és mutassa meg mindkét fülét. Minden lépést gépi látás igazol. Ezután a kliens gRPC-n keresztül továbbítja a szerverünkre a webkamera képét, a képernyőt, a mikrofont és a számítógép hangját. A versenybírók játék közben üzenetet küldhetnek a játékosoknak, amely megjelenik a játékos képernyőjén.

AI-elemzők. Minden elemző külön Python-szolgáltatás, és egyfajta kockázatot figyel:
  • Tekintetkövetés: Arcpontok felismerésével a rendszer minden képkockán megtalálja a szemet és a pupillát. Riaszt, ha a játékos nagyjából négy másodpercre elnéz a képernyőről, ismételten ugyanarra az irányra pillant, vagy kikerül a képből.
  • Képernyős feketelista (OCR): A játékos képernyőjét optikai karakterfelismerés olvassa be, és összeveti egy, a szervező által szerkeszthető feketelistával. Ezen sakkprogramok (Stockfish, Komodo, Houdini, Fritz), üzenetküldő alkalmazások és botok szerepelnek.
  • Beszédaktivitás és beszédfelismerés: A rendszer emberi beszédet keres a hangban, ami arra utalhat, hogy valaki segít a szobában. Ezután beszédfelismeréssel megpróbálja rögzíteni, mi hangzott el.
  • Stressz- és érzelemelemzés: Egy konvolúciós neurális háló osztályozza az arckifejezéseket, és az arcpontokból számolt mérőszámokkal együtt stresszértéket ad. A versenybíró így a játszma kulcspillanataiban is láthatja, hogyan reagált a játékos.
  • Jelenlét-ellenőrzés: Riasztás, ha eltűnik az arc, egynél több arc jelenik meg, vagy a játékos kapcsolata megszakad.

Minden riasztás pontos időbélyeget kap, és a hozzá tartozó kamera-, képernyő- és hangfelvételre mutat, így a versenybíró azonnal ellenőrizheti a bizonyítékot.

Webplatform és versenybírói felület. A SzuperChess weboldala Laravelben készült. A játékosok regisztrálnak, kitöltik sakkprofiljukat (FIDE-értékszám, klub, ország, becenév a versenyt rendező oldalakon), és jelentkeznek a Lichessen, a Chess.com-on vagy a Chess24-en futó versenyekre. Az adminisztrátorok egyetlen irányítópultról kezelik a versenyeket, a partnereket, a versenybírókat és a játékosokat. A versenybírók kifejezetten nekik tervezett nézetet kapnak. Ebben rácsban látják az élő játékosokat, mellette valós idejű riasztási listát, és bármelyik játékos kamera-, képernyő- és hangfelvételét szinkronban visszanézhetik. Az idővonalon megjelenő jelölőkkel egyből a kérdéses pillanathoz ugorhatnak. A videókat megjelölhetik látottként vagy későbbi megtekintésre, rögzíthetik az incidenseket, cseveghetnek a játékosokkal, közleményt küldhetnek, a verseny után pedig táblázatba exportálhatják az összes riasztást.

Kevesebb, de fontosabb riasztás. Az első éles versenyek megmutatták, hogy a nyers AI-kimenet könnyen elárasztja a versenybírókat. Az alapító tapasztalatai alapján a riasztási rendszert három súlyossági szint köré szerveztük át. A piros riasztások (például tiltott program a képernyőn, vagy ha a játékos több mint egy percig nem látszik) alapból megjelennek, a narancs és zöld riasztások szűrőkkel érhetők el. A versenybírók a komoly riasztások száma szerint rendezhetik a játékosokat, így a figyelmük oda irányul, ahol valóban szükség van rá.

Felhő és böngészős kliens. A második szakaszban a tárolást az AWS-re költöztettük. A felvételek rövid ideig érvényes, biztonságos linkeken keresztül kerülnek fel, versenyenként külön tárolóba, és a megőrzési idő lejártával automatikusan törlődnek, a GDPR előírásainak megfelelően. Emellett böngészőben futó WebRTC-klienst is fejlesztettünk, és beépítettük a SzuperChess weboldalába, így a játékosok telepítés nélkül is csatlakozhattak.

Termékből platform. 2021 elején a SzuperChess úgy döntött, hogy B2B modellre vált, és ugyanezt a technológiát más területekre is elviszi, például az online vizsgáztatásba és az e-sportba, Decoditive néven. Két architektúrát elemeztünk erre: szektoronként külön oldalakat (az úgynevezett „csáp” modellt), illetve egyetlen közös platformot szektorspecifikus beállításokkal. Összevetettük a kódminőséget, a skálázhatóságot, valamint a hosztolási és fejlesztési költségeket, és azt a megoldást javasoltuk, amely a cég terveihez illett.

Ezután úgy terveztük meg az adminfelületet, hogy minden munkamenethez külön lehessen beállítani az elemzőket, a riasztási küszöböket és a riasztási üzeneteket.

Beépített adatvédelem. Mivel a rendszer arcot és hangot rögzít, az adatvédelem az első naptól a tervezés része volt. A platform kezeli a hozzájárulásokat és a sütikre vonatkozó szabályzatot, fiók törlésekor anonimizálja a profilt, a felvételeket pedig automatikusan törli.

Együttműködés az alapítóval. A projekt teljes ideje alatt szoros kapcsolatban voltunk az ügyféllel, és úgy dolgoztunk, mintha a SzuperChess saját technológiai csapata lennénk. A megállapodott kereten túl folyamatosan javasoltunk fejlesztéseket és új funkciókat, és ezek közül sok bekerült a termékbe.

A SzuperChess rendszer adatfolyama a játékoskliensen, a streamingszerveren és az AI-elemzőkön át a webplatformig és a versenybírókig
Így működik a rendszer: a játékoskliens négy csatornát továbbít, a streamingszerver szakaszokra bontja és tárolja őket, a független AI-elemzők riasztásokat küldenek, a versenybírók pedig a bizonyítékkal együtt látják ezeket a platformon
A SzuperChess versenybírói felületének látványterve élő játékosráccsal, riasztási listával, szinkronizált kamera- és képernyőfelvétellel és csevegéssel
A versenybírói felület: élő játékosrács, szűrt riasztási lista, szinkronban visszanézhető kamera- és képernyőfelvétel riasztásjelölőkkel az idővonalon, valamint közvetlen csevegés a játékossal (illusztratív látványterv kitalált játékosokkal)
Két architektúra-változat összehasonlítása: szektoronként külön oldal, illetve egyetlen közös platform
A két architektúra-változat, amelyet a SzuperChess új szektorokba lépéséhez összevetettünk, az előnyeikkel és hátrányaikkal együtt
Platformkoncepció: egyetlen közös AI-mag szolgálja ki a sakkot, az online vizsgáztatást, az e-sportot és az érzelemelemzést
Koncepciónk arra, hogyan juthat el a SzuperChess technológiája más szektorokba: ugyanazok az elemzők szolgálják ki a sakkot, a vizsgákat, az e-sportot és más területeket

Az eredmény

Működő csalásfelismerő rendszert adtunk át, amelyet a SzuperChess valódi versenyeken használt. 2020 októbere és 2021 januárja között a platformon 10 verseny zajlott a Lichessen és a Chess.com-on, versenyenként legfeljebb 36 játékossal. Több mint 250 játékos regisztrált 27 országból, az AI-elemzők pedig több mint 10 000 riasztást jeleztek a versenybíróknak. A rendszer olyasmit adott a szervezőknek, amire a Zoom soha nem volt képes: minden játékos kamerájáról, képernyőjéről és hangjáról teljes, időbélyeggel ellátott felvételt, amelyen a gyanús pillanatok már meg vannak jelölve.

A második szakaszban a platform felhőre kész, böngészőből is használható és új szektorok felé nyitott lett. Ennek köszönhetően a SzuperChess skálázható integritási technológiaként jelenhetett meg, nem csupán egy versenyoldalként.

A technológia végül a piacon is bizonyított. 2023 áprilisában a SzuperChesst felvásárolta a VADR Media, amely az AI-alapú, tekintetkövetésre épülő csalásfelismerő technológiát a Checkmate.live nevű, e-sport szemléletű, pénzdíjas sakkverseny- és közvetítési platformjába építette be. A felvásárlásról szóló bejelentésben a SzuperChess alapítója úgy fogalmazott, hogy a technológiát nagymesterek több versenyen is próbára tették.

A valódi versenybírói felület egy 2020. decemberi éles verseny alatt, a verseny állapotával és az AI-riasztások listájával
A valódi versenybírói felület egy 2020. decemberi éles verseny alatt: 22 játékos csatlakozott, az AI-riasztások listája percről percre frissült (a játékosneveket kitakartuk)

CEO

SzuperChess (hitelesített Clutch-értékelés)

Idézőjel

It has been awesome, they have delivered even more features than expected. They are really great and experienced and they came up with many ideas along the way, which have been implemented because they were really good ideas actually. It was very sophisticated technology and they did it very fast and well done. They are very creative and smart, and came up with new features!

Olvasd el a hitelesített értékelést a Clutchon

A projekt technológiai stackje

Python programming language

Python

OpenCV logo

OpenCV

Face scan icon for dlib

dlib

TensorFlow machine learning library

TensorFlow

Keras deep learning library

Keras

Text scan icon for Tesseract OCR

Tesseract OCR

Google Cloud logo

Google Cloud Speech-to-Text

.NET Core framework

.NET Core

Arrows icon for gRPC

gRPC

App window icon for Avalonia

Avalonia

FFmpeg logo

FFmpeg

WebRTC logo

WebRTC

Laravel PHP framework

Laravel

MySQL database

MySQL

Amazon Web Services cloud platform

AWS

DigitalOcean logo

DigitalOcean

Hosszú távú eredmények

Éles nemzetközi versenyeken bizonyított AI-alapú csalásfelismerő rendszer, amelyet később a VADR Media vásárolt fel Checkmate.live platformjához
Moduláris feldolgozási lánc, amelyben minden AI-elemző önállóan fut, és a rendszer többi részének módosítása nélkül hangolható vagy cserélhető
Kevesebb, de fontosabb riasztásra épülő versenybírói munkafolyamat, ahol a szinkronizált videós bizonyíték egy kattintásnyira van
Felhőre kész, a GDPR-t szem előtt tartó architektúra versenyenkénti tárolással és a felvételek automatikus törlésével
Olyan platformterv, amellyel ugyanez a technológia a sakkon túl is alkalmazható: online vizsgáztatásban, e-sportban és más területeken