はじめに
今回はLLaVA(Large Language and Vision Assistant)の紹介になります.LLaVAは画像のエンコーダーとLLMのLlama2を合わた新しいend-to-endの学習済みモデルで,GPT4-Vのオープンソースのようなモデルです.ScienceQAというデータセットでSOTAも達成しています.日本語にも対応しているみたいなので日本語で検証を行っています.
記事に誤り等ありましたらご指摘いただけますと幸いです。
目次
1. LLaVA
ライセンス:Apache-2.0
リポジトリ:https://github.com/haotian-liu/LLaVA
公式サイト:https://llava-vl.github.io/
論文:
https://arxiv.org/abs/2310.03744
https://arxiv.org/abs/2304.08485
LLaVAはLarge Language and Vision Assistantの略で,画像を詳細なテキスト情報に変換することができます.ScienceQAというマルチモーダルのデータセットにおいてはstate-of-the-artを達成しています.また新しい点として,画像とテキストのインストラクションチューニングデータを使い学習を行っています.日本語でも使用することができます.
LLaVAのv1.5のモデルは以下のものが現在利用できます.
OSSの謎のマスコットは"a cute lava llama with glasses"というプロンプトで生成したそうです.
2. 使い方
すぐに試したい方はData Science WikiのページまたはColabのリンクから実行してみてください
![Data Science Wiki](https://qiita-user-contents.imgix.net/https%3A%2F%2Fraw.githubusercontent.com%2Ffuyu-quant%2Fdata-science-wiki%2Fmain%2Fimages%2Flogo2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=e485e388dd55aecebe549261c98f0bca)
今回の検証では4bit量子化を行ったので,それぞれGPUの消費は以下でした.
llava-v1.5-7b:7.3 / 40.0 GB
llava-v1.5-13b:10.8 / 40.0 GB
今回はllava-v1.5-13bで検証を行っていきます.
必要なものをインストールします.
!git clone https://github.com/haotian-liu/LLaVA.git
cd LLaVA
!pip install -e .
from PIL import Image
import requests
はじめに以下の画像で試してみます.
url = "https://img.peapix.com/e27fcf12e0664a5cb1c6b58c6b311d31.jpg?attachment&modal"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
image.save("/content/tokyo.jpg", "JPEG")
image
以下のコマンドを実行するとLLaVAのダウンロードが始まります.その後にユーザーが入力できるコンソールウィンドウが表示されます.
!python -m llava.serve.cli \
--model-path liuhaotian/llava-v1.5-13b \
--image-file "/content/tokyo.jpg" \
--load-4bit
出力結果
大体,正しい出力を得ることができていますが東京タワーについては回答できていません.この辺りはインストラクションデータに含まれていないと難しいのかもしれません.
次に以下の画像で試します.
url = "https://i.gzn.jp/img/2013/12/08/cat-island-aoshima/P1640392.jpg"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
image.save("/content/cat.jpg", "JPEG")
image
!python -m llava.serve.cli \
--model-path liuhaotian/llava-v1.5-13b \
--image-file "/content/cat.jpg" \
--load-4bit
出力結果
正確には猫の数は当たっていませんが,ある程度は猫のことを認識している印象です.また,最後の質問は答えられるとは思いませんでしたが,そこまで正確ではないもののまともな回答ができています.このレベルのモデルがOSSとして使えるのは非常にありがたいですね.
4. おわりに
今回はLLaVAの紹介でした.前に紹介したBLIP,BLIP2に比べ画像に対する説明能力が飛躍的に上昇している印象です.このレベルで画像を文章に変換できるのであれば何かしら社会実装で役に立ちそうですね.
最後までお読みいただきありがとうございます.記事に誤り等ありましたらご指摘いただけますと幸いです。