🚀 ResNet50 v1.5
ResNet50 v1.5 モデルは、画像分類タスクに特化したモデルです。元のResNet50 v1モデルを改良し、精度を向上させています。このモデルは、ImageNetデータセットで学習されており、NVIDIAのGPUアーキテクチャでの高速な推論が可能です。
🚀 クイックスタート
このモデルを使用することで、画像分類タスクを高速かつ高精度に行うことができます。以下のセクションでは、モデルの詳細、使用例、技術的な詳細などを説明します。
✨ 主な機能
- 高精度: ResNet50 v1.5は、元のResNet50 v1モデルよりも若干精度が高いです(トップ1精度で約0.5%向上)。
- 高速推論: Tensor Coresを使用した混合精度学習により、Tensor Coresを持たない環境よりも2倍以上高速に推論が可能です。
- 柔軟なデプロイ: TorchScript、ONNX Runtime、TensorRTを使用して、NVIDIA Triton Inference Server上でデプロイできます。
📦 インストール
サンプルコードを実行するには、いくつかの追加のPythonパッケージが必要です。これらは画像の前処理と可視化に使用されます。
!pip install validators matplotlib
💻 使用例
基本的な使用法
import torch
from PIL import Image
import torchvision.transforms as transforms
import numpy as np
import json
import requests
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
print(f'Using {device} for inference')
resnet50 = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_resnet50', pretrained=True)
utils = torch.hub.load('NVIDIA/DeepLearningExamples:torchhub', 'nvidia_convnets_processing_utils')
resnet50.eval().to(device)
uris = [
'http://images.cocodataset.org/test-stuff2017/000000024309.jpg',
'http://images.cocodataset.org/test-stuff2017/000000028117.jpg',
'http://images.cocodataset.org/test-stuff2017/000000006149.jpg',
'http://images.cocodataset.org/test-stuff2017/000000004954.jpg',
]
batch = torch.cat(
[utils.prepare_input_from_uri(uri) for uri in uris]
).to(device)
with torch.no_grad():
output = torch.nn.functional.softmax(resnet50(batch), dim=1)
results = utils.pick_n_best(predictions=output, n=5)
for uri, result in zip(uris, results):
img = Image.open(requests.get(uri, stream=True).raw)
img.thumbnail((256,256), Image.ANTIALIAS)
plt.imshow(img)
plt.show()
print(result)
📚 ドキュメント
モデルの入力と出力、学習方法、推論、パフォーマンスに関する詳細情報については、以下のリンクを参照してください。
🔧 技術詳細
ResNet50 v1.5 モデルは、元のResNet50 v1モデル の改良版です。v1とv1.5の違いは、ダウンサンプリングが必要なボトルネックブロックにおいて、v1は最初の1x1畳み込みでstride = 2を持ち、v1.5は3x3畳み込みでstride = 2を持つことです。この違いにより、ResNet50 v1.5はv1よりも若干精度が高くなります(トップ1精度で約0.5%向上)が、少しパフォーマンスが低下します(約5% imgs/sec)。
モデルは Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification で説明されているように初期化されます。このモデルは、Volta、Turing、NVIDIA Ampere GPUアーキテクチャのTensor Coresを使用した混合精度で学習されています。したがって、研究者はTensor Coresを使用しない学習よりも2倍以上速い結果を得ることができ、混合精度学習の利点を享受することができます。このモデルは、各NGC月次コンテナリリースに対してテストされ、経時的に一貫した精度とパフォーマンスを保証します。
📄 ライセンス
このモデルはApache-2.0ライセンスの下で提供されています。
📚 参考文献