杭电创新实验报告Word下载.docx
《杭电创新实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《杭电创新实验报告Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
![杭电创新实验报告Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/12/8cd97762-7de8-49d7-bcb0-3d2e798ad4a3/8cd97762-7de8-49d7-bcb0-3d2e798ad4a31.gif)
MindStudio;
晟腾社区
1引言
当今世界,AI的应用越来越深入人们的生活,基于AI的图像处理也是其中一个重要的应用。
通过AI识别图像,可以做到人脸识别、手写文字识别、物体类型识别等。
该技术可以用于智能垃圾分类、基于人脸识别的门禁系统、汽车自动驾驶中的路况识别等场景。
同时通过AI也可以对图像进行处理,例如黑白图像的自动上色、模糊图像的清晰处理等。
基于AI的图像处理在生产和生活中的应用日益广泛。
而深度学习是最有可能让机器实现“看”的能力的技术。
简单地说,深度学习就是一种机器学习框架,通过模仿人类的神经元系统,为计算机提供自主学习能力。
因此,计算机可以准确识别图片中的内容,而无需根据指令安装手动编码的软件——但它需要大量数据才能完成识别。
2开发板系统介绍
本系统的整体框图如下图所示:
数据流如下图所示,支持视觉类产品原型研究,通过SENSROR-3599-Atlas200-输出,支持Atlas200随路或旁路方式处理,数据流如①②,支持算法研究者/基于图片处理的研究,通过GE链接开发者底板,数据直接到Atlas200处理后返回,数据流如③
3环境部署以及遇到疑难问题
3.1开发环境部署
图1开发环境、运行环境和PC机拓扑图
开发套件包中的组件功能如下所示:
●ACLlib:
用来编译和运行应用程序。
包含AscendCL编译依赖的相关库,并具有GE模型的加载、执行功能。
●ATC:
模型和算子编译器。
用于离线模型转换、自定义算子开发、IR构图开发等场景。
●OPP:
算子库,包含算子原型库及算子实现库、算子插件、融合规则。
算子实现包含TBE算子、AICPU算子,另外包含算子parser。
●Toolkit:
调测工具包,主要包含开发者调测应用、算子需要使用的工具包。
搭建开发环境流程:
1.获取开发者套件包
Ascend-cann-toolkit_{version}_linux-x86_64.run
Ascend-cann-toolkit_{version}_linux-aarch64.run
主要用于用户开发应用、自定义算子和模型转换。
开发套件包包含开发应用程序所需的库文件、开发辅助工具(如ATC模型转换工具)。
两种架构包统一安装:
开发环境为x86架构,但运行环境是arm架构,所以再安装一个arm64的开发套件包,用于应用的交叉编译。
2.配置UbuntuX86系统
1)检查root用户的umask
1以root用户登录安装环境。
2检查root用户的umask值
umask
3如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask0022后保存。
vi~/.bashrc
source~/.bashrc
2)创建安装用户
开发套件包建议以非root用户进行安装,创建非root用户的命令如下所示(请以root用户执行以下命令)。
1创建非root用户。
groupaddusergroup
useradd-gusergroup-d/home/username-musername-s/bin/bash
2设置非root用户密码。
passwdusername
3)配置安装用户权限
开发套件包安装前需要下载相关依赖软件,请执行如下操作为非root用户加权。
1以root用户打开“/etc/sudoers”文件:
chmodu+w/etc/sudoers
vi/etc/sudoers
2在该文件“#Userprivilegespecification”下面增加如下内容:
usernameALL=(ALL:
ALL)NOPASSWD:
SETENV:
/usr/bin/apt-get,/usr/bin/pip,/bin/tar,/bin/mkdir,/bin/rm,/bin/sh,/bin/cp,/bin/bash,/usr/bin/makeinstall,/bin/ln-s/usr/local/python3.7.5/bin/python3/usr/local/python3.7.5/bin/python3.7.5,/bin/ln-s/usr/local/python3.7.5/bin/pip3/usr/local/python3.7.5/bin/pip3.7.5,/usr/bin/unzip,/usr/bin/find/etc-namef
3添加完成后,执行:
wq!
保存文件。
4执行以下命令取消“/etc/sudoers”文件的写权限:
chmodu-w/etc/sudoers
4)检查源
开发套件包安装过程需要下载相关依赖,请确保安装环境能够连接网络。
请在root用户下执行如下命令检查源是否可用。
apt-getupdate
5)安装依赖
1检查系统是否安装python依赖以及gcc等软件。
分别使用如下命令检查是否安装gcc,make以及python依赖软件等。
gcc--version
g++--version
make--version
cmake--version
dpkg-lzlib1g|grepzlib1g|grepii
dpkg-lzlib1g-dev|grepzlib1g-dev|grepii
dpkg-llibbz2-dev|greplibbz2-dev|grepii
dpkg-llibsqlite3-dev|greplibsqlite3-dev|grepii
dpkg-lopenssl|grepopenssl|grepii
dpkg-llibssl-dev|greplibssl-dev|grepii
dpkg-llibxslt1-dev|greplibxslt1-dev|grepii
dpkg-llibffi-dev|greplibffi-dev|grepii
dpkg-lunzip|grepunzip|grepii
dpkg-lpciutils|greppciutils|grepii
dpkg-lnet-tools|grepnet-tools|grepii
2检查系统是否安装python开发环境。
开发套件包依赖python环境,分别使用命令python3.7.5--version、pip3.7.5--version检查是否已经安装,如果返回如下信息则说明已经安装,进入下一步。
Python3.7.5
pip19.2.3from/usr/local/python3.7.5/lib/python3.7/site-packages/pip(python3.7)
否则请根据如下方式安装python3.7.5。
使用wget下载python3.7.5源码包,可以下载到开发环境任意目录,命令为:
wgethttps:
//www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
进入下载后的目录,解压源码包,命令为:
tar-zxvfPython-3.7.5.tgz
进入解压后的文件夹,执行配置、编译和安装命令:
cdPython-3.7.5
./configure--prefix=/usr/local/python3.7.5--enable-loadable-sqlite-extensions--enable-shared
make
sudomakeinstall
执行如下命令设置软链接:
sudoln-s/usr/local/python3.7.5/bin/python3/usr/local/python3.7.5/bin/python3.7.5
sudoln-s/usr/local/python3.7.5/bin/pip3/usr/local/python3.7.5/bin/pip3.7.5
设置python3.7.5环境变量。
以安装用户在任意目录下执行vi~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加如下内容。
#用于设置python3.7.5库文件路径
exportLD_LIBRARY_PATH=/usr/local/python3.7.5/lib:
$LD_LIBRARY_PATH
#如果用户环境存在多个python3版本,则指定使用python3.7.5版本
exportPATH=/usr/local/python3.7.5/bin:
$PATH
执行:
命令保存文件并退出。
执行source~/.bashrc命令使其立即生效。
安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。
python3.7.5--version
pip3.7.5--version
python3.7--version
pip3.7--version
3安装Python3相关依赖。
安装前请先使用pip3.7.5list命令检查是否安装相关依赖,若已经安装,则请跳过该步骤;
若未安装,则安装命令如下(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可)。
其中:
toolkit包中算子比对工具依赖:
protobuf、scipy。
pip3.7.5installattrs--user
pip3.7.5installpsutil--user
pip3.7.5installdecorator--user
pip3.7.5installnumpy--user
pip3.7.5installprotobuf==3.11.3--user
pip3.7.5installscipy--user
pip3.7.5installsympy--user
pip3.7.5installcffi--user
3.安装开发套件包
1)以套件包安装用户登录开发环境。
2)上传获取软件包所获取的开发套件包到系统任意路径,并进入套件包所在路径。
3)执行如下命令为安装包增加可执行权限。
chmod+x*.run
*表示开发套件包名。
4)执行如下校验安装包的一致性和完整性。
./Ascend-cann-toolkit_{version}_linux-x86_64.run--check
./Ascend-cann-toolkit_{version}_linux-aarch64.run--check
5)执行以下命令安装软件。
使用自定义路径安装:
./Ascend-cann-toolkit_{version}_linux-x86_64.run--install--install-path={path}
./Ascend-cann-toolkit_{version}_linux-aarch64.run--install--install-path={path}
4.安装后处理
配置环境变量
安装完成后,需要设置如下环境变量才能进行正常开发流程
通过export方式设置环境变量,该种方式设置的环境变量只在当前窗口有效,设置完成后立即生效。
exportinstall_path=/home/HwHiAiUser/Ascend/ascend-toolkit/latest#以安装用户为HwHiAiUser为例
exportASCEND_OPP_PATH=${install_path}/opp
exportASCEND_AICPU_PATH=${install_path}
exportTOOLCHAIN_HOME=${install_path}/toolkit
#开发离线推理程序时配置
exportLD_LIBRARY_PATH=${install_path}/acllib/lib64:
exportPATH=${install_path}/toolkit/bin:
exportPYTHONPATH=${install_path}/toolkit/python/site-packages:
${install_path}/pyACL/python/site-packages/acl:
$PYTHONPATH
#进行模型转换/算子编译时配置
exportLD_LIBRARY_PATH=${install_path}/atc/lib64:
exportPATH=${install_path}/atc/ccec_compiler/bin:
${install_path}/atc/bin:
${install_path}/toolkit/bin:
${install_path}/atc/python/site-packages:
注意事项:
1开发环境部署时的参考资料选择?
开发环境部署时,可以依据官方手册和视频教程,但这里推荐利用官方的部署手册进行部署,由于视频的上传时间较久,里面的部署流程和软件版本都已经比较落后,以及相关注意事项并没有在视频里说的很详细,如果按照视频流程进行部署,可能会遇到一些问题。
由于我们组是通过视频部署的,在运行MindStudio时出现了错误,导致无法成功运行,与另一组进行沟通之后得到了解决。
由于开发环境与运行环境的架构不同,务必注意的是需要将开发环境的软件版本与运行环境的软件版本一致,才可以进行后续的交叉编译。
2部署环境时是否用root用户?
由于Linux中的root用户权限拥有较高,在进行非关键性的操作时,请不要使用root用户在Ubuntu机器上进行一系列操作(除非手册中需要用到root,此时再使用suroot指令到root用户下),以及在后续的连接过程中,都是以普通账户进行的。
3源的选择?
在进行包的下载时,由于我们是按照视频中切换到了国内镜像源,而国内镜像源包含的软件没有官网的全面,例如在进行Python环境变量部署时,有的依赖软件下载失败或无法下载,提示不存在,反而造成了一定的困扰,所以我们这里又将切换到国内源的部分的代码注释掉了,此时下载速度也很快,成功部署了环境变量。
4启动MindStudio时图形窗口初始化失败?
图2MindStudio图形化初始失败错误
在启动MindStudio时也遇到了如图2的错误,原因是:
我个人习惯是用Xshell与Xfpt这两个软件对虚拟机中ubuntu服务器进行操作,启动MindStudio时请一定要在虚拟机中启动,由于Xshell不支持图形化窗口,故会遇到软件初始化失败的情况,其次,请不要root用户来启动MindStudio,在第一个注意事项已经说明,除非特殊操作用到root用户,默认都是在你自己创建的普通用户以及用户组下进行的。
额外提示:
如果启动MindStudio时遇到了很奇怪的错误,此时的错误在XX、csdn等网站搜索不到,可以考虑去晟腾社区论坛中进行留言和交流,那里的资料是比较全面的。
5CSDN中快速搭建环境是否可以参考?
CSDN有篇文章是已经做好了开发环境与运行环境的镜像,并且利用docker来创建一个虚拟的容器,这里我们也注意到了,但是仍不推荐用快速搭建来进行,一个原因是作者制作好的镜像的各种软件包的版本可能是比较老了,如果你想开发一些新的例程,有可能不支持,第二个是docker中由于网络比较复杂,可以想象成docker是子虚拟机,换句话说:
假如利用快速搭建:
PC机器----虚拟机-----docker容器,相当于又有一个网络的嵌套关系,在后续的ssh等操作也可以实现,不过需要甄别出多个虚拟网卡,配置网卡信息时需要格外小心。
3.2运行环境部署(SD卡的制作)
通过SD卡制作功能可以自行制作Atlas200DK开发者板的系统启动盘。
Atlas200DK开发者板SD卡制作方式有如下两种:
●如果有读卡器,可以将SD卡放入读卡器,将读卡器与Ubuntu服务器的USB连接,
然后通过制卡脚本进行SD卡的制作。
●如果没有读卡器,可以将SD卡放入Atlas200DK开发者板卡槽,通过跳线帽/杜邦
线进行开发者板相关针脚连接,将开发者板与Ubuntu服务器的USB连接,然后通
过制卡脚本进行SD卡的制作。
个人不推荐用跳线连接,比较麻烦。
1读卡器的选择
图3USB口的SD卡读卡器
在这里我们采用了USB接口的读卡器(如图3),如果采用非USB通道的读卡器,需要按照对应的规则进行SD卡制作,推荐使用usb读卡器。
需要注意的是,如果是依据官方手册进行的,那么插入USB后,一定要分配到虚拟机里,而不是真实的win系统上,否则虚拟机是检测不到sd卡的,其次,由于Linux的文件系统与win的文件系统类型不一样的,如果是插入win上问你是否格式化,除非是sd卡镜像损坏,否则是不需要格式化的。
2是否必需要按照官方手册进行部署?
这里如果想要快速部署,这里是可以的,我们也采用了快速部署SD卡的方式,具体可以参考Atlas200dk合设环境搭建--用镜像恢复的方式,直接在windows上直接操作,推荐用Etcher工具快速恢复镜像至SD卡。
制作完成后拔出sd卡,将其插入Atlas200DK开发板中,上电启动,开发板会进行自动升级固件、重启灯动作,大概需要等待5分钟左右,四个led灯全亮,至此大功告成!
3sd卡镜像防止损坏的方法
sd卡是很有可能镜像损坏的,由于我在制作时以及启动时的误操作,导致了sd卡的损坏,具体原因一是sd卡制作时,不能轻易的插拔usb读卡器。
图4Atlas200dk的开发板外观
LED灯观察需要重点观察MINI_LED1和MINI_LED2,如图5所示,下面将以表1来说明功能。
原因二是我在启动开发板过程中未仔细的观察led灯的状态和情况,导致了在表中第三个情况进行了断电重启的操作,从而sd卡镜像损坏。
注意观察led灯时需要将顶盖拿下(如图四)拆卸步骤依据官方手册即可。
注意不要暴力拆卸!
图5LED状态灯
Sd卡损坏需要重新依据官方手册进行配置sd卡镜像!
MINI_LED2
MINI_LED1
Atlas200DK开发者套件(型号3000)开发者板状态
注意事项
灭
开发者板启动
开发板可以断电或重启
亮
Ascend310启动
建议不要断电或重启。
闪烁
固件升级
不能重启或断电
开发者板启动完成
表1指示灯的状态说明
3.3路由与网络配置
图6网络连接拓扑图
1虚拟机的选择
推荐用VmwarePro版本的虚拟机,不推荐使用VirtualBox。
2关于连接方式的选择
Atlas200DK连接Ubuntu服务器有以下场景:
A.通过USB端口直连Ubuntu服务器:
使用USB连接线通过USB端口与Ubuntu服务器直连。
此种场景下,Atlas200DK不方便接入网络,仅适用于与Ubuntu服务器进行通信。
B.使用网线直连Ubuntu服务器:
使用网线将Atlas200DK与Ubuntu服务器的网口直连。
C.使用网线通过路由器连接Ubuntu服务器:
使用网线将Atlas200DK接入路由器的网口,通过网络与Ubuntu服务器连接。
推荐使用此种方式,此种方式下,Atlas200DK可直接接入网络。
说明:
官方给出了三种连接方式,这里推荐将A与C都做一遍,A可以适合在外部网络环境改变时依旧可以连接到atlas板(上课时),C是利用路由器可以让atlas板上网(宿舍时),进行下载包等操作,而网线比较麻烦,在这里我们也并没有采用网线连接。
3路由连接时的问题
配置路由上网时,先用USB连接到Ubuntu服务器,利用192.168.1.2进行连接板间环境,
此时USB方式在本机生成的虚拟网卡是192.168.1.223
图7usb连接时生成的虚拟网卡ens35u1
USB方式:
虚拟机Ubuntu服务器--->
虚拟机Ubuntu虚拟网卡192.168.1.223--->
Atlas200DK
192.168.1.2进行通信。
然后按照说明手册进行配置路由上网。
网络介绍:
由于宿舍环境问题,我的网络环境是电脑WiFi连接路由器,路由器网线连接Atlas200DK板并且采用的桥接模式。
图8虚拟机网卡编辑器
观察虚拟机网卡配置信息(如图8),由于之前我一直都是自动选择网卡(可能自动选择了一个错误的网卡,桥接的时候Ubuntu服务器和路由器不在一个网段),同时也导致在板间环境配置好dhcp后板子的网卡eth0是192.168.0.2(很奇怪的IP地址和错误),但是我路由器却是在192.168.123.1这个网段,跨网段导致无法ssh。
图9虚拟机中网卡信息
解决方法:
A.当本机在指定选择网卡后(我这里是无线上网卡),再进行板间环境配置,记得需要在虚拟机中开启有线连接(见图10),这里的有线连接的作用是利用桥接模式将虚拟机和本机定位在同一个网段。
(如果桥接错的网卡,虚拟机将与路由器不在一个网段了。
B.依照步骤配置板子路由IP官方手册的方法,并重启板间环境的网卡。
图10有线连接功能按钮
图11配置路由成功图
此时观察Ubuntu服务器ip和板间ip地址关系,发现在一个网段了。
这时连接状态是Altlas上网通过网线连接路由器,板件和