見出し画像

Huggingface Transformers 入門 (30) - CLIP

Huggingface Transformers」がVisionタスクにも対応したので、「CLIP」による画像分類を試してみます。

・Huggingface Transformers 4.6.0

前回

1. CLIP

「CLIP」は、OpenAIが開発した、画像とテキストの関連性をランク付けするニューラルネットワークです。従来の「教師あり学習」の画像分類では決められたラベルのみで分類するのに対し、「CLIP」では推論時に自由にラベルを指定して画像分類することができます。

「GTP-2」や「GTP-3」で使われている「Zero-shot Learning」の技術を応用することによって、この機能を実現しています。画像分類の精度も、ImageNetのラベル付きデータを使用せずに、ResNet50と同等を実現しています。

2. CLIPによる画像分類

「Google Colab」で「CLIP」による画像分類を試してみます。

(1) Huggingface Transformersのインストール。

!pip install transformers==4.6.0

(2) モデルとプロセッサの準備。

import torch
from transformers import CLIPProcessor, CLIPModel

# モデルとプロセッサの準備
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

(3) 画像を「Google Colab」にアップロード。

・cat.jpg

画像1

(4) 画像の読み込み。

from PIL import Image

# 画像の読み込み
image = Image.open('cat.jpg')

(5) ラベルの準備

# ラベルの準備
labels = ['cat', 'dog']

(6) 入力データの準備。

# 入力データの準備
inputs = processor(text=labels, images=image, return_tensors='pt', padding=True)

(7) 推論。

# 推論
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)
print('class:', labels[probs.argmax(-1).item()])
class: cat

ラベルに['white', 'black', 'red']を指定すると色、['cute', 'cool', 'scary']を指定するとかわいいかどうかなどを推論することができます。

次回



この記事が気に入ったらサポートをしてみませんか?