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
File size: 3,588 Bytes
7f2a208 400cd87 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 400cd87 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 7f2a208 773d5e1 400cd87 7f2a208 773d5e1 400cd87 773d5e1 400cd87 773d5e1 400cd87 773d5e1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | ---
library_name: ultralytics
tags:
- mahjong
- object-detection
- image-segmentation
- image-classification
- yolo
- resnet
---
# Mahjong models
麻雀卓の領域分割、各領域内の牌検出、牌種分類を行うための学習済みモデルです。
## ファイル
| ファイル | 役割 | 出力 |
| --- | --- | --- |
| `regions-yolo-26n.pt` | 卓上画像から手牌・河・副露などの領域を抽出 | 14クラスのセグメンテーション |
| `tile-yolo-26n.pt` | 領域画像から個々の牌面を抽出 | `tile` 1クラスのセグメンテーション |
| `classifier-resnet50.pt` | 正規化した牌面画像の牌種・裏向きを分類 | 39クラス |
## Git submoduleとして使用する
Git Xetをインストールしてから、親リポジトリの`models/`へsubmoduleとして追加します。
```bash
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するまでは、既存の利用者が取得するモデルは変わりません。
## 推奨パイプライン
### 推論の流れ
```text
入力画像
│
▼
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種類です。
```text
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クラスとして検出します。
```text
0 tile 牌面
```
牌種は後段のResNet-50で分類します。
### ResNet-50
再学習した`classifier-resnet50.pt`は、38牌種と`back`を合わせた次の39クラスを出力します。
indexはImageFolderのクラス名を`sorted()`した辞書順です。必ず次の順序を使用してください。
```text
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 裏向き
```
|