骁龙神经处理引擎SDK参考指南(8)

281 篇文章 30 订阅


4.4.7使用 UDO 运行模型

使用 UDO 执行神经网络

本节介绍如何向 SNPE 提供表示 UDO 的库集,以执行包含 UDO 的网络模型。执行需要使用 SNPE 转换器工具将包含 UDO 的模型转换为 DLC 格式,如使用UDO 准备模型中所述。执行还需要创建与 UDO API 兼容的注册和实现库,如UDO 概述中所述。
UDO 可以在流程中注册,并由在流程的整个生命周期中使用它们的任何 SNPE 实例使用。它们使用以下 API向zdl::SNPE::SNPEFactory注册:

bool 
SNPEFactory::addOpPackage(const std::string& regLibraryPath);

请注意,注册库的绝对路径是使用上述 API 明确提供给 SNPE 的,而实现库可以存在于系统上任何应该被库加载器发现的地方(在 Unix 系统上使用 LD_LIBRARY_PATH)。

除了本机 C++ API 之外,SNPE SDK 还提供了一个用于 Android 应用程序的 Java API。API 是 SNPE 类的一部分:

public static boolean 
addOpPackage(final Application application, String regLibraryPath)

使用基于 UDO 的 DLC 运行 snpe-net-run 命令行工具

本节概述了snpe-net-run命令行工具与基于 UDO 的 DLC的使用。snpe-net-run的使用与其典型用法基本没有变化。snpe-net-run 工具通过命令行选项 --udo_package_path 注册一个 UDO 注册库,它接受注册库的绝对路径。

示例用法如下:

snpe-net-run --container <path_to_dlc> 
			 --input_list <path_to_input_list> 
			 --udo_package_path <path_to_registration_lib>

在未签名的进程域上运行基于 UDO 的 DLC

要在未签名的进程域上运行,与上述使用snpe-net-run命令行工具的部分相同的原则适用于一些扩展。首先,未签名的过程域仅适用于 DSP 目标。其次,对于要创建的未签名进程域,必须将参数传递到命令行以请求它。这以 platform_options key:value 参数对的形式出现。要在未签名的进程域上启用模型执行,只需将以下内容添加到命令行:

--use_dsp 
--platform_options unsignedPD:ON

示例用法如下:

snpe-net-run --container <path_to_dlc> 
			 --input_list <path_to_input_list> 
			 --udo_package_path <path_to_registration_lib> 
			 --use_dsp 
			 --platform_options unsignedPD:ON

注意: snpe-net-run 要求实现库可以被系统库加载器发

4.5 模型转换

4.5.1 Caffe和Caffe2模型转换

机器学习框架具有用于存储神经网络模型的特定格式。SNPE 通过将它们转换为框架中立的深度学习容器 (DLC)格式来支持这些不同的模型。DLC 文件由 SNPE 运行时用于执行神经网络。

将模型从 Caffe 转换为 DLC
经过训练的 Caffe 模型包括:

  • 带有网络定义的 Caffe prototxt 文件 (net_definition.prototxt)
  • 具有权重和偏差的 Caffe 二进制原型文件 (trained_model.caffemodel)

snpe -caffe-to-dlc工具将 Caffe 模型转换为等效的 SNPE DLC 文件。以下命令会将 AlexNet Caffe 模型转换为 SNPE DLC 文件。

snpe-caffe-to-dlc --input_network $SNPE_ROOT/models/alexnet/caffe/deploy.prototxt
                  --caffe_bin $SNPE_ROOT/models/alexnet/caffe/bvlc_alexnet.caffemodel
                  --output_path alexnet.dlc

可以按照获取AlexNet教程获取 AlexNet 模型文件。

将模型从 Caffe2 转换为 DLC
经过训练的 Caffe2 模型包括:

  • 具有网络定义的二进制 protobuf 文件
  • 具有权重和偏差的二进制 protobuf 文件
    snpe-caffe2-to-dlc 工具将 Caffe2 模型转换为等效的 SNPE DLC 文件。以下命令会将 AlexNet Caffe2 模型转换为 SNPE DLC 文件。
snpe-caffe2-to-dlc --predict_net predict_net.pb
                   --exec_net exec_net.pb
                   --input_dim data 1,3,227,227
                   --dlc alexnet.dlc

AlexNet 模型文件可以从 Github 上的 Caffe2 项目中获取。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值