AES200 软件用户手册
文章目录
安装操作系统
PXE安装OpenEuler OS
-
通过百度网盘下载PXE Server虚拟机镜像
-
安装VMware Player打开虚拟机,虚拟机的网卡请配置为“桥接”,只绑定使用的物理网口。
虚拟机开机。
- 登录账户:aes200 / 123456
root 密码:123456
- 虚拟机安装目标的选取,请修改虚拟机里的文件 /etc/rc.local,通过修改软链接来选择。
想往哪儿装,就保留哪个软链接。
比如往 EMMC 安装:
ln -s ks.cfg.emmc ks.cfg
#ln -s ks.cfg.nvme ks.cfg
保存后再执行一下脚本 /etc/rc.local,或者直接重启虚拟机。
- 检查dhcp服务状态,同时也可查看dhcp分配信息:
systemctl status isc-dhcp-server
- 检查tftp服务状态,同时也可查看tftp下载信息:
systemctl status tftpd-hpa
- 把串口和BMC的网口分别连到PC上。
-
通过串口线或者USB转转串口线将AES200的串口接到PC,打开串口(波特率为115200),作为监视界面。
-
BMC 网口连到PC的网口。
-
给AES200机器上电。BMC完全启动需要大概2分钟左右
注意前面板灯亮代表已经通电,刚开始通电风扇不转,这是正常状态,请等待。
-
等BMC启动完成,听到风扇响,虚拟机浏览器打开 BMC web 页面,192.168.2.100,登录账号:
用户名:Administrator
密码:Admin@9000
- 要是觉得风扇太吵,就 ssh 到BMC,账户同上,用下面命令降低风扇速率到20%:
ssh root@192.168.2.100
输入密码:Admin@9000
ipmcset -d fanlevel -v 20
ipmcset -d fanmode -v 1 0
- BMC 页面进入 “系统管理” => “BIOS配置”。
- 选择 “PXE/TFTP”,“永久有效”,然后点击 “保存”。
-
给核心板下电并上电
-
下面的操作请注意,如果你有多个网口,或者有另外一台电脑,那连BMC的网线可以不拔,保持对其的访问。
但如果只有一个网口,需要在重置核心板后的一分钟内,将PC网口连接到右侧的核心板RJ45网口(靠近SFP口的那个)。
接下来我们就按PC只有一个网口的情况来处理。多个网口的情况可以一直连着不动。
- 现在,我们就要重置核心板了,方法有两种。
-
原有的OS还可以操作,那么现在可以直接把PC网口连到上图中的PEX安装口,然后从串口reboot。
-
原有OS已崩溃,那么就要在BMC网页中重置核心板。“系统管理” => “电源&功率” => “服务器上下电” => “强制下电再上电”。然后在一分钟内,把网口从BMC换到PXE安装口。
- 接下来就是**长时间(大约10分钟左右)**的等待,因为PXE启动的网卡顺序是先SFP口,再RJ45口,而每张网卡又要等待4种模式的超时,分别是:PXEv4,PXEv6,HTTPv4,HTTPv6。
我们所选取的网口,排在PXE启动的第三顺位,所以要等待两轮超时。
- 看到串口显示这样的信息就是安装成功了,先别着急动作,请继续往下看。
- 网线再插回BMC网口,把启动源改为安装对象,例如:
“系统管理” => “BIOS配置” => “硬盘/eMMC” => “保存”
- 回到串口,按回车键。等OS启动完毕,登录。
账号:root / Euler12#$
能够正常启动到系统就基本完成了,注意!还有重要的一步!否则推理失败!!
- 修改 grub 配置,必须用下面的命令在板子上改,不能事先改好一个到处拷,用不了。
注意这条命令是一行
sed -i "s/^\(\s*linux.*\)$/\1 cma=256M coredump_filter=0x31 pmu_nmi_enable enable_charge_mighp enable_corelockup_detector enable_ascend_share_pool enable_sp_multi_group_mode default_hugepagesz=2M log_redirect=0x1fc000@0xb101000 rd.shell rd.debug/g" /boot/efi/EFI/openEuler/grub.cfg
- 重启,如果能正常进入OS,OS安装完毕!。
创建网卡配置文件
nmcli connection add type ethernet con-name eth0 ifname eth0 #设置SFP+ 2口为动态IP
nmcli connection add type ethernet con-name eth1 ifname eth1 #设置SFP+ 1口为动态IP
nmcli connection add type ethernet con-name eth2 ifname eth2 ip4 192.168.2.99/24 #设置GbE 2口为静态IP
nmcli connection add type ethernet con-name eth2 ifname eth2 #设置GbE 1口为静态IP
修改DNS服务器
- 修改 /etc/NetworkManager/NetworkManager.conf 文件,在main部分添加 “dns=none” 选项:
[main]
plugins=ifcfg-rh
dns=none
- NetworkManager重新装载上面修改的配置
# systemctl restart NetworkManager.service
- 手工修改 /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
安装驱动和固件
安装驱动
本节以*{product name}-npu-driver_x.x.x_linux-{arch}.*run包为例说明,具体操作以客户实际host系统对应驱动包为准。
注意事项
在软件包安装或升级过程中,不允许对Host或Device进行复位或下电操作,否则会出现Device无法正常启动或者升级失败。
操作步骤
首次安装请按照“驱动->固件”的顺序;覆盖安装或升级请按照“固件->驱动”的顺序,分别安装软件包。固件安装请参见安装固件。
首次安装过程中如果使用了–install for all参数,覆盖安装中也需要保留–install for all参数。
-
将获取软件包准备的安装包上传至Linux系统任意目录下(如/root)。
-
使用网络登录工具,如:PuTTY登录服务器的OS命令行。
-
执行如下命令,切换至root用户。
su - root
-
执行如下命令,进入软件包所在路径(如/root)。
cd* /root
-
执行如下命令,增加软件包的可执行权限。
chmod +x {product name}-npu-driver_x.x.x_linux-*{arch}.*run
-
执行如下命令,校验run安装包的一致性和完整性。
./{product name}-npu-driver_x.x.x_linux-{arch}.*run –check
若出现如下回显信息,表示软件包校验成功。
Verifying archive integrity... 100% SHA256 checksums are OK. All good.
-
执行**./**{product name}-npu-driver_x.x.x_linux-{arch}.run –full命令,完成驱动安装,软件包默认安装路径为“/usr/local/Ascend”。
说明
-
安装详细日志路径:/var/log/ascend_seclog/ascend_install.log。
-
安装后软件包的安装路径、安装命令以及运行用户信息记录路径为“/etc/ascend_install.info”。
-
安装run包驱动时,会将动态库libdcmi.so和头文件dcmi_interface_api.h拷贝到“/usr/local/dcmi/”目录下。
-
若创建运行用户是非HwHiAiUser,安装驱动软件包时需要指定运行用户(通过**–install-username=**username **–install-usergroup=**usergroup参数指定)。
-
如果指定root用户为运行用户,则需要与–install-for-all参数配合使用,如下所示,该场景下权限控制可能存在安全风险。
--install-username=root --install-usergroup=root --install-for-all
若用户需要指定安装路径,如以“/test/HiAI/”为例。
可执行**./*{product name}-npu-driver_x.x.x_linux-{arch}.*run –full --install-path=/test/HiAI/命令,完成安装。
- 若指定路径不存在,则安装时会自动创建目录,若有多层目录,则只有最后一层目录不存在时会自动创建。
- 若指定路径已存在:
- 若该路径下所有层级目录属主为root用户,则请确保所有层级目录权限至少为755。若不满足要求,请修改路径权限:chmod 755 路径
- 若该路径下有一层目录属主为非root用户,则请用户自行修改为root属主,并确保所有层级目录权限为755。若不满足要求,请修改路径属主为root:chown root:群组名 路径
若系统出现如下关键回显信息,则表示驱动安装成功。
Driver package installed successfully!
-
-
根据系统提示信息决定是否重启系统,若需要重启,请执行以下命令;否则,请跳过此步骤。
reboot
-
执行npu-smi info查看驱动加载是否成功。
若出现如下回显信息,说明加载成功。否则,说明加载失败。请联系华为技术支持处理。
+------------------------------------------------------------------------------------------------+ | npu-smi 22.0.3 Version: 1.83.T6.0.B114 | +-----------------------+-----------------+------------------------------------------------------+ | NPU Name | Health | Power(W) Temp(C) Hugepages-Usage(page) | | Chip Device | Bus-Id | AICore(%) Memory-Usage(MB) | +=======================+=================+======================================================+ | 0 310P1 | OK | NA 34 0 / 0 | | 0 0 | NA | 0 4210 / 43195 | +=======================+=================+======================================================+
说明:
- 加载失败,可以执行dmesg命令查看linux启动日志。如果出现 /安装路径/driver/device/davinci_mini.fd copy err信息,请参考卸载驱动章节卸载驱动,并使用默认路径重新进行驱动安装。
- 回显中“npu-smi”后面的字段为npu-smi工具版本号;“Version:”后面的字段为驱动版本号。
安装固件
首次安装请按照“驱动->固件”的顺序;覆盖安装或升级请按照“固件->驱动”的顺序,分别安装软件包,驱动安装请参见安装驱动,本节以*{product name}*-npu-firmware_x.x.x.run为例介绍宿主机上.run格式固件包的安装方法。
注意事项:
在软件包安装或升级过程中,不允许对设备进行复位或下电操作,否则会出现设备无法正常启动或者升级失败。
操作步骤
-
将获取软件包准备的安装包上传至Linux系统任意目录下(如/root)。
-
使用网络登录工具,如:PuTTY登录服务器的OS命令行。
-
执行如下命令,切换至root用户。
su - root
-
执行如下命令,进入软件包所在路径(如/opt)。
cd /root
-
执行如下命令,增加软件包的可执行权限。
chmod +x {product name}-npu-firmware_x.x.x.run
-
执行如下命令,校验run安装包的一致性和完整性。
./{product name}-npu-firmware_x.x.x.run --check
出现如下回显信息,表示软件包校验成功。
Verifying archive integrity... 100% SHA256 checksums are OK. All good.
-
执行如下安装命令完成安装。
./{product name}-npu-firmware_x.x.x.run --full
Firmware package installed successfully!
说明:
- 安装固件软件包不支持指定运行用户名和用户组,共用驱动的运行用户名和用户组。
- 安装固件软件包不支持指定路径,共用驱动的安装路径。
- 软件包默认安装路径:/usr/local/Ascend
- 安装详细日志路径:/var/log/ascend_seclog/ascend_install.log。
- 安装后软件包的安装路径、安装命令以及运行用户信息记录路径:/etc/ascend_install.info
-
根据系统提示信息决定是否立即重启系统,若需要重启,请执行以下命令;否则,请跳过此步骤。
reboot
-
执行如下命令查看芯片固件版本号。若与目标版本一致,则说明安装成功。
/usr/local/Ascend/driver/tools/upgrade-tool --device_index -1 --component -1 --version
如果安装驱动时指定安装路径,则命令中的“/usr/local/Ascend”请根据实际情况替换。
安装开发环境
准备安装及运行用户
检查root用户的umask
-
以root用户登录安装环境。
-
检查root用户的umask值。
umask
-
如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask 0022后保存。
-
在任意目录下执行如下命令,打开.bashrc文件:
vi ~/.bashrc
在文件最后一行后面添加umask 0022内容。
-
执行**:wq!**命令保存文件并退出。
-
执行source ~/.bashrc命令使其立即生效。
说明:
基于安全考虑,建议用户安装完CANN软件包后将umask值改为0027。
-
创建安装及运行用户
- 运行用户:实际运行推理业务或执行训练的用户。
- 安装用户:实际安装软件包的用户。
- 若使用root用户安装,支持所有用户运行相关业务。
- 若使用非root用户安装,则安装及运行用户必须相同。
- 已有非root用户,则无需再次创建。
- 若想使用新的非root用户,则需要先创建该用户,请参见如下方法创建。
说明:
- 如果安装驱动时未携带“–install-for-all”,并且CANN软件包运行用户为非root,则该CANN软件包运行用户所属的属组必须和驱动运行用户所属属组相同;如果不同,请用户自行添加到驱动运行用户属组。
- 运行用户不建议为root用户属组,权限控制可能存在安全风险,请谨慎使用。
创建非root用户操作方法如下,如下命令请以root用户执行。
-
创建非root用户。
groupadd usergroup useradd -g usergroup -d /home/username -m username -s /bin/bash
例如:
groupadd HwHiAiUser useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash
-
设置非root用户密码。
passwd username
例如:
passwd HwHiAiUser
说明:
创建完运行用户后, 请勿关闭该用户的登录认证功能。
安装开发环境依赖
检查源
安装过程需要下载相关依赖,请确保安装环境能够连接网络。请在root用户下执行如下命令检查源是否可用。
yum makecache
配置安装用户权限
可使用root或非root用户(该非root用户需与软件包安装用户保持一致)安装依赖,如果使用非root用户安装,可能需要用到提权命令,请用户自行获取所需的sudo权限。使用完成后请取消涉及高危命令的权限,否则有sudo提权风险。
配置最大线程数
-
以root用户登录安装环境。
-
配置环境变量,修改线程最大数,编辑“/etc/profile”文件,在文件的最后添加如下内容后保存退出:
ulimit -u unlimited
3. 执行如下命令使环境变量生效。
source /etc/profile
#### 安装依赖包
1. 检查系统是否安装python依赖以及gcc等软件。
```bash
gcc --version
g++ --version
make --version
cmake --version
rpm -qa |grep unzip
rpm -qa |grep zlib-devel
rpm -qa |grep libffi-devel
rpm -qa |grep openssl-devel
rpm -qa |grep pciutils
rpm -qa |grep net-tools
rpm -qa |grep sqlite-devel
rpm -qa |grep lapack-devel
rpm -qa |grep openblas-devel
rpm -qa |grep gcc-gfortran
rpm -qa |grep git
rpm -qa |grep vim
请执行如下安装命令:
sudo yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel pciutils net-tools sqlite-devel lapack-devel openblas-devel gcc-gfortran git vim
-
安装python3相关环境
查看python3版本:
python3 --version
安装python3-devel包
sudo yum install python3-devel
-
配置pip源
-
使用软件包的安装用户,执行如下命令:
cd ~/.pip
如果提示目录不存在,则执行如下命令创建:
mkdir ~/.pip cd ~/.pip
-
编辑pip.conf文件。
使用vim pip.conf命令打开pip.conf文件,写入如下内容:
[global] #以华为源为例,请根据实际情况进行替换。 index-url = https://mirrors.huaweicloud.com/repository/pypi/simple trusted-host = mirrors.huaweicloud.com timeout = 120
-
执行:wq!命令保存文件。
-
注意,pip.conf文件只对当前设置的用户有效,如果切换用户,请按同样的方法再次设置一次!
-
安装依赖的python包
安装前请先使用pip3 list命令检查是否安装相关依赖,若已经安装,则请跳过该步骤;若未安装,则安装命令如下(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可)。
- 请在安装前配置好pip源,具体可参考配置pip源。
- 安装前,建议执行命令pip3 install --upgrade pip进行升级,避免因pip版本过低导致安装失败。
- 如下命令如果使用非root用户安装,需要在安装命令后加上**–user**,例如:pip3 install attrs **–user,**安装命令可在任意路径下执行。
pip3 install attrs pip3 install numpy 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 pip3 install absl-py
- 如果安装numpy报错,请参考pip3 install numpy报错解决。
- 如果安装scipy报错,请参考pip3 install scipy报错解决。
安装开发套件包
前提条件
- 请参见安装开发环境依赖完成安装前准备。
- 通过凌华FAE获取开发套件包Ascend-cann-toolkit_xxx.run。
- 安装开发套件包前请确保安装目录可用空间大于7G,如不满足请清理空间或更换安装目录。
安装步骤
-
以软件包的安装用户登录安装环境。
若安装开发环境依赖中安装依赖的用户为root用户,则软件包的安装用户可自行指定;若安装开发环境依赖中安装依赖的用户为非root用户,请确保软件包的安装用户与该用户保持一致。
-
将获取到的开发套件包上传到安装环境任意路径(如“/home/package”)。
-
进入软件包所在路径。
-
增加对软件包的可执行权限。
chmod +x 软件包名.run
-
软件包名**.run**表示开发套件包Ascend-cann-toolkit*_{version}_linux-{arch}*.run,请根据实际包名进行替换。
-
执行如下命令校验软件包安装文件的一致性和完整性。
./软件包名.run --check
-
执行以下命令安装软件(以下命令支持**–install-path=**
等参数,具体参数说明请参见, --help的参数说明。 ./软件包名.run --install
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pwyA0bVU-1664293444246)(https://r.huaweistatic.com/s/ascendstatic/lst/as/software/mindx/modelzoo/img_modelzoo_ts1227.svg)]说明
-
开发套件包支持不同用户在同一开发环境安装,但安装版本必须保持一致,不同用户所属的属组必须和驱动运行用户所属属组相同;如果不同,请用户自行添加到驱动运行用户属组。
-
如果以root用户安装,不允许安装在非root用户目录下。
-
如果用户未指定安装路径,则软件会安装到默认路径下,默认安装路径如下。
- root用户:“/usr/local/Ascend”
- 非root用户:“ H O M E / A s c e n d ” 其 中 {HOME}/Ascend” 其中 HOME/Ascend”其中{HOME}为当前用户目录。
安装完成后,若显示如下信息,则说明软件安装成功:
[INFO] xxx install success
xxx表示安装的实际软件包名。
-
配置环境变量
CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以 root用户默认安装路径为例):
source /usr/local/Ascend/ascend-toolkit/set_env.sh
用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:
-
以运行用户在任意目录下执行vi ~/.bashrc命令,打开**.bashrc**文件,在文件最后一行后面添加上述内容。
-
执行**:wq!**命令保存文件并退出。
-
执行source ~/.bashrc命令使其立即生效。
运行测试样例
如果系统没有安装相关依赖,请参考安装开发环境依赖章节安装python与gcc的相关依赖包。
软件准备
-
获取源码包。
可以使用以下两种方式下载,请选择其中一种进行源码准备。
-
命令行方式下载(下载时间较长,但步骤简单)。
开发环境,在命令行中执行以下命令下载源码仓。
cd $HOME
git clone https://gitee.com/ascend/samples.git
-
压缩包方式下载(下载时间较短,但步骤稍微复杂)。
-
samples仓右上角选择 克隆/下载 下拉框并选择 下载ZIP。
-
将ZIP包上传到开发环境中的普通用户家目录中,例如 $HOME/ascend-samples-master.zip。
-
开发环境中,执行以下命令,解压zip包。
cd $HOME
unzip ascend-samples-master.zip
-
-
准备样例运行环境
准备python样例运行环境
-
配置环境变量
vi ~/.bashrc # 在文件最后一行后面添加如下内容。 export CPU_ARCH=`arch` export THIRDPART_PATH=${HOME}/Ascend/thirdpart/${CPU_ARCH} #代码编译时链接第三方库 export PYTHONPATH=${THIRDPART_PATH}/acllite:$PYTHONPATH #设置pythonpath为固定目录 export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/latest #CANN软件安装后文件存储路径
mkdir -p ${HOME}/Ascend/thirdpart/aarch64
-
安装依赖软件包
yum install hdf5 hdf5-devel
-
安装python依赖包
pip3 install Cython numpy tornado==5.1.0 protobuf==3.19.6 attrs psutil absl-py tensorflow
pip3 install opencv-python av pillow sympy
-
安装ffmpeg
yum install ffmpeg
-
安装python-acllite
cp -r ${HOME}/samples/python/common/acllite ${THIRDPART_PATH}
图片目标检测:YOLOV3
功能:使用yolov3模型对输入图片进行预测推理,并将结果打印到输出图片上。
样例输入:原始图片jpg文件。
样例输出:带推理结果的jpg文件。
前提条件
部署此Sample前,需要准备好以下环境:
-
请确认已按照准备python样例运行环境准备好python运行环境。
-
已完成对应产品的开发环境和运行环境安装。
模型转换
模型名称 | 模型说明 | 模型下载路径 |
---|---|---|
yolov3 | 基于Caffe-YOLOV3的目标检测模型。 | https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/yolov3/ATC_yolov3_caffe_AE目录中README.md下载原始模型章节下载模型和权重文件。 |
为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd ${HOME}/samples/python/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.caffemodel
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.prototxt
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/aipp_nv12.cfg
atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3_yuv --soc_version=Ascend310P1 --insert_op_conf=aipp_nv12.cfg
样例运行
- 获取样例需要的测试图片。
执行以下命令,进入样例的data文件夹中,下载对应的测试图片。
cd $HOME/samples/python/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture/data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/YOLOV3_coco_detection_picture/dog1_1024_683.jpg
cd ../src
- 系统默没有字体文件:DejaVuSans-Bold.ttf,需要从第三方网站https://fonts2u.com/dejavu-sans-bold.font下载,也可以运行以下命令直接下载
wget -O DejaVuSans-Bold.ttf http://d.xiazaiziti.com/en_fonts/fonts/d/DejaVu-Sans-Bold.ttf
mkdir -p /usr/share/fonts/truetype/dejavu
cp DejaVuSans-Bold.ttf /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
- 运行样例。
python3 object_detect.py ../data/
如果在HwHiAiUser用户下推理,产生以下错误:
[HwHiAiUser@localhost src]$ python3 object_detect.py ../data/
init resource stage:
rm: cannot remove '/usr/lib64/aicpu_kernels/0/': Permission denied
Traceback (most recent call last):
File "object_detect.py", line 121, in <module>
main()
File "object_detect.py", line 94, in main
acl_resource.init()
File "/home/HwHiAiUser/Ascend/thirdpart/aarch64/acllite/acllite_resource.py", line 83, in init
utils.check_ret("acl.rt.set_device", ret)
File "/home/HwHiAiUser/Ascend/thirdpart/aarch64/acllite/acllite_utils.py", line 18, in check_ret
.format(message, ret_int))
Exception: acl.rt.set_device failed ret_int=507033
acl resource release all resource
Reset acl device 0
Release acl resource success
可以通过将**/usr/lib64/aicpu_kernels/0**的owner改为HwHiAiUser用户
sudo chown HwHiAiUser:HwHiAiUser /usr/lib64/aicpu_kernels/0/..
查看结果
post process
[[ 1 1425036528 1425036528 1425036528 1425036528 1425036528
1425036528 1425036528]]
box num 1
[[ 55.25 ]
[ 60.125 ]
[375. ]
[236. ]
[ 0.984375]
[ 16. ]]
images:../data/dog1_1024_683.jpg
======== inference results: =============
dog: class 16, box 136 148 923 580, score 0.984375
运行完成后,会在样例工程的out/output目录下生成推理后的图片,显示对比结果如下所示。
准备C++代码运行环境
由于opencv和ffmpeg编译耗时,我们准备了编译好的包,可以从下表中下载,然后解压到系统中即可
软件名称 | 版本 | 下载链接 |
---|---|---|
Opencv & FFMPEG | 4.2 | thirdpart_opencv_ffmpeg_openEulerOs.gz |
将压缩包上传到root目录,并解压安装
#解压${THIRDPART_PATH}目录
tar xvf thirdpart_opencv_ffmpeg_openEulerOs.gz -C ${THIRDPART_PATH}
准备环境变量
编辑.bashrc文件
[root@localhost ~]# vim ~/.bashrc
在文件末尾添加:
export LD_LIBRARY_PATH=$THIRDPART_PATH/lib:$LD_LIBRARY_PATH
export NPU_HOST_LIB=/usr/local/Ascend/ascend-toolkit/latest/acllib/lib64/stub
export DDK_PATH=/usr/local/Ascend/ascend-toolkit/latest
export INSTALL_DIR=/usr/local/Ascend/ascend-toolkit/latest
export CPU_ARCH=aarch64
acllite编译安装
执行以下命令,执行编译脚本,开始acllite编译。
cd $HOME/samples/cplusplus/common/acllite
make #编译
make install #安装
图片目标检测:YOLOV3
功能:使用yolov3模型对输入图片进行预测推理,并将结果打印到输出图片上。
样例输入:原始图片jpg文件。
样例输出:带推理结果的jpg文件。
前提条件
部署此Sample前,需要准备好以下环境:
-
请确认已按照准备C++代码运行环境准备好环境。
-
已完成对应产品的开发环境和运行环境安装。
模型转换。
模型名称 | 模型说明 | 模型下载路径 |
---|---|---|
yolov3 | 图片检测推理模型。是基于Caffe的yolov3模型。 | 请参考https://gitee.com/ascend/modelzoo/tree/master/contrib/TensorFlow/Research/cv/yolov3/ATC_yolov3_caffe_AE目录中README.md下载原始模型章节下载模型和权重文件。 |
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.caffemodel
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/Yolov3/yolov3.prototxt
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/YOLOV3_coco_detection_picture_DVPP_with_AIPP/aipp_nv12.cfg
atc --model=yolov3.prototxt --weight=yolov3.caffemodel --framework=0 --output=yolov3 --soc_version=Ascend310P1 --insert_op_conf=aipp_nv12.cfg
样例编译
修改编译与执行脚本
cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/scripts
vim sample_build.sh
修改
common_script_dir=${THIRDPART_PATH}/common
为:
common_script_dir=../../../../../common
vim sample_run.sh
修改
common_script_dir=${THIRDPART_PATH}/common
为:
common_script_dir=../../../../../common
注意其他样例,进行以上同样的修改!
执行以下命令,执行编译脚本,开始样例编译。
cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/scripts
bash sample_build.sh
若果编译报以下错误:
/home/HwHiAiUser/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/src/sample_process.cpp: In member function ‘void SampleProcess::DrawBoundBoxToImage(std::vector<BBox>&, const string&)’:
/home/HwHiAiUser/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/src/sample_process.cpp:214:47: error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope
cv::Mat image = cv::imread(origImagePath, CV_LOAD_IMAGE_UNCHANGED);
^~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/main.dir/build.make:102: CMakeFiles/main.dir/sample_process.cpp.o] Error 1
make[2]: Leaving directory '/home/HwHiAiUser/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/build/intermediates/host'
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/main.dir/all] Error 2
make[1]: Leaving directory '/home/HwHiAiUser/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/build/intermediates/host'
make: *** [Makefile:130: all] Error 2
[ERROR] build failed, Please check your environment!
参考以下diff文件内容,解决编译报错
@@ -211,7 +211,7 @@
void SampleProcess::DrawBoundBoxToImage(vector<BBox>& detectionResults,
const string& origImagePath)
{
- cv::Mat image = cv::imread(origImagePath, CV_LOAD_IMAGE_UNCHANGED);
+ cv::Mat image = cv::imread(origImagePath, cv::IMREAD_UNCHANGED);
for (int i = 0; i < detectionResults.size(); ++i) {
cv::Point p1, p2;
p1.x = detectionResults[i].rect.ltX;
@@ -389,4 +389,4 @@
ERROR_LOG("finalize acl failed, errorCode = %d", static_cast<int32_t>(ret));
}
INFO_LOG("end to finalize acl");
-}
\ No newline at end of file
+}
样例运行
数据准备
cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP
mkdir data
cd data
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/YOLOV3_coco_detection_picture/dog1_1024_683.jpg
执行运行脚本,开始样例运行。
bash sample_run.sh
查看结果
运行完成后,会在运行环境的命令行中打印出推理结果。
图片分类:googlenet
功能:使用googlenet模型对输入图片进行分类推理。
样例输入:待推理的jpg图片。
样例输出:推理后的jpg图片。
前提条件
部署此Sample前,需要准备好以下环境:
-
请确认已按照准备C++代码运行环境准备好环境。
-
已完成对应产品的开发环境和运行环境安装。
模型转换
模型名称 | 模型说明 | 模型下载路径 |
---|---|---|
googlenet | 图片分类推理模型。是基于Caffe的GoogLeNet模型。 | 请参考https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/googlenet/ATC_googlenet_caffe_AE目录中README.md下载原始模型章节下载模型和权重文件。 |
# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。
cd ${HOME}/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_picture/model
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.caffemodel
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/classification/googlenet.prototxt
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/googlenet_imagenet_picture/insert_op.cfg
atc --model="./googlenet.prototxt" --weight="./googlenet.caffemodel" --framework=0 --output="googlenet" --soc_version=Ascend310P1 --insert_op_conf=./insert_op.cfg --input_shape="data:1,3,224,224" --input_format=NCHW
```
样例编译
修改一下编译和运行脚本:
cd $HOME/samples/cplusplus/level2_simple_inference/2_object_detection/YOLOV3_coco_detection_picture_DVPP_with_AIPP/scripts
vim sample_build.sh
修改
common_script_dir=${THIRDPART_PATH}/common
为:
common_script_dir=../../../../../common
vim sample_run.sh
修改
common_script_dir=${THIRDPART_PATH}/common
为:
common_script_dir=../../../../../common
参考以下diff,修改src/classify_process.cpp,解决编译报错
@@ -96,7 +96,7 @@ AclLiteError ClassifyProcess::Process(std::vector<std::string>& fileVec, aclrtRu
AclLiteError ClassifyProcess::Preprocess(const string& imageFile) {
ACLLITE_LOG_INFO("Read image %s", imageFile.c_str());
- cv::Mat origMat = cv::imread(imageFile, CV_LOAD_IMAGE_COLOR);
+ cv::Mat origMat = cv::imread(imageFile, cv::IMREAD_COLOR);
if (origMat.empty()) {
ACLLITE_LOG_ERROR("Read image failed");
return ACLLITE_ERROR;
@@ -171,7 +171,7 @@ AclLiteError ClassifyProcess::Postprocess(const string& origImageFile,
}
void ClassifyProcess::LabelClassToImage(int classIdx, const string& origImagePath) {
- cv::Mat resultImage = cv::imread(origImagePath, CV_LOAD_IMAGE_COLOR);
+ cv::Mat resultImage = cv::imread(origImagePath, cv::IMREAD_COLOR);
// generate colorized image
int pos = origImagePath.find_last_of("/");
@@ -212,4 +212,4 @@ void ClassifyProcess::DestroyResource()
isReleased_ = true;
}
-}
\ No newline at end of file
+}
执行以下命令,执行编译脚本,开始样例编译。
cd $HOME/samples/cplusplus/level2_simple_inference/1_classification/googlenet_imagenet_picture/scripts
bash sample_build.sh
样例运行
执行运行脚本,开始样例运行。
bash sample_run.sh
查看结果
运行完成后,会在运行环境的命令行中打印出推理结果,并在out/output目录下生成推理后的图片。
[INFO] Resize image ../data/rabbit.jpg
[INFO] top 1: index[331] value[0.674316]
[INFO] top 2: index[332] value[0.296875]
[INFO] top 3: index[330] value[0.013885]
[INFO] top 4: index[203] value[0.002548]
[INFO] top 5: index[29] value[0.002089]
[INFO] Classification Excute Inference success
[INFO] Execute sample finish
[INFO] Unload model ../model/googlenet.om success
[INFO] destroy context ok
系统维护
卸载驱动
目前发布的run包在宿主机上的卸载方式相同。本节以*{product name}-npu-driver_x.x.x_linux-{arch}*.run为例介绍.run格式驱动包卸载相关操作,具体请根据实际情况进行替换。
前提条件
未安装run安装包时不能使用卸载功能。
操作步骤
-
使用网络登录工具, 如:PuTTY登录服务器的OS命令行。
-
执行如下命令,切换至root用户。
su - root
-
支持以下两种卸载方式,用户根据实际情况选择其中一个方式卸载即可:
-
在任意路径执行如下命令卸载软件包:
/driver/script/uninstall.sh
说明:
表示软件包安装路径,可以执行cat /etc/ascend_install.info命令查询安装路径;请根据实际情况替换。
-
在软件包所在路径执行以下命令进行卸载:
./{product name}-npu-driver_x.x.x_linux-{arch}.run --uninstall
注意:
-
若业务或容器占用了davinci节点,卸载过程中系统会提示“The davinci nodes are occupied by some processes, please stop processes and install or uninstall again, details in : /var/log/ascend_seclog/ascend_install.log”报错,可以选择使用**–force**参数进行强制卸载,详细请参见参数说明。但可能导致当前正在运行的业务受到影响。
若出现如下关键回显信息,则表示驱动卸载成功。
Driver package uninstalled successfully!
-
-
-
根据系统提示信息决定是否重启服务器,若需要重启系统,请执行以下命令;否则,请跳过此步骤。
reboot
须知:
驱动卸载后,npu-smi工具不可用。
卸载固件
驱动和固件的卸载没有先后顺序要求。驱动卸载请参见卸载驱动。本节以*{product name}*-npu-firmware_x.x.x.run为例介绍固件卸载相关指导,具体请根据实际情况进行替换。
前提条件
未安装run安装包时不能使用卸载功能。
操作步骤
-
使用网络/串口登录工具,如:PuTTY登录服务器的OS命令行。
-
执行如下命令,切换至root用户。
su - root
-
支持以下两种方式,用户根据实际情况选择其中一个方式卸载即可:
-
在任意路径执行如下命令卸载软件包:
/firmware/script/uninstall.sh
说明:
表示软件包安装路径,可以执行cat /etc/ascend_install.info命令查询安装路径;请根据实际情况替换。
-
在软件包所在路径执行以下命令进行卸载:
./{product name}-npu-firmware_x.x.x.run --uninstall
若出现如下关键回显信息,则表示固件卸载成功。
Firmware package uninstalled successfully!
-
-
根据系统提示信息决定是否重启服务器,若需要重启系统,请执行以下命令;否则,请跳过此步骤。
reboot