赞
踩
目前,物联网AI物体检测技术已经非常成熟了,它的计算模式只要有两种,一种是用云端来完成AI计算再把结果发回给终端,一种是直接在终端设备上做边缘计算。
终端上做边缘计算对设备的计算性能要求比较高,于是谷歌推出了Edge TPU,可以以较低的延迟完成AI计算。如果手头没有Edge TPU,也可以使用ARM处理器来跑,就是速度慢很多,不能实时检测。
在云端计算领域,百度AI推出了EasyDL物体检测服务。在这种计算架构下,终端设备的计算量非常小。终端设备只需要负责图像采集,然后把图像发给云端,所有的AI计算都在云端完成,然后云端再把计算结果还给终端设备。
但是,云计算模式也有缺点,那就是带宽和数据延迟。云服务器实际上就是机房的虚拟主机,每台主机的共享网络带宽是受限的;然后,虚拟主机与你隔了几万里,中间又隔了好多个路由器;它距离你的设备越远,网络延迟也就越大。
如果使用网络计算模式,有没有方法减少这种延迟呢?
很简单,把计算服务器布置在本地就好了。
技术上,我可以给桌面台式机编写一个程序把它变成计算服务器,让它处理来自LeezP710的图像,然后用低延迟的UDP协议发送回去。另外,要注意WIFI转发的延迟也很大,所以尽量使用千兆以太网。正好,我手头这块Leez P710开发板和我的桌面台式机都带有千兆网络接口。
这个开发需求,对我们这种linux老司机来说,非常简单,一晚上就能把功能实现。
是展示真正的技术的时候啦!
我很快就把猫咪检测的demo做出来了,而且还是个通用度很高、可维护性很好的代码,稍加修改就可变成检测人、狗或车辆的。
程序我都会开源到github,不管你学或不学,学得会或学不会,我的开源方案全套源代码都在那里。
Leez P710上面开启了两个程序,一个是mjpg streamer,把USB摄像头捕获的图像发给局域网的计算服务器。另一个是我编写的clouddetec客户端程序。这两个程序都不涉及AI计算,所以可以跑得飞快。
其中,mjpg streamer来自开源项目,用于实现Leez P710的USB摄像头图像采集,安装方法见我另一篇帖子《USB摄像头填坑记》
LeezP710启动网络视频流的脚本如下
mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.so -d
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。