I don't know anything about "chess theory" but are there some squares that only certain pieces can get to? I don't think it's possible for a Knight to ever be on some squares, so maybe you could use logic like that to narrow down the piece detection.
It may be easier to just track the game state from the start instead of trying to identify the position of the board at a random snapshot in time.
Cool project though, seems like a good intro to image processing.