## MobileNetV2 MobileNetV2 是在分辨率 224x224 的 ImageNet-1k 数据集上预训练的图像分类模型。https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet 我们开发了一个 AMD Ryzen AI (https://ryzenai.docs.amd.com/en/latest/) 支持的修改版本 - https://huggingface.co/models?search=mobilenet_v2 详情可参照 https://huggingface.co/amd/mobilenet_v2_1.0_224 ## 安装 按照 https://ryzenai.docs.amd.com/en/latest/inst.html 为 Ryzen AI 准备环境。 运行以下脚本安装pre-requisites包 ```shell pip install -r requirements.txt ``` ## 推理 推理一张图片 ```shell 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) ``` vaip_config.json 来自于Ryzen AI 安装包 https://ryzenai.docs.amd.com/en/latest/inst.html, voe-4.0-win_amd64 of ryzen-ai-sw-1.0.zip. 使用 eval_onnx.py 推理 ImageNet validation dataset (50,000 Images). 测试量化模型CPU ```shell python eval_onnx.py --onnx_model=./mobilenetv2_int8.onnx --data_dir=./{DATA_PATH} ``` 测试量化模型IPU ```shell python eval_onnx.py --onnx_model=./mobilenetv2_int8.onnx --data_dir=./{DATA_PATH} --ipu --provider_config Path\To\vaip_config.json Metric Accuracy on IPU top1& top5 accuracy 75.62% / 92.52% ``` DATA_PATH: ImageNet validation目录 ### 引用 ```shell @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}, } ```