对部门目标代码生成的深度学习
这个例子展示了如何生成和部署代码预测一只手臂®的设备不使用硬件支持包。万博1manbetx
当你预测生成代码使用手臂计算库和一个硬件支持包,万博1manbetxcodegen
主机生成的代码,将生成的文件复制到目标硬件,并构建可执行目标硬件。没有硬件支持包,万博1manbetxcodegen
生成的代码在主机电脑。你必须运行命令复制文件和构建可执行程序在目标硬件。
下面的例子使用了packNGo
函数相关的所有文件打包成一个压缩的zip文件。用这个例子来学习如何生成的代码部署在手臂氖目标没有硬件支持包使用万博1manbetxpackNGo
。
先决条件
ARM处理器,支持霓虹灯扩展万博1manbetx
目标臂臂计算库(硬件)
开源的计算机视觉库(打开简历)
环境变量的编译器和库
MATLAB®编码器™
深度学习万博1manbetx的支持软件包MATLAB编码器接口
深度学习工具箱™
臂计算库版本,这个示例使用可能不是最新版本,代码生成支持。万博1manbetx为支持版万博1manbetx本的库和设置环境变量信息,明白了先决条件与MATLAB编码器深度学习。
这个例子不支持在线MATLAB。万博1manbetx
squeezenet_predict函数
下面的例子使用了DAG网络SqueezeNet显示图像分类与臂计算库。一个pretrained SqueezeNet深度学习MATLAB提供的工具箱。的squeezenet_predict
函数将SqueezeNet网络加载到一个持续的网络对象。在随后的调用函数,持久对象重用。
类型squeezenet_predict
% 2018年版权MathWorks公司= squeezenet_predict函数()% # codegen %持久对象mynet用于加载DAG网络对象。%在第一次调用这个函数,构造持久对象和%设置。只有在函数被调用时,随后的时间,相同的对象被重复使用%叫预测输入,避免重建并重新加载%网络对象。持久mynet;如果isempty (mynet) mynet = coder.loadDeepLearningNetwork (“squeezenet”、“squeezenet”);结束= mynet.predict(在);
建立一个代码生成静态库的配置对象
当您生成代码针对一个基于arm的设备和不使用硬件支持方案,创建一个配置对象库。万博1manbetx不为一个可执行程序创建一个配置对象。
设置配置对象生成c++代码和生成的代码。
cfg = coder.config (“自由”);cfg。TargetLang =“c++”;cfg。GenCodeOnly = true;
设置一个配置对象的深度学习代码生成
创建一个coder.ARMNEONConfig
对象。指定库版本和目标ARM处理器的体系结构。例如,假设目标板是一个HiKey / Rock960板与ARMv8架构和手臂20.02.1计算库版本。
dlcfg = coder.DeepLearningConfig (“arm-compute”);dlcfg.ArmComputeVersion=“20.02.1”;dlcfg.ArmArchitecture=“armv8”;
深度学习配置对象附加到代码生成配置对象
设置DeepLearningConfig
属性代码生成配置对象的深度学习配置对象。
cfg。DeepLearningConfig = dlcfg;
生成c++代码通过使用来源codegen
codegen配置cfgsqueezenet_predictarg游戏{(227、227、3,“单”)}- darm_compute
arm_compute文件夹中生成的代码是在当前工作目录在主机电脑。
生成Zip文件使用packNGo
函数
packNGo函数在一个压缩包所有相关文件的zip文件。
zipFileName =“arm_compute.zip”;bInfo =负载(fullfile (' arm_compute ', ' buildInfo.mat '));packNGo (bInfo。zipFileName buildInfo,{“文件名”,“minimalHeaders”,假的,“ignoreFileMissing”,真正});
代码生成zip文件。
将生成的压缩文件复制到目标硬件
将Zip文件并提取复制到文件夹,删除硬件的Zip文件
在以下命令替换:
密码
用你的密码用户名
和你的用户名targetname
与你的设备的名称targetloc
文件的目标文件夹
执行以下步骤来复制和提取Linux的zip文件。
如果isunix、系统([“sshpass scp - r - p密码”zipFileName fullfile (pwd)“username@targetname: targetloc /”]),结束如果isunix系统(“sshpass ssh - p密码username@targetname“如果[- d targetloc / arm_compute];然后rm射频targetloc / arm_compute;fi”),结束如果isunix、系统([“sshpass ssh - p密码username@targetname“解压targetloc /zipFileName“- d targetloc / arm_compute””]),结束如果isunix、系统([“sshpass ssh - p密码username@targetname“rm射频targetloc”zipFileName“””]),结束
执行以下步骤来复制和提取从Windows zip文件。
如果ispc、系统([“pscp。exe pw - r的密码zipFileName fullfile (pwd)“username@targetname: targetloc /”]),结束如果ispc系统(“叮铃声。exe - l用户名pw密码targetname“如果[- d targetloc / arm_compute];然后rm射频targetloc / arm_compute;fi”),结束如果ispc、系统([“叮铃声。exe - l用户名pw密码targetname“解压targetloc /zipFileName“- d targetloc / arm_compute””]),结束如果ispc、系统([“叮铃声。exe - l”用户名pw密码targetname rm射频targetloc”zipFileName“””]),结束
示例文件拷贝到目标硬件
这些来自主机的支持文件万博1manbetx复制到目标硬件:
输入图像,
coffeemug.png
Makefile生成图书馆,
squeezenet_predict_rtw.mk
Makefile构建可执行程序,
makefile_squeezenet_arm_generic.mk
同义词集词典,
synsetWords.txt
在以下命令替换:
密码
用你的密码用户名
和你的用户名targetname
与你的设备的名称targetloc
文件的目标文件夹
执行以下步骤来复制所有必需的文件在运行Linux
如果isunix系统(“scp squeezenet_predict_rtw sshpass - p密码。可username@targetname: targetloc / arm_compute /),结束如果isunix系统(“scp coffeemug sshpass - p密码。png username@targetname: targetloc / arm_compute /),结束如果isunix系统(“scp makefile_squeezenet_arm_generic sshpass - p密码。可username@targetname: targetloc / arm_compute /),结束如果isunix系统(“scp synsetWords sshpass - p密码。txt username@targetname: targetloc / arm_compute /),结束
执行以下步骤来复制从Windows运行时所需的所有文件
如果ispc系统(“pscp。exe squeezenet_predict_rtw pw密码。可username@targetname: targetloc / arm_compute /),结束如果ispc系统(“pscp。exe coffeemug pw密码。png username@targetname: targetloc / arm_compute /),结束如果ispc系统(“pscp。exe makefile_squeezenet_arm_generic pw密码。可username@targetname: targetloc / arm_compute /),结束如果ispc系统(“pscp。exe synsetWords pw密码。txt username@targetname: targetloc / arm_compute /),结束
构建图书馆在目标硬件
构建图书馆在目标硬件、ARM硬件上执行生成的makefile。
确保你ARM_COMPUTELIB设置环境变量LD_LIBRARY_PATH在目标硬件。看到先决条件与MATLAB编码器深度学习。ARM_ARCH Makefile中使用变量通过编译器标志基于Arm架构。ARM_VER变量Makefile来编译代码中使用基于Arm计算版本。更换硬件凭证和路径类似于上面的步骤。
执行以下步骤来构建图书馆从Linux。
如果isunix系统(“scp main_squeezenet_arm_generic sshpass - p密码。cpp username@targetname: targetloc / arm_compute /),结束如果isunix、系统([“sshpass ssh - p密码username@targetname“让- c targetloc / arm_compute / - f squeezenet_predict_rtw。可ARM_ARCH = 'dlcfg.ArmArchitecture“ARM_VER = 'dlcfg.ArmComputeVersion“””]),结束
执行以下步骤来构建图书馆从windows。
如果ispc系统(“pscp。exe main_squeezenet_arm_generic pw密码。cpp username@targetname: targetloc / arm_compute /),结束如果ispc、系统([“叮铃声。exe - l用户名pw密码targetname“让- c targetloc / arm_compute / - f squeezenet_predict_rtw。可ARM_ARCH = 'dlcfg.ArmArchitecture“ARM_VER = 'dlcfg.ArmComputeVersion“””]),结束
从图书馆创建可执行文件在目标硬件
构建图书馆与源主要包装文件创建可执行的。main_squeezenet_arm_generic.cpp
是c++主要包装文件调用squeezenet_predict函数来创建可执行文件。
运行以下命令创建从Linux可执行。
如果isunix系统(“sshpass ssh - p密码username@targetname“让- c targetloc / arm_compute / - f makefile_squeezenet_arm_generic。可targetDirName = targetloc / arm_compute”),结束
运行下面的命令来创建可执行从Windows。
如果ispc系统(“叮铃声。exe - l用户名pw密码targetname“让- c targetloc / arm_compute / - f makefile_squeezenet_arm_generic。可targetDirName = targetloc / arm_compute”),结束
运行可执行文件在目标硬件
从Linux使用以下命令运行可执行。
如果isunix系统(“sshpass ssh - p密码username@targetname“cd targetloc arm_compute /;。/ squeezenet coffeemug.png”),结束
从Windows使用以下命令运行可执行文件。
如果ispc系统(“叮铃声。exe - l用户名pw密码targetname“cd targetloc arm_compute /;。/ squeezenet coffeemug.png”),结束
5大预言:- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -纸巾蜡烛杯咖啡杯7.309% 1.098% 0.634% 88.299% 0.591%的水壶
另请参阅
coder.ARMNEONConfig
|coder.HardwareImplementation
|coder.DeepLearningConfig
|packNGo