Huggingface Transformers 入門 (31) - Distilled Data-efficient Image Transformer
「Huggingface Transformers」がVisionタスクにも対応したので、「Distilled Data-efficient Image Transformer」による画像分類を試してみます。
・Huggingface Transformers 4.6.0
前回
1. Distilled Data-efficient Image Transformer
「Distilled Data-efficient Image Transformer」(DeiT)は、精度を維持しながら学習に必要なデータやパラメータを減らしたモデルです。ImageNet-1k(100万画像、1,000クラス)の解像度224x224で事前学習およびファインチューニングされています。
2. Distilled Data-efficient Image Transformerによる画像分類
「Google Colab」で「Distilled Data-efficient Image Transformer」による画像分類を試してみます。
(1) Huggingface Transformersのインストール。
!pip install transformers==4.6.0
(2) モデルと特徴抽出器の準備。
import torch
from transformers import AutoFeatureExtractor, DeiTForImageClassificationWithTeacher
# モデルと特徴抽出器の準備
model = DeiTForImageClassificationWithTeacher.from_pretrained('facebook/deit-base-distilled-patch16-224')
feature_extractor = AutoFeatureExtractor.from_pretrained('facebook/deit-base-distilled-patch16-224')
(3) 画像を「Google Colab」にアップロード。
・cat.jpg
(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
次回
この記事が気に入ったらサポートをしてみませんか?