【imp-v1-3b】わずか3Bの超小型MLLMでCAPTCHAを破れるのか検証してみた

WEELメディア事業部LLMリサーチャーの中田です。

画像とテキストを入力するだけで簡単に、AIに画像認識をさせることができるマルチモーダルモデル「imp-v1-3b」が公開されました。

このマルチモーダルモデルAIは小規模でありながら、高性能なんです、、、!

Xでのいいね数は、すでに650を超えており、かなり注目されています。

この記事ではimp-v1-3bの使い方や、有効性の検証まで行います。本記事を熟読することで、imp-v1-3bの凄さを実感し、GPT-4Vよりもimp-v1-3bを使いたくなるかもしれません。

ぜひ、最後までご覧ください。

目次

imp-v1-3bの概要

imp-v1-3bは、テキストと画像の情報を一緒に扱える、小型のマルチモーダルモデルです。

このモデルを用いることで、以下のように、「入力画像に対してチャット形式での質問」ができるのです。

参考:https://huggingface.co/MILVLG/imp-v1-3b

また、imp-v1-3bの主な特徴として、「わずか3Bのパラメータでありながら、強力な性能を持つ」という点。

小型でありながら強力なSLM Phi-2(2.7B)と、強力な画像エンコーダSigLIP(0.4B)をベースに構築され、LLaVA-v1.5学習セットで学習されています。

下表に示すように、imp-v1-3bは性能面で、「類似のモデルサイズを持つ同等モデル」を大幅に上回っています。

参考:https://huggingface.co/MILVLG/imp-v1-3b

なお、Microsoftの最強小型テキスト生成モデルについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Phi-2】パラメーター数が25倍のLlama-2-70Bと同等の性能を持つ、Microsoftの最強小型LLM

imp-v1-3bのライセンス

imp-v1-3bのライセンスは、Apache-2.0 licenseです。そのため、商用利用のみならず、ほぼすべての用途で利用可能です。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用⭕️
私的使用⭕️
参考:https://github.com/MILVLG/imp?tab=Apache-2.0-1-ov-file

imp-v1-3bの使い方

今回は、公式のHuggingFaceのモデルカードにあるコードを実行していきます。

まずは、以下のコードを実行して、ライブラリをインストールしましょう。

!pip install -U transformers
!pip install -q pillow accelerate einops

次に、モデルやトークナイザーのロード。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from PIL import Image

torch.set_default_device("cuda")

# モデルとトークナイザー
model = AutoModelForCausalLM.from_pretrained(
    "MILVLG/imp-v1-3b", 
    torch_dtype=torch.float16, 
    device_map="auto",
    trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
    "MILVLG/imp-v1-3b", 
    trust_remote_code=True
)

次に、カレントディレクトリに、入力したい画像を置いてください。

そして、以下のコードを実行して、プロンプトと入力画像の準備をしましょう。

# プロンプトと画像
text = "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions. USER: <image>\nDescribe the person in the image. ASSISTANT:"
image = Image.open("image.jpg")

そして、以下のコードを実行して、推論を実行。

# 推論
input_ids = tokenizer(text, return_tensors="pt").input_ids
image_tensor = model.image_preprocess(image)
output_ids = model.generate(
    input_ids,
    max_new_tokens=100,
    images=image_tensor,
    use_cache=True)[0]
print(tokenizer.decode(output_ids[input_ids.shape[1]:], skip_special_tokens=True).strip())

これで、チャットの返信がimp-v1-3bから返ってくるはずです。

ちなみに、「Imp Chat」という公式のデモページでは、ブラウザ上で簡単にimp-v1-3bとのチャットが可能です。

imp-v1-3bを動かすのに必要なPCのスペック

■Pythonのバージョン
Python 3.8以上

■必要な容量
公式のドキュメントには、必要なメモリ容量等に関する情報は、記載されていませんでした。ただ、少なくとも10GBのストレージを、確保しておけば十分でしょう。また、最低でも10GBのVRAM、16GB以上のRAMを持つGPUも必要だと思われます。

なお、GPT-4Vに匹敵する性能を持つマルチモーダルモデルについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
【LLaVA 1.5】オープンソース版GPT4-Vの使い方~比較レビューまで

imp-v1-3bを実際に使ってみた

先ほどの例の場合、

「A chat between a curious user and an artificial intelligence assistant.
 The assistant gives helpful, detailed, and polite answers to the user's questions. 
USER: \nDescribe the person in the image. ASSISTANT:」

(好奇心旺盛なユーザーと人工知能アシスタントとのチャット。アシスタントはユーザーの質問に親切、詳しく、丁寧に答えてくれる。
ユーザー:「画像に写っている人物を教えてください。」アシスタント:)

というテキストプロンプトと、image.jpgファイルを入力しました。

この時、image.jpgを以下の画像にした場合の、imp-v1-3bのふるまいを見ていきましょう。

参考:https://www.irasutoya.com/2019/12/blog-post_14.html

結果は以下の通りです。

The person in the image is a young man, possibly a boy, who is standing in front of a door. 
He is holding a brown box in his hands, and he appears to be bending over to get into the room.

日本語訳:
画像の人物は若い男性(おそらく少年)で、ドアの前に立っている。手には茶色の箱を持っており、部屋の中に入ろうと腰をかがめているように見える。

出力された文章を見ると、「若い男性」という人物の特徴や、その男性の行動を細かくとらえられていると思います。ただ、「部屋の中に入ろうと腰をかがめているように見える」という記述に関しては、少しズレている気がします。というのも、この男性の行動を正しく認識するなら「足でドアを開けている」というような記述が適切かもしれません。

ちなみに、「この男は何をしていますか?」と日本語で質問したところ、「この男は何を財いません。ねらについてです。」と返ってきました。どうやら、日本語には対応していないようです。

imp-v1-3bの推しポイントである小規模ながら高性能なMLLMというのは本当なのか?

2~3日以内に、更新します!
ブックマークをしてお待ちください。

なお、画像認識能力がとても高いGPT-4Vの画像認識能力を、さらに高める方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
【Set-of-Mark Visual Prompting for GPT-4V (SoM)】高度な情報解析ができるGPTツールを使ってみた

まとめ

imp-v1-3bは、テキストと画像に関する小型マルチモーダルモデルです。Microsoftが開発したPhi-2に基づいて構築されており、学習データセットはLLaVA-v1.5のものが使われています。

Xでは、CAPTCHAを破ることはないだろうとの意見がありました。実際にやってみないとわからないですが、今のところはimp-v1-3bを悪用したボットなどは、生まれないのかもしれません。

今後、更新する検証ではCAPTCHAを本当に破れないのかどうかも検証してみようと思います!

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • 中田

    データサイエンス専攻の大学院生。大学では、生成系AIの拡散モデルを用いた音楽生成について研究。 趣味は作曲、サッカー、コーヒー。

  • URLをコピーしました!
  • URLをコピーしました!
目次