Definicija problema
Cilj projekta je da za datu validnu konfiguraciju šahovske table i stranu (crni ili beli) prepozna njeno stanje i ponudi optimalni niz poteza do pobede.
Ulazi:
Slika šahovske table
Strana (crni ili beli)
Izlaz:
Niz optimalnih šahovskih poteza do pobede
Skup podataka
Skup podataka ću generisati sam pomoću python chess biblioteke i on će se sastojati od slika figurica. Skup podataka ću dalje pripremiti transformisanjem svake slike na N različitih načina, igrajući se sa osvetljenjem, iskrivljenjem, bojama i slično, kako bih povećao raznovrsnost.
Metodologija
Planiram da realizujem prepoznavanje table po uzoru na OCR:
Slika u boji se transformiše u grayscale
Grayscale slika se transformiše u binarnu (crno-belu) sliku
Izdvajaju se regioni od interesa pomoću OpenCV biblioteke, tj. figure i šahovska polja
Ovako pripremljen ulaz se postavlja na prethodno istreniranu neuronsku mrežu koja mapira svaki region (oblik) na određenu šahovsku figuru
Dakle, posao veštačke inteligencije je da prepozna koji oblik na slici je najverovatnije određena šahovska figura. Ako kombinujemo znanje o pozicijama figura, trenutnom potezu, tipovima figura i veličine šahovske ćelije na tabli možemo da enkodiramo stanje šahovske table u jednu strukturu podataka.
Ova struktura podataka se prosleđuje Stockfish-u (trenutno najbolji open-source chess engine) koji igra sam protiv sebe do kraja partije počevši od zadatog stanja dobijenog na gorenavedeni način.
Najzad, program ispisuje niz poteza u izlazni tekstualni fajl.
Evaluacija
Skup podataka ću da podelim na trening, test i validacioni skup.
Kako će fokus rada biti na samom prepoznavanju stanja šahovske table, neću evaluirati samo dobijanje niza poteza, već samo prvi deo rešenja.
Rezultate ću evaluirati po kriterijumu preciznosti (accuracy) prepoznavanja figurice iz prosleđenog oblika.
Tim Stefan Stegić SW 61/2017
Asistenti Dragan Vidaković
Definicija problema Cilj projekta je da za datu validnu konfiguraciju šahovske table i stranu (crni ili beli) prepozna njeno stanje i ponudi optimalni niz poteza do pobede.
Ulazi:
Izlaz:
Skup podataka Skup podataka ću generisati sam pomoću python chess biblioteke i on će se sastojati od slika figurica. Skup podataka ću dalje pripremiti transformisanjem svake slike na N različitih načina, igrajući se sa osvetljenjem, iskrivljenjem, bojama i slično, kako bih povećao raznovrsnost.
Metodologija Planiram da realizujem prepoznavanje table po uzoru na OCR:
Dakle, posao veštačke inteligencije je da prepozna koji oblik na slici je najverovatnije određena šahovska figura. Ako kombinujemo znanje o pozicijama figura, trenutnom potezu, tipovima figura i veličine šahovske ćelije na tabli možemo da enkodiramo stanje šahovske table u jednu strukturu podataka.
Ova struktura podataka se prosleđuje Stockfish-u (trenutno najbolji open-source chess engine) koji igra sam protiv sebe do kraja partije počevši od zadatog stanja dobijenog na gorenavedeni način.
Najzad, program ispisuje niz poteza u izlazni tekstualni fajl.
Evaluacija Skup podataka ću da podelim na trening, test i validacioni skup. Kako će fokus rada biti na samom prepoznavanju stanja šahovske table, neću evaluirati samo dobijanje niza poteza, već samo prvi deo rešenja. Rezultate ću evaluirati po kriterijumu preciznosti (accuracy) prepoznavanja figurice iz prosleđenog oblika.