CANN体验随笔
使用的镜像规格如下所示:
这表示我们使用的CANN版本是5.1.RC2.alpha005,这在现在来说是很新的版本了。
模型转换注意事项:
使用2022年CANN训练营第一期的镜像camp-course-2022-6(5.0.5.alpha001)转换模型报错,推测是不支持静态AIPP和动态Batch的组合,若用动态AIPP和动态Batch组合,则可成功转换模型,但未测试能否进行后续推理。
在本次体验中,我们基本可以不用考虑环境配置和依赖安装问题,因为所用镜像已经基本配置好了,感谢工程师的支持,为我们省了很多事。不过为了深入了解,我还是希望能自己动手做一遍。
以下配置和准备都是对于开发环境与运行环境合设场景,因为我们这次使用的是开发环境与运行环境合设场景,如果使用的是开发环境与运行环境分设场景,请参见配置介绍。
温馨提示:
这次所用镜像的安装用户是HwHiAiUser
,如果你用root
用户登录的ECS,可通过如下命令切换:
su - HwHiAiUser
环境变量配置及其他准备
开发环境与运行环境合设场景
-
配置环境变量。
以安装用户在任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc
在文件最后一行后面添加如下内容。
export CPU_ARCH=`arch` # 使用arch命令自动获取当前操作系统架构 export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH} # 存储第三方库文件的路径,例如依赖安装中的OpenCV、FFmpeg等 export LD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH # 运行时链接库文件 export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest # CANN软件安装后文件存储路径,若是root用户安装,$HOME请替换为/usr/local
执行命令保存文件并退出。
:wq!
执行命令使其立即生效。
source ~/.bashrc
-
创建第三方依赖文件夹。
mkdir -p ${THIRDPART_PATH}
-
下载samples仓源码。
cd ${HOME} # 此处以将samples源码仓下载到用户家目录为例,开发者可自定义下载路径 sudo apt-get install git git clone https://gitee.com/ascend/samples.git
-
将samples源码仓中的公共库拷贝到前面创建的第三方依赖文件夹中。
cp -r ${HOME}/samples/common ${THIRDPART_PATH}
依赖安装
OpenCV
使用OpenCV接口的作用是进行输入视频文件的读取,以及所有类型输出数据的后处理,数据后处理包括目标标注、不同类型数据的输出,为此必选依赖。
-
开发环境与运行环境合设场景
在环境上执行如下命令安装OpenCV:
sudo apt-get install libopencv-dev
FFmpeg
FFmpeg的作用是在输入数据类型为RTSP视频流或者离线视频的情况下,进行数据切帧的操作,如果您的业务不包含输入时RTSP视频流或者离线视频的场景,该第三方库实际上并不会被调用,可以不安装此依赖。
-
开发环境与运行环境合设场景
在环境上参考如下命令使用源码编译的方式安装FFmpeg:
# 下载并解压缩FFmpeg安装包,此处以将FFmpeg安装包存储在用户家目录下为例,开发者也可以自定义FFmpeg安装包存储路径。 cd ${HOME} wget http://www.ffmpeg.org/releases/ffmpeg-4.1.3.tar.gz --no-check-certificate tar -zxvf ffmpeg-4.1.3.tar.gz cd ffmpeg-4.1.3 # 安装ffmpeg ./configure --enable-shared --enable-pic --enable-static --disable-x86asm --prefix=${THIRDPART_PATH} # 我使用的是双核处理器,这里选择2,可根据实际处理器核心数选择 make -j2 make install
PresentAgent
PresentAgent是为了将带有推理结果的图片数据发送到网页进行显示,如果您的业务场景不存在需要在网页观察推理结果的情况,可以不安装PresentAgent。由于PresentAgent依赖Protobuf,所以若需要使用PresentAgent,也要要同步安装Protobuf。
-
开发环境与运行环境合设场景
在环境上参考如下命令使用源码方式安装Protobuf以及PresentAgent:
# 安装Protobuf相关依赖 sudo apt-get install autoconf automake libtool # 下载Protobuf源码,此处以将Protobuf存储在用户家目录下为例,开发者也可以自定义Protobuf源码的存储路径。 cd ${HOME} git clone -b 3.13.x https://gitee.com/mirrors/protobufsource.git protobuf # 编译安装Protobuf cd protobuf ./autogen.sh ./configure --prefix=${THIRDPART_PATH} make clean # 我使用的是双核处理器,这里选择2,可根据实际处理器核心数选择 make -j2 sudo make install # 进入PresentAgent源码目录并编译,PresentAgent源码存储在samples仓的“cplusplus/common/presenteragent”目录下,此处以samples源码存储在用户家目录下为例 cd ${HOME}/samples/cplusplus/common/presenteragent/proto ${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./ # 编译安装Presentagnet cd .. make -j2 make install
AclLite
AclLite库是对AscendCL DVPP图像和视频处理相关接口,AscendCL设备管理、资源管理、模型推理等接口进行了封装,旨在为用户提供一组更简易的公共接口。本样例是基于AclLite接口进行的开发,所以需要下载并编译安装AclLite库。
-
开发环境与运行环境合设场景
-
获取samples仓源码包
此处已将samples仓下载到$HOME路径下为例,若之前步骤已经下载过此源码包,则此处无需重复下载,直接进行第2个步骤即可。
可以使用以下两种方式下载,请选择其中一种即可- 命令行下载
cd ${HOME} git clone https://gitee.com/ascend/samples.git
- 压缩包下载
# 1. samples仓右上角选择 【克隆/下载】 下拉框并选择 【下载ZIP】。 # 2. 将ZIP包上传到普通用户家目录中,【例如:${HOME}/ascend-samples-master.zip】。 # 3. 执行以下命令,解压zip包。 cd ${HOME} unzip ascend-samples-master.zip
- 命令行下载
2.进入acllite目录
cd ${HOME}/samples/cplusplus/common/acllite
3.执行编译安装命令。
make make install
安装完成后,编译生成的libacllite.so会被拷贝到
${THIRDPART_PATH}/lib
路径下;头文件会被拷贝到${THIRDPART_PATH}/include/acllite
路径。须知:若定制了AclLite库中代码,则需要重新编译。
-
最后运行时,Ascend 310运行情况:
- 点赞
- 收藏
- 关注作者
评论(0)