This is a project of the CIIS course (WS 2019/20). The content below was created by Christian Kati.
Motivation & Idea
Chess is a game of wit and strategy. Improving your abilities requires understanding your mistakes and what superior moves you have have played. One way to get the best move for a given position is to use a chess engine. Online applications usually have a chess engine integrated. Analying offline games means reconstructing the game. This process is tedious, slow and prone to errors. Having a system to automatically recognize the state of the game and give feedback would be valuable.
The idea and implementation for analyzing a given chess game is fairly simple:
- Take an image of a chessboard.
- The image is divided into 64 sub-images. These are used for multiclass classification of 13 classes(6 pieces for each color and one empty field) using a neural network. The neural network was implemented in Keras and used 1800 samples for training. For deploying the Keras model on Android, TensorflowLite was used.
- The game is fed into a chess engine for evaluation. Usually Engines like Stockfish are used. For reasons of simplicity, Droidfish was used in our App. The game was converted in FEN Notation, a common format for chess engines. Before evaluation, the user has to enter additional information e.g. who’s turn it is, if castling is possible or en-passant capturing is allowed.
- The player gets feedback from the engine by suggesting the best possible move.