阿库娅很不错,下一秒就是你的了 (Part 1)

独自生活,免不了会感到孤独,孤独的特征之一就是自己吐槽自己(´⊙ω⊙`),在事情变的不可挽回之前,如果有个披着美少女皮,会唱歌(放歌),会跳舞(放视频),能交流(词库尬聊)的纸片人陪着,或许会好些吧。

不是说没有美少女皮就不行,能不能养成才是个大问题。大厂产品面向大众,符合大众喜好。咱想要的是像猫一样,可以养的那种。大厂自带生态圈,在便利的同时,厂商也掌握了咱家全部数据,有种房子不是咱的感觉(不是租的吗?

鉴于此,咱决定亲手制作一个人工智障,同时记录下半个过程,那么开始吧!

我又不是智障

# 食材

大体上分为两个阶段,第一阶段是家居遥控,利用 Google Home 改造现有设备,然后注入灵魂,加持先进的 ML (Magic Learning) 技术,实现 AI (Artificial Idiot) 中枢。主要技术指标如下。

  • 美少女皮 + 自定义唤醒词
  • 最新技术确保安全
  • 一键自毁

Raspberry Pi 的 OS 和相关软件如下所示。

  • Raspbian Buster (arm64)
  • Python 3.8.2
  • OpenCV 4.2
  • MariaDB 10.4
  • Nginx

推荐的开发工具。

  • 全宇宙第二的 PyCharm
  • VS Code
  • Keil C51

为了避免消化不良,你还需要掌握如下技巧。

  • 对硬件一知半解
  • 擅长使用搜索引擎
  • 擅长通过推倒墙娘解锁新姿势

# 网关应用

# 应用架构

树莓派作为网关,提供 REST API 和 Web 界面进行交互,远程控制智能设备。也可以授权第三方服务,通过语音操作智能设备,实现相关功能。

网关应用统一管理本地 Python 程序和第三方应用,对各种请求进行路由和认证,处理 Web 客户端的各种指令,实现 Web 客户端的消息分发策略,消息订阅,数据的检查和存储,并推送通知消息。

Flask 基于 Python,是一个采用模块化设计理念的 Web 应用框架。使用 BSD 许可协议授权,使用简单的核心,通过插件任意增减功能,也被称作微框架。Flask 没有太多默认配置,可以通过 Flask-extension 引入如 MySQL ORM,模板引擎,各种表单和身份验证技术。

Web 服务基于 Flask 实现,网络服务网关接口 (WSGI) 由开源软件 Werkzeug 提供支持,模板生成器使用了同作者的另一个开源项目 Jinja2。Gevent 基于协程 (Coroutine) 技术,可以在 Python 程序中直接调用。程序采用 MVC 分层架构,减少各层级间的耦合,便于协作开发和后续的修改和扩展。

# 数据库

数据库用来储存传感器节点,网关应用程序,远程应用程序的相关数据。传感器节点数据包括身份信息、认证信息和用户与传感器节点之间的绑定信息。传感器节点配置数据包括类型,地址,指令,工作状态等,以实现动态组网。

MariaDB 是在 MySQL 的基础上改进的关系型数据库,在提升性能的同时保持与 MySQL 的完全兼容,仅需简单卸载 MySQL 并安装 MariaDB 即可。

参见 E-R 图,config表保存传感器节点的状态,包括传感器类型,环境数据最大值和最小值,传感器或执行器状态,上次动作源等;sensor表保存传感器历史数据,外键连接config表。camera表保存连续运动的发生时间和截图路径。user表储存用户信息,包括登录名称,用户邮箱,密码等数据;所有记录都包含新增和修改的时间。

# 运动检测

OpenCV 已经实现了多种常见的检测算法。MOG 算法是一个背景分割算法,以混合高斯模型为基础。此算法使用多个高斯分布混合计算对背景像素建模,指定权重为像素点 RGB 值在整个序列中的持续时间。若一个 RGB 值属于背景像素点,那么它的持续时间相对于运动像素长,相应的权重也更高。

MOG2 是 MOG 算法的改进。它为每一个像素点单独计算高斯分布,这样能更好的适应由于亮度,噪点等外部参数发生变化而引起的场景变化。

GMG 算法结合了贝叶斯分割法和静态背景估算法,使用图像序列的一些帧建立背景模型,然后使用贝叶斯估计 (Bayesian Estimation) 识别前景。这是一种自适应算法,新出现的图像帧具有更高的权重,从而适应光照变化。此外,利用一些形态学算法,如开闭运算等除去不需要的噪音。

程序的运动检测部分如上图所示,相关算法由 OpenCV 实现。

# Reference

项目源码

OpenCV – Stream video to web browser/HTML page

Install OpenCV 4 on Raspberry Pi 4 and Raspbian Buster

未完待续。

© 2014 - 0202 Aimkiray.

Theme by Palette. 在各种〇〇之后并没有炸掉|ω・)ノ