已合并
[众智][PyTorch离线推理][cv][EfficientNet-B1]环境配置文件、README以及脚本修改 #3246
AtomGit-Bot创建于 2022年12月29日
[众智][PyTorch离线推理][cv][EfficientNet-B1]环境配置文件、README以及脚本修改 #3246
已合并
AtomGit-Bot创建于 2022年12月29日
mycommit_B1合入到master
3 个文件变更+250-304
MACL_PyTorch/contrib/cv/classfication/EfficientNet-B1/Efficient-B1_preprocess.py+2-4
@@ -17,6 +17,7 @@ import sys
17sys.path.append("./pycls")17sys.path.append("./pycls")
18import numpy as np18import numpy as np
19import cv219import cv2
20+import tqdm
20 21 
21from pycls.datasets import transforms22from pycls.datasets import transforms
22 23 
@@ -40,16 +41,13 @@ def trans(im):
40 return im41 return im
41 42 
42def EffnetB1_preprocess(src_path, save_path):43def EffnetB1_preprocess(src_path, save_path):
43- i = 0
44 classes = os.listdir(src_path)44 classes = os.listdir(src_path)
45- for classname in classes:45+ for classname in tqdm.tqdm(classes):
46 dirs = os.path.join(src_path, classname)46 dirs = os.path.join(src_path, classname)
47 save_dir = os.path.join(save_path, classname)47 save_dir = os.path.join(save_path, classname)
48 if not os.path.isdir(save_dir):48 if not os.path.isdir(save_dir):
49 os.makedirs(os.path.realpath(save_dir))49 os.makedirs(os.path.realpath(save_dir))
50 for img in os.listdir(dirs):50 for img in os.listdir(dirs):
51- i = i + 1
52- print(img, "===", i)
53 img_path = os.path.join(dirs, img)51 img_path = os.path.join(dirs, img)
54 im = cv2.imread(img_path)52 im = cv2.imread(img_path)
55 im = trans(im)53 im = trans(im)
MACL_PyTorch/contrib/cv/classfication/EfficientNet-B1/README.md+226-292
@@ -1,337 +1,271 @@
1# EfficientNet-B1模型PyTorch离线推理指导1# EfficientNet-B1模型PyTorch离线推理指导
2 2 
3-- [1 模型概述](#1-模型概述)3+ 
4- - [1.1 论文地址](#11-论文地址)4+- [概述](#ZH-CN_TOPIC_0000001172161501)
5- - [1.2 代码地址](#12-代码地址)5+ 
6-- [2 环境说明](#2-环境说明)6+ - [输入输出数据](#section540883920406)
7- - [2.1 深度学习框架](#21-深度学习框架)
8- - [2.2 python第三方库](#22-python第三方库)
9-- [3 模型转换](#3-模型转换)
10- - [3.1 pth转onnx模型](#31-pth转onnx模型)
11- - [3.2 onnx转om模型](#32-onnx转om模型)
12-- [4 数据集预处理](#4-数据集预处理)
13- - [4.1 数据集获取](#41-数据集获取)
14- - [4.2 数据集切分](#42-数据集切分)
15- - [4.3 数据集预处理](#43-数据集预处理)
16- - [4.4 生成数据集信息文件](#44-生成数据集信息文件)
17-- [5 离线推理](#5-离线推理)
18- - [5.1 ais_infer工具概述](#51-ais_infer工具概述)
19- - [5.2 离线推理](#52-离线推理)
20-- [6 精度对比](#6-精度对比)
21- - [6.1 精度数据](#61-精度数据)
22- - [6.2 精度对比](#62-精度对比)
23-- [7 性能对比](#7-性能对比)
24- - [7.1 310P性能数据](#71-310P性能数据)
25- - [7.2 T4性能数据](#72-T4性能数据)
26- - [7.3 性能对比](#73-性能对比)
27 7 
28 8 
29 9 
10+- [推理环境准备](#ZH-CN_TOPIC_0000001126281702)
30 11 
31-## 1 模型概述12+- [快速上手](#ZH-CN_TOPIC_0000001126281700)
32 13 
33-### 1.1 论文地址14+ - [获取源码](#section4622531142816)
15+ - [准备数据集](#section183221994411)
16+ - [模型推理](#section741711594517)
34 17 
35-[EfficientNet-B1](https://arxiv.org/abs/1905.11946)*是针对网络参数扩张方式问题,经过EfficientNet-B0进行扩张提高网络性能的网络。*18+- [模型推理性能&精度](#ZH-CN_TOPIC_0000001172201573)
36 19 
37-### 1.2 代码地址
38 20 
39-[EfficientNet-B1 Pytorch实现代码](https://github.com/facebookresearch/pycls)21+# 概述<a name="ZH-CN_TOPIC_0000001172161501"></a>
40 22 
41-```sh23+EfficientNet是图像分类网络,在ImageNet上性能优异,并且在常用迁移学习数据集上达到了相当不错的准确率,参数量也大大减少,说明其具备良好的迁移能力,且能够显著提升模型效果。
42-branch=master24+ 
43-commit_id=8c79a8e2adfffa7cae3a88aace28ef45e52aa7e525+ 
44-```26+- 参考实现:
27+ 
28+ ```
29+ url=https://github.com/rwightman/pytorch-image-models
30+ ```
31+ 
32+## 输入输出数据<a name="section540883920406"></a>
33+ 
34+- 输入数据
35+ 
36+ | 输入数据 | 数据类型 | 大小 | 数据排布格式 |
37+ | -------- | -------- | ------------------------- | ------------ |
38+ | input | FLOAT32 | batchsize x 3 x 240 x 240 | NCHW |
39+ 
40+ 
41+- 输出数据
42+ 
43+ | 输出数据 | 数据类型 | 大小 | 数据排布格式 |
44+ | --------| -------- | -------- | ------------ |
45+ | output | FLOAT32 | batchsize x 1000 | ND |
46+ 
47+ 
48+# 推理环境准备<a name="ZH-CN_TOPIC_0000001126281702"></a>
49+ 
50+- 该模型需要以下插件与驱动
51+ 
52+ **表 1** 版本配套表
53+ 
54+ | 配套 | 版本 | 环境准备指导 |
55+ | ------------------------------------------------------------ | ------- | ------------------------------------------------------------ |
56+ | 固件与驱动 | 22.0.2 | [Pytorch框架推理环境准备](https://www.hiascend.com/document/detail/zh/ModelZoo/pytorchframework/pies) |
57+ | CANN | 5.1.RC2 | [CANN推理架构准备](https://www/hiascend.com/software/cann/commercial) |
58+ | Python | 3.7.5 | 创建anaconda环境时指定python版本即可,conda create -n ${your_env_name} python==3.7.5 |
59+ | PyTorch | 1.11.0 | - |
60+ | 说明:Atlas 300I Duo 推理卡请以CANN版本选择实际固件与驱动版本。 | \ | \ |
45 61 
46 62 
47 63 
64+# 快速上手<a name="ZH-CN_TOPIC_0000001126281700"></a>
65+ 
66+## 获取源码<a name="section4622531142816"></a>
67+ 
68+1. 获取源码。
69+ 
70+ ```sh
71+ git clone https://github.com/facebookresearch/pycls
72+ cd pycls
73+ git reset f20820e01eef7b9a47b77f13464e3e77c44d5e1f --hard
74+ cd ..
75+ ```
76+ 
77+2. 安装依赖,测试环境时可能已经安装其中的一些不同版本的库,故手动测试时不推荐使用该命令安装
78+ 
79+ ```
80+ pip3.7 install -r requirements.txt
81+ ```
48 82 
49 83 
50-## 2 环境说明84+## 准备数据集<a name="section183221994411"></a>
51 85 
52-### 2.1 深度学习框架86+1. 获取原始数据集。(解压命令参考tar –xvf \*.tar与 unzip \*.zip)
53 87 
54-```sh88+ 本模型支持ImageNet 50000张图片的验证集。以ILSVRC2012为例,请用户需自行获取ILSVRC2012数据集,上传数据集到服务器任意目录并解压(如:/home/HwHiAiUser/dataset)。本模型将使用到ILSVRC2012_img_val.tar验证集及ILSVRC2012_devkit_t12.gz中的meta.mat。
55-CANN == 5.1.RC189+
56-pytorch == 1.8.090+ 数据目录结构参考如下格式:
57-torchvision == 0.9.0
58-onnx == 1.10.0
59-```
60 91 
61-### 2.2 python第三方库92+ ```text
62- 93+ ├──ILSVRC2012_img_val
63-```sh94+ ├──val
64-onnx-simplifier == 0.4.595+ ├──ILSVRC2012_devkit_t12
65-isort==4.3.2196+ ├── data
66-iopath
67-fairscale
68-flake8
69-pyyaml
70-matplotlib
71-numpy
72-opencv-python
73-parameterized
74-setuptools
75-simplejson
76-submitit
77-yacs
78-yattag
79-scipy
80-decorator
81-sympy
82-```
83- 
84-安装必要的依赖,测试环境可能已经安装其中的一些不同版本的库了,故手动测试时不推荐使用该命令安装。
85- 
86-```sh
87-pip install -r requirements.txt
88-```
89- 
90- 
91- 
92- 
93- 
94-## 3 模型转换
95- 
96-### 3.1 pth转onnx模型
97- 
98-1.获取pth权重文件
99- 
100-```sh
101-wget https://ascend-pytorch-model-file.obs.cn-north-4.myhuaweicloud.com/%E4%BA%A4%E4%BB%98%E4%BB%B6/cv/image_classification/EfficientNet-B1/EN-B1_dds_8gpu.pyth
102-```
103- 
104-2.获取EfficientNet-B1源码
105- 
106-```sh
107-git clone https://github.com/facebookresearch/pycls
108-cd pycls
109-git reset f20820e01eef7b9a47b77f13464e3e77c44d5e1f --hard
110-cd ..
111-```
112- 
113-3.使用Efficient-B1_pth2onnx.py进行onnx的转换,在目录下生成Efficient-b1.onnx。
114- 
115-```sh
116-python3.7 Efficient-B1_pth2onnx.py
117-```
118- 
119-4.对onnx模型进行onnxsim优化。(以batch_size=16为例。)
120-```sh
121-python3.7 -m onnxsim --input-shape="image:16,3,240,240" ./Efficient-b1.onnx bs16_onnxsim.onnx
122-```
123- 
124-### 3.2 onnx转om模型
125- 
126-1.设置环境变量,请以实际安装环境配置。
127- 
128-```sh
129-source /usr/local/Ascend/ascend-toolkit/set_env.sh
130-```
131- 
132-2.使用atc将onnx模型转换为om模型文件,工具使用方法可以参考[CANN V100R020C10 开发辅助工具指南 (推理) 01](https://support.huawei.com/enterprise/zh/doc/EDOC1100164868?idPath=23310P424|251366513|22892968|251168373),需要指定输出节点以去除无用输出,可以使用netron开源可视化工具查看具体的输出节点名:
133- 
134-```sh
135-atc --framework=5 --model=./bs16_onnxsim.onnx --input_format=NCHW --input_shape="image:16,3,240,240" --output=Efficient-b1_bs16 --log=debug --soc_version=Ascend${chip_name} --enable_small_channl=1
136-# 此处以bs=16为例。
137-# ${chip_name}可通过npu-smi info指令查看
138-```
139- 
140-![输入图片说明](https://images.gitee.com/uploads/images/2022/0704/095450_881600a3_7629432.png "屏幕截图.png")
141- 
142-参数说明: --model:为ONNX模型文件。
143- 
144---framework:5代表ONNX模型。
145- 
146---output:输出的OM模型。
147- 
148---input_format:输入数据的格式。
149- 
150---input_shape:输入数据的shape。
151- 
152---log:日志级别。
153- 
154- --soc_version:处理器型号。
155- 
156- 
157- 
158- 
159- 
160-## 4 数据集预处理
161- 
162-### 4.1 数据集获取
163- 
164-获取原始数据集。(解压命令参考tar –xvf *.tar与 unzip *.zip)
165- 
166-本模型支持ImageNet 50000张图片的验证集。以ILSVRC2012为例,请用户需自行获取ILSVRC2012数据集,上传数据集到服务器任意目录并解压(如:/home/HwHiAiUser/dataset)。本模型将使用到ILSVRC2012_img_val.tar验证集及ILSVRC2012_devkit_t12.gz中的meta.mat。
167- 
168-数据目录结构请参考:
169- 
170-```
171-├──ILSVRC2012_img_val
172-├──val
173-├──ILSVRC2012_devkit_t12
174- ├── data
175 └── meta.mat97 └── meta.mat
176-```98+ ```
177 99 
178-### 4.2 数据集切分100+2. 数据预处理
101+ 1. 首先运行数据集切分脚本ImageNet_val_split.py切分官方val数据集,形成上述目录结构,
102+ ```
103+ python3.7 ImageNet_val_split.py ./val ./ILSVRC2012_devkit_t12
104+ ```
105+ - 参数说明:
179 106 
180-官方val数据集,形成和train一样的文件结构,即根目录-类别-图片 三级107+ - ./val:下载且未类的ImageNet的val数据集**绝对路径**(如果需要保留val文件夹请先备份)。
108+ - ./ILSVRC2012_devkit_t12:官方提供的deckit文件夹**绝对路径**
181 109 
182-```sh110+ 2. 然后将原始数据集转换为模型输入的数据,执行Efficient-B1_preprocess.py脚本,完成预处理。
183-# 第一个参数为 新下载且未分类的 imagenet的val数据集路径,111+ ```
184-# 第二个参数为官方 提供的 devkit 文件夹,如果要保留val文件夹请先备份112+ python3.7 Efficient-B1_preprocess.py ./val ./prep_dataset
185-python3.7 ImageNet_val_split.py ./val ./ILSVRC2012_devkit_t12113+ ```
186-```114+ - 参数说明:
187 115 
188-### 4.3 数据集预处理116+ - ./val:同上述val数据集**绝对路径**。
117+ - ./prep_dataset:保存数据集处理后二进制文件的文件夹**绝对路径**
189 118 
190-执行“Efficient-B1_preprocess.py”预处脚本,生成数据集预处理后的bin文件。119+## 模型推<a name="section741711594517"></a>
191 120 
192-```sh121+1. 模型转换。
193-python3.7 Efficient-B1_preprocess.py ../val ./prep_dataset
194-```
195 122 
196-### 4.4 生成数据集信息文件123+ 使用PyTorch将模型权重文件.pth转换为.onnx文件,再使用ATC工具将.onnx文件转为离线推理模型文件.om文件。
197 124 
198-生成数据集info文件。125+ 1. 获取权重文件。
199 126 
200-```sh127+ ```sh
201-python3.7 gen_dataset_info.py bin ./prep_dataset ./efficientnet-B1_prep_bin.info 240 240 128+ wget https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/model/1_PyTorch_PTH/EfficientNet-B1/PTH/EN-B1_dds_8gpu.pyth
202-```129+ ```
130+ 
131+ 2. 导出onnx文件。
132+ 
133+ 1. 使用pth2onnx导出onnx文件。
134+ 
135+ 运行pth2onnx脚本。
136+ 
137+ ```
138+ python3.7 Efficient-B1_pth2onnx.py
139+ ```
140+ 
141+ 获得Efficient-b1.onnx文件。
142+ 
143+ 2. 优化ONNX文件。
144+ 
145+ ```sh
146+ python3.7 -m onnxsim --overwrite-input-shape="image:8,3,240,240" ./Efficient-b1.onnx efficient_B1_onnxsim.onnx
147+ ```
148+ 
149+ 获得efficient_B1_onnxsim.onnx文件。
150+ 
151+ 3. 使用ATC工具将ONNX模型转OM模型。
152+ 
153+ 1. 配置环境变量。
154+ 
155+ ```
156+ source /usr/local/Ascend/ascend-toolkit/set_env.sh
157+ ```
158+ 
159+ 2. 执行命令查看芯片名称($\{chip\_name\})。
160+ 
161+ ```
162+ npu-smi info
163+ #该设备芯片名为Ascend310P3 (自行替换)
164+ 回显如下:
165+ +-------------------+-----------------+------------------------------------------------------+
166+ | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) |
167+ | Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) |
168+ +===================+=================+======================================================+
169+ | 0 310P3 | OK | 15.8 42 0 / 0 |
170+ | 0 0 | 0000:82:00.0 | 0 1074 / 21534 |
171+ +===================+=================+======================================================+
172+ | 1 310P3 | OK | 15.4 43 0 / 0 |
173+ | 0 1 | 0000:89:00.0 | 0 1070 / 21534 |
174+ +===================+=================+======================================================+
175+ ```
176+ 
177+ 3. 执行ATC命令。
178+ 
179+ ```
180+ atc --model=efficient_B1_onnxsim.onnx --framework=5 --input_format=NCHW --input_shape="image:8,3,240,240" --output=Efficientnet_b1_bs8 --soc_version=Ascend${chip\_name\} --log=debug
181+ ```
182+ 
183+ - 参数说明:
184+ 
185+ - --model:为ONNX模型文件。
186+ - --framework:5代表ONNX模型。
187+ - --input_format:输入数据的格式。
188+ - --input_shape:输入数据的shape。
189+ - --output:输出的OM模型。
190+ - --soc_version:处理器型号。
191+ - --log:日志级别。
192+ 
193+ 运行成功后生成<u>***Efficientnet_b1_bs8.om***</u>模型文件。
194+ 
195+2. 开始推理验证。
196+ 
197+ 1. 使用ais_bench工具进行推理。
198+ 
199+ ais_bench工具获取及使用方式请点击查看[ais_bench推理工具使用文档](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer),文档中aclruntime也需要安装。
200+ 
201+ 2. 建立软链接
202+ 将prep_dataset文件夹处理为工具可以输入的格式。
203+ 1. 创建用于保存软链接的文件夹
204+ ```
205+ mkdir soft_link
206+ cd soft_link
207+ ```
208+
209+ 2. 建立软链接(若无法建立,可尝试切换root用户重新建立)
210+ ```
211+ find /home/${username}/ModelZoo-PyTorch/ACL_PyTorch/contrib/cv/classfication/EfficientNet-B1/prep_dataset/ -name "*.bin" | xargs -i ln -sf {} /home/${username}/ModelZoo-PyTorch/ACL_PyTorch/contrib/cv/classfication/EfficientNet-B1/soft_link/
212+ ```
213+ 
214+ 3. 执行推理。
215+ 
216+ ```
217+ source /usr/local/Ascend/ascend-toolkit/set_env.sh
218+ python3.7 -m ais_bench --model Efficientnet_b1_bs8.om --input ./soft_link --output ./ --outfmt TXT --device 0
219+ ```
220+ 
221+ - 参数说明:
222+ 
223+ - --model:om文件路径。
224+ - --input:数据预处理后保存文件的路径。
225+ - --output:输出文件夹路径。
226+ - --outfmt:输出格式(一般为BIN或者TXT)。
227+ - --device:NPU的ID,默认填0。
228+ 
229+ 推理后的输出默认在当前目录生成{20xx_xx_xx-xx_xx_xx}文件夹。
203 230 
204 231 
205 232 
233+ 4. 精度验证。
206 234 
235+ 调用Efficient-B1_postprocess.py脚本,可以获得精度accuracy数据(top1和top5),输入指令后请稍等片刻
207 236 
208-## 5 离线推理237+ ```
238+ python3.7 Efficient-B1_postprocess.py --pre_dir ${20xx_xx_xx-xx_xx_xx} --data_dir ../val/ --save_file ./result.json
239+ ```
209 240 
210-### 5.1 ais_infer工具概述241+ - 参数说明:
211 242 
212-ais_infer工具包含前端和后端两部分。 后端基于c+开发,实现通用推理功能; 前端基于python开发,实现用户界面功能获取工具及使用方法可以参考[tools: Ascend tools - Gitee.com](https://gitee.com/ascend/tools/tree/master/ais-bench_workload/tool/ais_infer)243+ - --pre_dir:为生成推理结果所在相对路径
244+ - --data_dir:同上述val数据集绝对路径。
245+ - --save_file:保存精度验证结果的路径文件。
213 246 
214-### 5.2 离线推理247+ 5. 性能验证。
215 248 
216-1.设置环境变量请以实际安装环境配置。249+ 可使用ais_bench推理工具的纯推理模式验证不同batch_size的om模型的性能参考命令如下:
217 250 
218-```sh251+ ```
219-source /usr/local/Ascend/ascend-toolkit/set_env.sh252+ python3.7 -m ais_bench --model ./Efficientnet_b1_bs8.om --loop 5
220-```253+ ```
221 254 
222-2.安装ais_infer工具255+ - 参数说明:
223- 256+ - --model:om模型的路径
224-```sh
225-# 将工具的相关代码下载到本地
226-git clone https://gitee.com/ascend/tools.git
227-# 进入ais-bench/tool/ais_infer目录,执行如下命令进行编译,生成推理后端whl包
228-cd tool/ais_infer/backend/
229-pip3.7 wheel ./
230-# 在运行设备上执行如下命令,进行安装
231-pip3 install ./aclruntime-0.0.1-cp37-cp37m-linux_aarch64.whl
232-# 如果安装提示已经安装了相同版本的whl,请执行命令请添加参数"--force-reinstall"
233-```
234- 
235-3.建立软链接
236- 
237-```sh
238-# 由于“标签/bin文件”这一文件结构并不符合输出性能数据的要求,且直接cp文件量过多,因此选择建立软链接。
239-find ../prep_dataset/ -name "*.bin" | xargs -i ln -sf {} ./ruanlianjie
240-```
241- 
242-4.输出性能数据
243- 
244-```sh
245-# 以bs=16为例。
246-python3.7 ais_infer.py --model Efficient-b1_bs16.om --output ./ --input ./ruanlianjie --outfmt TXT
247-# --model 需要进行推理的om模型
248-# --output 推理数据输出路径
249-# --input 模型需要的输入,支持bin文件和目录,若不加该参数,会自动生成都为0的数据
250-# --outfmt 输出数据的格式,默认”BIN“,可取值“NPY”、“BIN”、“TXT”
251-```
252- 
253-5.切换到测试性能时生成的{20xx_xx_xx-xx_xx_xx}文件夹下,并删除sumary.json
254- 
255-```sh
256-rm -rf sumary.json
257-```
258- 
259-6.对性能的输出结果进行重命名,以便于输出精度。
260- 
261-```sh
262-# 由于性能输出的文件以“0.txt”结尾,不符合输出精度所要求的“以1.txt结尾”这一要求,因此需要对输出精度时输出的文件进行重命名。
263- 
264-# 安装rename,已经安装则可以跳过。
265-sudo apt-get update
266-sudo apt-get upgrade
267-sudo apt-get install rename
268-rename "s/_0.txt/_1.txt/" *
269-```
270 257 
271 258 
272 259 
273-## 6 精度对比260+# 模型推理性能&精度<a name="ZH-CN_TOPIC_0000001172201573"></a>
274 261 
275-### 6.1 精度数据262+调用ACL接口推理计算,性能参考下列数据
276 263 
277-调用Efficient-B1_postprocess.py:264+| 芯片型号 | Batch Size | 数据集| 精度TOP1 | 精度TOP5 | 性能|
278- 265+| --------- | ----| ----------| ------ |---------|---------|
279-```sh266+| 310P3 | 1 | ImageNet | 75.940 | 92.774 | 838.223 |
280-# 输出精度267+| 310P3 | 4 | ImageNet | 75.940 | 92.774 | 1235.712 |
281-python3.7 Efficient-B1_postprocess.py --pre_dir {20xx_xx_xx-xx_xx_xx} --data_dir ../val/ --save_file ./result.json268+| 310P3 | 8 | ImageNet | 75.940 | 92.774 | 1409.692 |
282-# 其中--pre_dir这一参数需要适时调整为测试性能时的输出的{20xx_xx_xx-xx_xx_xx}文件夹。269+| 310P3 | 16 | ImageNet | 75.940 | 92.774 | 1360.392 |
283-```270+| 310P3 | 32 | ImageNet | 75.940 | 92.774 | 1304.791 |
284- 271+| 310P3 | 64 | ImageNet | 75.940 | 92.774 | 1273.800 |
285-### 6.2 精度对比
286- 
287-| | **310** | **310P** |
288-| -------- | ------- | -------- |
289-| **Top1** | 75.936% | 75.936% |
290-| **Top5** | 92.774% | 92.774% |
291- 
292-###
293- 
294- 
295- 
296-## 7 性能对比
297- 
298-### 7.1 310P性能数据
299- 
300-测试npu性能要确保device空闲,使用npu-smi info命令可查看device是否在运行其它推理任务。
301- 
302-```sh
303-# 以bs=16为例。
304-python3.7 ais_infer.py --model Efficient-b1_bs16.om --output ./ --input ./ruanlianjie --outfmt TXT
305-# --model 需要进行推理的om模型
306-# --output 推理数据输出路径
307-# --input 模型需要的输入,支持bin文件和目录,若不加该参数,会自动生成都为0的数据
308-# --outfmt 输出数据的格式,默认”BIN“,可取值“NPY”、“BIN”、“TXT”
309-```
310- 
311-Interface throughputRate: 1635.3即是batch16 310P单卡吞吐率。
312- 
313-### 7.2 T4性能数据
314- 
315-在装有T4卡的服务器上测试gpu性能,测试过程请确保卡没有运行其他任务。
316- 
317-```sh
318-trtexec --onnx=./Efficient-b1.onnx --shapes=image:16x3x240x240 --threads
319-```
320- 
321-batch1 t4单卡吞吐率:1000*16/24.3536=656.98fps
322- 
323-### 7.3 性能对比
324- 
325-| | **310** | **310P** | **T4** | **310P/310** | **310P/T4** |
326-| ------------- | -------- | -------- | ------ | ------------ | ----------- |
327-| **bs1** | 944.972 | 359.09 | 353.61 | 0.38 | 1.02 |
328-| **bs16** | 1361.796 | 1635.3 | 656.98 | 1.201 | 2.49 |
329-| **最优batch** | 1361.796 | 1635.3 | 656.98 | 1.201 | 2.49 |
330- 
331-batch16:
332- 
333-310P vs 310: 1635.3fps > 1.2 * 1361.796fps
334- 
335-310P vs T4 : 1635.3fps > 1.6 * 656.98fps
336- 
337-性能在310P上的性能达到310的1.2倍,达到T4性能的1.6倍,性能达标。
MACL_PyTorch/contrib/cv/classfication/EfficientNet-B1/requirements.txt+22-8
@@ -1,9 +1,23 @@
1-pytorch==1.5.01+torch==1.11.0
2-torchvision==0.6.02+torchvision==0.12.0
3-onnx==1.7.03+onnx==1.11.0
4-numpy==1.18.54+onnxsim
5-Pillow==7.2.05+isort
6-opencv-python3==1.0
7-yacs
8iopath6iopath
9-submitit7+fairscale
8+flake8
9+pyyaml
10+matplotlib
11+numpy==1.21.6
12+opencv-python==4.5.5.64
13+parameterized
14+setuptools
15+simplejson
16+submitit
17+yacs
18+yattag
19+scipy
20+decorator
21+sympy
22+ 
23+