华为Atlas200DK硬件--矿大人工智能实验(环境搭建+人像语义分割实现)

在老师发的文档中是使用分设开发环境与运行环境的方法:

        此方法不仅要使用ubuntu,并且要分别配置环境步骤繁琐易出错

本实验博主采用合设环境(如果你的Atlas 200 DK已接入网络,您可以直接使用Atlas 200 DK作为开发环境,即Atlas 200 DK即作为开发环境又作为运行环境这就是我们所说的合设)

安全清空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卡清除完毕可以开始烧写镜像

准备dd镜像

        dd镜像中即含有你开发板需要的开发环境和运行环境,通过dd镜像的方式来将环境恢复到sd卡中再升级至你需要的版本就可以了

        历代版本

        f7868f87eb2c46edab9d094438eedf7b.png

提取码:kjm7 

        在这里博主使用的固件与驱动版本:1.0.12 CANN版本:5.0.4alpha005

往SD卡中烧入dd镜像

        烧入镜像需要下载balenaEtcher软件

ec00599772443da6c9e6570cf6af85ff.png

 拔出sd卡,将其插入Atlas200DK开发板中,上电启动,开发板会进行自动升级固件、重启灯动作,大概需要等待5分钟左右,四个led灯全亮,至此大功告成!!!

开发板连接PC机

1.USB端口连接

PC机打开设备管理器->其他设备,可以看到带有警报标志的RNDIS, 右键点击RNDIS->更新驱动程序

05a3a34549d14cbc855e1a9a40ba6937.png?

 选择“浏览我的电脑以查找驱动程序”

88c499463ac44c7a8dca44f7333992c8.png?=640x

选择“让我从计算机上的可用驱动程序列表中选取”

向下滑动,选择“网络适配器”,然后下一页

e0c3f324e4464bbab217e42cfe08824d.png?

 厂商选择Microsoft,型号选择USB RNDIS6 适配器,然后下一页

2d083dfde5a84041b86bb146b093e435.png?

 出现警告,选择“是”

更新驱动程序完成

进入网络和Internet->高级网络设置->更多网络适配器选项,可以查看到USB RNDIS6 适配器

6f57e37c8cc94f31ae272d2caf2ad10d.png?

 右键点击查看属性,双击ipv4协议

1ecf2d3055b5445eb931538a15413d91.png?=500x

选择”使用下面的ip地址“,将ip地址更改为192.168.1.X, X为0~255除了2以外的数字,点击子网掩码填写框会自动生成子网掩码,点击确定
使用USB端口连接的默认ip为192.168.1.2,所以要将PC机网络适配器ipv4的ip地址更改为和其同个网段下

876e1bb7d16c4ff09ca021fd8a179c2e.png?

PC机打开cmd或者其它终端(这里使用的是MobaXterm),输入:

ssh HwHiAiUser@192.168.1.2

按下回车即可。

如果连接需要输入密码,默认密码为Mind@123,进入root模式也是使用这个密码

2、网线连接

使用套件内的网线和USB-Type-C数据线连接开发板和PC机

连接开发板,输入su,然后回车,进入root模式,密码为MInd@123,注意输入密码时页面并不会出现字符

执行cd命令进入netplan文件夹,并查看文件夹下文件

5db44475b0a0408a9994ca81a6c538ee.png?

使用vi命令打开网络配置文件

vi 01-netcfg.yaml

在网络配置文件中设置好网线连接的参数,将dhcp4设置为no,设置ip以及网关gateway4,网关可以设置为192.168.0.X,X为0~255中除了2的任何一个数字,后面步骤中也要使用这个网关配置PC端上的网络适配器,然后保存退出

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

以防万一无脑将里面替换成下面即可(后面共享网络需要配置统一IP)

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]

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

netplan apply

进入网络和Internet->高级网络设置->更多网络适配器选项,确定好网口的网络适配器(这里已经重命名为网口驱动)
拔插USB和网线,观察哪个适配器消失,可以确定对应的网络适配器

d3f57d2c0c8742b7b63e8a898e7d369d.png

 进入ipv4设置页面,将ip地址设置为在开发板中设置的gateway4,或者设置为192.168.1.X, X为0~255除了2以外的数字,确定
如果设置为gateway4相同,便于开发板使用共享网络的方式进行联网

8191d53ac2e44e06b1fa91d549eaa30b.png

打开终端,输入:

ssh HwHiAiUser@192.168.0.2

3、开发板联网

此时需要usb和网线同时连接

使用共享网络的方式联网

首先按照前面步骤,设置好网线连接开发板,确定对应网络适配器ipv4协议的ip地址设置为在开发板中设置的gateway4
本文在开发板中配置et80d34e98d4664730b49302fe488c9e66.pngh0下gateway4为192.168.0.100,所以ip地址设置为相同的192.168.0.100

 打开已接入网络的WLAN或者本地连接,点击共享

33a0659d995a451bafa61ad782db5846.png

 4bcb008871cc45f3b7108e2760366e39.png

 a849bc5caeb54d52909d907e3a3c4c4c.png

 9922a9a986a54785b4ed56a3e04931e1.png

 注意此时对应的网口驱动网络适配器会重置,回到网口驱动的属性页,再次将ipv4协议的ip地址设置为在开发板中设置的gateway4,确定

a3d07c30b02c4cb08940d7bafe4784cd.png

ping百度测试网络连接,开发板成功联网

ping www.baidu.com

选择案例进行实验

在这里我选择

6e42bf7c09144d19b6fa2793e62ede0e.png

在这里根据要求下载相应依赖

155c227c01174ed9a0cb6a0d67052b18.png

只需要点击链接按照步骤下载依赖即可

开发环境的安装

准备安装

# 以安装用户在任意目录下执行以下命令,打开.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文件,将环境变量中的latest都改为5.0.4.alpha005

这里5.0.4.alpha005需要根据实际下载的CANN版本进行修改

fe15fed72ee646939326736bc186a673.png

 保存退出后,执行source ~/.bashrc ,使配置生效

source ~/.bashrc

创建第三方依赖文件夹并安装git

48fa9ded62104977957112f159e15d13.png

 使用git下载官方的示例源码,并拷贝公共文件到第三方路径中

103cb00031dd4e35b4b33c94560c0b53.png

200DK场景还需要执行以下命令拷贝media_mini等so文件以及相关头文件,满足摄像头样例编译需要。

普通用户可能权限不够需要进入root用户进行

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/

安装过程

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

特别注意!!如果出现以下错误
主要排查两点错误:
1.是否已经修改环境变量中的latest
2.确定cann版本大于等于5.0.4

2a55f4b30ae948a7af011f2202391f75.png

 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

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

# 为了方便下载,在这里直接给出原始模型下载及模型转换命令,可以直接拷贝执行。也可以参照上表在modelzoo中下载并手工转换,以了解更多细节。     

cd $HOME/samples/cplusplus/contrib/human_segmentation/model    

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/human_segmentation/human_segmentation.pb   

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/AE/ATC%20Model/human_segmentation/insert_op.cfg

atc --input_shape="input_rgb:1,512,512,3" --input_format=NHWC --output=human_segmentation --soc_version=Ascend310 --insert_op_conf=./insert_op.cfg --framework=3 --model=./human_segmentation.pb

4.demo的编译和运行

执行以下命令,执行编译脚本,开始样例编译。

cd  $HOME/samples/cplusplus/contrib/human_segmentation/scripts    
bash sample_build.sh

执行运行脚本,开始样例运行。

bash sample_run.sh

5.查看结果

e6b8a260d04b40e1af4932b7d1d1d7f7.png

 在执行运行脚本之后会让你选择其中一个端口(这里因为已经都下载后来我之后做的没有连网线所以没有192.168.0.2)

选择192.168.1.2

95f91c3bad5e474fb352d26082269372.png

之后会出现一个网站 按住ctrl在点击就可以打开查看网页

739c6fb475524487b4e4ffa8a6c34f68.png

点击后面的person即可

 383167e8ac3449de8bdccff797daf831.png

拓展:

因为这个案例中只有一个视频因此我们检测其它案例时就还需要其他mp4视频但是通过电脑传进去较为麻烦可以在这里下载mp4视频

进入网站选择自己想要下载的视频 此时按F12会出现网络标签页

cbd239c199b74e4f8fd24e56187267f5.png

 通过寻找可以直接找到视频的链接地址,此时只需要进入data文件夹中使用wget获取视频即可,开发板需联网

cd  $HOME/samples/cplusplus/contrib/human_segmentation/data

7ea5cb23b29f4d3088b342ec80bfcb71.png

 但是展示是需要修改其中的代码

cd  $HOME/samples/cplusplus/contrib/human_segmentation/scripts    
vi sample_build.sh

09ca8d71e9fb4fab9ff6b18ce33e79ef.png

 进入之后需要按I键进入插入模式

465e134746374e9eacfa8d0505ca8bf0.png

 修改这个视频名称即可c50ccb3cae034c08a4faa7d77dae5f4e.png

 最后按上面步骤打开网站查看

277b1ea3ccc34845bf07c1d6b4b92a32.png

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
引用中的代码是一个用来构建螺旋阵的程序,通过输入一个正整数N,程序会输出符合题意的螺旋阵。这个程序使用了两层循环,第一层循环用来枚举起点,第二层循环用来枚举终点,然后将子串个数加1。最终程序会输出子串个数。 引用中的代码是一个排序程序,该程序使用了vector容器,通过输入一组整数并将其存储在vector中,然后使用sort函数对vector进行排序。最后,程序会输出排序后的整数序列。 根据你的问题描述"2023矿大数据结构",我无法理解你的问题,请提供更多的信息或者重新描述你的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [2023矿大数据结构实验二C++](https://blog.csdn.net/m0_72045533/article/details/131075157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2023矿大数据结构第三次作业代码](https://blog.csdn.net/m0_72045533/article/details/131485539)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ˇasushiro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值