Path: blob/main/transformers_doc/ja/tensorflow/image_classification.ipynb
4544 views
Image classification
画像分類では、画像にラベルまたはクラスを割り当てます。テキストや音声の分類とは異なり、入力は 画像を構成するピクセル値。損傷の検出など、画像分類には多くの用途があります 自然災害の後、作物の健康状態を監視したり、病気の兆候がないか医療画像をスクリーニングしたりするのに役立ちます。
このガイドでは、次の方法を説明します。
このタスクと互換性のあるすべてのアーキテクチャとチェックポイントを確認するには、タスクページ を確認することをお勧めします。
始める前に、必要なライブラリがすべてインストールされていることを確認してください。
Hugging Face アカウントにログインして、モデルをアップロードしてコミュニティと共有することをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。
Load Food-101 dataset
Datasets、🤗 データセット ライブラリから Food-101 データセットの小さいサブセットを読み込みます。これにより、次の機会が得られます 完全なデータセットのトレーニングにさらに時間を費やす前に、実験してすべてが機能することを確認してください。
train_test_split
メソッドを使用して、データセットの train
分割をトレイン セットとテスト セットに分割します。
次に、例を見てみましょう。
データセット内の各例には 2 つのフィールドがあります。
image
: 食品の PIL 画像label
: 食品のラベルクラス
モデルがラベル ID からラベル名を取得しやすくするために、ラベル名をマップする辞書を作成します。 整数への変換、またはその逆:
これで、ラベル ID をラベル名に変換できるようになりました。
Preprocess
次のステップでは、ViT 画像プロセッサをロードして画像をテンソルに処理します。
過剰適合を回避し、モデルをより堅牢にするために、データセットのトレーニング部分にデータ拡張を追加します。 ここでは、Keras 前処理レイヤーを使用してトレーニング データの変換 (データ拡張を含む) を定義します。 検証データの変換 (中央のトリミング、サイズ変更、正規化のみ)。 tf.image
または 他のライブラリでも構いません。
次に、一度に 1 つの画像ではなく、画像のバッチに適切な変換を適用する関数を作成します。
🤗 データセット set_transform
を使用して、その場で変換を適用します。
最後の前処理ステップとして、DefaultDataCollator
を使用してサンプルのバッチを作成します。 🤗 Transformers の他のデータ照合機能とは異なり、 DefaultDataCollator
は、パディングなどの追加の前処理を適用しません。
Evaluate
次に、予測とラベルを compute
に渡して精度を計算する関数を作成します。
これで compute_metrics
関数の準備が整いました。トレーニングを設定するときにこの関数に戻ります。
Train
Keras を使用したモデルの微調整に慣れていない場合は、まず 基本チュートリアル を確認してください。
TensorFlow でモデルを微調整するには、次の手順に従います。
トレーニングのハイパーパラメータを定義し、オプティマイザーと学習率スケジュールを設定します。
事前トレーニングされたモデルをインスタンス化します。
🤗 データセットを
tf.data.Dataset
に変換します。モデルをコンパイルします。
コールバックを追加し、
fit()
メソッドを使用してトレーニングを実行します。モデルを 🤗 Hub にアップロードしてコミュニティと共有します。
まず、ハイパーパラメーター、オプティマイザー、学習率スケジュールを定義します。
次に、ラベル マッピングとともに TFAutoModelForImageClassification を使用して ViT を読み込みます。
Convert your datasets to the tf.data.Dataset
format using the to_tf_dataset
and your data_collator
:
compile()
を使用してトレーニング用にモデルを設定します。
予測から精度を計算し、モデルを 🤗 ハブにプッシュするには、Keras callbacks を使用します。 compute_metrics
関数を KerasMetricCallback に渡します。 PushToHubCallback を使用してモデルをアップロードします。
ついに、モデルをトレーニングする準備が整いました。トレーニングおよび検証データセット、エポック数、 モデルを微調整するためのコールバック:
おめでとう!モデルを微調整し、🤗 Hub で共有しました。これで推論に使用できるようになりました。
画像分類用のモデルを微調整する方法の詳細な例については、対応する PyTorch ノートブック
Inference
モデルを微調整したので、それを推論に使用できるようになりました。
推論を実行したい画像を読み込みます。

推論用に微調整されたモデルを試す最も簡単な方法は、それを pipeline() で使用することです。モデルを使用して画像分類用のpipeline
をインスタンス化し、それに画像を渡します。
必要に応じて、pipeline
の結果を手動で複製することもできます。
画像プロセッサをロードして画像を前処理し、input
を TensorFlow テンソルとして返します。
入力をモデルに渡し、ロジットを返します。
最も高い確率で予測されたラベルを取得し、モデルの id2label
マッピングを使用してラベルに変換します。