Instructions to use HaseLab/mahjong-models with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use HaseLab/mahjong-models with ultralytics:
# Couldn't find a valid YOLO version tag. # Replace XX with the correct version. from ultralytics import YOLOvXX model = YOLOvXX.from_pretrained("HaseLab/mahjong-models") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
Mahjong models
麻雀卓の領域分割、各領域内の牌検出、牌種分類を行うための学習済みモデルです。
ファイル
| ファイル | 役割 | 出力 |
|---|---|---|
regions-yolo-26n.pt |
卓上画像から手牌・河・副露などの領域を抽出 | 14クラスのセグメンテーション |
tile-yolo-26n.pt |
領域画像から個々の牌面を抽出 | tile 1クラスのセグメンテーション |
classifier-resnet50.pt |
正規化した牌面画像の牌種・裏向きを分類 | 39クラス |
Git submoduleとして使用する
Git Xetをインストールしてから、親リポジトリのmodels/へsubmoduleとして追加します。
git xet install
git xet --version
git submodule add \
https://huggingface.co/HaseLab/mahjong-models \
models
git add .gitmodules models
git commit -m "Add model artifacts as submodule"
submoduleはモデルリポジトリの特定コミットを参照します。Hugging Face側のモデルを更新しても、親リポジトリ側でsubmoduleの参照を更新してcommitするまでは、既存の利用者が取得するモデルは変わりません。
推奨パイプライン
推論の流れ
入力画像
│
▼
Region YOLO
regions-yolo-26n.pt
手牌・河・副露などの領域をセグメンテーション
│
▼
Tile YOLO
tile-yolo-26n.pt
Region YOLOの検出領域をそのまま入力し、
領域内にある個々の牌面をセグメンテーション
│
▼
牌面を正方形化
検出ポリゴンの四隅から透視変換
出力: 224 × 224 RGB
│
▼
ResNet-50
classifier-resnet50.pt
正規化した牌面から38牌種または裏向きを分類
│
▼
予測結果
例: 5m(5萬)
クラス
Region YOLO
regions-yolo-26n.ptのクラスは次の14種類です。
0 self_hand 自分の手牌
1 discard_0 自分の河
2 discard_1 右家の河
3 discard_2 対面の河
4 discard_3 左家の河
5 meld_0 自分の副露
6 meld_1 右家の副露
7 meld_2 対面の副露
8 meld_3 左家の副露
9 dora ドラ表示牌
10 riichi_0 自分のリーチ棒
11 riichi_1 右家のリーチ棒
12 riichi_2 対面のリーチ棒
13 riichi_3 左家のリーチ棒
家番号は、カメラ側の自分を0、右家を1、対面を2、左家を3とします。
Tile YOLO
tile-yolo-26n.ptは牌種を区別せず、すべての牌面を1クラスとして検出します。
0 tile 牌面
牌種は後段のResNet-50で分類します。
ResNet-50
再学習したclassifier-resnet50.ptは、38牌種とbackを合わせた次の39クラスを出力します。
indexはImageFolderのクラス名をsorted()した辞書順です。必ず次の順序を使用してください。
0 0m 赤5萬
1 0p 赤5筒
2 0s 赤5索
3 0z 赤白
4 1m 1萬
5 1p 1筒
6 1s 1索
7 1z 東
8 2m 2萬
9 2p 2筒
10 2s 2索
11 2z 南
12 3m 3萬
13 3p 3筒
14 3s 3索
15 3z 西
16 4m 4萬
17 4p 4筒
18 4s 4索
19 4z 北
20 5m 5萬
21 5p 5筒
22 5s 5索
23 5z 白
24 6m 6萬
25 6p 6筒
26 6s 6索
27 6z 發
28 7m 7萬
29 7p 7筒
30 7s 7索
31 7z 中
32 8m 8萬
33 8p 8筒
34 8s 8索
35 9m 9萬
36 9p 9筒
37 9s 9索
38 back 裏向き
- Downloads last month
- 200