moku-v4

Go board detector used by Kaya to turn a photo of a goban into a position (SGF). Trained with moku.

It detects three classes: black_stone (0), white_stone (1) and board_corner (2). Kaya computes a homography from the 4 corners and snaps every stone onto the grid.

Files

  • model.safetensors, config.json, preprocessor_config.json: 🤗 transformers checkpoint.
  • model.onnx: what Kaya runs (ONNX Runtime Web). Input pixel_values (batch, 3, 640, 640), RGB scaled to [0, 1] with no mean/std normalization; outputs logits (batch, 300, 3) (apply a sigmoid) and pred_boxes (batch, 300, 4), normalized (cx, cy, w, h). With the corner head, a third output corner_points (batch, 8, 3) holds the 8 best board-corner peaks (x, y, score), x and y normalized to [0, 1] (class-agnostic). The stone-threshold calibration is baked into logits (offset +0.35 on every class logit), so Kaya's fixed 0.035 threshold needs no per-model setting.

Evaluation

split mAP@50 stone cdAP corner R@4 perfect boards errors / board
validation 0.544 0.773 0.642 42% [31%, 54%] 20.8 [12.8, 29.5]
test 0.585 0.794 0.664 44% [35%, 53%] 18.6 [10.6, 28.6]

Board metrics run Kaya's own post-processing (stone threshold 0.035, corners from head) and compare the resulting position with the one read from the annotations: perfect is the share of boards without a single wrong intersection and no corner more than half a cell off. Intervals are 90% bootstrap CIs over photos.

Downloads last month
42
Safetensors
Model size
20.6M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for kaya-go/moku-v4

Base model

kaya-go/moku-v2
Quantized
(1)
this model