画像からテキストを生成 〜CLIP〜

画像からテキストを生成 〜CLIP〜 Stable Diffusion
画像からテキストを生成 〜CLIP〜

ネット上にある素晴らしい画像について、自分もそんな画像を生成したいと思ったことはありませんか。
ただ、プロンプトを想像して入力しても思い通りの画像が生成されないことは多いことでしょう。

それだったら、AIはその画像をどう捉えているのか、どういうプロンプトで構成されているのか見てみましょう。
AIの気持ちを理解したら画像生成の幅が広がるかもしれません。

AI画像生成士
AI画像生成士

ネットにあるあの画像、私も作りたいな〜


この記事ではCLIPと呼ばれる手法で、画像からテキスト(プロンプト)を取得する方法を紹介します。
画像からテキストimage2text、image to text、img2txt、i2tなどと呼ばれている処理です。

CLIPとは

Contrasive Laungage-Image Pretrainingの略で、言語(テキスト)と画像の学習手法のことです。

CLIPで学習させることにより、文字としての単語と絵としての物体類似度がわかります。
類似度がわかる = 近い意味のものに変換できる ことを意味しますので、
プロンプトから画像、画像からプロンプトに変換できるというわけです。

もう少し詳しく説明しますと、
 テキストのエンコーダ:Transformer
 画像のエンコーダ:ViT(Vision Transformer)とかResNet
で単語と物体をそれぞれembedding(ベクトル化)します。

行方向に単語、列方向に物体のベクトルを並べた行列について、self-Attentionで類似度を算出していくという流れです。
ただのTransformerだと行も列も単語でしたが、CLIPでは単語と画像を使うというわけです。

CLIPのしくみ 論文より
CLIPのしくみ 論文より

さらに詳しく知りたい方は以下を読むとよいです。

https://deepsquare.jp/2021/01/clip-openai/
論文:https://cdn.openai.com/papers/Learning_Transferable_Visual_Models_From_Natural_Language_Supervision.pdf

1. image to text @web

以下のサイトで、画像をWebブラウザにアップしてプロンプトを取得できます。
ネットに画像を上げるのに抵抗がない方にとって、最も手軽な方法です。
いくつかありますがどれもやってることは同じです。

CLIP Image2Text:https://huggingface.co/spaces/henryu/Clip-image2text
CLIP Interrogator:https://huggingface.co/spaces/pharma/CLIP-Interrogator
CLIP Interrogator2:https://huggingface.co/spaces/fffiloni/CLIP-Interrogator-2

使い方は以下のとおり。
fastを選択すると生成が速くなります。

  1. 画像入力
  2. CLIPモデル選択
  3. Generate Prompt / 送信

2. image to text @Stable Diffusion Web UI

Stable Diffusion Web UIを使っている方は、既にUIで実行できます。

  1. 画像入力
  2. Interrogate CLIPボタンクリック
Interrogate CLIPボタン
Interrogate CLIPボタン

初回実行時はCLIPモデルとか必要なものをダウンロードしますので、時間がかかります。

Stable Diffusion をローカルで構築する方法は以下を参考ください。

3. image to text @ローカル

どうしてもローカルで実施したい。
画像をネットにアップロードするのに抵抗がある。
そんな方は自分のPCに環境を構築しましょう。

画像が流出しないか心配よね。

やることは、先ほど紹介したWebで動くプログラムをローカルに持ってくるだけです。
ここではhenryu氏のプログラムを使う方法を紹介します。

準備するもの

プログラムはapp.pyのみです。
CLIP interrogatorはpythonパッケージ(clip_interrogator)として使用します。
その他に必要なpythonパッケージはrequirements.txtに書いてくれてますので参考にしてください。

CLIPTextModelWithProjectopnがtransformersに存在しない!となどのエラーが出る場合、transformersのバージョンが古い可能性があります。
以下のコマンドを実行し、transformersを最新化しましょう。

pip install git+https://github.com/huggingface/transformers

実行方法

以下を実行すると、127.0.0.1:7860に起動します。
ブラウザで開いて後はWeb版と同じように使うことができます。

python app.py --share

画像生成するためではなく単純に、この画像はAIからしたらどう見えているんだろう、とCLIPを使ってみるのも面白いです。
英語の勉強にもなります。
CLIPは、4億ペアの画像-テキストデータセットで学習したらしいです!
CLIP生成のプロンプトを見ると、どんな画像を使って学習したのかも少し垣間見えますね〜

OL2
OL2
arafed asian woman in a suit posing for a picture, cleavage, , opening, model エリサヘス s from acquamodels, japanese live-action movie, beautiful sexy woman photo

画像(左)とCLIP生成プロンプト(右)

コメント

タイトルとURLをコピーしました