本文主要讲解利用高通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,不处理好像没啥问题;
执行source bin/check_python_depends.sh命令,检查python依赖包是否安装完整,安装完成后如下图,有些warning,不处理好像没啥问题;
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命令:
查看版本是否存在:
conda search cudatoolkit
conda install cudatoolkit=10.1
安装成功后如下界面
conda search cudnn
conda install cudnn=7.6
安装成功后如下界面
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
/home/winner/workspace/tutor/snpe-1.52.0.2724/bin/envsetup.sh这个是文件envsetup.sh的绝对目录
6、测试是否安装成功
执行以下命令,显示如下图所示,则为成功:
snpe-tensorflow-to-dlc -h
上面完成表示已成功部署安装,以下是模型下载转化推理部分。
二、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
信息较长,截图有部分省略,显示如下界面则为转化成功:
……
执行下述命令,可以看到,dlc文件已经成功生成:
ls -al
三、 服务器端利用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命令:
10、在当前Ubuntu 环境下用SNPE推理inception_v3
执行以下命令查看版本:
snpe-net-run –version
执行以下命令:
snpe-net-run --container inception_v3.dlc --input_list data/cropped/raw_list.txt
执行:
ls output -la
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模型是推理。