跳转到主要内容

用百度大脑EasyDL平台轻松玩转AI

judy 提交于

<strong> 什么是EasyDL?</strong>

EasyDL是百度大脑推出的定制化AI训练及服务平台,支持面向各行各业有定制AI需求的企业用户及开发者使用。支持从数据管理与数据标注、模型训练、模型部署一站式AI开发流程,通过原始图片、文本、音频、视频类数据经过EasyDL加工、学习、部署可发布为公有云API、设备端SDK、本地化部署及软硬一体产品。

<strong>百度大脑EasyDL怎么玩转AI?</strong>

<strong> 01. EasyDL的使用方式</strong>

EasyDL是一站式的深度学习模型训练和服务平台,搭配米尔FZ3深度学习计算卡,提供可视化的操作界面,只需上传少量图片就可以获得高精度模 型,具体可以参考EasyDL官网。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101712-1.p…; alt=""></center>

通过EasyDL进行数据训练步骤如下:

1.选择训练类别

根据通用场景可以选择“图像分类”或者“物体检测”。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101713-2.p…; alt=""></center>

2.“图像分类”训练

选择“图像分类”,进入训练界面,选择“开始训练”,弹出图像分类和物体检测的对话框,选择需要的模型类型,如选 择图像分类。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101714-3.p…; alt=""></center>

3.创建模型

进入模型中心,选择“创建模型”,根据个人需求填写模型的内容,带*号为必填选项。填写ok后选择“下一步”
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101715-4.p…; alt=""></center>

4.训练模型

进入“训练模型”,选择模型类别,算法选择“通用”,训练方式选“默认”,因需要离线部署在设备上,必须勾选“离线
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101716-5.p…; alt=""></center>

5.生成SDK

(1)训练完成后,在我的模型中申请发布模型,选择软硬一体方案中的"EdgeBoard +专用SDK",提交申请,等待审核。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101717-6.p…; alt=""></center>

(2)模型审核成功后,在”我的模型“处,点击”服务详情“按钮,在弹出的对话框中,选择下载SDK。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101718-7.p…; alt=""></center>

(3)获取序列号

点击“管理序列号“跳转至百度云-->EasyDL定制训练平台-->离线SDK管理界面,查看用于激活sdk的序列号。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101719-8.p…; alt=""></center>

6.在FZ3里安装SDK

1.下载的软件部署包包含了简单易用的SDK和Demo。只需简单的几个步骤,即可快速部署运行FZ3。部署包文件结构如下:
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101720-9.p…; alt=""></center>

2.使用序列号License 激活SDK

打开demo.cpp文件

【文件路径】 :
<pre>EasyEdge-m1800- edgeboard/cpp/baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_v0.3.2_gcc6.2_20190518/demo/demo.cpp</pre>

写入license序列号

将set_licence_key函数中的字符串参数"set your license here"替换为序列号License即可
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101721-10…; alt=""></center>

3.将SDK放到FZ3系统/home/root/workspace/目录下,

(放入方法参见上文 “文件拷贝”)进行解压;

然后按下述方法进行启动运行。

<strong> 02. 运行SDK</strong>

1.加载驱动,系统启动后加载一次即可(也可以加系统启动脚本)
<pre>insmod /home/root/workspace/driver/fpgadrv.ko</pre>

若未加载驱动,可能报下面的错误:
<pre>Failed to to fpga device: -1</pre>

设置系统时间(系统时间必须正确)
<pre>date --set "2019-5-18 20:48:00"</pre>

2.编译
<pre>
//进入cpp文件的demo文件夹
cd/home/root/workspace/EasyEdge-m180edgeboard/cpp/baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_v0.3.2_gcc6.2_20190518/d
emo
// 如果没有build目录,创建一个
mkdir build cd build
rm -rf *
//调用cmake 创建 Makefile cmake ..
// 编译工程
make</pre>

3.执行示例
<pre>
//在build目录下运行执行文件
./easyedge_demo {RES资源文件夹路径} {测试图片路径}</pre>

例:在SDK中放入需要预测的图片,如将预测图片放入RES文件夹中,
<pre>./easyedge_demo/home/root/workspace/EasyEdge-m1800-edgeboard/RES//home/root/workspace/EasyEdge-m1800-edgeboard/RES/1.jpg
</pre>

便可看到识别结果

<strong> 03. HTTP服务调用 </strong>

1.加载驱动,系统启动后加载一次即可(也可以加系统启动脚本)
<pre>insmod /home/root/workspace/driver/fpgadrv.ko</pre>

若未加载驱动,可能报错:
<pre>Failed to to fpga device: -1</pre>

设置系统时间(系统时间必须正确)
<pre>date --set "2019-5-18 20:48:00"</pre>

2.部署包中附带了HTTP服务功能,可直接运行
<pre>
# ./easyedge_serving {RES目录} {序列号} {绑定的host,默认0.0.0.0} {绑定的端口,默认24401} cd ${SDK_ROOT}
export LD_LIBRARY_PATH=./lib
./demo/easyedge_serving /home/root/workspace/EasyEdge-m1800-edgeboard/RES/ "1111-1111-
1111-1111"</pre>

日志显示
<pre>2019-07-18 13:27:05,941 INFO [EasyEdge] [http_server.cpp:136] 547974369280 Serving at 0.0.0.0:24401</pre>

则启动成功。此时可直接在浏览器中输入 http://{FZ3 ip地址}:24401 ,在h5中测试模型效果。
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101722-11…; alt=""></center>

<strong> 04. HTTP私有服务请求说明</strong>

http 请求参数

URL中的get参数:
<table border="1" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td width="211" height="32" align="center" valign="top" bgcolor="#CCCCCC"><p><strong>参数</strong></p></td>
<td width="290" height="32" align="center" valign="top" bgcolor="#CCCCCC"><p><strong>说明</strong></p></td>
<td width="163" height="32" align="center" valign="top" bgcolor="#CCCCCC"><p><strong>默认值</strong></p></td>
</tr>
<tr>
<td width="211" valign="top" height="32"><p>threshold</p></td>
<td width="290" valign="top" height="32"><p>阈值过滤, 0~1</p></td>
<td width="163" valign="top" height="32"><p>0.1</p></td>
</tr>
</tbody>
</table>

HTTP POST Body即为图片的二进制内容(无需base64, 无需json)

Python请求示例:
<pre>import requests
with open('./1.jpg','rb') asf:
img =f.read()
result =
requests.post( 'http://127.0.0.1:24401/',params={'threshold': 0.1},
data=img).json()</pre>

http 返回数据
<center><img src="http://xilinx.eetrend.com/files/2020-07/wen_zhang_/100050323-101723-12…; alt=""></center>

返回示例
<pre>{"cost_ms": 52,
"error_code": 0,
"results": [
{
"confidence": 0.94482421875,
"index": 1,
"label":"IronMan",
"x1": 0.059185408055782318,
"x2": 0.18795496225357056,
"y1": 0.14762254059314728,
"y2": 0.52510076761245728
},
{
"confidence": 0.94091796875,
"index": 1, "label":"IronMan",
"x1": 0.79151463508605957,
"x2": 0.92310667037963867,
"y1": 0.045728668570518494,
"y2": 0.42920106649398804
},}</pre>

错误说明
SDK所有主动报出的错误,均覆盖在EdgeStatus枚举中。同时SDK会有详细的错误日志,开发者可以打开Debug日志查看额外说明:
<pre>global_controller()->log_config.enable_debug = true;</pre>

目前百度大脑米尔FZ3深度学习卡让您轻松对接EasyDL平台,该产品已经上市预售,点击了解更多详情:http://www.myir-tech.com/product/mys-czu3eg.htm

文章来源: <span id="profileBt"><a href="https://mp.weixin.qq.com/s?__biz=MzA5ODAxMzI5Mg==&amp;mid=2649585259&am…;米尔MYiR</a></span><a href="https://mp.weixin.qq.com/s?__biz=MzA5ODAxMzI5Mg==&amp;mid=2649585259&am…
</a>