Block Stacking MLは、ブロック積み上げゲームの盤面状態・操作データを収集し、機械学習モデルで最適なブロック配置・回転を予測するプロジェクトです。
GUIでデータ収集を行い、PyTorchを用いてモデルの学習・評価を行います。
BATCH_SIZE = 64
EPOCHS = 200
LEARNING_RATE = 0.005\
--- 評価結果 ---
スロット配置の正解率: 86.67 %
回転の正解率: 93.33 %
観測: 盤面=[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], ブロック='L'
正解: [スロット=3, 回転=0]
予測: [スロット=7, 回転=0] <-- ❌ 間違い
初期配置で、複数の配置がある場合。それほど重要な問題ではない。
.
├── configs/ # ブロック定義(JSON)
├── data/ # 収集データ・画像
│ ├── 01_raw/ # 生データ(CSV)
│ └── 02_processed/ # 前処理済みデータ
├── outputs/ # 学習済みモデル・ログ
│ ├── trained_models/ # 通常モデル
├── scripts/ # 実行スクリプト
├── src/ # Pythonモジュール群
└── Dockerfile, docker-compose.yml, .devcontainer/
- ブロック積み上げ盤面の状態抽象化・特徴量化
- 人間の操作データ収集(GUI)
- 機械学習による配置・回転予測モデルの構築
本プロジェクトはVSCode Dev Container/Dockerで動作します。
# VSCodeで「Dev Container: Open Folder in Container」を実行
# もしくは手動でビルド
docker-compose build
docker-compose upPythonパッケージはrequirements.txtで管理されています。
- pygame
- torch
- numpy
- pandas
ブロック配置操作を記録し、CSVデータを生成します。
python scripts/generate_data.py- 操作方法は画面右下に表示
- リセット操作も記録されます
収集したデータでモデルを学習します。
python scripts/train.py- 学習済みモデルは
outputs/trained_models/に保存
学習済みモデルの精度を検証します。
python scripts/evaluate.py- 配置・回転の正解率が表示されます
- 間違いの詳細も出力されます
scripts/generate_data.py: データ収集GUI(通常盤面)scripts/train.py: モデル学習(通常モデル)scripts/evaluate.py: モデル評価src/environment.py: 盤面・GUIロジック(通常)src/model.py: 配置予測モデルsrc/data_utils.py: データセット・DataLoader
- 盤面状態は監視ポイントごとの高さで特徴量化
- ブロック種類はワンホットエンコーディング
- 配置位置・回転IDも記録
- CSV形式で保存
- OS: Debian GNU/Linux 12 (bookworm)(Dockerコンテナ)
- VSCode Dev Container対応
- X11 GUI(pygame)
MIT License
- configs/blocks.json, blocks_copy.jsonでブロック形状・色・回転定義
- DockerでX11 GUIを表示するため、
DISPLAY=:1や/tmp/.X11-unixのマウントが必要 - 詳細は各スクリプト・モジュールのコメント参照