当前位置: 首页 > article >正文

百度AI-EdgeBoard的简单使用

1.EdgeBoard介绍

EdgeBoard 是基于FPGA打造的嵌入式AI解决方案及基于此方案实现的系列硬件,与AI Studio/EasyDL等模型定制平台深度打通,具有高性能、高通用、低成本、易开发等四大优点,适用于开发验证、产品集成、科研教学、项目落地等应用方向,以及安防监控、工业质检、医疗诊断、农作物生长监控、无人驾驶、无人零售等应用场景。
本文以FZ9A计算卡为例(盒子和其它版本计算卡同样适用),介绍如何使用EdgeBoard进行深度学习应用开发

1.1硬件介绍

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

	1.保证配套的系统TF卡已经插到开发板接口,上图4-MicroSD Card;2.使用配套电源给EdgeBoard供电,上图8-12V DC3.EdgeBoard支持两种调试方式,网络调试和串口调试,推荐使用网络SSH连接方式调试更加方便快捷(详见后文)1)使用SSH网络服务登录系统,详见后文2)使用串口登录系统(可选)
4.EdgeBoard启动完成后输入login&password为root&root,就可以进到EdgeBoard的系统,运行系统自带的Sample了,调试示例

2.连接方式

2.1 SSH连接

EdgeBoard支持两种调试方式,网络调试和串口调试,官方推荐使用网络SSH连接方式调试
EdgeBoard出厂默认参数为静态ip=192.168.1.254,netmask=255:255:255:0,gateway=192.168.1.1
硬件连接方法:使用网线一端连接EdgeBoard,另一端连接host电脑或者路由器,设置电脑或路由器ip和	EdgeBoard在同一网段,即可使用SSH登录
示例:
使用SecureCRT连接
配置电脑或路由器ip和设备在同一网段下,当电脑和设备直连时需要手动设置电脑ip,打开网络和共享中心-->本地连接-->属性-->Internet 协议版本4,手动配置ip地址:192.168.1.111,子网掩码:255.255.255.0,默认网关:192.168.1.1,如下图所示。

在这里插入图片描述

在secure CRT中新建窗口,connect-->New Session-->Protocol选择SSH2,点击下一步,Hostname为EdgeBoard的ip,出厂默认192.168.1.254,port=22,下一步,完成,在弹窗中输入username=root,password=root,即可进入系统。

在这里插入图片描述

2.2 串口连接

	可使用micro usb数据线连接EdgeBoard的USB UART接口(详见示意图17-USB UART),使用电脑连接EdgeBoard系统。

在这里插入图片描述

3.调试设备

1.连接局域网

打开并编辑interfaces文件
vim /etc/network/interfaces  
静态IP配置
auto lo
iface lo inet loopbackauto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
gateway 192.168.1.1
broadcast 192.168.1.255

2.文件拷贝

EdgeBoard支持ssh、samba、ftp等网络协议
文件夹输入框里直接输入ftp://192.168.1.254 。根据提示输入用户名root,密码root。即可进入设备系统
打开home-->root-->workspace目录,workspace是root用户下应用程序所在的目录,直接拷贝文件到workspace,或者从workspace中拷贝文件到电脑即可。

在这里插入图片描述
在这里插入图片描述

4.运行EasyDL平台模型预测示例

EasyDL是一站式的深度学习模型训练和服务平台,提供可视化的操作界面,只需上传少量图片就可以获得高精度模型,具体可以参考EasyDL官网https://ai.baidu.com/easydl/

在这里插入图片描述
1.训练完成后,在我的模型中申请发布模型,选择软硬一体方案中的"EdgeBoard+专用SDK",提交申请,等待审核
在这里插入图片描述
2.模型审核成功后,在”我的模型“处,点击”服务详情“按钮,在弹出的对话框中,选择下载SDK。
在这里插入图片描述
3.获取序列号点击“管理序列号”
在这里插入图片描述
4.下载的软件部署包解压后,包含了简单易用的SDK和Demo。
文件结构:
在这里插入图片描述
5.使用序列号License 激活SDK
打开demo.cpp文件,将set_licence_key函数中的字符串参数"set your license here"替换为序列号License即可
在这里插入图片描述
将SDK(完全解压后)放到EdgeBoard系统/home/root/workspace/目录下
6.运行SDK

加载驱动:insmod /home/root/workspace/driver/fpgadrv.ko
设置系统时间(系统时间必须正确):date --set "2019-5-18 20:48:00"
编译:进入cpp文件的demo文件夹cd /home/root/workspace/EasyEdge-m1800-	edgeboard/cpp/baidu_easyedge_linux_cpp_aarch64_PADDLEMOBILE_FPGA_v0.3.2_gcc6.2_20190518/demo如果没有build目录,创建一个mkdir buildcd buildrm -rf *调用cmake 创建 Makefilecmake ..编译工程make
执行示例:在build目录下运行执行文件./easyedge_demo  {RES资源文件夹路径}  {测试图片路径}            例如	在SDK中放入需要预测的图片,如将预测图片放入RES文件夹中./easyedge_demo /home/root/workspace/EasyEdge-m1800-edgeboard/RES/ /home/root/workspace/EasyEdge-m1800-edgeboard/RES/1.jpg           

7.HTTP调用

①加载驱动(系统启动之后加载一次即可)insmod /home/root/workspace/driver/fpgadrv.ko
②时间设置date --set "2019-5-18 20:48:00"
③部署HTTP服务功能cd ${SDK_ROOT} 进入SDK根目录 cpp文件夹下baidu开头的文件夹下配置环境变量export LD_LIBRARY_PATH=./lib启动服务./easyedge_serving {RES目录} {序列号} {绑定的host,默认0.0.0.0} {绑定的端口,默认24401}示例:./demo/easyedge_serving ../../../RES "1111-1111-1111-1111" “192.168.2.215” “24402”
④日志显示2019-07-18 13:27:05,941 INFO [EasyEdge] [http_server.cpp:136] 547974369280 Serving at 192.168.2.215:24402表示服务启动成功,此时可直接在浏览器中输入http://{EdgeBoard ip地址}:24401	 

5.Java调用

1.Java代码示例

/*** @param  reqUrl 接口地址* @return java.lang.String**/public static String doPostFile(String reqUrl,byte[] data,String threshold) {HttpURLConnection url_con = null;String responseContent = null;       try {URL url = new URL(reqUrl);url_con = (HttpURLConnection) url.openConnection();url_con.setRequestMethod("POST");url_con.setDoOutput(true);url_con.setRequestProperty("Content-type", "application/x-java-serialized-object");//System.out.println(Arrays.toString(data));OutputStream outputStream = url_con.getOutputStream();outputStream.write(data, 0, data.length);//添加参数//阈值过滤, 0~1  默认0.1//double threshold = 0.8;if(threshold!=null&&threshold!="") {String threshold1 = "threshold="+threshold;//拼装参数outputStream.write(threshold1.getBytes());//上传参数}url_con.getOutputStream().flush();url_con.getOutputStream().close();InputStream in = url_con.getInputStream();BufferedReader rd = new BufferedReader(new InputStreamReader(in, "UTF-8"));String tempLine = rd.readLine();StringBuffer tempStr = new StringBuffer();String crlf = System.getProperty("line.separator");while (tempLine != null) {tempStr.append(tempLine);tempStr.append(crlf);tempLine = rd.readLine();}responseContent = tempStr.toString();rd.close();in.close();} catch (IOException e) {System.out.println("请求错信息:"+e.getMessage());} finally {if (url_con != null) {url_con.disconnect();}}return responseContent;}
reqUrl 服务接口地址
data 图像byte数组
threshold 阈值过滤, 0~1  默认0.1

2.http 返回数据

在这里插入图片描述

返回示例:
在这里插入图片描述

Confidence 置信度
Index 分类结果的index
label分类结果的标签
x1 * 图片宽度 = 检测框的左上角的横坐标
y1 * 图片高度 = 检测框的左上角的纵坐标
x2 * 图片宽度 = 检测框的右下角的横坐标
y2 * 图片高度 = 检测框的右下角的纵坐标

3.Java画标识图

在这里插入图片描述
在这里插入图片描述

4.EasyDL在线接口

在这里插入图片描述
返回示例:
在这里插入图片描述
Java标识图示例:
在这里插入图片描述

http://www.lryc.cn/news/2419136.html

相关文章:

  • 代码检查、评审、单元测试工具 大搜集
  • Android之如何解决adb server is out of date,killing...ADB server didn't ACK
  • 前端——12.表单标签
  • 图书排行:计算机书籍每周销量排行榜
  • 什么是百度司南
  • 解决DotProject 甘特图中文乱码
  • VB.NET 教程_01_基础语法
  • 进程通信之飞鸽传书2007绿色版
  • jpa: persistence.xml 配置文件案例
  • 产品运行所需的信息检索失败.请重新安装Xshell.
  • 软件架构的性能测试与优化:确保高性能的关键步骤
  • 机器人学重点知识点总结
  • 深度学习框架-Backbone汇总
  • 转: sdp文件详细总结
  • fill_parent和wrap_content值的含义
  • DragonFly BSD 4.2发布
  • DIV+CSS布局(进阶篇)
  • 手撸设计模式之-委派模式
  • AI大模型基础入门(非常详细)零基础入门到精通,收藏这一篇就够了
  • c# ToolStrip控件图片和文字显示
  • 湘西新建110KV变电工程初步设计
  • 嵌入式Linux学习记录之Uboot
  • 低通和带通信号的简单理解及 Matlab 实现
  • 无线网络的加密方式:WEP、WPA和WPA2
  • 交换机的基本设置
  • 早期星际十大人物(学生时代,星际时代)
  • JavaScript window 、Document 、Location、History、Navigator,页面刷新方式汇总
  • java打包zip并下载_Java批量下载文件并zip打包
  • 常量和常量表达式
  • 替代联阳IT6564方案|CapstoneCS5262替代IT6564设计DP转HDMI+VGA扩展坞方案|Capstone CS5262设计参考