
このプロジェクトの紹介記事を Qiita で公開しています。
このプロジェクトは、Stability AIが開発したJapanese Stable CLIPモデルを使用して、画像分類を行うデモアプリケーションです。Stability AI社が公開しているデモアプリケーションに若干変更を加えています。本デモアプリケーションは、NVIDIA CUDA 対応の GPU を搭載したハードウェアを使用していることを前提としています。
日本語に特化した画像言語特徴抽出モデルで、任意の日本語テキストから画像を検索する画像検索やその逆であるテキスト検索(分類)が可能です。学習手法にはSigLIP(Sigmoid loss for Language-Image Pre-training)が採用されています。従来の対照学習(Contrastive Learning:CL)が正規化のためにバッチ内のすべての画像・テキストペアの情報を必要とするソフトマックス関数に基づいていたのに対して、SigLIPでは、各画像-テキストペアを独立してシグモイド関数を適用することで効率的な学習を実現しています。この効率的な学習により画像と言語の特徴抽出の精度が向上することが期待できます。また、Conceptual 12M:CC12Mのキャプションを日本語に翻訳したデータセットなどを用いることで日本語に対応しています。詳しくは、Stability AI社のブログと Hugging Face の Model Card を参照してください。
CUDA対応の GPU を搭載している環境で CUDA Toolkit 未インストールの場合は、PyTorch Get-Startedページ で PyTorch がサポートする CUDA Toolkit バージョンを確認して、CUDA Toolkit をインストールします。CUDA Toolkit の最新バージョンは、こちら、以前のバージョンはこちらです。なお、インストールする CUDA Toolkit のバージョンは、nvidia-smi で表示される CUDA Version 以下(同じか未満)である必要があります。以下は、nvidia-smi の出力例(一部)です。
nvidia-smi
Thu Jul 4 00:21:03 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 546.33 Driver Version: 546.33 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 2060 WDDM | 00000000:09:00.0 On | N/A |
| 33% 34C P8 12W / 160W | 1033MiB / 6144MiB | 1% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
インストールされている CUDA Toolkit のバージョンは次のコマンドで確認できます。
nvcc --version
PyTorch のインストール方法は PyTorch Get-Startedページ でOS情報などを選択するとインストールに使用するコマンドを確認できます。

この例では、インストールすべき PyTorch のバージョンは 11.8 でインストールコマンドは次のようになります。
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118

リポジトリをクローンします
git clone https://github.com/kutsushitaneko/Japanese_Stable_CLIP.git
cd Japanese_Stable_CLIP
Jupyter Notebookを起動し、JSClipImageClassification.ipynbを開きます
ノートブックのセルを順番に実行します
Hugging Face のロゴが表示されたらトークン(User Access Token)を入力します

ここで、トークンを Git の認証情報として追加するかを選択します。どちらでも本アプリケーションの実行には影響ありません "Login" ボタンをクリックしてログインします。後続のノートブックのセルを順番に実行します
最後のセルを実行すると、次のようなメッセージが表示されます。同時にセルの中とブラウザの両方にGradioのインターフェースが表示されます。どちらも同じ機能を使うことができます
Running on local URL: http://127.0.0.1:7860
Running on public URL: https://0xxxxxxxxxxxxxxxxxxxxxxx.gradio.live
This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)
環境によっては自動的にブラウザが立ち上がらないことがあります。その場合は、ブラウザを起動して、アプリケーションをローカルで起動している場合は local URL: http://127.0.0.1:7860 にアクセスしてください。
また、クラウドサービスなどリモートで起動している場合は、public URL: https://xxxxxxxxxxxxxxxxxxxxxxx.gradio.live にアクセスしてください。
画像をアップロードするか、サンプル画像を選択して「分類実行」ボタンをクリックします
必要に応じて、分類カテゴリを編集できます
必要なライブラリをインストールします:
pip install -U ftfy transformers sentencepiece gradio huggingface_hub accelerate protobuf
Hugging Face にログインします ターミナル(コマンドプロンプト)で次のコマンドを実行します。
huggingface-cli login
Hugging Face のバナーが表示されてトークン(User Access Token)の入力を促されます。
(.venv) Japanese_Stable_VLM $ huggingface-cli login
_| _| _| _| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|_|_|_| _|_| _|_|_| _|_|_|_|
_| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|
_|_|_|_| _| _| _| _|_| _| _|_| _| _| _| _| _| _|_| _|_|_| _|_|_|_| _| _|_|_|
_| _| _| _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|
_| _| _|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _| _| _| _|_|_| _|_|_|_|
To login, `huggingface_hub` requires a token generated from https://huggingface.co/settings/tokens .
Token can be pasted using 'Right-Click'.
Enter your token (input will not be visible):
ここで Hugging Face のトークン(User Access Token)を入力します
Add token as git credential? (Y/n)
ここで、トークンを Git の認証情報として追加するかを選択します。どちらでも本アプリケーションの実行には影響ありません トークンが正しければ次のように表示されます
Token is valid (permission: read).
Your token has been saved to C:\Users\yujim\.cache\huggingface\token
Login successful
ターミナルで JSClipImageClassification.py を起動します
python JSClipImageClassification.py
画像をアップロードするか、サンプル画像を選択して「分類実行」ボタンをクリックします
必要に応じて、分類カテゴリを編集できます
アプリケーションを終了するには、ターミナルで Ctrl-C キーを入力してください

このプロジェクトの紹介記事を Qiita で公開しています。
このプロジェクトは、Stability AIが開発したJapanese Stable CLIPモデルを使用して、画像分類を行うデモアプリケーションです。Stability AI社が公開しているデモアプリケーションに若干変更を加えています。本デモアプリケーションは、NVIDIA CUDA 対応の GPU を搭載したハードウェアを使用していることを前提としています。
日本語に特化した画像言語特徴抽出モデルで、任意の日本語テキストから画像を検索する画像検索やその逆であるテキスト検索(分類)が可能です。学習手法にはSigLIP(Sigmoid loss for Language-Image Pre-training)が採用されています。従来の対照学習(Contrastive Learning:CL)が正規化のためにバッチ内のすべての画像・テキストペアの情報を必要とするソフトマックス関数に基づいていたのに対して、SigLIPでは、各画像-テキストペアを独立してシグモイド関数を適用することで効率的な学習を実現しています。この効率的な学習により画像と言語の特徴抽出の精度が向上することが期待できます。また、Conceptual 12M:CC12Mのキャプションを日本語に翻訳したデータセットなどを用いることで日本語に対応しています。詳しくは、Stability AI社のブログと Hugging Face の Model Card を参照してください。
CUDA対応の GPU を搭載している環境で CUDA Toolkit 未インストールの場合は、PyTorch Get-Startedページ で PyTorch がサポートする CUDA Toolkit バージョンを確認して、CUDA Toolkit をインストールします。CUDA Toolkit の最新バージョンは、こちら、以前のバージョンはこちらです。なお、インストールする CUDA Toolkit のバージョンは、nvidia-smi で表示される CUDA Version 以下(同じか未満)である必要があります。以下は、nvidia-smi の出力例(一部)です。
nvidia-smi
Thu Jul 4 00:21:03 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 546.33 Driver Version: 546.33 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 2060 WDDM | 00000000:09:00.0 On | N/A |
| 33% 34C P8 12W / 160W | 1033MiB / 6144MiB | 1% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
インストールされている CUDA Toolkit のバージョンは次のコマンドで確認できます。
nvcc --version
PyTorch のインストール方法は PyTorch Get-Startedページ でOS情報などを選択するとインストールに使用するコマンドを確認できます。

この例では、インストールすべき PyTorch のバージョンは 11.8 でインストールコマンドは次のようになります。
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118

リポジトリをクローンします
git clone https://github.com/kutsushitaneko/Japanese_Stable_CLIP.git
cd Japanese_Stable_CLIP
Jupyter Notebookを起動し、JSClipImageClassification.ipynbを開きます
ノートブックのセルを順番に実行します
Hugging Face のロゴが表示されたらトークン(User Access Token)を入力します

ここで、トークンを Git の認証情報として追加するかを選択します。どちらでも本アプリケーションの実行には影響ありません "Login" ボタンをクリックしてログインします。後続のノートブックのセルを順番に実行します
最後のセルを実行すると、次のようなメッセージが表示されます。同時にセルの中とブラウザの両方にGradioのインターフェースが表示されます。どちらも同じ機能を使うことができます
Running on local URL: http://127.0.0.1:7860
Running on public URL: https://0xxxxxxxxxxxxxxxxxxxxxxx.gradio.live
This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)
環境によっては自動的にブラウザが立ち上がらないことがあります。その場合は、ブラウザを起動して、アプリケーションをローカルで起動している場合は local URL: http://127.0.0.1:7860 にアクセスしてください。
また、クラウドサービスなどリモートで起動している場合は、public URL: https://xxxxxxxxxxxxxxxxxxxxxxx.gradio.live にアクセスしてください。
画像をアップロードするか、サンプル画像を選択して「分類実行」ボタンをクリックします
必要に応じて、分類カテゴリを編集できます
必要なライブラリをインストールします:
pip install -U ftfy transformers sentencepiece gradio huggingface_hub accelerate protobuf
Hugging Face にログインします ターミナル(コマンドプロンプト)で次のコマンドを実行します。
huggingface-cli login
Hugging Face のバナーが表示されてトークン(User Access Token)の入力を促されます。
(.venv) Japanese_Stable_VLM $ huggingface-cli login
_| _| _| _| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|_|_|_| _|_| _|_|_| _|_|_|_|
_| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|
_|_|_|_| _| _| _| _|_| _| _|_| _| _| _| _| _| _|_| _|_|_| _|_|_|_| _| _|_|_|
_| _| _| _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|
_| _| _|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _| _| _| _|_|_| _|_|_|_|
To login, `huggingface_hub` requires a token generated from https://huggingface.co/settings/tokens .
Token can be pasted using 'Right-Click'.
Enter your token (input will not be visible):
ここで Hugging Face のトークン(User Access Token)を入力します
Add token as git credential? (Y/n)
ここで、トークンを Git の認証情報として追加するかを選択します。どちらでも本アプリケーションの実行には影響ありません トークンが正しければ次のように表示されます
Token is valid (permission: read).
Your token has been saved to C:\Users\yujim\.cache\huggingface\token
Login successful
ターミナルで JSClipImageClassification.py を起動します
python JSClipImageClassification.py
画像をアップロードするか、サンプル画像を選択して「分類実行」ボタンをクリックします
必要に応じて、分類カテゴリを編集できます
アプリケーションを終了するには、ターミナルで Ctrl-C キーを入力してください