转换图片和模型
请注意,下文中的样例目录均指“
cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
”目录。
export APP_HOME=$HOME/samples/cplusplus/level2_simple_inference/1_classification/resnet50_imagenet_classification
# 样例目录
1. 转换模型为om
模型
将ResNet-50
原始模型转换为适配昇腾AI处理器的离线模型(*.om文件
)
没有原始模型文件和权重文件的先阅读昨天的准备资源文章准备好资源哦
cd $APP_HOME/caffe_model # 切换到原始模型目录下
# 转换模型
atc --model=./resnet50.prototxt --weight=./resnet50.caffemodel --framework=0 --output=../model/resnet50 --soc_version=Ascend310 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
atc命令
概要
昇腾张量编译器(
Ascend Tensor Compiler
,简称ATC
)是昇腾CANN架构体系下的模型转换工具:
它可以将开源框架的网络模型(如
Caffe
、TensorFlow
等)以及Ascend IR
定义的单算子描述文件转换为昇腾AI处理器支持的离线模型。模型转换过程中,
ATC
会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。选项
--model
:原始模型文件路径
--weight
:权重文件路径
--framework
:原始框架类型0:表示
Caffe
1:表示
MindSpore
3:表示
TensorFlow
5:表示
ONNX
--soc_version
:昇腾AI处理器的版本进入“
CANN软件安装目录/compiler/data/platform_config
”目录,".ini
"文件的文件名即为昇腾AI处理器的版本,请根据实际情况选择。
--input_format
:输入数据的Format
--input_fp16_nodes
:指定输入数据类型为FP16
的输入节点名称。
--output_type
和--out_nodes
:这2个参数配合使用,指定prob
节点的第一个输出的数据类型为float32
。
--output
:生成的resnet50.om
文件存放在“样例目录/model
“目录下。建议使用命令中的默认设置,否则在编译代码前,您还需要修改sample_process.cpp
中的omModelPath
参数值。
等待数分钟后出现ATC run success
即表示模型转换成功,转换后的om
文件保存在$APP_HOME/model
文件夹里
2. 转换图片为指定规格
切换到“样例目录/data
“目录下,执行transferPic.py
脚本,将``.jpg转换为
.bin,同时将图片从
1024683的分辨率缩放为
224224`。
cd $APP_HOME/data # 数据目录
su # 切换为超级管理员用户
python3 ../script/transferPic.py # 执行脚本
常见问题
如果执行脚本报错“
ModuleNotFoundError: No module named 'PIL'
”,则表示缺少Pillow
库,请使用**pip3 install Pillow --user
**命令安装Pillow库。如果安装了Pillow库还是报错,请在超级管理员用户下执行脚本
su # 切换为超级管理员用户 pip3 install Pillow --user # 安装所需的Pillow库
在“样例目录/data
“目录下生成2个*.bin
文件。
好了,对模型和图片进行预处理就讲到这里,明天我们讲解如何编译并运行图片分类应用实例