主题中讨论的其他器件:AM69A
工具与软件:
为什么模型分析器 ONR-CL-6110-resNet50示例比我自己使用 edgeai-tidl-tools 版本10_01_04_00编译的 RESNET50 ONNX 模型快三倍?
模型分析器 - AM69A - Example model ~23MB -输入张量: uint8[1,3224]: 2ms
edgeai-tidl-tools - AM69A - myresnet50模型~92MB -输入张量: float32[1,3224]: 6ms
它将帮助我理解为什么不在我自己的 ONNX 模型上进行量化、如果丢失量化是我的 RESNET50推理结果比模型分析器 ONR-CL-6110-RESNet50示例慢三倍的主要原因、那么这将会帮助我理解为什么没有在我自己的 ONNX 模型上进行量化。
运行我自己的 ONNX 模型的步骤:
- 准备 edgeai-tidl-tools Docker 容器。
- 运行 Docker 容器并构建示例:
source ./scripts/run_python_examples.sh
准备自己的 ONNX 模型(float32):
- 将自己的 ONNX 模型添加到:
models/public/resnet50_f32.onnx
- 将自己的 ONNX 模型配置添加到:
examples/osrt_python/model_configs.pymodels_configs = { "cl-ort-resnet50-224x224": create_model_config( task_type="classification", source=dict( model_url="", infer_shape=True, ), preprocess=dict( resize=256, crop=224, data_layout="NCHW", resize_with_pad=False, reverse_channels=False, ), session=dict( session_name="onnxrt", model_path=os.path.join(models_base_path, "resnet50_f32.onnx"), input_mean=[123.675, 116.28, 103.53], input_scale=[0.017125, 0.017507, 0.017429], input_optimization=True, # Explicit quantization keeps the ONNX on float 32 data type. # quantization=dict( # quantize=True, # quantization_style="uint8", # ), ), extra_info=dict(num_images=numImages, num_classes=1000), ),
- 编译自己的 float32 ONNX:
cd ./examples/osrt_python/ort
python3 onnxrt_ep.py -c -m cl-ort-resnet50-224x224
我找到了-o明确优化自己的 ONNX 模型的选项、但仍然没有为我提供量化模型输出。
- 可选:在 Docker 容器中推断自己的 ONNX 模型(x86 CPU 仿真):
python3 onnxrt_ep.py -m cl-ort-resnet50-224x224
- 将依赖关系自有的 ONNX 复制到 AM69A 开发底板并运行推理:
cd /home/root/
python3 ./scripts/gen_test_report.py
- AM69A 开发底板的基准测试:
- 确保目标上的 git 版本标签10_01_04_00。
- 将编译后的模型工件复制到 AM69A 器件。
python3 onnxrt_ep.py -m cl-ort-resnet50-224x224
python3 gen_test_report.py