Skip to main content

Recognize chess positions from board images using deep learning

Project description

🧠 Chessboard Recognizer (Convert your chess images to FEN positions with one click!)

This project uses a deep learning model implemented in PyTorch to recognize the positions of chess pieces on a chessboard image and convert it into FEN notation. This library introduces an easy and fast function to simply predict a fen from an image, it vastly increases prediction accuracy, encompassing a wide variety of chess image formats from different sources. For more advanced usage it also provides reusable components for training, inference, and data preparation.

Full credits to linrock/chessboard-recognizer for chess image data, preprocessing and basis for the training algorithm, originally a simple CNN architecture built on a no longer supported version of TensorFlow 2. This version transitions to PyTorch and vastly improves prediction accuracy on a wide variety of chess image formats.


🧪 Usage Example

Check the demo usage notebook for more advanced usages (training/inference) 📓 examples/demo_usage.ipynb

Predict from an image

from chessimg2pos import predict_fen
fen = predict_fen("../images/chess_image.png")
print(fen)

Output:

11111111/11111111/11111111/1111p1K1/11k1P111/11111111/11111111/11111111

🖼️ Sample Results

📷 Input:

🎯 Predicted FEN:

11111111/11111111/11111111/1111p1K1/11k1P111/11111111/11111111/11111111

---

🚀 Getting Started

Requirements

  • Python 3.10–3.14
  • PyTorch
  • Other dependencies in requirements.txt
pip install chessimg2pos

or

git clone https://github.com/mdicio/chessimg2pos
pip install -r requirements.txt

🙏 Acknowledgements

This project is a continuation and modernization of:

Major thanks to these creators — this project wouldn’t exist without their work.

🧠 Core Classes

This project is centered around two powerful classes that handle training and prediction with a modern PyTorch-based architecture.

🔧 ChessRecognitionTrainer

Handles training and evaluation of the CNN-based chess piece classifier.

Example:

from chessimg2pos import ChessRecognitionTrainer

trainer = ChessRecognitionTrainer(
    images_dir="../../training_images/chessboards", # replace with your path
    model_path="../../models/test_model.pt",# replace with path where you want models tgo be saved
    generate_tiles=False,  # Set to True if tiles need to be generated from boards
    epochs = 5,
    overwrite = False
)
model, device, accuracy = trainer.train(classifier="enhanced")

🔍 ChessPositionPredictor

Loads a trained model and predicts a FEN string from a chessboard image.

Example:

from chessimg2pos import ChessPositionPredictor

predictor = ChessPositionPredictor("../../models/test_model.pt")
result = predictor.predict_chessboard("../images/ccom_1.png", return_tiles=True)

print("Predicted FEN:", result["fen"])
print("Confidence:", result["confidence"])
predictor.visualize_prediction(result)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chessimg2pos-0.1.6.tar.gz (318.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chessimg2pos-0.1.6-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file chessimg2pos-0.1.6.tar.gz.

File metadata

  • Download URL: chessimg2pos-0.1.6.tar.gz
  • Upload date:
  • Size: 318.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for chessimg2pos-0.1.6.tar.gz
Algorithm Hash digest
SHA256 20fad210354b67e64d69b1b1680b0798cbdbd2335a73751788d10e49bf182d8b
MD5 19fa16d8dea2fbdea78d799196d8a2f7
BLAKE2b-256 23699bf599bf193dad2e99e77265cf15ce70e4ae42fd72f0a9efd74cf4bc16ec

See more details on using hashes here.

File details

Details for the file chessimg2pos-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for chessimg2pos-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 016b7e17063206f8f917191c504b1a188ad5500e361a20382ce6c7b8f6bdd65b
MD5 4239927e910acb60603568e78cf92940
BLAKE2b-256 10510d48714ef4aab8559e3a9ec8c58eeb3b6453116d8126b9af259c27c01a68

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page