华为Atlas200DK的环境部署与运行demo(人脸识别)


前言

Atlas 200 DK 开发者套件(型号 3000)是以Atlas 200 AI加速模块(型号 3000)为核心的开发者板形态的终端类产品。主要功能是将Atlas 200 AI加速模块(型号 3000)的接口对外开放,方便用户快速简捷的使用Atlas 200 AI加速模块(型号 3000),可以运用于平安城市、无人机、机器人、视频服务器等众多领域的预研开发。

Atlas 200 AI加速模块(型号 3000)是一款高性能的AI智能计算模块,集成了昇腾310 AI处理器(Ascend 310 AI处理器),可以实现图像、视频等多种数据分析与推理计算,可广泛用于智能监控、机器人、无人机、视频服务器等场景。

Atlas 200 DK的环境配置可以使用两种方式,一种是运行环境与开发环境分设,将运行环境部署在200dk上,开发环境部署在Ubuntu18.04系统。一种是运行环境和开发环境合设,将运行环境和开发环境都部署在200dk上。

  • 开发环境: 主要用于代码开发、编译、调测等开发活动。
    (场景一)在昇腾AI设备上安装开发环境,同时可以作为运行环境,运行应用程序或进行训练脚本的迁移、开发&调试。
    (场景二)在非昇腾AI设备上安装开发环境,仅能用于代码开发、编译等不依赖于昇腾设备的开发活动(例如ATC模型转换、算子和推理应用程序的纯代码开发)。
  • 运行环境: 在昇腾AI设备上运行用户开发的应用程序或进行训练脚本的迁移、开发&调试。

一、部署准备

1.基本准备

  1. Atlas 200 DK开发者套件(USB-Type-C数据线和网线、16G以上SD卡、读卡器或母对母杜邦线)
  2. Ubuntu18.04系统PC机或者虚拟机(运行环境与开发环境分设使用,华为官方依赖目前只更新到Ubuntu18.04版本)
  3. Windows系统PC机(运行环境与开发合设可以使用windows系统,也可以使用Linux系统)
  4. MobaXterm(合设环境的情况下,使用MobaXterm便于访问200dk)
  5. balenaEtcher(合设环境必备,使用balenEtcher工具部署合设环境)

2.安全清空sd卡

无论是新的sd卡,还是旧的sd卡,都推荐在使用前对sd卡进行一次安全清空
步骤如下:

  • 使用读卡器将sd卡连接到电脑,win+R->运行->输入cmd->在命令提示符窗里输入“DISKPART”在这里插入图片描述
  • 在弹出的DISKPART窗口中输入“LIST DISK”,按下回车后会显示电脑上的硬盘和U盘。根据磁盘空间大小可以推断出磁盘1为sd卡。
    在这里插入图片描述
  • 然后依次执行下面的命令
SELECT DISK 1:选中磁盘1(千万不要选错为sd卡的磁盘)。

CLEAN:删除整个磁盘数据。

CREATE PARTITION PRIMARY:创建主磁盘分区。

ACTIVE:激活磁盘分区。

FORMAT QUICK:快速格式化磁盘分区。
  • sd卡安全清空完成,可以进行烧写
    在这里插入图片描述
    如果clean遇到错误,再次执行clean即可

3.安装摄像头

  • 拆卸上盖,向上按压塑料卡扣,使上盖一端松动
    在这里插入图片描述
  • 使用黑色的摄像头排线连接树莓派摄像头

树莓派摄像头排线接面
请添加图片描述
atlas开发板排线接面
请添加图片描述

  • 安装完成
    在这里插入图片描述
    上盖可以不用合上,便于判断开发板是否启动成功。
    建议使用摄像头支架。

二、环境部署

开发板有条件能够联网的情况下,推荐使用环境合设的方式
需要编译的的程序较大,推荐使用环境分设的方式

1.运行环境与开发环境合设

1.烧录dd镜像

  • 进入昇腾论坛dd镜像帖子
    在这里插入图片描述
    建议下载最新版本,运行demo的依赖项支持CANN>=5.0.4以上的版本
    在这里插入图片描述
    dd镜像文件较大,下载需要一些时间

  • 下载完成后打开balenaEtcher
    在这里插入图片描述
    选择好已经下载好的dd镜像包和需要烧录的sd卡,点击Flash!,开始烧录
    在这里插入图片描述

  • 烧录成功在这里插入图片描述

2.开发板启动

  • 将烧录成功的sd卡插入Atlas200dk,接入电源上电,电源接口旁边的led灯亮起说明能够成功上电
    请添加图片描述

  • 四个led灯亮起,说明开发板成功启动
    请添加图片描述

3.开发板连接PC机

Atlas 200 DK开发者板支持通过USB端口或者网线与PC机进行连接
Atlas 200 DK与PC机连接图:
在这里插入图片描述
需要配置好USB端口连接,才能配置网线连接

1.USB端口连接

  • 使用套件内的黑色USB-Type-C数据线连接开发板和PC机请添加图片描述
  • PC机打开设备管理器->其他设备,可以看到带有警报标志的RNDIS, 右键点击RNDIS->更新驱动程序
    在这里插入图片描述
  • 选择“浏览我的电脑以查找驱动程序”
    在这里插入图片描述
  • 选择“让我从计算机上的可用驱动程序列表中选取”
    在这里插入图片描述
  • 向下滑动,选择“网络适配器”,然后下一页
    在这里插入图片描述
  • 厂商选择Microsoft,型号选择USB RNDIS6 适配器,然后下一页
    在这里插入图片描述
  • 出现警告,选择“是”
    在这里插入图片描述
  • 更新驱动程序完成
    在这里插入图片描述
  • 进入网络和Internet->高级网络设置->更多网络适配器选项,可以查看到USB RNDIS6 适配器
    在这里插入图片描述
  • 右键点击查看属性,双击ipv4协议
    在这里插入图片描述
  • 选择”使用下面的ip地址“,将ip地址更改为192.168.1.X, X为0~255除了2以外的数字,点击子网掩码填写框会自动生成子网掩码,点击确定
    使用USB端口连接的默认ip为192.168.1.2,所以要将PC机网络适配器ipv4的ip地址更改为和其同个网段下
    在这里插入图片描述
  • PC机打开cmd或者其它终端(这里使用的是MobaXterm),输入:
ssh [email protected]
  • 按下回车键,连接成功
    在这里插入图片描述
    如果连接需要输入密码,默认密码为Mind@123,进入root模式也是使用这个密码

2.网线连接

  • 使用套件内的网线和USB-Type-C数据线连接开发板和PC机
    使用USB端口连接进入开发板更改网络参数
    如果能够使用USB端口连接PC,网线接入网口或者路由器再接入开发板的方式联网,不用配置网线连接

    请添加图片描述
  • 连接开发板,输入su,然后回车,进入root模式,密码为MInd@123,注意输入密码时页面并不会出现字符
    在这里插入图片描述
  • 执行cd命令进入netplan文件夹,并查看文件夹下文件
cd /etc/netplan #进入netplan文件夹
ll #查看文件夹下文件

在这里插入图片描述

  • 使用vi命令打开网络配置文件
vi 01-netcfg.yaml

在这里插入图片描述

  • 在网络配置文件中设置好网线连接的参数,将dhcp4设置为no,设置ip以及网关gateway4,网关可以设置为192.168.0.X,X为0~255中除了2的任何一个数字,后面步骤中也要使用这个网关配置PC端上的网络适配器,然后保存退出
    在这里插入图片描述
network:
  version: 2
#  renderer: NetworkManager
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
      addresses: [192.168.0.2/24]
      gateway4: 192.168.0.100 #可以设置为192.168.0.X,X为0~255中除了2的任何一个数字
      nameservers:
              addresses: [8.8.8.8]
              addresses: [114.114.114.114]

    usb0:
      dhcp4: no
      addresses: [192.168.1.2/24]
      gateway4: 192.168.0.1
      nameservers:
              addresses: [114.114.114.11]

使用vi进入yaml文件后,按字母”i“键进入插入编辑模式,编辑完成后按”Esc“退出编辑模式,输入冒号”:",然后输入“wq!”,回车,成功保存退出

  • 使设置的网络参数生效,使用此命令:
netplan apply

在这里插入图片描述

  • 进入网络和Internet->高级网络设置->更多网络适配器选项,确定好网口的网络适配器(这里已经重命名为网口驱动)
    拔插USB和网线,观察哪个适配器消失,可以确定对应的网络适配器
    在这里插入图片描述
  • 进入ipv4设置页面,将ip地址设置为在开发板中设置的gateway4,或者设置为192.168.1.X, X为0~255除了2以外的数字,确定
    如果设置为gateway4相同,便于开发板使用共享网络的方式进行联网
    在这里插入图片描述
  • 打开终端,输入:
ssh [email protected]

成功通过网线连接Atlas200dk
在这里插入图片描述
通过网线连接成功后,可以将USB线拔掉

4.开发板联网

开发板不能联网的情况下,需要在PC中下载好相关依赖文件,再拷贝入SD卡相应位置,非常麻烦
在这里插入图片描述

1.通过网线连接网口的方式接入互联网

  • 使用套件内的USB-Type-C数据线连接开发板和PC机,网线接入网口后连接开发板
    使用USB端口连接进入开发板更改网络参数
    请添加图片描述
  • 打开终端,输入:
ssh [email protected]

连接开发板
在这里插入图片描述

  • 输入su,进入root模式,默认密码为MInd@123
    在这里插入图片描述
  • 执行cd命令进入netplan文件夹,并查看文件夹下文件
cd /etc/netplan #进入netplan文件夹
ll #查看文件夹下文件

在这里插入图片描述

  • 使用vi命令打开网络配置文件
vi 01-netcfg.yaml

在这里插入图片描述

  • 将dhcp4设置为yes,保存退出
    在这里插入图片描述
    使用vi进入yaml文件后,按字母”i“键进入插入编辑模式,编辑完成后按”Esc“退出编辑模式,输入冒号”:",然后输入“wq!”,回车,成功保存退出
  • 使设置的网络参数生效,使用此命令:
    在这里插入图片描述
netplan apply
  • 重启开发板,连接进入,ping百度测试是否联网成功

2.通过网络共享方式接入互联网

  • 首先按照前面步骤,设置好网线连接开发板,确定对应网络适配器ipv4协议的ip地址设置为在开发板中设置的gateway4
    本文在开发板中配置eth0下gateway4为192.168.0.100,所以ip地址设置为相同的192.168.0.100
    在这里插入图片描述

  • 打开已接入网络的WLAN或者本地连接,点击共享
    在这里插入图片描述

  • 选择“允许其他网路用户通过此计算机的Internet连接来连接”,选择好对应的网络适配器,确定
    在这里插入图片描述

  • 选择“是”
    在这里插入图片描述

  • 此时对应的网口驱动网络适配器会重置,回到网口驱动的属性页,再次将ipv4协议的ip地址设置为在开发板中设置的gateway4,确定
    在这里插入图片描述

  • 打开终端,使用USB或者网线连接的默认ip连接到开发板

ssh [email protected] #网线连接默认ip
ssh [email protected] #USB端口连接默认ip

这里使用网线连接,配置好后可以只使用网线
在这里插入图片描述

  • ping百度测试网络连接,开发板成功联网
ping www.baidu.com

在这里插入图片描述如果按照步骤不能连接网络,是因为网络环境变化,再次进行一次操作,首先把wifi共享关掉,这时网口驱动会重置。再次开启wifi共享给网口驱动,将分配给网口驱动的IP改成eth0 gateway4的,就联网成功了

2.运行环境与开发环境分设

1.制作sd卡

1.软件包准备

获取开发者板驱动与运行包、Ubuntu操作系统镜像包

  • Ubuntu操作系统镜像包 ubuntu-18.04.xx-server-arm64.iso
    建议在Ubuntu官网下载
    在这里插入图片描述

  • 驱动包 A200dk-npu-driver-{software version}-ubuntu18.04-aarch64-minirc.tar.gz
    获取链接
    请添加图片描述

2.操作步骤

  • 将SD卡放入读卡器,并将读卡器与Ubuntu服务器的USB接口连接
    此图为使用虚拟机的情况下
    Ubuntu服务器指PC端
    在这里插入图片描述
  • Ubuntu服务器中安装qemu-user-static、binfmt-support、yaml、squashfs-tools与交叉编译器
# 进入root用户
sudo su

# 更新源
apt-get update

# 安装python相关依赖
pip3 install pyyaml

# 安装qemu-user-static、binfmt-support、yaml、squashfs-tools与交叉编译器
apt-get install qemu-user-static binfmt-support python3-yaml squashfs-tools gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

安装完成
在这里插入图片描述

  • 创建制卡工作目录
mkdir /home/ascend/mksd

# 制卡目录可任意指定
#ascend为自己的用户名

在这里插入图片描述

  • 将软件包准备获取的Ubuntu操作系统镜像包、开发者板所有驱动包上传到制卡工作目录
    在这里插入图片描述
  • 在制卡工作目录下获取制卡脚本。
# 下载制卡入口脚本“make_sd_card.py”。
# 从gitee下载:
wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_sd_card.py
# 从github下载:
wget https://raw.githubusercontent.com/Ascend/tools/master/makesd/generic_script/make_sd_card.py

# 下载制作SD卡操作系统的脚本“make_ubuntu_sd.sh”。
# 从gitee下载:
wget https://gitee.com/ascend/tools/raw/master/makesd/generic_script/make_ubuntu_sd.sh
# 从github下载:
wget https://raw.githubusercontent.com/Ascend/tools/master/makesd/generic_script/make_ubuntu_

下载完成
在这里插入图片描述

  • 执行制卡脚本。
    以root用户执行如下命令查找SD卡所在的USB设备名称。
fdisk -l

例如,SD卡所在USB设备名称为“/dev/sda”,可通过插拔SD卡或者按容量推断的方式确定设备名称。
图中的sd卡为/dev/sdb
在这里插入图片描述
运行SD制卡脚本“make_sd_card.py”。

python3 make_sd_card.py local /dev/sda

“local”表示使用本地方式制作SD卡。
“/dev/sda”为SD卡所在的USB设备名称。
正在制卡
在这里插入图片描述
制卡完成
在这里插入图片描述

  • 拔出sd卡,插入开发板并上电,四个led灯亮起则成功启动开发板

2.开发板连接PC机

与环境合设步骤相同

3.开发板联网

与环境合设步骤相同

4.部署开发环境和运行环境

安装流程图
在这里插入图片描述
此种场景下,用户PC机(Ubuntu x86操作系统)作为开发环境,进行程序的开发、编译,Atlas 200 DK作为运行环境

1.开发环境中CANN软件安装(以下在PC机内操作)

1.准备软件包

下载配套驱动版本的开发套件包“Ascend-cann-toolkit_{version}linux-x86_64.run”与“Ascend-cann-toolkit{version}_linux-aarch64.run
在这里插入图片描述

2.安装OS依赖

依赖列表
在这里插入图片描述在这里插入图片描述

  • 进入root用户,检查源是否可用
apt-get update

在这里插入图片描述

  • root用户下执行如下安装命令
apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3 libopenblas-dev

安装完成
在这里插入图片描述

  • 检查系统是否安装满足版本要求的python开发环境
python3 --version

如果返回信息满足python版本要求(3.7.0~ 3.7.11),则直接进入下一步,否则可参考如下方式安装python3.7.5

a.使用wget下载python3.7.5源码包,可以下载到安装环境的任意目录

wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz

在这里插入图片描述
b.进入下载后的目录,解压源码包

tar -zxvf Python-3.7.5.tgz

在这里插入图片描述
c.进入解压后的文件夹,执行配置、编译和安装命令

# 其中“--prefix”参数用于指定python安装路径,可根据实际情况进行修改
cd Python-3.7.5
./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared
make
sudo make install

在这里插入图片描述
d. 设置python3.7.5环境变量

# 其中“/usr/local/python3.7.5”为python3.7.5安装路径,请根据实际替换
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/python3.7.5/bin:$PATH

在这里插入图片描述
e.检查是否安装成功
在这里插入图片描述

  • 为后续安装CANN软件包、运行CANN软件环境变量设置脚本时能够自动配置python3.7.5环境变量,需提前创建好文件“use_private_python.info
    root用户执行如下命令创建文件
vi /etc/use_private_python.info

在这里插入图片描述
添加此内容,保存退出

python3_install_path=/usr/local/python3.7.5

在这里插入图片描述

  • 使用pip命令安装依赖
# 需要进入root用户	

# 更新pip命令
pip3 install --upgrade pip 
# 安装依赖
pip3 install attrs
pip3 install numpy==1.17.2
pip3 install decorator
pip3 install sympy
pip3 install cffi
pip3 install pyyaml
pip3 install pathlib2
pip3 install psutil
pip3 install protobuf
pip3 install scipy
pip3 install requests

安装完成
在这里插入图片描述

3.安装开发套件包
  • 以安装用户将开发套件包上传到开发环境任意路径,并进入套件包所在路径
    在这里插入图片描述
  • 为安装包增加可执行权限
chmod +x *.run
# *.run为软件包实际名称

在这里插入图片描述

  • 校验安装包的一致性和完整性
# {version}为具体版本
 ./Ascend-cann-toolkit_{
    
    version}_linux-x86_64.run  --check
./Ascend-cann-toolkit_{
    
    version}_linux-aarch64.run --check

在这里插入图片描述

  • 进入root用户,执行以下命令安装软件
# {version}为具体版本
./Ascend-cann-toolkit_{
    
    version}_linux-x86_64.run --install --chip=Ascend310-minirc
./Ascend-cann-toolkit_{
    
    version}_linux-aarch64.run --install --chip=Ascend310-minirc

安装完成
在这里插入图片描述

  • 配置环境变量
. /usr/local/Ascend/ascend-toolkit/set_env.sh 

执行vi ~/.bashr,打开.bashrc文件,在文件最后一行后面添加上述内容
保存退出,执行source ~/.bashrc命令使其立即生效

  • 配置交叉编译环境
sudo apt-get install g++-aarch64-linux-gnu

在这里插入图片描述
至此,开发环境中的软件安装完毕

2.运行环境中CANN软件安装(以下在200dk内操作)

1.准备软件包

下载离线推理引擎包“Ascend-cann-nnrt_{software version}_linux-aarch64.run”
在这里插入图片描述

2.在Atlas 200 DK上安装离线推理引擎包
  • 使用mobaxterm将离线推理引擎包上传至200dk
    在这里插入图片描述
  • 执行如下命令为安装包增加可执行权限
chmod 777 *.run
# 其中*.run表示软件包名,请根据实际包名进行替换
  • 校验安装包的一致性和完整性
./Ascend-cann-nnrt_{
    
    software version}_linux-aarch64.run --check
# 请根据实际包名进行替换

在这里插入图片描述

  • 执行如下命令进行离线推理引擎包的安装。
./Ascend-cann-nnrt_{
    
    software version}_linux-aarch64.run --install --chip=Ascend310-minirc
# 请根据实际包名进行替换

请添加图片描述

3.配置环境变量
 . /usr/local/Ascend/nnrt/set_env.sh

root用户在任意目录下执行vim ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容
保存退出,执行source ~/.bashrc命令使其立即生效

5.准备编译运行依赖文件

若开发者需要使用Atlas 200 DK外接的摄像头进行数据采集,并将采集的数据作为应用的数据源,则应用程序开发编译时需要依赖媒体控制模块相关的头文件与库文件

  • 在开发环境中设置环境变量“INSTALL_DIR”,指定CANN软件安装后文件存储路径
    如果为root用户下安装,则设置如下
export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/5.0.5.alpha001
# 5.0.5.alpha001根据实际情况更换
  • 在${INSTALL_DIR}路径下创建“driver”目录,用于存储媒体应用程序编译依赖的相关文件
sudo mkdir -p ${INSTALL_DIR}/driver

在这里插入图片描述

  • 进入到root用户,将媒体应用程序编译依赖的相关文件从板端环境中拷贝到开发环境的${INSTALL_DIR}/driver目录下
# 使用网线连接开发板则为192.168.0.2,可根据自己实际情况进行更改
scp -r [email protected]:/usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver
scp -r [email protected]:/usr/lib64/libslog.so ${INSTALL_DIR}/driver
scp -r [email protected]:/usr/lib64/libc_sec.so ${INSTALL_DIR}/driver
scp -r [email protected]:/usr/lib64/libmmpa.so ${INSTALL_DIR}/driver
scp -r [email protected]:/usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver

在这里插入图片描述

6.安装MindStudio(可选)

目前最新的MindStudio只支持cann5.0.4版本,注意匹配版本在这里插入图片描述
在这里插入图片描述
安装流程
在这里插入图片描述

1.准备软件包

下载
可以直接使用命令行下载

wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/MindStudio/MindStudio%203.0.4/MindStudio_3.0.4_linux.tar.gz

2.解压MindStudio软件包

tar -zxvf MindStudio_{
    
    version}_linux.tar.gz

在这里插入图片描述

3.解压jbr至MindStudio安装根目录

# 下载jbr
wget https://cache-redirector.jetbrains.com/intellij-jbr/jbr_dcevm-11_0_10-linux-x64-b1341.35.tar.gz
# 解压
tar -zxvf jbr_dcevm-11_0_10-linux-x64-b1341.35.tar.gz

请添加图片描述

4.执行启动脚本

进入软件包解压后的MindStudio/bin目录,执行如下命令

cd MindStudio/bin
./MindStudio.sh
  • Do not import settings:不导入设置,若选择该选项,则创建新的配置文件,默认为该选项
    在这里插入图片描述
  • 选择好cann软件安装的路径,点击finish
    在这里插入图片描述

5.配置编译环境

使用MindStudio安装用户,在MindStudio安装服务器执行aarch64-linux-gnu-g++ --version命令检查是否安装,若已经安装则可以忽略,否则执行如下安装命令:

sudo apt-get install -y g++-aarch64-linux-gnu

三、合设环境下运行人脸识别demo

在这里插入图片描述

  1. face_register模块功能为接收外界输入的注册图片,并转换为下游需要的YUV420SP图片。用户可通过Chrome浏览器访问Presenter Server,通过Web UI进行人脸注册,应用会将注册的人脸数据经过人脸检测、特征点识别、特征向量获取后,保存注册信息。
  2. camera_datasets与Camera驱动进行交互,从摄像头获取YUV420SP格式的视频帧数据。Atlas 200 DK 提供了一套帮助开发者轻松获取摄像头图像的API接口媒体库。
  3. face_detection是人脸检测处理模块,该模块利用人脸检测网络模型在Atlas 200 DK 上推理识别出图片中的人脸坐标位置及其置信度,并将符合要求的人脸根据坐标抠图,送给下游网络。处理过程中会使用到DVPP的resize能力,Ascend DK提供了媒体数据处理接口,帮助开发者更方便的对图片进行预处理。
  4. face_feature_mask模块利用特征点标记网络模型(VanillaCNN model)在Atlas 200 DK上推理识别出人脸小图上的5个特征点位置坐标(包括人脸双眼、鼻子、两个嘴角),并送给下游网络做进一步识别。
  5. face_recognition模块为先根据face_feature_mask模块输出的人脸小图以及5个特征点坐标做正脸操作,并将正脸图片以及翻转镜像后的图片一起送给Sphereface Model推理,提取人脸1024维度的特征向量。
  6. face_postprocess模块与上文整体流程无特别对应关系,其存在的意义为桥接MiniAI处理器侧与Presenter Server侧的通信,将接收到的推理结果、特征向量及JPEG图片通过调用Presenter Agent的API发送到UI Host上部署的Presenter Server服务进程。
  7. Presenter Server:Presenter Server是华为自研的一个小的Web展示工具,其不仅提供展示Camera实时数据的功能,还能判断人脸的相似度并展示识别结果,而且提供人脸注册上传图片的通道。

1.运行环境与开发环境合设

1.安装依赖

1.安装准备

执行以下命令进行安装准备
建议使用MobaXterm

# 以安装用户在任意目录下执行以下命令,打开.bashrc文件。
vi ~/.bashrc  

# 如果.bashrc中没有对应内容,在文件最后一行后面添加如下内容,设置必要的环境变量。
export CPU_ARCH=`arch`
export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}  #代码编译时链接第三方库
export LD_LIBRARY_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH}/lib:$LD_LIBRARY_PATH  #运行时链接库文件
export INSTALL_DIR=${HOME}/Ascend/ascend-toolkit/latest #CANN软件安装后文件存储路径
#注意!!:latest需要按实际情况更改!不做修改会导致acllite库的编译报错

# 执行命令保存文件并退出。
:wq!  

# 执行命令使其立即生效。 
source ~/.bashrc 

# 创建第三方依赖文件夹
mkdir -p ${THIRDPART_PATH}

# 返回主目录安装git并下载官方示例源码
cd ${HOME}
sudo apt-get install git
git clone https://gitee.com/ascend/samples.git

# 拷贝公共文件到第三方路径中
cp -r ${HOME}/samples/common ${THIRDPART_PATH}
  • 打开终端,连接Atlas200DK,打开.bashrc文件
    在这里插入图片描述
  • 可以发现,.bashrc中已经存在相应的环境变量,但是需要做出修改,使用MobaXterm终端,连接上开发板
    MobaXterm的左边栏可以可视化地显示Atlas的文件
    使用 ll 和 cd 命令也可以直接在命令行中去找寻对应文件
    在这里插入图片描述
  • 按照INSTALL_DIR的路径找到正确文件,可以发现5.0.4.alpha005文件夹
    MobaXterm的左边栏可以可视化地显示Atlas的文件
    在这里插入图片描述
  • 回到.bashrc文件,将环境变量中的latest都改为5.0.4.alpha005
    在这里插入图片描述
  • 保存退出后,执行source ~/.bashrc ,使配置生效
    在这里插入图片描述
  • 创建第三方依赖文件夹并安装git
    在这里插入图片描述
  • 使用git下载官方的示例源码,并拷贝公共文件到第三方路径中
    需要开发板联网
    在这里插入图片描述
  • 200DK场景还需要执行以下命令拷贝media_mini等so文件以及相关头文件,满足摄像头样例编译需要。
mkdir -p ${INSTALL_DIR}/driver
cp /usr/lib64/libmedia_mini.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libslog.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libc_sec.so ${INSTALL_DIR}/driver/
cp /usr/lib64/libmmpa.so ${INSTALL_DIR}/driver/
cp /usr/local/Ascend/include/peripheral_api.h ${INSTALL_DIR}/driver/

普通用户执行权限不够,需要使用su命令进入root用户执行
在这里插入图片描述

2.安装过程

需要开发板联网

1.安装opencv
sudo apt-get install libopencv-dev

在这里插入图片描述
执行完后使用exit命令退出root用户,不然有可能影响后面库的安装

2.安装ffmpeg+acllite库
# 下载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配置安装会稍微需要一点时间,耐心等待	
./configure --enable-shared --enable-pic --enable-static --disable-x86asm --prefix=${THIRDPART_PATH} 
make -j8
make install

# 编译并安装acllite
cd ${HOME}/samples/cplusplus/common/acllite/
make -j8 #使用-j8调用cpu的多个核心,加快编译
make install
  • 下载ffmpeg并解压,然后进入ffmpeg-4.1.3文件夹
    在这里插入图片描述
  • 安装ffmpeg
    ./configure完成
    在这里插入图片描述
    make -j8编译中(时间也会稍微长一些)
    在这里插入图片描述
    编译完成后,make install进行安装,安装完成
    在这里插入图片描述
  • 进入acllite库文件夹,安装acllite
    在这里插入图片描述
    make -j8编译完成
    在这里插入图片描述
    特别注意!!如果出现以下错误
    主要排查两点错误:
    1.是否已经修改环境变量中的latest
    2.确定cann版本大于等于5.0.4

    在这里插入图片描述
    make install,安装完成
    在这里插入图片描述
3.安装presentagent
# 安装protobuf相关依赖
sudo apt-get install autoconf automake libtool

# 下载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
make -j8
sudo make install

# 进入presentagent源码目录并编译
cd ${HOME}/samples/cplusplus/common/presenteragent/proto
${THIRDPART_PATH}/bin/protoc presenter_message.proto --cpp_out=./

# 开始编译presentagnet
cd ..
make -j8
make install
  • 安装protobuf相关依赖
    在这里插入图片描述
  • 回到主目录,下载protobuf源码
    在这里插入图片描述
  • 按步骤编译安装protobuf,编译安装完成(需要稍长一些时间)
    在这里插入图片描述
  • 按步骤进入presentagent源码目录并进行编译安装,编译安装完成
    在这里插入图片描述

2.获取原始网络模型并进行atc转换

1.face_detection模型下载与转换

#进入源码目录      
cd ${HOME}/samples/cplusplus/level2_simple_inference/n_performance/1_multi_process_thread/face_recognition_camera/model

# face_detection模型权重下载
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/facedection/face_detection_fp32.caffemodel

# face_detection模型网络下载
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/facedection/face_detection.prototxt

# 对应的cfg文件下载
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/face_recognition_camera/face_detection_insert_op.cfg

# 使用ATC模型转换工具进行模型转换
atc --model=./face_detection.prototxt --weight=./face_detection_fp32.caffemodel --framework=0 --output=./face_detection --soc_version=Ascend310 --insert_op_conf=./face_detection_insert_op.cfg --input_shape="data:1,3,300,300" --input_format=NCHW 
  • 进入源码目录,下载好相关文件
    在这里插入图片描述
  • ATC模型转换
    在这里插入图片描述

2.vanillacnn模型下载与转换

# vanillacnn模型权重下载
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/vanillacnn/vanillacnn.caffemodel

# vanillacnn模型网络下载
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/vanillacnn/vanilla_deploy.prototxt

# 使用ATC模型转换工具进行模型转换
atc --model=./vanilla_deploy.prototxt --weight=./vanillacnn.caffemodel --framework=0 --output=./vanillacnn --soc_version=Ascend310 --input_shape="data:4,3,40,40" --input_format=NCHW
  • 操作如上
    在这里插入图片描述

3.sphereface模型下载与转换

# sphereface模型权重下载
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/sphereface/sphereface.caffemodel

# sphereface模型网络下载
wget https://modelzoo-train-atc.obs.cn-north-4.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/sphereface/sphereface.prototxt

# 对应的cfg文件下载
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/face_recognition_camera/sphereface_insert_op.cfg

# 使用ATC模型转换工具进行模型转换
atc --model=./sphereface.prototxt --weight=./sphereface.caffemodel --framework=0 --output=./sphereface --soc_version=Ascend310 --insert_op_conf=./sphereface_insert_op.cfg --input_shape="data:8,3,112,96" --input_format=NCHW
  • 操作如上
    在这里插入图片描述

3.demo的编译和运行

  • 进入到样例目录
cd ${HOME}/samples/cplusplus/level2_simple_inference/n_performance/1_multi_process_thread/face_recognition_camera/scripts
  • 对样例进行编译
bash sample_build.sh

任选一个架构进行编译
在这里插入图片描述

  • 编译完成后执行运行脚本
bash sample_run.sh

任选一个ip用于Presenter Server
输入保存面部识别信息的绝对路径

在这里插入图片描述

  1. 成功运行人脸识别demo
    在这里插入图片描述

4.查看结果

  1. 运行时可以发现这段“Please visit "
    在这里插入图片描述
  2. 将192.168.0.2:7007输入到浏览器打开Presenter Server
    在这里插入图片描述
  3. 选择Face Library,即可录入人脸信息
    在这里插入图片描述
  4. 回到首页即可实现人脸识别(本文未上传自己的照片,所以识别结果为Unknown)
    在这里插入图片描述

总结

猜你喜欢

转载自blog.csdn.net/weixin_42800966/article/details/122587832