发布时间:2025-08-01
点击次数: 本文介绍通过BML模型部署方式将模型部署到EdgeBoard。先讲BML全功能AI开发平台的优势及与EdgeBoard的适配,再说明在BML上训练安全帽检测模型的步骤,接着阐述准备离线部署模型、EdgeBoard联网操作,最后讲解BML模型部署的编译SDK及测试单张图片预测、HTTP服务部署、视频流预测等效果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

EdgeBoard嵌入式AI解决方案是百度面向嵌入式与边缘计算场景打造的系列软硬件方案。丰富的软硬件选型,可适应多变的场景与边缘部署环境。无缝兼容百度大脑工具平台与算法模型,开发者可轻松上手,集成应用。
在该系列的第一个项目中,我们研究了如何将基于PaddleX训练的自定义模型部署到EdgeBoard,详见:手把手教你用Edgeboard部署模型(一):PaddleX+YoloV3
在本文中,我们探讨EdgeBoard支持的另一种模型训练、部署方式,BML模型部署。
BML全功能AI开发平台是一个面向企业和个人开发者的机器学习集成开发环境,提供兼具效果与性能的卓越AI开发体验,有高性能的算力支持、强大的数据处理服务、高精度训练效果、丰富完善的开发方案、广泛适配的模型推理服务、全面丰富的交付方案诸多优势,为经典机器学习和深度学习提供了从数据处理、模型训练、模型管理到模型推理的全生命周期管理服务,帮助用户更快的构建、训练和部署模型。与EdgeBoard合作推出软硬一体方案。将EdgeBoard与BML模型深度适配,可应用于工业分拣、视频监控等多种设备端离线计算场景,让离线AI落地更轻松。
虽然是收费平台,但是现在正在搞活动,因此本文的操作其实都可以免费完成,序列号有90天有效期。
这里直接使用了BML官方3日打卡课的教程,不仅包括了如何训练模型,还能免费薅算力
其实仅就这个项目而言,第三步不做也行,不过读者也可以参考,毕竟离线部署的操作和在线部署前面有些类似。
——当然了,还可以领算力卡,操作下也没坏处。
需要注意的是,如果我们想要在EdgeBoard部署BML训练的模型,首先要确保网络结构EdgeBoard可以支持。当然,如果是教程里的示例,EB是可以支持的,具体可以查看支持列表。
这边其实没太多难点,跟着文档一步步走就行。
模型发布完成后,从【服务详情】里点进去,下载SDK获取序列号
如果我们只是要测试下效果,申请个临时的测试序列号就行啦。
最终,我们得到了一个zip格式的SDK压缩包,以及一串序列号。SDK压缩包(文件做了重命名)中内容如下:
EasyEdge/ ├── RES #模型文件│ ├── conf.json │ ├── label_list.txt │ ├── model │ ├── params │ └── preprocess_args.json ├── cpp │ ├── baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.4_gcc7.5_v1.3.2_20250824 # 支持的是旧版软核,本文不用│ └── baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824 │ ├── bin #demo可执行文件│ ├── include #头文件│ │ └── easyedge │ ├── lib #动态库│ ├── src #demo源文件│ │ ├── CMakeLists.txt │ │ ├── cmake │ │ ├── common │ │ ├── demo_image_inference #图像推理demo│ │ ├── demo_serving #http服务demo│ │ └── demo_video_inference #视频推理demo│ └── thirdparty │ └── opencv
应当注意的是,使用BML模型是需要用序列号激活的,激活需要联网——而且还会比对序列号的有效期,所以一定要把EdgeBoard的默认时间改过来。
# 修改系统时间date --set "2025-10-04 20:48:00"
参考EdgeBoard连接外网方式,由于在本文中EdgeBoard是和计算机通过网线直连,因此选择了【通过电脑共享网络】的方式。
EdgeBoard直连电脑的情况下,可以将电脑的无线网络分享给本地连接,如下图更改无线网络连接属性,勾选interface连接共享,此时本地连接ip地址变为192.168.137.1。同时更改EdgeBoard的ip地址也在137网段,更改方法参见EdgeBoard ip地址修改,EdgeBoard更改后重启。 注意:如果电脑在共享属性下没有家庭网络连接的选项,会共享不成功。
sudo ifconfig eth0 192.168.137.254/24 sudo route add default gw 192.168.137.1 eth0echo “nameserver 8.8.8.8” > /etc/resolve.conf
再次查看目前的网络配置
edgeboard-183:~# ifconfigeth0 Link encap:Ethernet HWaddr 00:0a:35:ac:c1:db
inet addr:192.168.137.30 Bcast:192.168.137.255 Mask:255.255.255.0
inet6 addr: fe80::20a:35ff:feac:c1db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:2267 errors:0 dropped:0 overruns:0 frame:0
TX packets:3737 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:133368 (130.2 KiB) TX bytes:488014 (476.5 KiB)
Interrupt:31
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:1159 errors:0 dropped:0 overruns:0 frame:0
TX packets:1159 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:92488 (90.3 KiB) TX bytes:92488 (90.3 KiB)
确认联网成功
edgeboard-183:~# ping www.baidu.comPING www.baidu.com (163.177.151.110): 56 data bytes 64 bytes from 163.177.151.110: seq=0 ttl=51 time=31.706 ms 64 bytes from 163.177.151.110: seq=1 ttl=51 time=55.466 ms 64 bytes from 163.177.151.110: seq=2 ttl=51 time=35.449 ms 64 bytes from 163.177.151.110: seq=3 ttl=51 time=30.011 ms 64 bytes from 163.177.151.110: seq=4 ttl=51 time=70.884 ms
需要注意的是,以上方法只是临时的,因为重启EdgeBoard后,ip又变回默认设置了。
edgeboard-183:~# ifconfigeth0 Link encap:Ethernet HWaddr 00:0a:35:ac:c1:db
inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20a:35ff:feac:c1db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST DYNAMIC MTU:1500 Metric:1
RX packets:205 errors:0 dropped:0 overruns:0 frame:0
TX packets:121 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15505 (15.1 KiB) TX bytes:18076 (17.6 KiB)
Interrupt:31
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1227 (1.1 KiB) TX bytes:1227 (1.1 KiB)
如果读者需要长期使用BML模型,可以修改EdgeBoard网络配置文件/etc/network/interface,本文只是个测试,因此就先用临时方案了。
首先把SDK文件上传到EB,然后重新编译(文档中预编译的方案执行不成功)
注意到,FZ3A这个板卡其实存储空间不大,如果按照上一篇文章的操作,到这里有可能SDK因剩余存储空间不足而上传失败。可以考虑删除旧版软核等文件,释放一下存储。
Openflow
一键极速绘图,赋能行业工作流
88
查看详情
# 解压sdkunzip EasyEdge.zip# 解压tar.gzcd EasyEdge/cpp tar xvf baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824.tar.gz
#进入src目录,cd src mkdir build #创建build文件夹cd build #打开build文件夹rm -rf * #清空build文件夹cmake .. #调用cmake 创建Makefilemake #编译工程
整个编译过程其实花的时间挺短的,很快就成功了。
编译完成后,build文件夹下会产生demo_image_inference、demo_serving、demo_video_inference三个装有对应可执行文件的文件夹,进入对应文件夹目录,执行相应的功能,执行成功任意一个demo,就可以激活成功。
这里的【RES资源文件夹路径】其实就是放模型的那个目录
# 进入build文件夹cd ~/workspace/EasyEdge/cpp/baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824/src/build/demo_image_inference# 设置LD_LIBRARY_PATH为SDK部署包中的lib目录export LD_LIBRARY_PATH=../../lib# 执行easyedge_image_inference {RES资源文件夹路径} {测试图片路径} {序列号}./easyedge_image_inference ../../../../../RES/ ../../../../../RES/1.jpeg "1111-1111-1111-1111"
实际执行效果如下:选用了上一个项目放进去的安全帽检测图片,指定绝对路径预测,部署后会直接在原来路径下生成结果文件。
edgeboard-183:~/workspace/EasyEdge/cpp/baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824/src/build/demo_image_inference# ./easyedge_image_inference ../../../../../RES/ /home/root/workspace/PaddleLiteDemo/res/models/detection/mask-yolov3/img/7bd3af20a5eb1085a9282e65b3a683dc.jpg "0406-DFD4-3DA0-0703"result size : 2 2, helmet, p:0.965438, coordinate: 0.484771, 0.0180491, 0.737253, 0.471222 2, helmet, p:0.91078, coordinate: 0.247744, 0, 0.446785, 0.361257 s*e result image to /home/root/workspace/PaddleLiteDemo/res/models/detection/mask-yolov3/img/7bd3af20a5eb1085a9282e65b3a683dc.jpg.result-cpp.jpg Done
可以将单张图片预测的服务,发布到指定的ip和端口
# 进入build文件夹cd ~/workspace/EasyEdge/cpp/baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824/src/build/demo_serving# ./easyedge_serving {RES资源文件夹路径} {序列号} {host, default 0.0.0.0} {port, default 24401}
./easyedge_serving ../../../RES "1111-1111-1111-1111" 0.0.0.0 24401
./easyedge_serving ../../../../../RES/ "0406-DFD4-3DA0-0703" 0.0.0.0 24401
SDK包含视频推理的demo,如果给一段视频,执行结果会以视频存储的方式将预测出的视频帧保存成build目录下的0.result.mp4文件。
# 进入build文件夹cd ~/workspace/EasyEdge/cpp/baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824/src/build/demo_video_inference# 执行方式:easyedge_image_inference {RES_dir} {video_type} {video_src} {serial_rum}./easyedge_video_inference ../../../../../RES/ 1 /home/root/video.mp4 "1111-1111-1111-1111"
easyedge_image_inference参数定义:
RES_dir :模型存放目录
video-type:视频类型,1表示本地视频,视频位置写本地视频位置;2表示使用摄像头输入,目前只支持usb免驱摄像头,视频位置写摄像头的index,可在系统中执行ls /dev/video*查看插入的摄像头index,如果是/dev/video2,则视频位置写2。
video_src:视频位置,如果视频类型为1,写本地视频视频位置;如果视频类型为2,写摄像头index。
serial_rum:序列号,如果设备已激活,该参数可选。
注意: demo_video_inference功能暂不支持display,不支持接入minidp显示器实时显示。
不过,这里我们使用的视频流预测,是直接通过外接摄像头实现的。
注意,这里有个坑,如果装了摄像头但是出现Cannot open source: /dev/video0的报错,原因是因为这个摄像头资源被占用了。
抢占资源的就是在前置项目中配置的EdgeBoard管理系统!!!管理系统开机默认启动,如果对摄像头做了配置,一开机管理系统就把摄像头的资源拿走了!!!
最快的解决办法,就是把管理系统摄像头的路径编辑一下,然后重启!(不要删除摄像头,不然以后还得重新配置)
预测效果如下:可以看出,视频流是一帧一帧预测的。
edgeboard-183:~/workspace/EasyEdge/cpp/baidu_easyedge_linux_cpp_aarch64_EdgeBoardFZ1.5_gcc7.5_v1.3.2_20250824/src/build/demo_video_inference# ./easyedge_video_inference ../../.A0-0703"input fps: 30, width: 640, height: 480 2025-10-06 00:56:13,929 INFO [EasyEdge] 547565068304 ==== frame id: 0 ==== 2025-10-06 00:56:13,929 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.936849, coordinate: 0.265797, 0.303112, 0.595704, 0.854871 2, helmet, p:0.308001, coordinate: 0.246313, 0.32209, 0.608355, 0.883078 2025-10-06 00:56:14,755 INFO [EasyEdge] 547565068304 ==== frame id: 1 ==== 2025-10-06 00:56:14,755 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.936849, coordinate: 0.265797, 0.303112, 0.595704, 0.854871 2, helmet, p:0.308001, coordinate: 0.246313, 0.32209, 0.608355, 0.883078 2025-10-06 00:56:14,898 INFO [EasyEdge] 547565068304 ==== frame id: 2 ==== 2025-10-06 00:56:14,898 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.86643, coordinate: 0.226212, 0.341875, 0.563942, 0.821873 2025-10-06 00:56:15,076 INFO [EasyEdge] 547565068304 ==== frame id: 3 ==== 2025-10-06 00:56:15,076 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.885813, coordinate: 0.211774, 0.33184, 0.562473, 0.858988 2, helmet, p:0.337755, coordinate: 0.193702, 0.275792, 0.589217, 0.817867 2025-10-06 00:56:15,249 INFO [EasyEdge] 547565068304 ==== frame id: 4 ==== 2025-10-06 00:56:15,249 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.887917, coordinate: 0.2062, 0.340431, 0.550655, 0.871187 2, helmet, p:0.277928, coordinate: 0.181167, 0.299305, 0.578772, 0.826651 2025-10-06 00:56:15,415 INFO [EasyEdge] 547565068304 ==== frame id: 5 ==== 2025-10-06 00:56:15,415 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.762959, coordinate: 0.281878, 0.289703, 0.60245, 0.797125 2, helmet, p:0.333646, coordinate: 0.230875, 0.251128, 0.60219, 0.811976 2025-10-06 00:56:15,612 INFO [EasyEdge] 547565068304 ==== frame id: 6 ==== 2025-10-06 00:56:15,612 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.962207, coordinate: 0.273251, 0.282059, 0.586766, 0.821948 2, helmet, p:0.247164, coordinate: 0.240881, 0.232974, 0.580364, 0.793412 2025-10-06 00:56:15,798 INFO [EasyEdge] 547565068304 ==== frame id: 7 ==== 2025-10-06 00:56:15,798 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.91732, coordinate: 0.259767, 0.265151, 0.580276, 0.778973 2, helmet, p:0.295565, coordinate: 0.222856, 0.232002, 0.571475, 0.769648 2025-10-06 00:56:15,971 INFO [EasyEdge] 547565068304 ==== frame id: 8 ==== 2025-10-06 00:56:15,971 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.974546, coordinate: 0.279582, 0.304269, 0.582712, 0.83014 2, helmet, p:0.208045, coordinate: 0.230546, 0.236246, 0.5774, 0.792106 2025-10-06 00:56:16,150 INFO [EasyEdge] 547565068304 ==== frame id: 9 ==== 2025-10-06 00:56:16,150 INFO [EasyEdge] 547565068304 is_needed: true3, head, p:0.979111, coordinate: 0.269361, 0.317251, 0.584749, 0.849518 2, helmet, p:0.223544, coordinate: 0.226171, 0.260796, 0.565521, 0.80769
以上就是手把手教你用Edgeboard部署模型(二):BML离线部署的详细内容,更多请关注其它相关文章!
# 电脑
# 工具
# ai
# 百度
# fig
# type
# linux
# 洗发水如何搞营销推广呢
# 福州网站建设与维护
# 本溪seo的好方法
# 工程建设标准查询网站
# 灵寿网站建设推广项目名单
# 风控营销推广
# 无锡seo按天付费
# 华文考研网站建设管理
# 西安seo扣费
# 北京求职网站建设
# 文档
# 数据处理
# 就行
# 重启
# 管理系统
# 的是
# 教你用
# 中文网
# 手把手
# 离线
相关栏目:
【
行业新闻62819 】
【
科技资讯67470 】
相关推荐:
消息称 ChatGPT 未来有望增加更多功能:上传文件分析信息,还能记住用户画像
人工智能如何与智能家居集成
北京市通用人工智能产业创新伙伴计划名单公布,京东科技入选“算力伙伴”
【澎湃原动力】人工智能产业协同创新中心:全产业链资源在这里汇聚
靠游戏更靠AI 英伟达成唯一首季度两位数增长的公司
中国联通发布图文AI大模型,可实现以文生图、视频剪辑
学而思推出AI第一课:基于自研大模型的AIGC课程
人工智能颠覆软件测试四大方式
普渡机器人与变形金刚品牌合作,特别活动爆火,商品售罄!
无人机巡检方案是什么,该如何选择适合的巡检方案
腾讯汤道生:大模型只是起点,产业落地是AI更大的应用场景
pixivFANBOX 更新运营规则,禁止通过外链绕开 AI 生成禁令
央广车联网亮相2025世界人工智能大会
DreamAvatar数字人使用教程
基于信息论的校准技术,CML让多模态机器学习更可靠
Snap宣布研发出新技术 可大幅提升AI生成图像速度
李开复官宣新公司「零一万物」,进军 AI 2.0
Meta Quest订阅服务每月7.99美元畅玩两款VR游戏应用
人工智能大胆预测:银河系至少有2万个地球,36种外星文明
消息称 Meta Quest 将推 VR 游戏订阅:每月 7.99 美元,任选两款
干货满满,2025昆山元宇宙国际装备展等你来打卡!
Transformer六周年:当年连NeurIPS Oral都没拿到,8位作者已创办数家AI独角兽
人工智能加速走进百姓生活:从2025全球人工智能技术大会看行业新趋势
网易云音乐内测上线“私人DJ” 打造AI推荐音乐助手
微软新出热乎论文:Transformer扩展到10亿token
马斯克:将来机器人比人类多!特斯拉机器人亮相人工智能大会
一文读懂自动驾驶的激光雷达与视觉融合感知
阿里达摩院发布免费开放100项AI专利许可的动机是什么?
Vision Pro头显重磅发布;苹果收购AR厂商Mira
探索AI前沿理念 2025全球人工智能技术大会在杭州开幕
构建数字文旅新高地!洛阳涧西区开启元宇宙时代
花16000元买四款扫拖机器人!科沃斯追觅石头小米谁能笑到最后?
首个算网生态体!中国移动元宇宙产业联盟正式成立
发布最新版本的 PICO OS 5.7.0:支持VR头盔录屏并跨平台分享至微信
智能电网技术:提高能源效率和可靠性
探展WAIC |万向区块链杜宇:不存在单一技术的iPhone时刻,Web3.0核心将基于AI+区块链+物联网
《共同的演化》展览启幕,重新思考人类与人工智能关系
本届人工智能大会上的这个“镇馆之宝”,来自长宁企业西井科技!
V社谈AI制作游戏被ban:为确保开发者有素材所有权
全球首款AI裸眼3D平板 国产的售价破万
明略科技发布免费开源TensorBoard.cpp,促进大型模型的预训练工作
WHEE使用教程
研究预测HPC支持的人工智能增长迅速
AMD在AI方面奋起直追,与英伟达的差距缩小了吗?
AI大模型产品集体奔赴高考考场,教育赛道的讯飞星火能赢吗?
喜马拉雅在国际会议挑战赛中突破语音重叠难题斩获第一 加速AI创新
生成式AI爆发,亚马逊云科技持续专注创新,助力企业数字化转型
AI新风口?首个高质量「文生视频」模型Zeroscope引发开源大战:最低8G显存可跑
数据显示:人工智能相关专业热度上升最快 考古、美术、生物医学工程等小众专业火了
Gartner发布中国企业人工智能趋势浪潮3.0