CANN体验随笔

举报
Tianyi_Li 发表于 2022/06/19 14:46:01 2022/06/19
【摘要】 使用的镜像规格如下所示:模型转换注意事项:使用2022年CANN训练营第一期的镜像camp-course-2022-6(5.0.5.alpha001)转换模型报错,推测是不支持静态AIPP和动态Batch的组合,若用动态AIPP和动态Batch组合,则可成功转换模型,但未测试能否进行后续推理。

使用的镜像规格如下所示:

image.png

这表示我们使用的CANN版本是5.1.RC2.alpha005,这在现在来说是很新的版本了。

模型转换注意事项:

使用2022年CANN训练营第一期的镜像camp-course-2022-6(5.0.5.alpha001)转换模型报错,推测是不支持静态AIPP和动态Batch的组合,若用动态AIPP和动态Batch组合,则可成功转换模型,但未测试能否进行后续推理。

image.png

在本次体验中,我们基本可以不用考虑环境配置和依赖安装问题,因为所用镜像已经基本配置好了,感谢工程师的支持,为我们省了很多事。不过为了深入了解,我还是希望能自己动手做一遍。

以下配置和准备都是对于开发环境与运行环境合设场景,因为我们这次使用的是开发环境与运行环境合设场景,如果使用的是开发环境与运行环境分设场景,请参见配置介绍

温馨提示:

这次所用镜像的安装用户是HwHiAiUser,如果你用root用户登录的ECS,可通过如下命令切换:

su - HwHiAiUser

环境变量配置及其他准备

开发环境与运行环境合设场景

  1. 配置环境变量。

    以安装用户在任意目录下执行以下命令,打开.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
    
  2. 创建第三方依赖文件夹。

    mkdir -p ${THIRDPART_PATH}

  3. 下载samples仓源码。

    cd ${HOME}      # 此处以将samples源码仓下载到用户家目录为例,开发者可自定义下载路径
    sudo apt-get install git
    git clone https://gitee.com/ascend/samples.git
    
  4. 将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库。

  • 开发环境与运行环境合设场景

    1. 获取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运行情况:

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。