Downloads · 30 days
0
amd/mobilenet_v2_1.0_224
mobilenet_v2_1.0_224 is a image classification model from amd. Use it when you need a label for an image. The card lists the license as apache-2.0.
MobileNetV2 is an image classification model pre-trained on ImageNet-1k dataset at resolution 224x224. It was introduced in the paper MobileNetV2: Inverted Residuals and Linear Bottlenecks by Mark Sandler et al. and f…
Downloads · 30 days
0
Access
Public
Updated Jan 12, 2024
Repo size
48.9 MB
Likes
0
Public
Click a slice to open those files.
.onnx24.5 MB · 100%
From the Hugging Face model README
MobileNetV2 is an image classification model pre-trained on ImageNet-1k dataset at resolution 224x224. It was introduced in the paper MobileNetV2: Inverted Residuals and Linear Bottlenecks by Mark Sandler et al. and first released in this repository.
We develop a modified version that could be supported by AMD Ryzen AI.
MobileNetV2 is a simple network architecture that allows to build a family of highly efficient mobile models. It allows memory-efficient inference. MobileNetV2 is a model typically used for image classification tasks. And also can be used for object detection and image segmentation tasks. All tasks show competitive results.
The model is named mobilenet_v2_depth_size, for example, mobilenet_v2_1.4_224, where 1.4 is the depth multiplier and 224 is the resolution of the input images the model was trained on.
You can use the raw model for image classification. See the model hub to look for fine-tuned versions on a task that interests you.
Follow Ryzen AI Installation to prepare the environment for Ryzen AI.
Run the following script to install pre-requisites for this model.
pip install -r requirements.txt
Inference one image (Image Classification):
import sys
import onnxruntime
import torch
import torchvision.transforms as transforms
from PIL import Image
image_path = sys.argv[1]
onnx_model = sys.argv[2]
normalize = transforms.Normalize(
mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
img_transformer = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
normalize])
img_tensor = img_transformer(Image.open(image_path)).unsqueeze(0)
img_tensor = torch.permute(img_tensor, (0, 2, 3, 1))
so = onnxruntime.SessionOptions()
ort_session = onnxruntime.InferenceSession(
onnx_model, so,
providers=['CPUExecutionProvider'],
provider_options=None)
input = img_tensor.numpy()
ort_input = {ort_session.get_inputs()[0].name: input}
output = ort_session.run(None, ort_input)
top5_probabilities, top5_class_indices = torch.topk(torch.nn.functional.softmax(torch.tensor(output[0])), k=5)
Evaluate ImageNet validation dataset (50,000 Images), using eval_onnx.py .
Test accuracy of the quantized model on CPU.
python eval_onnx.py --onnx_model=./mobilenetv2_int8.onnx --data_dir=./{DATA_PATH}
Test accuracy of the quantized model on IPU.
python eval_onnx.py --onnx_model=./mobilenetv2_int8.onnx --data_dir=./{DATA_PATH} --ipu --provider_config Path\To\vaip_config.json
Users can use vaip_config.json in folder voe-4.0-win_amd64 of ryzen-ai-sw-1.0.zip file.
DATA_PATH: Path to ImageNet dataset where contains the validation folder.
Dataset: ImageNet validation dataset (50,000 images).
| Metric | Accuracy on IPU |
|---|---|
| top1& top5 accuracy | 75.62% / 92.52% |
@article{MobileNet v2,
author = {Mark Sandler and
Andrew G. Howard and
Menglong Zhu and
Andrey Zhmoginov and
Liang{-}Chieh Chen},
title = {MobileNetV2: Inverted Residuals and Linear Bottlenecks},
year = {2018},
url = {http://arxiv.org/abs/1801.04381},
}