AIエンジニアの探求

計算論的神経科学で博士号取得後、AIエンジニアとして活動中。LLMの活用や脳とAIの関係などについて記事を書きます。

MiniGPT-4を試してみた

GPT-4はマルチモーダルな情報処理が可能であるとされ、以下のように高度な画像認識ができるとOpenAIは主張しています(GPT-4 Technical Reportから引用)。

ジョーク画像の面白さを説明してもらうという使い方。GPT-4の回答: 画像は、「Lightning Cable」アダプターのパッケージで、3つのパネルがあります。パネル1:VGAネクター(パソコンのモニターによく使われる青くて大きな15ピンのコネクター)を充電ポートに差し込んだスマートフォンです。パネル2:VGAコネクタの絵が描かれた "Lightning Cable "アダプターのパッケージ。パネル3:VGAコネクタのクローズアップで、先端に小さなLightningコネクタ(iPhoneなどのApple製品の充電に使用)が付いている。この画像のユーモアは、大きくて時代遅れのVGAコネクタを、小さくて最新のスマートフォンの充電ポートに差し込むという不条理からきています。

しかし2023年4月25日現在、GPT-4の画像認識機能はリリースされていません。 そんな中、MiniGPT-4という論文が登場しました(著者グループはOpenAIとは別のようです)。

これは学習済みの画像エンコーダ(ViTとQ-Formerから構成)と大規模言語モデル(Vicuna)を線形変換によって接続し、その接続層を学習させることでマルチモーダルな認識を実現した研究となっています。

また、デモが公開されており、ブラウザ上でこの機能を試せるようになっています。著者が公開しているサンプルを見ると、単に画像のキャプションを生成するだけでなく(これはBLIP-2など既存手法でも可能です)、ミーム画像の面白さを解説してもらったり、手書きのラフデザインからHTMLを作成してもらったりと多様なタスクが実現できそうです(以下に動画を引用)。

そこで、実際にデモを試してみてどれぐらいの性能があるのかを分析してみました。

基本的な画像の認識

まずは簡単なところから。犬の写真をuploadして画像の説明をお願いしたところ、犬種(ダックスフンド)・ビーチにいること・天気を含めて正確に回答してくれました。

日本語対応

なお、日本語で質問すると日本語で回答してくれますが、回答の正確さ・文章の自然さはだいぶ損なわれてしまうようです。 英語で質問して日本語で答えてもらう形式でも同様でした。

複雑な画像の認識

映っている犬の数を回答してもらうと、「6匹」と実際とは違う数字が返ってきてしまいました。LLMが文字数のカウントが苦手なのと同様に、数を数えるのは苦手なのかもしれないです。

次はかなり難しいタスクとして、ポーカーの場面を説明してもらうことを試みてみました。 「ポーカーをプレイしている」ことは分かっているようですが、ゲーム状況の把握までは厳しいようです。「スーツやTシャツを着ている」など関係ない言及もありました(hallucinationに近そうです)。

LATEXの生成

次はあったらいいな、という機能として「手書きの数式からのLATEXの生成」を試してみました。Kullback-Leibler divergenceの式を読み込ませて、LATEXを書いてもらいました。

背景が黒なので少し分かりづらいですが、LATEX自体は生成してくれています。しかし入力画像の式とは全然違う式になってしまっています。頑張っていることは伝わるものの、まだまだみたいです。

GPT-4との比較

冒頭にも書いたGPT-4がやっている、ジョーク画像の回答をお願いしてみました。

MiniGPT-4の出力:

画像には、携帯電話を手に持ち、携帯電話の充電ポートに充電ケーブルを差し込んだ人物が写っています。充電ケーブルは電源に接続されており、電源はコンセントに差し込まれている。その人物は青いシャツを着ており、背中に黒いバックパックを背負っています。画像はローアングルで撮影されており、人物の顔とバックパックの上部が写っています。画像は明るく、人物とその携帯電話に明確な焦点が合っている。

この画像は、外出先で充電ケーブルを使って携帯電話を充電している人を示していて、面白いです。また、この人は片手で携帯電話を持ち、もう片方の手で充電ケーブルを持っているので、歩きながら充電ケーブルで携帯電話を充電しようとしているように見えるのも面白いところです。また、この画像では、人物が青いシャツと黒いバックパックを着用しているため、コミカルな面も加わっています。

全体的にがんばろうとしていることは伝わるものの、hallucinationが多く含まれ、また面白いポイントも外してしまっています。言語モデルがVicunaではGPT-4の性能にはなかなか追いつくのが難しいかもしれないです。あるいは、マルチモーダル認識のための学習方法にも改善の余地があるかもしれないです。

著者サンプルとの比較

最後に、著者サンプルで提示されていた、「問題点とその解決策を回答してもらう」タスクを試してみました。 著者サンプルでは、感染症にかかってしまった植物の対処法を説明してくれています。

まず、同じ画像で試してみると同様にreasonableな出力が返ってきました。細かい違いはありますが、これは言語モデルが確率的に出力を生成するためですね。 一方、似たようなタスクが使えそうな画像として、「割れたiphoneの画像」を入力すると「画面が割れている」ことは認識できるものの途中から同じ文章が繰り返されてしまい、出力として変になってしまいました。

まとめ

この記事ではMiniGPT-4のデモを利用して、さまざまなタスクを試してみました。結果、基本的な画像認識はできているもののGPT-4のような多様なタスクへの適用はまだまだ発展途上、という印象を受けました。今後のモデル・手法のアップデートに期待したいところです。