边缘计算:万字长文详解高通SNPE inception_v3推理实战

本文主要讲解利用高通SNPE进行神经网络推理,主要参考:

上手SNPE-推理inception_v3 - 知乎

文中是容器做的,在conda环境下做一样的,没问题,已跑通。

在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch

上面的帖子主要是介绍如何安装tensorflow-gpu对应的cuda 和 cudnn版本

在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch_conda安装cuda_溯水襄陵_的博客-CSDN博客

主要步骤:

一、SNPE服务器环境部署 

二、tensorflow pb模型转化为dlc模型

三、服务器端利用SNPE推理

详细步骤前先说个疑问:

熟悉python的同学都喜欢利用conda建立虚拟环境,高通SNPE需要在虚拟环境中安装吗?说说我的理解,因为SNPE依赖于python的很多包,所以大体步骤可以先建立虚拟环境,然后下载高通SNPE,然后安装系统依赖和python依赖。

下面正式开始步骤:

使用高通SNPE 1.52.0

一、SNPE服务器环境部署 

结合conda 环境使用,因为使用不同的python版本

本文安装snpe版本:1.52.0

1、预备动作:安装python虚拟环境,mysnpe,python版本为3.6(基于snpe的版本对应)

2、SNPE SDK下载链接:

https://developer.qualcomm.com/downloads/qualcomm-neural-processing-sdk-ai-v1520

需要注册才可以正常下载,下载完成后为.zip文件,snpe-1.52.0.zip

利用MobaXterm工具(只要能连接服务器即可),将压缩包上传到服务器指定目录,我的目录:/home/winner/workspace/tutor,将snpe-1.52.0.zip上传至该目录,解压zip包,生成snpe-1.52.0.2724文件夹。

3、

进入该目录,执行source bin/dependencies.sh命令,检查安装依赖包是否安装,如果缺少安装即可,成功安装后如下图,有些warning,不处理好像没啥问题;

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第1张图片

执行source bin/check_python_depends.sh命令,检查python依赖包是否安装完整,安装完成后如下图,有些warning,不处理好像没啥问题;

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第2张图片

4、安装tensorflow-gpu 2.3版本

参考:

在anaconda环境中使用conda命令安装cuda、cudnn、tensorflow(-gpu)、pytorch_conda安装cuda_溯水襄陵_的博客-CSDN博客

此处注意与snpe版本对应安装,此处是对应1.52.0版本

在mysnpe环境下安装

pip install tensorflow-gpu==2.3

conda install cudatoolkit=10.1

(此处查看硬件是否支持,查看版本是否存在)

硬件是否支持:

执行nvidia-smi命令:

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第3张图片

查看版本是否存在:

conda search cudatoolkit

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第4张图片

conda install cudatoolkit=10.1

安装成功后如下界面

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第5张图片

conda search cudnn

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第6张图片

conda install cudnn=7.6

安装成功后如下界面

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第7张图片

5、添加环境变量

添加SNPE_ROOT环境变量,

执行命令:

vim ~/.bashrc

在文件末尾添加:

export SNPE_ROOT=/home/winner/workspace/tutor/snpe-1.52.0.2724

export TENSORFLOW_HOME=/home/winner/anaconda3/envs/mysnpe/lib/python3.6/site-packages/tensorflow/

此处在文件末尾添加如下指令,可在新的shell窗口启动时自动加载执行:

source /home/winner/workspace/tutor/snpe-1.52.0.2724/bin/envsetup.sh -t /home/winner/anaconda3/envs/mysnpe/lib/python3.6/site-packages/tensorflow/

其中:/home/winner/anaconda3/envs/mysnpe/lib/python3.6/site-packages/tensorflow/这个是tensorflow目录,可用命令:

pip show -f tensorflow-gpu | grep Location

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第8张图片

/home/winner/workspace/tutor/snpe-1.52.0.2724/bin/envsetup.sh这个是文件envsetup.sh的绝对目录

6、测试是否安装成功

执行以下命令,显示如下图所示,则为成功:

snpe-tensorflow-to-dlc -h

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第9张图片

上面完成表示已成功部署安装,以下是模型下载转化推理部分。

二、tensorflow pb模型转化为dlc模型

7、pb模型下载

新建空目录,inceptionv3

进入该目录,依次执行以下3条命令:

​
wget https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz

tar -zxvf inception_v3_2016_08_28_frozen.pb.tar.gz

mv inception_v3_2016_08_28_frozen.pb inception_v3.pb

​

8、pd转化为dlc格式

snpe-tensorflow-to-dlc -i inception_v3.pb -d input 1,299,299,3 --out_node InceptionV3/Predictions/Reshape_1

信息较长,截图有部分省略,显示如下界面则为转化成功:

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第10张图片

……

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第11张图片

执行下述命令,可以看到,dlc文件已经成功生成:

ls -al

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第12张图片

三、 服务器端利用SNPE推理

9、准备input数据 和 验证脚本,测试在服务器端是否可以用SNPE进行推理

依次执行以下3条指令:

python3 $SNPE_ROOT/models/inception_v3/scripts/setup_inceptionv3.py -a . -d

cp $SNPE_ROOT/models/inception_v3/data . -r

cp $SNPE_ROOT/models/inception_v3/scripts/show_inceptionv3_classifications.py .

执行ls -al命令:

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第13张图片

10、在当前Ubuntu 环境下用SNPE推理inception_v3

执行以下命令查看版本:

snpe-net-run –version

执行以下命令:

snpe-net-run --container inception_v3.dlc --input_list data/cropped/raw_list.txt

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第14张图片

执行:

ls output -la

边缘计算:万字长文详解高通SNPE inception_v3推理实战_第15张图片

11、查看推理结果

python show_inceptionv3_classifications.py -i data/cropped/raw_list.txt -o output/ -l imagenet_slim_labels.txt

本文到此结束,主要知识点归纳:

  • SNPE的安装;
  • snpe-tensorflow-to-dlc 模型转化工具的使用;
  • snpe-net-run 在Ubuntu环境下的inceptionv3模型是推理。

 

你可能感兴趣的:(边缘计算,智能座舱,边缘计算,SNPE)