ちょっと話題の記事

Visual ChatGPTが誰でも使えるようになっていたので画像を生成してみた

2023.03.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

新規事業統括部Passregiチームの山本です。

最近、特に3月1日ChatGPTのAPIが公開されてから、AIを使ったチャットボットに関する話題が増えています。そんな中、ChatGPTを利用した、画像を対話的に生成したり説明させたりできる、Visual ChatGPTが公開されたので、早速動かしてみました。

Visual ChatGPTについて

Visual ChatGPTは、クエリに関するプロンプトマネージャ介して、さまざまな画像のモデルとChatGPTを使用することで、画像を対話的に生成します。細かい内容は論文にゆずろうかと思います。

https://arxiv.org/abs/2303.04671 より

これが実行できるソースコードが、つい先日(自分の知る限りだと3月9日に)githubで公開されました。当初、自分の持っているWindows機で実行してみたのですが、使用しているGPUが古いせいか実行時でエラーになってしまいました。ただ、ちょうど今日確認したところ、colabで実行できるようになっていたので、早速試してみました。(huggingface版も公開されています、後述)

Google Colabで動かしてみる

githubのページにアクセスします。

https://github.com/microsoft/visual-chatgpt

ページ中のタイトルの下部にある、「Open In Colab」と書かれているボタンを押します。(Google Colabのページに移動し、実行用のコードが表示されます)

そのままだと実行できないので、「ドライブにコピー」を押して、自分のドライブにコピーします。(マイドライブの「Colab Notebooks」にコピーされます)

ノートブック中の「%env OPENAI_API_KEY=your_key」の”your_key”の部分を、自分のOpenAIのAPIキーに書き換えます。

「ランタイム」から「すべてのセルを実行」を選択します。すると、一番下のセルに、下の画像のような、チャット欄が表示されます。ここにテキスト書いてエンターを押すと、内容に応じた画像が生成されます。また、「Upload」を押して、画像を渡してテキストで質問することもできます。

画像を生成してみる

サンプル

huggingface版にもある質問を実行してみました。ちょっと意図とは違う気がします。

日本語でも使えます(内部で翻訳されているような感じの動作ですね)。これも少し意図とは違う気がします。

作成した画像やアップロードした画像に関して質問することもできます

動作を推測してみる

GithubのQuickStartにかかれているように、モデルのサイズが大きく、がGPUの能力(メモリ)によって使用するモデルを変えています。Colab版では、2つのモデル("ImageCaptioning_cuda:0,Text2Image_cuda:0”)のみをロードしているので、上のクエリで意図している動作にはなっていなさそうです。

https://github.com/microsoft/visual-chatgpt#quick-start

ImageCaptioningとText2Imageなので、「生成用のメッセージ」を変えながら、毎回画像を生成し直しているような動作になっていそうです。似たようなのまま対象の箇所だけ変えるには、InstructPix2Pixなどをロードの対象に加えると良さそうだと思われます。(そのためには、メモリサイズの大きいGPUが必要そうです)

https://www.timothybrooks.com/instruct-pix2pix/

追記(3/15)

ということで、ノートブックの該当箇所を書き換えてみます。具体的には、以下の1つ目のように書かれている箇所を、2つ目のように書き換えます。SegText2Image_cuda・InstructPix2Pix_cudaと、CPUを使用するモデルをいれました。

load = "ImageCaptioning_cuda:0,Text2Image_cuda:0"
load = "ImageCaptioning_cuda:0,Text2Image_cuda:0,InstructPix2Pix_cuda:0,ImageEditing_cuda:0,Image2Seg_cpu,Image2Line_cpu,Image2Normal_cpu,Image2Pose_cpu,Image2Hed_cpu,Image2Line_cpu,Image2Line_cpu,SegText2Image_cuda:0"

「ランタイム」から「ランタイムを再起動」を選択し、「ランタイム」からすべてのセルを実行します。先程と同様に実行すると、背景が同じまま猫だけが犬に変わりました。(良い感じですね!)

補足

コピー元のノートブックを実行すると以下のようにメッセージが表示されます。実行されている処理の内容はVisual ChatGPTのリポジトリをクローンして、必要なライブラリをインストールして実行する、のみですが、気になる場合は内容をチェックしてください。

Visual ChatGPTはhuggingfaceも公開されていたので試したのですが、クエリが実行されたりされなかったりしました。(2023年3月14日現在)

https://huggingface.co/spaces/microsoft/visual_chatgpt

「追記」に記載した変更後のloadを使用した場合、ColabのランタイムのGPU RAMの使用率がギリギリでした。動作中にエラーなどが発生するかもしれません。また、上記に記載した以上に、GPUを使用するモデルを増やした場合、クエリを投げても返答がありませんでした。使用するモデルは適宜選択したほうが良さそうです。

おまけ

中身はChatGPTということもあってか、画像とは関係ないことにも返答してくれました。

まとめ

Visual ChatGPTが公開されたので使ってみました。Colab版で使用するモデルを増やすことで、意図しているような画像を生成できました。