资料介绍
描述
我们这个名为 Human-firewall 项目的项目的目的是引入一种智能对讲机,能够在消息应用程序上通过按门铃的人的照片通知您,并实时提供对个人的评估。
通过这种方式,您会立即知道您是否可以信任相关人员,如果此人不值得信任,您将避免让自己、您的积蓄和您的家面临危险。
注意:我们的目标不是创建一个完全成熟的对讲机,而是创建一个可以连接到现有对讲机的原型。
从现有的对讲机中,我将捕获门铃输入,这将触发相机拍摄对象的照片,使用这张照片和一些幕后魔术(剧透:这是机器学习)我将把对象评估发送到房主。
使用 LAN 上的常识评估对象
此时,您可能会问:“您如何评价按对讲机的人?”。
我们选择了同行评审的方法,每个房主都能够对在他家敲门的人进行分类,这样就建立了一种常识。
这些知识将在同一网络上存在的所有对讲机之间共享,例如,即使您的邻居来到您家门口,也能正确检测到已被您的邻居标记的骗子。
公寓作为我们的目标环境
我们的项目真正在公寓中大放异彩,那里有多个建筑物,每个建筑物都有自己的对讲机,并且有共享网络(无线或有线无关紧要)。
这也可以用于较小的环境,但这会导致更差的检测率和减少智能对讲机的常识。
我们想象这也可以被店主用来保护他们的生意。
硬件与服务
对于我们的智能对讲机演示,我们采用了 Raspberry Pi 3(使用 Raspbian 作为其操作系统)作为我们的参考板,但只要可以建立与本地网络的连接,较新的版本也不错。
连同电路板,我们使用了 Pi Camera 模块 V2,它提供了按铃对象的高清图像。
您还需要一切才能为电路板提供能量(谁会猜到?)和一个模拟用户在门铃上输入的按钮。
云服务?不,谢谢,人类防火墙项目不需要它们,一切都将通过专门使用 LAN 来工作,这样我们就可以为将要使用(但永远不会存储)的敏感数据提供最高级别的隐私。
建筑学
我们的项目由三部分组成:
- 从属子系统,用于捕获门铃输入拍照并与它们一起识别人。
- 机器人子系统,托管公寓的电报机器人。
- 主子系统,这是我们共享知识架构的焦点。
鉴于这三个子系统,我们有两种类型的板,主板和从板,但是,用户看不出主板和从板之间有任何区别。
所有的板子都应该在同一个 NATed WiFi/有线局域网中,不需要开放的互联网端口,除了机器人子系统使用的 Telegram 服务器的端口。
主控系统_
主板托管一个主子系统的实例,该子系统由一个 Web 服务器、一个 MQTT 代理组成,包含公寓的 Telegram 机器人,并使用从属子系统作为门铃。
Web 服务器用于与从站通信,并提供几个端点:
- Identification endpoint: 使网络中新的slaves可以发现它正在扫描局域网。
- Ring 端点:用于管理事件,当有人按响连接到网络的门铃时,master 会将照片和评估数据发送给 Telegram bot,允许它向用户通知事件并识别谁按铃。
- 时间戳端点:当被询问时,它会给出数据库中的最后一个时间戳,让从属了解它们是否是最新的。
- Recovery endpoints:允许slaves下载从给定时间戳到最后一个时间戳的反馈和识别数据。
这些端点由从系统使用,因此需要在任何从系统之前初始化主系统。
奴隶制度
从板仅包含从子系统的一个实例。
从属子系统由一个 SQLite 数据库组成,用于维护用户的反馈和一个内存中的特征向量数据库,以及一个磁盘副本以支持重启,这是我们表示人脸的方式。
反馈数据库使用复合键,由以下组成:
- 特征向量,标识响铃的人,需要分类
- 聊天 ID,用于识别提供反馈的人
使用此模式,即使在多个门铃和多个响铃事件中,一个用户也只能对响铃的人进行一次反馈,因此我们更新了用户对特定人给出的旧的且可能不正确的反馈,而不是添加到数据库更新的反馈。这样做是为了保持我们的分类有意义和可更新。
启动后,它将通过扫描网络定位标识端点来定位主控,然后,在找到主控后,它将启动恢复程序,检查其数据是否已更新并在必要时下载更新。
在找到主节点并更新数据库后,它将订阅 MQTT 代理以接收来自整个系统的新更新,并将等待本地环事件。
这个恢复过程在第一次初始化和灾难恢复的情况下都非常方便(例如,一个从属已经断电,可能以一个与主或其他从属相关的不同步的数据库结束)。
当本地响铃事件被拦截时(即当有人按从属门铃时),将捕获一张照片,并通过使用Dlib和face_recognition库定位人脸并将其编码为特征向量。然后,slave 询问它本地的反馈数据库,看看是否有针对那个人的任何反馈;然后照片、电路板 ID 和反馈通过环端点发送到主板。
如果在任何时候收到来自 MQTT 代理的消息,其内容将被添加到反馈和编码数据库中,从而增加董事会知识。
机器人子系统
机器人子系统仅托管在主板上,用于与用户交互、通知他们响铃事件以及收集和分发他们的反馈。
通知通过使用 Telegram API 发送到用户的 Telegram 帐户。
我们选择使用 Telegram 是因为这样做,我们可以轻松访问每个平台(iOS、Android、Windows、Mac、Linux),而无需实施我们自己的移动应用程序和服务器基础架构,同时用户不会他心爱的设备上又装了一个应用程序。
Telegram 机器人使用聊天 ID 来识别用户,并使用通过散列面板序列号获得的面板 ID 来识别门铃。
机器人由用户在指定它将接收通知的门铃 ID 时进行配置,为了更加用户友好的应用程序,我们让用户为配置的每个门铃指定一个名称,这比 ID 更容易记住.
这些配置设置保存在用户数据库中,我们在其中存储用户聊天 ID 和配置的门铃。
当响铃事件被通知到主板时,它会通知机器人子系统,机器人子系统将向每个配置了门铃的用户发送通知,其中包含照片和人的分类,根据可用反馈计算出多数票与相应的事件板 ID。
然后用户可以在他们的手机上看到事件,如果系统找到了人的脸,那么用户还可以看到人的分类,如果以前的反馈可用,并给出他们自己的分类。
当给出分类时,bot 子系统会将消息发布到 MQTT 队列中,所有从属都订阅了该队列,其中包含聊天 ID、我们用来识别人员的特征向量和用户给出的分类。
技术
人脸识别库
dlib最先进的人脸识别库的接口,提供多种人脸定位算法和预训练的矢量化模型。
我们使用 HOG 模型 (O(#pixels)) 来定位人脸,而不是 dlib 的默认 CNN 模型,这是一种不太准确的模型,但CPU 密集度也较低。
为了计算编码,预训练模型基于 ResNet,一种深度 CNN
我们在欧几里得产品中使用 0.6 的阈值来检测两个编码是否指的是同一个人,规模有点高,但对于公寓来说是可以的。
蚊子和帕霍
我们选择Eclipse Mosquitto作为我们的代理,它是 MQTT 代理的开源实现。
Mosquitto 重量轻,适合在 CPU 时钟较低的设备上使用。
我们选择不持久存储消息,以免浪费磁盘空间。
我们选择的 MQTT 客户端是Eclipse Paho项目,它为多种编程语言(包括 Python)提供 MQTT 和 MQTT-SN 消息传递协议的开源客户端实现。
在 Raspberry Pi 3 上,dlib 的多进程执行会导致死锁,因此我们不得不使用以下变通方法强制在单线程上执行 dlib 库,该变通方法已包含在我们的设置脚本中:
export OPENBLAS_NUM_THREADS=1
export OPENBLAS_MAIN_FREE=1
烧瓶
Flask是基于 Werkzeug 和 Jinja 2 的 Python 微框架。
我们使用它来托管主板 Web 服务器,因为它是一个可扩展的框架,可以轻松地针对多种用途进行定制。
对于项目的基本需求,我们只选择了 Flask 核心模块和一些使我们的 Web 服务器轻量级和快速的基本扩展。
python电报机器人
为了在 bot 子系统中与 Telegram 的 API(通过 HTTP)交互,我们选择了一个名为python-telegram-bot的社区制作的包装器。
包装器实现了从发送消息到对话处理的广泛功能,同时防止出现同步问题。
它内存占用小,CPU 使用率低,因为它使用 webhook 来防止轮询 Telegram 的服务器。
如何部署和测试
-
部署应用程序:获取master_scripts
中的代码并执行 install.py 以设置主板。它既可以在装有 Ubuntu 的笔记本电脑上运行,也可以在装有 Raspbian 操作系统的 Raspberry 上运行。该脚本会要求您提供电报 API 密钥。如果要添加一个或多个slave,可以使用slave_scripts中的代码来实现。在 Raspbian 上,服务也被添加到 systemd 并在启动时启动。 -
在电报上设置电路板:
启动机器人并提供 /configure 命令,以命名和添加电路板 -
使用门铃:
按下门铃上的按钮以接收通知并留下反馈,一旦给出反馈,系统将使用它进行未来预测。(为了让我们的代码生效,门铃必须连接到树莓派上的 3 号引脚。)
- 对讲机原理、使用及纵图集 89次下载
- DMR828数字对讲机模块资料下载
- 对讲机写频软件 41次下载
- 基于光子的对讲机
- 对讲机业务频率规划 11次下载
- ICOM对讲机写频编程软件CSF33G下载 12次下载
- ICOM对讲机写频编程软件CS-36FI下载 3次下载
- 如何使用ARM内核实现民用数字对讲机系统的设计 25次下载
- 关于DSP的数字对讲机语音处理方案的研究 15次下载
- 基于MPPSK数字对讲机系统 1次下载
- 对讲机维修资料 0次下载
- 蓝牙对讲手机APP蓝牙对讲对讲机PTT对讲方案 60次下载
- 简易对讲机 72次下载
- 数字对讲机与模拟对讲机的比较 249次下载
- 基于ARM内核的民用数字对讲机系统的设计
- 防爆的对讲机有哪些 防爆的对讲机怎么选 880次阅读
- 如何才能让不同品牌的对讲机之间互通信号 2.3w次阅读
- 为什么蓝牙对讲机要加一根PTT线与普通对讲机连接 1.4w次阅读
- 浅析模拟对讲机和数字对讲机的区别 2.5w次阅读
- 防爆对讲机与普通对讲机如何区别? 1.2w次阅读
- 对讲机和微信的区别在哪里?为什么微信,手机不能取代对讲机? 1w次阅读
- 什么是全国对讲机_全国对讲机的原理_全国对讲机怎么用 5.1w次阅读
- 新买的对讲机怎么用_怎么知道对讲机的频率_对讲机频率设置 8.1w次阅读
- 公网对讲相关的几个时延指标定义以及常用对讲机与集群对讲机之分 8687次阅读
- 对讲机是怎么分类的_对讲机分类大全_对讲机的工作原理介绍 1.4w次阅读
- 关于对讲机基础知识的解答 7225次阅读
- 对讲机按键功能图解 18.9w次阅读
- 对讲机调频的4个步骤 4.3w次阅读
- 深度剖析门禁对讲机 5948次阅读
- 基于防爆对讲机的使用详细说明 4836次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多