日本古典籍くずし字データセットで学習したYOLOv11xモデルをHugging Faceに公開し、Gradio 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. 公開したリソース

参考リンク