日本古典籍くずし字データセットで学習したYOLOv11xモデルをHugging Faceに公開し、Gradio Spacesでデモを作成する手順を紹介します。
概要
- モデル : YOLOv11x(くずし字検出用)
- データセット : 日本古典籍くずし字データセット
- 公開先 : Hugging Face Models + Spaces
1. Hugging Face Modelsにモデルを登録
1.1 huggingface_hubのインストール
pip install huggingface_hub
1.2 ログイン
huggingface-cli login
または Python から:
from huggingface_hub import login
login()
トークンは https://huggingface.co/settings/tokens から取得できます(Write権限が必要)。
1.3 モデルのアップロード
from huggingface_hub import HfApi, create_repo
api = HfApi()
repo_id = "your-username/yolov11x-codh-char"
# リポジトリ作成
create_repo(repo_id, repo_type="model", exist_ok=True)
# モデルファイルをアップロード
api.upload_file(
path_or_fileobj="best.pt",
path_in_repo="best.pt",
repo_id=repo_id,
repo_type="model"
)
1.4 Model Card (README.md) の作成
モデルの使い方やライセンス情報を記載したREADME.mdを作成してアップロードします。
2. Hugging Face Spacesでデモを公開
2.1 Spacesの設定 (README.md)
---
title: YOLOv11x Character
emoji: 👁
colorFrom: pink
colorTo: green
sdk: gradio
sdk_version: 5.49.1
app_file: app.py
pinned: false
---
ポイント :
sdk: gradioを指定すると、Gradioがプリインストールされるsdk_versionでバージョンを固定できる- requirements.txt に gradio を書く必要はない
2.2 requirements.txt
ultralytics
Pillow
2.3 app.py でモデルを読み込む
Hugging Face Hubからモデルを読み込むには hf_hub_download を使用します。
from ultralytics import YOLO
from huggingface_hub import hf_hub_download
# Hugging Face からモデルをダウンロード
model_path = hf_hub_download(
repo_id="nakamura196/yolov11x-codh-char",
filename="best.pt"
)
# モデルを読み込み
model = YOLO(model_path)
# 推論
results = model.predict("image.jpg", conf=0.25, iou=0.45)
2.4 Gradio 5.x の注意点
Gradio 5.x ではSSR(Server-Side Rendering)が実験的機能としてデフォルトで有効になっています。これが原因で以下のエラーが発生することがあります。
IndexError: function has no backend method.
この問題を回避するには、launch() で ssr_mode=False を指定します。
demo.launch(share=False, ssr_mode=False)
3. この構成のメリット
| 項目 | メリット |
|---|---|
| モデル管理 | Models と Spaces を分離できる |
| リポジトリサイズ | Spacesに大きなモデルファイルを含めなくて良い |
| 再利用性 | 他のユーザーがモデルを簡単に利用できる |
| バージョン管理 | モデルを更新してもSpacesのコードは変更不要 |
4. 公開したリソース
- Model : https://huggingface.co/nakamura196/yolov11x-codh-char
- Spaces : https://huggingface.co/spaces/nakamura196/yolov11x-codh-char