📊 実測版あり: 本ファイルは「自前モデル訓練後に埋めるテンプレ」です。
現時点の
実測値ベース の評価レポートは
evaluation-results-v1.html
を参照してください (公開モデル + 卓上マスクの A/B 実測 / 合成 500 枚の品質 / 推定 mAP)。
1. 使い方 (テンプレート運用)
本テンプレートの位置付け:
自前モデル (MVP v1) の訓練が完了したら、本テンプレートをコピーして
docs-site/model-evaluation-mvp-v1-YYYY-MM-DD.html として
新規ファイルに保存し、空欄を埋めて評価レポートとする。
1.1 編集ルール
- 本ファイル自体は 編集禁止 (テンプレート)
- コピー後、
span.pill.todo や div.todo-block を順次削除しながら埋める
- 表内の
— は実数 / N/A は未測定 / ? は不明 で使い分け
- 結論ボックスは「退役」「継続」「追加訓練」の 3 択 から選択
1.2 退役判定基準
| 条件 | 結果 |
| MVP モデルの mAP@0.5 ≥ 0.90 かつ Recall ≥ 0.85 | 公開モデル退役 (MVP に切替) |
| MVP モデルの mAP@0.5 が 0.75〜0.90 | 追加訓練 (synthetic 強化 / epoch 延長) |
| MVP モデルの mAP@0.5 が 0.75 未満 | 公開モデル継続 (MVP 設計見直し) |
根拠: 公開モデル
test-upsgd/mahjong-tiles-oc9zz のドメイン適応後 mAP は約 0.70 と推定 (詳細は
公開モデル素性報告)。
退役基準を mAP@0.5 ≥ 0.90 にすることで「ベースラインから +0.20 以上の明確な改善」を確認できる。
2. 評価条件 (空欄)
MVP v1 訓練完了後にこのセクションを埋める。
2.1 評価セット
| 項目 | 値 |
| テストフレーム数 N | 例: 100 枚 |
| 取得元動画 | 例: M-League sample01 (event1-peak, event2-peak から各 50 枚) |
| 解像度 | 例: 1920×1080 → 640×640 リサイズ |
| GT アノテ手法 | 例: Roboflow Auto-Label + 手動修正 |
| GT クラス数 | 例: 34 + 副露 + 暗槓 = 36 クラス |
| 合成データ混入の有無 | 必須: 評価セットは実物のみ |
2.2 評価環境
| 項目 | 値 |
| 推論ハード | 例: NVIDIA RTX 4090 (FP16) |
| フレームワーク | 例: Ultralytics YOLOv8 |
| confidence threshold | 例: 0.25 |
| IoU threshold (NMS) | 例: 0.45 |
| 評価実施日 | YYYY-MM-DD |
| 評価担当 | name |
3. 主要指標サマリ表 (空欄)
各モデルに対して mAP / Precision / Recall / F1 を測定して埋める。同一の評価セットを全モデルに適用すること。
3.1 全体性能
| 指標 |
公開モデル
test-upsgd/mahjong-tiles-oc9zz |
MVP v1 (実物 500 fine-tune) |
MVP v2 (実物 500 + 合成 5,000) |
| mAP@0.5 |
TODO |
TODO |
TODO |
| mAP@0.5:0.95 |
TODO |
TODO |
TODO |
| Precision (avg) |
TODO |
TODO |
TODO |
| Recall (avg) |
TODO |
TODO |
TODO |
| F1 (avg) |
TODO |
TODO |
TODO |
3.2 期待値 (記入前の推定参考)
事前推定: 公開モデル mAP@0.5 ≈ 0.70 / MVP v1 ≈ 0.78 / MVP v2 ≈ 0.85 (合成データ生成ガイド Section 8 準拠)。
4. カテゴリ別 Recall (空欄)
全 34 種の細粒で表を作るのは紙幅的に重いため、6 大カテゴリで集計。詳細表は別タブ HTML へ。
4.1 6 大カテゴリ別 Recall
| カテゴリ |
GT 数 |
公開モデル |
MVP v1 |
MVP v2 |
備考 |
| 萬子 (m1〜m9) |
TODO |
TODO |
TODO |
TODO |
公開モデルの弱点想定 |
| 筒子 (p1〜p9) |
TODO |
TODO |
TODO |
TODO |
— |
| 索子 (s1〜s9) |
TODO |
TODO |
TODO |
TODO |
1 索の鳥が誤検出されやすい |
| 字牌 (東南西北白發中) |
TODO |
TODO |
TODO |
TODO |
実物データでの出現頻度低 → 合成効果大 |
| 副露 (ポン/チー) |
TODO |
TODO |
TODO |
TODO |
横向き牌の検出能力 |
| 暗槓 (裏向き 2 + 表向き 2) |
TODO |
TODO |
TODO |
TODO |
裏牌専用クラスがあるか要確認 |
4.2 注目すべき Recall 差分
埋め方: 「公開 vs MVP v2 の Recall 差が最大のカテゴリ」を 1〜2 個ピックアップして、なぜ改善したかを 2〜3 行で記述。
5. False Positive 件数の前後比較 (空欄)
テストフレーム N 枚に対する FP の絶対件数を測る。件数で語ることで現実的な誤検出量が見える。
5.1 FP 絶対件数
| 条件 |
FP 総数 (テスト N 枚) |
1 枚あたり平均 |
FP/TP 比 |
| 公開モデル (前処理なし) |
TODO |
TODO |
TODO |
| 公開モデル + 卓マスキング |
TODO |
TODO |
TODO |
| MVP v1 (前処理なし) |
TODO |
TODO |
TODO |
| MVP v1 + 卓マスキング |
TODO |
TODO |
TODO |
| MVP v2 + 卓マスキング |
TODO |
TODO |
TODO |
5.2 FP の発生位置分類
| 発生位置 | 公開モデル件数 | MVP v2 件数 | 改善率 |
| スポンサーバナー | TODO | TODO | TODO |
| プレイヤーカード | TODO | TODO | TODO |
| 得点表示 | TODO | TODO | TODO |
| 卓上 (緑フェルト) | TODO | TODO | TODO |
| その他 | TODO | TODO | TODO |
6. 推論レイテンシ (空欄)
エッジ展開 (Jetson) / クラウド展開 (Cloudflare Workers AI) を視野に、3 種類のハードで測定。
| ハードウェア |
公開モデル |
MVP v1 |
MVP v2 |
備考 |
| RTX 4090 (FP16) |
TODO ms |
TODO ms |
TODO ms |
開発・評価用 |
| Jetson Orin Nano (INT8) |
TODO ms |
TODO ms |
TODO ms |
現地カメラ脇エッジ |
| Cloudflare Workers AI |
TODO ms |
TODO ms |
TODO ms |
サーバレス推論 |
| CPU only (M2 MacBook Pro) |
TODO ms |
TODO ms |
TODO ms |
緊急バックアップ環境 |
6.1 リアルタイム要件
M-League 中継の 30 fps リアルタイム検出には 33 ms 以下の推論レイテンシが必要。
アガリ検出など 1 秒に 1 回でよいタスクなら 1,000 ms 以下で十分。
7. 視覚 A/B 比較 (空欄)
同じテストフレーム 3〜5 枚を選んで、公開モデルと MVP モデルの検出 bbox を並べて表示する。
画像は docs-site/images/ 配下に保存して相対パスで参照。
7.1 比較フレーム 1: アガリピーク
[画像スロット] images/eval-frame1-baseline.png ← 公開モデル検出結果
[画像スロット] images/eval-frame1-mvp-v2.png ← MVP v2 検出結果
解説: 何がどう改善されたかを 3〜4 行で記述。FP 削減 / 字牌 Recall 改善などの具体的差分を指摘。
7.2 比較フレーム 2: 副露多発局面
[画像スロット] images/eval-frame2-baseline.png
[画像スロット] images/eval-frame2-mvp-v2.png
解説: 副露 (横向き牌) の検出能力に注目した記述。
7.3 比較フレーム 3: 字牌大量局面
[画像スロット] images/eval-frame3-baseline.png
[画像スロット] images/eval-frame3-mvp-v2.png
解説: 字牌 (東南西北白發中) のクラス均衡効果を確認。
8. 前処理 A/B (マスキング・合成データのオン/オフ)
各前処理単独効果と複合効果を測る ablation study。
8.1 卓マスキング前処理 A/B
| モデル |
マスキング |
mAP@0.5 |
FP 総数 |
Δ FP |
| 公開モデル | OFF | TODO | TODO | — |
| 公開モデル | ON | TODO | TODO | TODO |
| MVP v2 | OFF | TODO | TODO | — |
| MVP v2 | ON | TODO | TODO | TODO |
8.2 合成データ混合 A/B
| 訓練構成 |
実物 |
合成 |
mAP@0.5 |
Δ from 実物のみ |
| 実物のみ (MVP v1) | 500 | 0 | TODO | — |
| 1:1 混合 | 500 | 500 | TODO | TODO |
| 1:10 混合 (MVP v2) | 500 | 5,000 | TODO | TODO |
| 合成のみ | 0 | 5,000 | TODO | TODO |
8.3 ablation の解釈
埋め方: 「マスキングは X mAP 改善」「合成データ混合は Y mAP 改善」「両方適用で Z mAP 改善 (相乗効果あり/なし)」を記述。
9. 結論ボックス (退役判定 / 継続判定)
9.1 公開モデル退役判定
Section 3 の指標を基に判定する。判定後に該当の結論ボックスのみを残し、他を削除。
判定: 公開モデル退役 (MVP v2 に切替)
根拠: MVP v2 の mAP@0.5 が ?.?? で退役基準 0.90 を上回り、Recall も ?.?? で 0.85 を超えた。
本番パイプライン (detect-agari-visual.py 等) のモデル参照を MVP v2 に差し替え、公開モデルは
比較用ベースラインとしてのみ保持する。
判定: 追加訓練 (synthetic 強化 / epoch 延長 / hard example mining)
根拠: MVP v2 の mAP@0.5 が
?.?? で退役基準 0.90 に未達。改善案:
- 合成データを 10,000 枚に増量
- hard example mining: 公開モデルが間違えた frames を訓練データに加える
- epoch を 100 → 200 に延長 (overfitting には注意)
判定: 公開モデル継続 (MVP 設計見直し)
根拠: MVP v2 の mAP@0.5 が
?.?? で 0.75 未満。MVP は本番投入できないため、
公開モデルを継続使用しつつ以下を再検討:
- ベースモデル変更 (YOLOv8 → RT-DETR / YOLO-World)
- クラス定義の再設計 (細粒すぎる場合)
- データセット品質チェック (アノテエラー率の測定)
9.2 次のアクション
- 本番パイプライン X の参照モデル ID を更新
- 退役モデルは
archive/models/ に保管
- ダッシュボードのモデル情報メタデータを更新
- 次の MVP (v3) のロードマップ策定
9.3 関連リソース