百度AI-EdgeBoard的简单使用

1.EdgeBoard介绍

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

1.1硬件介绍

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

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

	1.保证配套的系统TF卡已经插到开发板接口,上图4-MicroSD Card;
	2.使用配套电源给EdgeBoard供电,上图8-12V DC
	3.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 loopback

auto 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 build
	cd build
	rm -rf *
	调用cmake 创建 Makefile
	cmake ..
	编译工程
	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标识图示例:
在这里插入图片描述

  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值