---
title: 如何基于香橙派AIpro将开源框架模型转换为昇腾模型-官方技术文章-昇腾社区
description: 本文介绍如何基于香橙派AIpro将开源框架模型转换为昇腾模型。
keywords: AIpro,如何基于香橙,将开源框架模,型转换为昇腾,模型,官方技术文章,昇腾社区,前言
url: https://www.hiascend.com/developer/techArticles/20240409-1
section: (其他)
---

# 如何基于香橙派AIpro将开源框架模型转换为昇腾模型-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20240409-1
描述: 本文介绍如何基于香橙派AIpro将开源框架模型转换为昇腾模型。
关键词: AIpro,如何基于香橙,将开源框架模,型转换为昇腾,模型,官方技术文章,昇腾社区,前言

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

如何基于香橙派AIpro将开源框架模型转换为昇腾模型

如何基于香橙派AIpro将开源框架模型转换为昇腾模型

昇腾CANNAscend C香橙派

发表于: 2024/04/09

2.6k

12

## 01 前言

在前面的介绍中，我们了解了如何基于香橙派AIpro开发AI推理应用 [了解详情](https://www.hiascend.com/zh/developer/techArticles/20240326-1?envFlag=1)，然而推理之前，需要把原始网络模型 (可能是 PyTorch、TensorFlow，可能是Caffe等等) 转换成 .om 模型，然后才能调用昇腾的aclmdlExecute 等模型执行接口在香橙派AIpro进行模型推理。这个模型转换的过程就要用到 ATC 工具，目前 ATC 工具直接支持从 Caffe、ONNX、TensorFlow 以及 MindSpore模型的转换，所以如果你的训练框架是 PyTorch，则需要做 torch.onnx.export 的操作之后才能使用ATC工具。

## 02 ATC工具简介

昇腾张量编译器（Ascend Tensor Compiler，简称ATC）是昇腾模型转换工具，它可以将开源框架的网络模型（例如TensorFlow、ONNX等）转换为昇腾AI处理器支持的模型文件（.om格式），用于后续的模型推理。

模型转换过程中，ATC会进行算子调度优化、权重数据重排、内存使用优化等操作，对开源框架的网络模型做进一步调优，使其高效地在昇腾AI处理器上执行。

主要过程：

1.	开源框架网络模型经过Parser解析后，转换为昇腾的中间图IR Graph。

2.	中间图IR Graph经过图准备，图拆分，图优化，图编译等一系列操作后，转成适配昇腾AI处理器的*.om模型文件。

3.	用户可调用AscendCL提供的模型加载、执行等接口实现模型推理。

## 03 ATC工具基本使用方法

下面以Caffe框架ResNet-50网络模型为例，介绍如何使用ATC工具转换模型。

1.	将Caffe框架ResNet-50网络模型的模型文件*.prototxt、权重文件*.caffemodel上传至ATC工具所在的Linux服务器。

2.	执行如下命令进行模型转换。

```
atc --framework=0 --soc_version=${soc_version} 
--model=$HOME/mod/resnet50.prototxt 
--weight=$HOME/mod/resnet50.caffemodel 
--output=$HOME/module/out/caffe_resnet50
```

参数解释如下：

•--framework：原始网络模型框架类型，0表示Caffe框架。•--soc_version：指定模型转换时昇腾AI处理器的版本，可执行npu-smi info命令进行查询，在查询到的“Name”前增加Ascend信息，例如 “Name”对应取值为xxxyy。•--model：原始网络模型文件路径，含文件名。•--weight：原始网络模型权重文件路径，含文件名，仅当原始网络模型是Caffe时需要指定。•--output：转换后的*.om模型文件路径，含文件名，转换成功后，模型文件名自动以.om后缀结尾。

3.	若提示“ATC run success”信息，则说明模型转换成功。

在--output参数指定的路径下，可查看转换后的模型文件，例如caffe_resnet50.om。

## 04 ATC工具高阶用法介绍

上述只给出了ATC工具进行模型转换最基本的命令，本章节给出ATC工具支持的更多特性，方便用户进一步了解。

ATC工具支持将原始模型文件或昇腾*.om模型文件转换成json格式

如果用户不方便查看原始模型或离线模型的参数信息时，可以将原始模型或离线模型转成json文件进行查看：

•	原始模型文件—>json文件

```
atc --mode=1 --framework=0 --om=$HOME/mod/resnet50.prototxt 
--json=$HOME/mod/out/caffe_resnet50.json
```

•	昇腾*.om模型文件—>json文件

```
atc --mode=1 --om=$HOME/mod/out/caffe_resnet50.om  
--json=$HOME/mod/out/caffe_resnet50.json
```

ATC工具支持自定义*.om模型的输入输出数据类型

模型转换时支持指定网络模型的输入或输出节点的数据类型、Format，支持设置精度等。此处的示例命令场景是针对Caffe框架ResNet50网络模型，转换后的模型输入为FP16类型，指定Pooling算子作为输出，并且该输出节点为FP16类型。

```
atc --framework=0 --soc_version=${soc_version} 
--model=$HOME/mod/resnet50.prototxt 
--weight=$HOME/mod/resnet50.caffemodel 
--output=$HOME/mod/out/caffe_resnet50  --input_fp16_nodes="data" 
--out_nodes="pool1:0" --output_type="pool1:0:FP16"
```

ATC工具支持设置动态BatchSize/动态分辨率

某些推理场景，如检测出目标后再执行目标识别网络，由于目标个数不固定导致目标识别网络输入BatchSize不固定；如果每次推理都按照最大的BatchSize或最大分辨率进行计算，会造成计算资源浪费，因此，模型转换需要支持动态BatchSize和动态分辨率的设置，实际推理时，通过AscendCL接口设置本次推理所需的BatchSize和动态分辨率。

•	动态BatchSize

```
atc --framework=0 --soc_version=${soc_version}  
--model=$HOME/mod/resnet50.prototxt 
--weight=$HOME/mod/resnet50.caffemodel 
--output=$HOME/mod/out/caffe_resnet50 
--input_shape="data:-1,3,224,224"   --dynamic_batch_size="1,2,4,8" 
```

其中，“--input_shape ”中的“-1”表示设置动态BatchSize，具体支持哪些BatchSize由“--dynamic_batch_size”决定。

•	动态分辨率

```
atc --framework=0 --soc_version=${soc_version}  
--model=$HOME/mod/resnet50.prototxt 
--weight=$HOME/mod/resnet50.caffemodel 
--output=$HOME/mod/out/caffe_resnet50 
--input_shape="data:1,3,-1,-1"   --dynamic_image_size="224,224;448,448"
```

其中，“--input_shape ”中的“-1,-1”表示设置动态分辨率，具体支持哪些分辨率由“--dynamic_image_size ”决定。

## 05 更多学习资源

关于ATC工具更多参数和特性说明，请登录昇腾社区查阅：[1]香橙派AIpro开源样例代码：https://gitee.com/ascend/EdgeAndRobotics [了解详情](https://gitee.com/ascend/EdgeAndRobotics)[2]昇腾文档中心：https://www.hiascend.com/zh/document [了解详情](https://www.hiascend.com/zh/document)[3]香橙派AIpro学习资源一站式导航：https://www.hiascend.com/forum/thread-0285140173361311056-1-1.html [了解详情](https://www.hiascend.com/forum/thread-0285140173361311056-1-1.html)

点赞 12

本页内容

01 前言 [了解详情](https://www.hiascend.com/#id-1)

02 ATC工具简介 [了解详情](https://www.hiascend.com/#id-2)

03 ATC工具基本使用方法 [了解详情](https://www.hiascend.com/#id-3)

04 ATC工具高阶用法介绍 [了解详情](https://www.hiascend.com/#id-4)

05 更多学习资源 [了解详情](https://www.hiascend.com/#id-5)
