見出し画像

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

画像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

次回



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