一、开发板申请
为了让开发者更快得体验搭载周易AIPU处理器的R329芯片,极术社区联合矽速科技共同推出了R329开发板申请活动。该R329开发板由矽速科技开发,支持智能语音和视频,同时提供周易AIPU SDK下载。申请流程参考:https://aijishu.com/e/1120000...
二、环境搭建及仿真测试
宿主系统:ubuntu14.04
全程测试验证在矽速科技提供的docker环境里面测试完成。
1、下载及搭建环境
docker pull zepan/zhouyi
由于之前宿主系统已经安装过了docker,所以直接pull zhouyi的镜像即可。
docker run -i -t zepan/zhouyi /bin/bash
cd ~/demos/tflite
./run_sim.sh
python3 quant_predict.py
进入到docker容器内部,运行其中的例程测试环境是否正常?一切OK。
2、生成模型文件及仿真测试
目前 NN compiler 支持pb,tflite,caffemodel,onnx格式,用户需要先转换自己的模型格式到对应格式。
预训练模型文件在github上可以下载:
https://github.com/tensorflow...
这次选择的是VGG 16;在容器内部/root/demos/下新建一个目录test,用于存放下载的vgg模型。
cd test
wget http://download.tensorflow.org/models/vgg_16_2016_08_28.tar.gz
tar -xzvf vgg_16_2016_08_28.tar.gz
git clone git://github.com/tensorflow/models.git # download tools
# Get Graph
python3 ./models/research/slim/export_inference_graph.py \
--alsologtostderr --model_name=vgg_16 \
--image_size=224 --labels_offset=1 \
--output_file=./vgg_16_inf.pb
# Frozen
python3 /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/tools/freeze_graph.py \
--input_graph=./vgg_16_inf.pb \
--input_checkpoint=./vgg_16.ckpt \
--input_binary=true --output_graph=./vgg_16_frozen.pb \
--output_node_names=vgg_16/fc8/squeezed
docker环境里面不支持git,所以需要先手动安装git,然后才能下载tensorflow model garden;同时由于服务器不支持https,故改成了用git协议下载。
apt-get install git
git clone git://github.com/tensorflow/models.git
docker环境会报错:ModuleNotFoundError: No module named 'tf_slim',需要手动安装(缺啥补啥^_^),如下:
pip3 install tf_slim
下载好预训练的ckpt文件后,转换vgg_16.ckpt到冻结的pb文件, 这里建议使用tf1.13~1.15之间的版本。
注意:如果在docker里面执行到Get Graph时候报urllib.error.URLError系列的网络错误,需要检查下服务器的网络环境,实在不行只能考虑网络翻墙或者转到windows下去生成了。
最终生成的模型文件为:vgg_16_frozen.pb
3、生成矫正集
将图片和label放到/root/demos/tflite/dataset目录下的img路径下,修改label.txt为对应的图片描述,
执行preprocess_dataset.py 生成dataset.npy和label.npy矫正集文件。
PS:需要用docker cp从宿主机将图片拷贝到对应容器内部;或者直接使用自带的几张图片;我这次使用了自带的。
4、生成需要验证的input.bin
进入到/root/demos/tflite/model目录下;拷贝你想要推理的图片到该目录下并改名成1.jpg(因为model下的gen_inputbin.py脚本会读入1.jpg来生成input.bin,你不想改名的话就自行改py文件吧);
cp /root/demos/tflite/dataset/img/ILSVRC2012_val_00000001.JPEG 1.jpg
python3 gen_inputbin.py
ILSVRC2012_val_00000001.JPEG可以手动拷贝到宿主机上看是蛇的图片(这是这次准备输入进行推理的图片,你也可以拷贝其他图片去生成input.bin来进行推理验证):
4、编译及运行
cd /root/demos/tflite/
cp /root/demos/test/vgg_16_frozen.pb ./model
将刚才生成在test下的的vgg_16_frozen.pb拷贝进来。
在/root/demos/tflite/config下自行编写一个config/tf_vgg_16_run.cfg,内容如下:
[Common]
mode = run
[Parser]
#model_type = tflite
model_name=vgg_16
detection_postprocess=
model_domain=image_classification
input_model=./model/vgg_16_frozen.pb
input=input
input_shape=[1, 224, 224, 3]
output=vgg_16/fc8/squeezed
output_dir=./
[AutoQuantizationTool]
quantize_method=SYMMETRIC
quant_precision=int8
ops_per_channel=DepthwiseConv
reverse_rgb=False
label_id_offset=0
dataset_name=
detection_postprocess=
anchor_generator=
log=False
calibration_data=./dataset/dataset.npy
calibration_label=./dataset/label.npy
[GBuilder]
inputs=./model/input.bin
simulator=aipu_simulator_z1
outputs=./output_vgg_16.bin
profile=True
target=Z1_0701
cd /root/demos/tflite/
aipubuild ./config/tf_vgg_16_run.cfg
5、结果分析
手动改/root/demos/tflite下的quant_predict.py如下图:
主要是将outputfile参数改成对应生成的output_vgg_16.bin,还有将dtype参数改成np.int8(否则推理出来的结果会不准!!)
python3 ./quant_predict.py
Detect picture save to result.jpeg
对比预测结果,可以看到较准确地预测了input.bin中图片内容为green mamba(绿曼巴蛇)。
最后,记得保存操作的容器环境,下次直接进入docker还存在之前安装过的软件及测试生成的文件,在宿主系统下操作:
docker commit 容器ID zepan/zhouyi
三、模型实机测试
待申请好R329开发板后,实机评测验证。
四、附件
原始模型文件
矫正集的data.npy和label.npy
NN compiler的cfg文件
simulator执行的输入输出结果,比较运算量化误差
上传到百度云:
链接: https://pan.baidu.com/s/1ttsw...
提取码: a3yb