[DSW Gallery] Metric Learning Example Based on Residual Network

EasyCV メトリック学習
  メトリック学習は類似性学習とも呼ばれ、広範な応用用途を持ち、データセット上に適切な距離メトリックを構築することで実用的な問題のモデル化と解決に役立てられています。距離メトリック学習は機械学習における典型的なタスクであり、通常 KNN や K-means などの既存のメトリックベースの手法と組み合わせて分類やクラスタリングを行い、優れた成果を上げています。
  この記事では、PAI-DSW 上で EasyCV を使用してメトリックモデルのトレーニングと推論を素早く実行する方法を紹介します。
動作環境の要件
PAI-Pytorch 1.7/1.8 イメージ、GPU は P100 または V100、メモリ 32 GB
依存関係のインストール
注意:PAI-DSW Docker 環境では依存関係をインストールする必要がないため、手順 1 および 2 をスキップできます。ローカルのノートブック環境では、手順 1 および 2 を実行して環境をセットアップしてください。
1. torch と CUDA のバージョンを取得し、バージョン番号に応じて mmcv のインストールコマンドを修正して、対応するバージョンの mmcv と nvidia-dali をインストールします。
import torch
import os
os.environ['CUDA']='cu' + torch.version.cuda.replace('.', '')
os.environ['Torch']='torch'+torch.version.__version__.replace('+PAI', '')
。echo $CUDA
。echo $Torch
cu101
torch1.8.1+cu101
# install some python deps
。pip install --upgrade tqdm
。pip install mmcv-full==1.4.4 -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
。pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/third_party/nvidia_dali_cuda100-0.25.0-1535750-py3-none-manylinux2014_x86_64.whl
2. EasyCV アルゴリズムパッケージのインストール 注意:pai-easycv ライブラリは PAI-DSW Docker にプリインストール済みなので、この手順はスキップできます。トレーニングやテストのプロセスでエラーが発生した場合は、次のコマンドで EasyCV のバージョンを更新してみてください。
#pip install pai-easycv
。echo y | pip uninstall pai-easycv easycv
。 pip install http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/EasyCV/pkgs/whl/2022_6/pai_easycv-0.3.0-py3-none-any.whl
3. 簡単な検証
from easycv.apis import *
CUB200 メトリック学習
次の例では、CUB200 データを使用して ResNet50 モデルで画像分類モデルのトレーニング評価およびモデル予測のプロセスを素早く実行する方法を紹介します。
データ準備
cub200 データをダウンロードし、data/cub200 ディレクトリに解凍します。ディレクトリ構造は次のとおりです。
data/cub200
├── images
├── images.txt
├── image_class_labels.txt
├── train_test_split.txt
。mkdir -p data/ && wget https://s3.amazonaws.com/fast-ai-imageclas/CUB_200_2011.tgz && tar -xzf CUB_200_2011.tgz -C data/ && mv data/CUB_200_2011 data/cub200
モデルのトレーニング
トレーニング設定ファイルをダウンロードします。デフォルトでは ImageNet 事前学習モデルの重みがインポートされます。自己教師あり事前学習モデルを使用する場合は、前述のリンクからダウンロードし、設定ファイル内の設定を置き換えてください。
。rm -rf cub_resnet50_jpg.py
。wget https://raw.githubusercontent.com/alibaba/EasyCV/master/configs/metric_learning/cub_resnet50_jpg.py
1 枚の GPU でトレーニングと検証セットの評価を実行します。処理を高速化するには、cub_resnet50_jpg.py 内の total_epoch パラメータを 10 に設定します。
。python -m torch.distributed.launch --nproc_per_node=1 --master_port=29500 /home/pai/lib/python3.6/site-packages/easycv/tools/train.py cub_resnet50_jpg.py --work_dir work_dirs/metric_learning /cub/r50 --launcher pytorch --fp16
モデルのエクスポート
モデルのトレーニングが完了したら、export コマンドを使用して推論用モデルをエクスポートします。エクスポートされたモデルには、推論に必要な前処理情報と後処理情報が含まれています。
# トレーニングで生成された pt ファイルの確認
。ls work_dirs/metric_learning/cub/r50*
RetrivalTopKEvaluator_R@K=1_best.pth はトレーニングプロセス中に生成された最も精度が高い pth であり、このモデルをエクスポートします。
。python -m easycv.tools.export ./cub_resnet50_jpg.py work_dirs/metric_learning/cub/r50/RetrivalTopKEvaluator_R@K=1_best.pth work_dirs/metric_learning/cub/r50/best_export.pth
予測
テスト画像のダウンロード
。 wget http://pai-vision-data-hz.oss-cn-zhangjiakou.aliyuncs.com/data/fine_grain_cls/cub_raw/images/001.Black_footed_Albatross/Black_Footed_Albatross_0001_796111.jpg
モデルの重みをインポートし、テスト画像の分類予測を実行します。
import cv2
from easycv.predictors.feature_extractor import TorchFeatureExtractor
output_ckpt = 'work_dirs/metric_learning/cub/r50/best_export.pth'
tcls = TorchFeatureExtractor(output_ckpt)
img = cv2.imread('Black_Footed_Albatross_0001_796111.jpg')
# 入力画像は RGB 順序にしてください
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
output = tcls. predict([img])

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.