教程 | BerryNet:如何在树莓派上实现深度学习智能网关

该项目在树莓派 3 上使用深度学习使其成为一个智能网关。该设备并不需要联网,所有的训练和调试等都在树莓派 3 本地完成。在 DT42,我们相信将深度学习应用于便捷设备在未来是一个大趋势。因为这样不仅能节省数据传输和储存的成本,而且还能在无需连接云端的情况下使设备根据图像或视频中显示的事件进行响应。

 

项目地址:https://github.com/DT42/BerryNet

 

教程 | BerryNet:如何在树莓派上实现深度学习智能网关

图1

 

图 1 展示了该项目的软件架构,我们使用 Node.js、MQTT 和 AI 引擎对图像或视频帧进行深度学习。到目前为止,该系统由两个人工智能引擎提供支持,即分类引擎和目标检测引擎。图 2 展示了分类和目标检测之间的差别。

 

教程 | BerryNet:如何在树莓派上实现深度学习智能网关

图2

 

该智能网关的一个应用就是使用相机监测你想关注的地方。如图 3,其显示了 DT42 办公室摄像头的分析结果。这些视频帧由 IP 相机捕捉,并将其发送到人工智能引擎。人工智能引擎的输出结果将显示在主控面板中。我们正在处理邮件和 IM 通知接口,因此当 IP 摄像头捕捉到目标(如狗),系统将采用邮件或其他形式通知用户。

 

教程 | BerryNet:如何在树莓派上实现深度学习智能网关

图3

人工智能引擎

 

目前支持的人工智能引擎利用了以下几个项目的研究:

 

  • TensorFlow

  • Darkflow

  • Darknet

 

该系统目前支持的分类模型为 Inception v3,目标检测模型为 TinyYOLO。

安装

 

$ git clone https://github.com/DT42/BerryNet.git

$ cd BerryNet

$ ./configure

开始和停止 BerryNet 

 

BerryNet 由系统(systemd)控制,你可以通过 berry-manager 控制 BerryNet:

 

$ berrynet-manager [start | stop | status | log]

配置

 

所有配置都在 config.js 中:

 

  • 选择人工智能引擎

  • 目前有两种类型的人工智能引擎:目标分类和目标检测。

  • 配置 IP 相机快照的访问接口

  • MQTT topics

主控面板

 

在树莓派 3 上打开主控面板(通过触摸屏)

 

打开浏览器并输入统一资源定位符:http://localhost:8080/index.html#source=dashboard.json

 

主控面板默认配置文件将会加载。

 

在任意电脑的浏览器上打开主控面板

 

打开浏览器并输入统一资源定位符:http://:8080/index.html#source=dashboard.json

 

点击数据源,并将 MQTT 代理的 IP 地址更改为网关的 IP 地址。

 

如要获得更多详细的主控面板配置信息,请参考 freeboard 项目:https://github.com/Freeboard/freeboard

 

提供图像输入

 

通过 Pi 相机捕捉图像

 

$ mosquitto_pub -h localhost -t berrynet/event/camera -m snapshot_picam

 

通过配置 IP 相机捕捉图像

 

$ mosquitto_pub -h localhost -t berrynet/event/camera -m snapshot_ipcam

 

提供本地图像

 

$ mosquitto_pub -h localhost -t berrynet/event/localImage -m <image_path>

 

讨论

 

如果对该项目的疑惑、建议或任何创意,都可以在该项目谷歌论坛讨论:https://groups.google.com/a/dt42.io/d/forum/berrynet。