見出し画像

Huggingface Transformers 入門 (29) - Vision Transformer

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

・Huggingface Transformers 4.6.0

前回

1. Vision Transformer

Vision Transformer」(ViT)は、TransformerエンコーダでのImageNetによる画像分類の学習に成功した最初のモデルです。従来の畳み込みモデルと比較して、非常に優れた結果を達成したことで話題になりました。

2. Vision Transformerによる画像分類

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

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

!pip install transformers==4.6.0

(2) モデルと特徴抽出器の準備。

import torch
from transformers import ViTForImageClassification, ViTFeatureExtractor

# モデルと特徴抽出器の準備
model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')
feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224')

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

・cat.jpg

画像1

(4) 画像の読み込み。

from PIL import Image

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

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

# 画像をテンソルに変換
inputs = feature_extractor(images=image, return_tensors='pt')

(6) 推論。

# 推論
outputs = model(**inputs)
logits = outputs.logits # 1000クラスのスコアの配列
predicted_class_idx = logits.argmax(-1).item() # スコアが最大のインデックス
print('class:', model.config.id2label[predicted_class_idx]) # インデックスをラベルに変換
class: Egyptian cat

次回



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