R329 周易AIPU环境搭建和仿真实战

x1816   2021-8-1 01:00 楼主

申请了测评开发板,还在报名阶段,并没有拿到板子。好在入门教程已经发布了,先搭建一个环境,试试仿真的流程能不能走通。

主要流程参考:R329教程一|周易 AIPU 部署及仿真教程 http://bbs.eeworld.com.cn/thread-1173906-1-1.html

 

系统环境:Ubuntu 20.04 LTS

 

 

安装docker

矽速科技提供docker环境用于开发测试,因此需要先在Ubuntu里安装docker。

这部分内容可以参考网上的docker教程。例如https://developer.aliyun.com/article/763005

 

导入docker软件源

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

 

安装docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

 

下载开发环境

sudo docker pull zepan/zhouyi

需要下载的镜像比较大(接近3GB),如果由于众所周知的原因,网络连接性不稳,也可以用官方给出的百度云链接下载镜像文件。

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

# 链接: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

先别急着运行。为了方便数据交换,可以开一个共享目录,这里主机里的/home/vm/shared目录共享到容器里的/share,启动命令修改为:

sudo docker run -v /home/vm/shared:/share -i -t zepan/zhouyi /bin/bash

010718whhiei5xyxvc8q1v.png

./run_sim.sh

010718fm59mc66rmbms79c.png

模拟通过,最后一行会提示0 errors,0 warnings。

python3 quant_predict.py

010718f33vy8uxytjexbju.png

 

量化后前5个label发生了一些变化。

 

原图:

010718jrn3whhbxhewwaza.jpg

 

result.jpeg

010718irqahcqvbqihqhnm.jpg

 

生成模型文件

 

在主机上安装tensorflow

为了方便开发,在主机上安装python和tensorflow 1.15

Python通过anaconda安装,可参考https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

这里使用最新版本安装包:Anaconda3-2021.05-Linux-x86_64.sh

 

安装完anaconda后,先创建一个python3.6的虚拟环境(tensorflow 1.15不支持高版本的python)

conda create -n tf python=3.6

进入tf虚拟环境:

conda activate tf

安装tensorflow 1.15

pip install tensorflow==1.15.3

确认版本都装对了:

010718agf1s8gz4a1ffib9.png

 

下载并转换预训练模型

模型来源:https://github.com/tensorflow/models/tree/master/research/slim#pre-trained-models

将master分支下载到本地,进入research/slim子目录,安装slim模块

cd ~/models-master/research/slim
python setup.py install

根据教程,导出图:

python3 export_inference_graph.py \
--alsologtostderr \
--model_name=resnet_v1_50 \
--image_size=224 \
--labels_offset=1 \
--output_file=/home/vm/model_dump/resnet_v1_50_inf.pb

010718z547ittzv6bvd4hn.png

 

使用预训练权重冻结

其中ckpt文件在前面提到的github页面上有下载地址,解压后放到model_dump目录下。

python3 /home/vm/anaconda3/envs/tf/lib/python3.6/site-packages/tensorflow_core/python/tools/freeze_graph.py \
--input_graph=/home/vm/model_dump/resnet_v1_50_inf.pb \
--input_checkpoint=/home/vm/model_dump/resnet_v1_50.ckpt \
--input_binary=true --output_graph=/home/vm/model_dump/resnet_v1_50_frozen.pb \
--output_node_names=resnet_v1_50/predictions/Reshape_1

将冻结的pb文件复制到共享目录下。

cp ~/model_dump/resnet_v1_50_frozen.pb ~/shared/

 

仿真运行模型

量化数据集用/demos/pb/dataset里自带的数据。

 

cd /demos/pb/config

复制一份配置文件,修改为前面冻结的模型:

cp resnet_50_run.cfg resnet_50_run2.cfg

修改参数

vim resnet_50_run2.cfg

010718wqpzkhql0n4znquk.png

运行:

aipubuild config/resnet_50_run2.cfg

010718ixgag81ybd7yxhud.png

010718plliecfj78t97cfp.png

查看predict结果

编写一个view_result.py程序,和官方demo的结果对比:

mport numpy as np
outputfile = './output_resnet_50.bin'
npyoutput = np.fromfile(outputfile, dtype=np.int8)
outputclass = npyoutput.argmax()
print("1 Predict Class is %d"%outputclass)
outputfile = './output_resnet_50_2.bin'
npyoutput = np.fromfile(outputfile, dtype=np.int8)
outputclass = npyoutput.argmax()
print("2 Predict Class is %d"%outputclass)

010718d4uq4w8lf1naulwa.png

可见predict结果一致,上述流程是正确的。

010718evdy0zuychr5y9cc.png

 

附录

查看pb文件网络结构的方法

import tensorflow as tf
#model = 'resnet_v1_50_frozen.pb'
model = '/home/vm/shared/frozen_orig.pb'
graph = tf.get_default_graph()
graph_def = graph.as_graph_def()
graph_def.ParseFromString(tf.gfile.FastGFile(model, 'rb').read())
tf.import_graph_def(graph_def, name='graph')
summaryWriter = tf.summary.FileWriter('log/', graph)
#run tensorboard --logdir=log/ --port=6006

010718elu48luz8z77bfuu.png

本帖最后由 x1816 于 2021-8-1 01:16 编辑

回复评论 (2)

名字起的听玄的,学习学习。

点赞  2021-8-1 09:47

使用预训练权重冻结,这个方法不错

点赞  2021-8-1 10:57
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复