ジャコ Lab

プログラミング関連のメモ帳的ブログです

BLIP-2 を Google Colab で試してみる

自作 LoRA を調べていて kohya-ss/sd-scripts の README から知った 自動キャプショニングBLIP

そして、 BLIP を調べていたら BLIP-2 もあることを知りました。

今回は BLIP-2Google Colab で試してみます!

BLIP-2 がどういったものかは説明を読んでもよくわからない!

参考にしたページ

モデルについて

opt-2.7bflan-t5-xlというのはLLMらしい。
cocoはよくわからないけどファインチューニングに使った?らしい

モデルがこなせるタスク

  • image captioning
  • visual question answering (VQA)
  • chat-like conversations by feeding the image and the previous conversation as prompt to the model
日本語訳
  • (画像キャプション)
  • (視覚的な質問応答 (VQA))
  • (画像と以前の会話をモデルにプロンプ​​トとして入力することで、チャットのような会話ができます)
となっているようです。いわゆるマルチモーダルなやつですね

とりあえず使ってみる

必要なモジュールをインストールする

!pip install -U transformers
これだけで良いみたいです

モデルをロードする

from transformers import Blip2Processor, Blip2ForConditionalGeneration
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"

# モデル等をロードする
processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b")
model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-opt-2.7b", torch_dtype=torch.float16)
model.to(device)

画像をロードする

from PIL import Image
import requests

image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)
いつもはdiffusers.utilsload_imageを使ってたのでrequests モジュールは意識してなかったですね

猫の画像
こんな画像です

Image Captioning 実行

inputs = processor(images=image, return_tensors="pt").to(device, torch.float16)
generated_ids = model.generate(**inputs)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0].strip()

print(generated_text)

実行結果

two cats laying on a couch

日本語訳
  • (ソファに寝そべる2匹の猫)

まとめ

とりあえず使えた!やったね!
ずんだもんもやらないとね!