🤗
🤗15行のPythonでBLIPによる画像キャプション生成🤗
Google Colabolatory等で実行してね
# 依存関係セットアップ
!pip install transformers
# モデルの読み込み
from transformers import BlipProcessor, BlipForConditionalGeneration
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large")
# 画像キャプション生成する関数の定義
from PIL import Image
import requests
def generate_caption(image_url):
raw_image = Image.open(requests.get(image_url, stream=True).raw).convert('RGB')
w,h = raw_image.size
display(raw_image.resize((w//15,h//15)))
# こういうヒントを与えてあげることができる
# 画像の種類が不明な場合は削ってください
text = "a photography of"
inputs = processor(raw_image, text, return_tensors="pt")
# max_length=20が推奨されてるけど詳しく説明させてみたいので長めにしている
out = model.generate(**inputs, min_length=20, max_length=50)
generated_caption = processor.decode(out[0], skip_special_tokens=True)
print(generated_caption)
ここまでコメントと空行除いて15行
generate_caption
関数を呼び出す
generate_caption('https://i.gyazo.com/0301ae28236d7a50abedb0f2670bf170.jpg')
Discussion