这是笔者第一次使用开发板来运行深度学习模型,踩坑无数,耗费了数十个小时,更苦于没有公开详细教程,特此将详细步骤和一些个人观点记录于此。如果对您起到了一些帮助,请不吝赐赞
本文将讲解Win+虚拟机的配置方法,Linux系统可参考虚拟机的内部操作。
开发板为Atlas 200DK,编译器为Mind Studio。
本文使用的镜像内已安装好Ubuntu系统,以及Mind Studio工具,并且已配置好交叉编译环境,相关的环境变量。操作步骤如下:
步骤1:将获取到的虚拟机镜像包放入PC机硬盘的某个目录下
步骤2:打开虚拟机软件(VMWare)
步骤3:在打开的对话框中单击虚拟机文件(*.vmx),然后点击“打开”
步骤4:登录虚拟机
步骤5:修改虚拟机网络设置:虚拟机->设置网络适配器->自定义:特定虚拟网络->VMnet8(NAT模式),如下图所示:
如果开发板的DDK版本相对VMWare较旧,需要对开发板进行升级。操作步骤如下:
步骤1:开发板上电,通过USB线连接到PC机,启动PC机上的虚拟机(Ubuntu服务器)
在VMware中选择可移动设备,将开发板接入虚拟机中(此处可能要若干次)
开发板通过USB连接时,其默认IP是192.168.1.2,且连接后会在Ubuntu服务器上虚拟出一个网卡,需要将此虚拟网卡的地址配成192.168.1.xxx网段,这样才能连上开发板。
打开终端,切换到root用户(密码为root),修改interfaces文件
修改interfaces
.
su root
vim /etc/network/interfaces
虚拟网卡名可通过ifconfig命令查看(如图右侧部分所示)。如虚拟网卡名不一致,需修改interfaces文件中虚拟网卡名。
步骤2:
准备升级包(mini_developerkit-1.31.T15.B150.rar)
先将开发板升级包(mini_developerkit-1.31.T15.B150.rar)拷贝进Ubuntu服务器,然后打开终端,进入存放升级包的路径,通过如下scp命令把升级包拷贝至开发板。(需要开发板密码)
scp mini_developerkit-1.31.T15.B150 HwHiAiUser@192.168.1.2:~
再登录开发板,把升级包拷贝至/opt/mini路径下(因HwHiAiUser没有/opt/mini路径写入权限,而且无法直接通过root用户进行scp拷贝,所以要先以普通用户拷贝至开发板,再在开发板上以root用户拷贝至/opt/mini路径)
ssh HwHiAiUser@192.168.1.2
su root
mv mini_developerkit-1.31.T15.B150.rar /opt/mini
步骤3:执行以下命令进行开发板升级
cd /opt/mini
./minirc_install_phase1.sh
步骤4:重启开发板,完成升级
步骤5: 升级检查
1)在虚拟机中以HwHiAiUser用户ssh登录到Atlas 200 DK开发者板
ssh HwHiAiUser@192.168.1.2
2)执行如下命令查看开发者板的系统运行软件的版本号
cat /etc/sys_version.conf
3)执行如下命令查询firmware的系统版本号及有效组件版本号
su – root
cd /var/davinci/firmware/
./upgrade-tool --device_index -1 --system_version
./upgrade-tool --device_index -1 --component -1 –version
4)查看升级日志,无错误信息代表升级成功
cd /var/davinci/log
cat upgrade.log
cat firmware_upgrade_progress.log
步骤1:启动Mind Studio
以Mind Studio的安装用户进入MindStudio-ubuntu/bin目录,执行如下命令:
cd MindStudio-ubuntu/bin
./MindStudio.sh
步骤2:在Mind Studio中添加开发板设备
1) 检查Mind Studio中是否已经添加过Atlas200DK开发板
点击MindStudio上方工具栏Tools --> Device Management,若发现已经添加过开发板,需检查IP是否正确(USB连接时默认IP为192.168.1.2,网线连接时默认IP为192.168.0.2),如果IP不正确,请按如下图所示,修改为实际所用的开发板地址:
2) 若Mind Studio未添加过开发板,单击设备管理界面右侧的+增加设备,弹出下图界面:
3) 单击“OK”,后台脚本会根据Host IP连接设备,并获取设备的Target以及版本信息。之后设备信息会增加到设备管理界面“Available Device”区域。
4) 如果第一次连接某个版本开发板,请确保已经装过对应版本DDK,并同步lib:
单击管理界面右侧的同步按钮![在这里插入图片描述](https://img-blog.csdnimg.cn/20200218160719613.png启动同步lib,弹出“Pre Synchronization Check”界面更新设备信息,该界面根据用户网络状况,出现时间长短不定,待更新完毕进入下图:
Library file synchronization succeeded. Please click "Finish".
至此,开发环境已经部署完毕。
本文以运行猫狗图片识别为样例,其他模型运行,如人脸检测和物体识别,也可以参考。
本文不侧重于如何训练一个模型, 请参考Model Arts的社区样例。
https://www.huaweicloud.com/product/modelarts.html
步骤1
下载已经运行好的.pb模型,放置到Mind studio能访问到的路径下
Mind Studio如果安装在虚拟机中,则需要将此文件拷贝到虚拟机中,如$HOME/download文件夹下。笔者采用的是将文件拷贝至U盘,便于在宿主机和虚拟机中传递文件。
步骤2:下载sample
猫狗大战模型是一个分类模型,可以直接使用社区项目中的分类sample替换模型运行。
sample代码路径为:https://gitee.com/Atlas200DK/sample-classification/tree/1.3x.0.0/
注意我们当前使用的是C31的Mind Studio,所以需要下载1.3x.0.0分支下的代码。
步骤3:用Mind Studio打开工程
使用C31的Mind Studio打开下载下来的sample代码。
步骤4:转换模型
将ModelArts上训练得到的pb模型转换为Mind Studio支持的om模型
1、使用netron查看模型的输入层名和输入参数NHWC
Netron打开网址:https://lutzroeder.github.io/netron/
打开后选择Open model,选择ModelArts上转好下载下来的模型
能看到,该模型的输入层层名为input_1,输入参数为?,?,?,3,代表输入参数的C值为3。
模型转换
Mindstudio工具中选择Tool->Model Convert ,进入模型转换界面
选择我们使用的pb模型,点击Next开始进行节点配置,填入NHWC信息,如下图所示
点击Next,量化配置不需要修改,再点击Next进入AIPP配置。这里需要修改Input Image Size修改为256224,因为模型需要做宽128对齐,高16对齐,模型原本要求输入是224224,宽不可以整除128,所以对齐后得到的值为256,高可以整除16,做完对齐之后取值还是224.Model Image Format需要修改为RGB888_U8。如下图所示:
点击Finish,开始转换模型。转换成功后会在Output中打印成功信息和模型存储位置。模型转换成功后都在$HOME/modelzoo文件夹下,自行获取。
步骤1:需要在Mind Studio打开的工程中修改Param_configure.conf文件。其中remote_host为开发板地址,USB连接一般为192.168.1.2。model_name是使用的模型名称,需要填写我们转换好的模型名称,如vgg16trained.om
步骤2:同步RC库,设置环境变量
选择tools下的Device Management。按照下图点击第四个按钮确认开发板的连接情况,点击第五个按钮进行同步RC库。
同时需要设置好环境变量。按照如下方式进行设置:
vim ~/.bashrc
执行如下命令在最后一行添加DDK_HOME及LD_LIBRARY_PATH的环境变量。
export tools_version=1.31.T15.B150
export DDK_HOME=$HOME/.mindstudio/huawei/ddk/1.31.T15.B150/ddk
export NPU_DEVICE_LIB=$DDK_HOME/../RC/host-aarch64_Ubuntu16.04.3/lib
export LD_LIBRARY_PATH=$DDK_HOME/lib/x86_64-linux-gcc5.4
使用Esc :wq!保存退出
执行如下命令使环境变量生效。
source ~/.bashrc
步骤3. 进行代码编译
选择Build→Edit Build Configuration,确认自己的配置后选择Build
步骤4. 进行代码部署
选择Run→Run->sample-classification,进行代码部署,输出如下图所示即为部署成功。报错信息请忽略,因为Mind Studio无法为可执行程序传参,上述步骤是将可执行程序与依赖的库文件部署到开发者板,此步骤需要ssh登录到开发者板至相应的目录文件下手动执行。
测试集图片可以在百度上直接搜索猫狗图片,最好将下载下来的图片重名为如图所示的格式。图片的宽和高的范围为[16, 4096]。
这里笔者给出的是上传的猫狗图片。其中前三张是猫,命名为 cat1.jpg, cat2.jpg, cat3.jpg,后两张是狗,命名为dog1.jpg,dog2.jpg。
命令行进入图片所在目录下,使用scp -r 指令将所有图片拷贝到开发板的$HOME目录下
cd ~/HIAI_PROJECTS/workspace_mind_studio/classification/out
执行应用程序,这里图片需要选择到我们上传到开发板上的图片对应的路径
python3 run_classification.py -w 224 -h 224 -i ~/catanddog/cat1.jpg -n 2
可以看到图片有confidence输出,这里1代表的是猫类,0代表的是狗类,,从给出的数据可以看出,程序均以 1.0000 的置信度判断出了正确的结果。
华为Ascend社区:
https://gitee.com/Atlas200DK/projects