百度大脑EasyEdge端模型生成部署攻略
EasyEdge是百度基于Paddle Mobile研发的端计算模型生成平台,能够帮助深度学习开发者将自建模型快速部署到设备端。只需上传模型,最快2分种即可生成端计算模型并获取SDK。本文介绍EasyEdge生成端计算模型,并集成到手机APP的流程。
采用模型:基于MobileNet 的SSD模型
SSD使用一个卷积神经网络实现“端到端”的检测:输入为原始图像,输出为检测结果,无需借助外部工具或流程进行特征提取、候选框生成等。
官方开源代码:https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/ssd
采用数据集:PASCAL VOC
PASCAL VOC挑战赛是视觉对象的分类识别和检测的一个基准测试,提供了检测算法和学习性能的标准图像注释数据集和标准的评估系统。
PASCAL VOC图片集包括20个目录:
人类; 动物(鸟、猫、牛、狗、马、羊);
交通工具(飞机、自行车、船、公共汽车、小轿车、摩托车、火车);
室内(瓶子、椅子、餐桌、盆栽植物、沙发、电视)。
这些类别在label_list文件中都有列出来,但这个文件中多了一个类别,就是背景(background)
在AI Studio 进行训练得到预测模型和参数:
1 EasyEdge端计算模型生成流程
进入EasyEdge主页: ai.baidu.com/easyedge ,点击“立即使用”即可使用平台。
1.1上传深度学习模型
在目录【上传原模型】中:
1) 填写模型名称
2) 依次选择模型类型、模型框架、网络模型
3) 依次上传网络参数文件、网络结构文件、模型标签、其他配置文件(点击左侧划线处可查看上传要求)
对应关系如下:
网络参数文件:mobilenet-ssd-final-model
网络结构文件:mobilenet-ssd-final-params
模型标签:label_list
4) 自定义分组并描述模型功能
5) 提交上传
模型上传成功后,可以在【我的模型】中看到上传的模型。
1.2 生成端计算模型
成功上传模型后,在目录【生成端模型】中:
1) 选择模型
2) 选择并添加“芯片/硬件”、“操作系统”的组合,支持添加多种组合
3) 如需SDK支持离在线混合,需勾选同意EasyEdge在云端加密部署模型
4) 开始生成模型
在【我的模型】点击模型名称,即可查看端计算模型的生成状态
1.3 获取离线SDK
若某版本端计算模型已成功生成,则可点击右侧操作中的“获取SDK”,跳转到【SDK列表】下载Demo体验或正式的SDK
1.4 激活离线SDK
1) 在【SDK列表】页面下载SDK后,点击“获取序列号激活”,打开【序列号列表】
2) 选择鉴权方式:如需开发APP可选择按产品线鉴权,否则需按设备鉴权
3) 点击“新增序列号”,填写相关信息
Android或iOS操作系统的SDK可以选择按产品线激活,序列号与包名(Package Name/Bundle ID)绑定:
4) 用新增的序列号激活之前下载的SDK,参考开发文档:
Android 系统:https://ai.baidu.com/docs#/EasyEdge-Android-SDK/top
2 SDK集成到手机APP
开发平台:Android Studio 2.3
安卓虚拟机:Genymotion 2.7.2
测试平台:Android 9.0
2.1 替换申请的序列号
2.2 添加依赖:
运行虚拟机如报如下错误:
解决办法:
在同个build.gradle(app)页面,android{}中添加:
splits {
abi {
enable true
reset()
include 'x86','x86_64'
universalApk true
}
}
2.3 手机测试效果
3 意见建议
整体效果不错,优势在于生成模型非常快捷,集成也很方便。当然也有需要改进的地方,本次采用的物体检测SSD模型,SDK大小在25M,如生成的SDK能够进一步压缩,进而能减少APP的大小。
百度大脑EasyEdge端模型生成部署攻略的更多相关文章
- Windows Socket五种I/O模型——代码全攻略(转)
Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操 ...
- 图解:SQL Server SSIS包和job的部署攻略
原文:图解:SQL Server SSIS包和job的部署攻略 以下将建立一个SQL Server SSIS包 然后在job中使用这个包,并将job部署到目标机器 1. 首先建立ssis包,使用sql ...
- 宜信开源|数据库审核软件Themis的规则解析与部署攻略
一.介绍 Themis是宜信公司DBA团队开发的一款数据库审核产品,可帮助DBA.开发人员快速发现数据库质量问题,提升工作效率.其名称源自希腊神话中的正义与法律女神.项目取此名称,寓意此平台对数据库质 ...
- Confluence部署攻略 [转]
一.软件介绍 AtlassianConfluence(简称Confluence)是一个专业的wiki程序.它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享.Confluence不是一 ...
- 阿里云 centos7 django + uWSGI+Nginx + python3 部署攻略
centos7+nginx+python3+django+uwsgi配置Django 项目部署 1.租的服务器(选择centos)的话,需要在阿里云后台控制台开放几个端口,克隆一下已开放的端口,t ...
- Linux下Makefile的automake生成全攻略--转
http://www.yesky.com/120/1865620.shtml 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下 ...
- EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略
EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持RTMP ...
- Java爬虫快速开发工具uncs的部署攻略
写在前面 uncs是java快速开发爬虫的工具,简单便捷,经过大量版本迭代和生产验证,可以适用大多数网站,推荐使用. 一.基本用法 1.1 开发包获取 目前只能在公司内网maven服务器获取到 < ...
- Linux下Makefile的automake生成全攻略
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的M ...
随机推荐
- lind 语 api 数据的安全性 第四弹
web api的安全性怎么保证呢. 一般公司会自己封装一套请求的规范. 下面来看看lind语里的webapi安全规范 step one 先看下 diagram: 学而思: 从上面的图分析一下: 如果我 ...
- 团队项目-Beta冲刺1(七个小矮人)
团队项目-Beta冲刺1(七个小矮人) 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScien ...
- jmeter使用—计数器的使用
说一下jmeter中,配置元件-计数器的使用. 如果需要引用的数据量较大,且要求不能重复或者需要自增,那么可以使用计数器来实现. 1.启动jmeter,添加线程组,右键添加配置元件——计数器,如下图: ...
- 《高性能MySQL》之MySQL查询性能优化
为什么查询会慢? 响应时间过长.如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数, ...
- [转]dll反编译工具(ILSpy)的使用
软件地址: 链接:https://pan.baidu.com/s/1YunJ3MAuNisGtl8YYzr4hw 密码:ejx8 工具使方法 1.将压缩文件进行解压,打开exe文件. 2.打开后,选择 ...
- 小程序--->小程序图片上传阿里OSS使用方法
小程序图片上传阿里OSS使用方法 首先看下参考文档 ( http://blog.csdn.net/qq_38125123/article/details/73870667) 这里只将一些运用过程中遇到 ...
- PTA笔记 堆栈模拟队列+求前缀表达式的值
基础实验 3-2.5 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Sta ...
- Docker基础内容之端口映射
随机映射 docker run -d -P training/webapp python app.py # -P会随机映射一个 49000~49900 的端口到内部容器开放的网络端口 映射所有接口地址 ...
- hashlib 模块的用法
import hashlib #多用于加密a=hashlib.md5()print(a) #<md5 HASH object @ 0x00000000021CCF90> a.update( ...
- vue2.x中子组件修改父组件通过pops传递过来的值
首先,父组件向子组件传值 这里面主要是在传值的时候,加上.sync 然后子组件通过 $emit 修改 如此即可完成对父组件的数据操作