【周易AIPU 仿真】R329开发板系列一:环境的搭建和PC端仿真

首发极术社区
如对Arm相关技术感兴趣,欢迎私信aijishu20加入技术微信群。

R329开发板第一步:搭建仿真开发环境

上次用的是Resnet50,做这个实验的人太多了,这次将网络换成了inception_v3

等收到开发板之后,再移植一个人脸检测模型,详细测试一下模型的int8量化精度损失情况和在板子上的加速情况,测试一下官方的量化算法对模型的友好程度。
inception系列要注意的地方:

  • inception系列预处理方式和resnet系列不一样
  • inception_v4的输入是299 * 299
  • 因为使用softmax的前一层做输出,注意要将predict的数据类型改成 int8,这个可以看aipu的输出的txt文件判断。

官方的SDK中有AIPU的详细介绍,例如 Arm China AI Platform Zhouyi Compass Software,其中还简述了int8量化的基本原理

1、使用矽速科技提供的docker环境进行开发

百度云下载镜像文件(压缩包约2.9GB,解压后约5.3GB), 进入docker

# 链接:https://pan.baidu.com/s/1yaKBPDxR_oakdTnqgyn5fg 
# 提取码:f8dr 

gunzip zhouyi_docker.tar.gz
sudo docker load --input zhouyi_docker.tar
sudo docker run -i -t zepan/zhouyi  /bin/bash

2、验证docker

cd ~/demos/tflite
./run_sim.sh
python3 quant_predict.py

3、下载模型,转换模型

wget http://download.tensorflow.org/models/inception_v3_2016_08_28.tar.gz
tar -xzvf inception_v3_2016_08_28.tar.gz

安装 slim 模块
cd models-master/research/slim
python setup.py install --user

git clone https://github.com/tensorflow/models.git # dowbload tools

# Get Graph
python3 models/research/slim/export_inference_graph.py --alsologtostderr --model_name=inception_v3 --image_size=224 --labels_offset=0 --output_file=./tmp/inception_v3.pb

# Frozen
python3 tensorflow-r1.5/tensorflow/python/tools/freeze_graph.py --input_graph=/root/demos/tflite/tmp/inception_v3.pb --input_checkpoint=/root/demos/tflite/tmp/inception_v3.ckpt --input_binary=true --output_graph=/root/demos/tflite/tmp/inception_v3_frozen.pb --output_node_names=InceptionV3/Predictions/Reshape

output_node_names:
在这里插入图片描述

生成的.pb模型文件
在这里插入图片描述

4、量化用的校准数据集

校准数据集我是直接使用的给定的5张图片(实验室的网速太慢了),在实际部署的时候,最好要覆盖全部可能出现的场景,这样才能得到有代表性的激活分布,从而得到最佳的量化因子 ,使用preprocess_dataset_wlk.py 文件生成dataset_wlk.npy和label_wlk.npy文件待用。
注意:preprocess_dataset_wlk.py这个地方的预处理变了。
在这里插入图片描述

可以看到,inception系列和resnet系列的预处理方式是不一样的。
在这里插入图片描述

5. 生成输入.bin文件

1.第一张用原来的 input.bin来对比FP32和量化后推理的结果
在这里插入图片描述

2.自己使用gen_inputbin.py生成snake.bin图片,看看别的图片的效果
原图是这样:
在这里插入图片描述

6. NN compiler的cfg文件

拷贝一份config文件里的tflite_mobilenet_v2_run.cfg,更改文件名inception_v3.cfg,根据模型,数据的位置进行修改,具体的配置如下。

[Common]
mode=run

[Parser]
model_name = inception_v3
detection_postprocess = 
model_domain = image_classification
output = InceptionV3/Predictions/Reshape
input_model = ./model/inception_v3_frozen.pb
input = input
input_shape = [1,224,224,3]
output_dir = ./

[AutoQuantizationTool]
model_name = inception_v3
quantize_method = SYMMETRIC
ops_per_channel = DepthwiseConv
calibration_data = ./dataset/dataset_wlk.npy
calibration_label = ./dataset/label_wlk.npy
preprocess_mode = normalize
quant_precision=int8
reverse_rgb = False
label_id_offset = 0

[GBuilder]
inputs=./model/snake.bin
outputs=./output/output_inception_v3.bin
simulator=aipu_simulator_z1
profile= True
target=Z1_0701

在这里插入图片描述

7. simulator执行的输入输出结果

执行aipubuild进行模型的量化和仿真测试。

aipubuild config/inception_v3.cfg

在这里插入图片描述

在output目录下已经得到了output_inception_v3.bin文件。
在这里插入图片描述

8、执行 python quant_predict.py 得到结果

python quant_predict.py

第一张狗狗图片的输出结果,可以看见FP32的结果和量化后的结果是一样的。
在这里插入图片描述

在这里插入图片描述

第二张蛇的图片得到如下的输出:可以看出来,结果也都 蛇 相关的类别,还是挺准确的。
在这里插入图片描述

在这里插入图片描述

本次仿真用到的相关文件,提取码:94tz

相关阅读:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值