電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>智能對(duì)講機(jī)開(kāi)源設(shè)計(jì)

智能對(duì)講機(jī)開(kāi)源設(shè)計(jì)

2023-06-19 | zip | 0.00 MB | 次下載 | 5積分

資料介紹

描述

?

我們這個(gè)名為 Human-firewall 項(xiàng)目的項(xiàng)目的目的是引入一種智能對(duì)講機(jī),能夠在消息應(yīng)用程序上通過(guò)按門(mén)鈴的人的照片通知您,并實(shí)時(shí)提供對(duì)個(gè)人的評(píng)估。

通過(guò)這種方式,您會(huì)立即知道您是否可以信任相關(guān)人員,如果此人不值得信任,您將避免讓自己、您的積蓄和您的家面臨危險(xiǎn)。

注意:我們的目標(biāo)不是創(chuàng)建一個(gè)完全成熟的對(duì)講機(jī),而是創(chuàng)建一個(gè)可以連接到現(xiàn)有對(duì)講機(jī)的原型。

從現(xiàn)有的對(duì)講機(jī)中,我將捕獲門(mén)鈴輸入,這將觸發(fā)相機(jī)拍攝對(duì)象的照片,使用這張照片和一些幕后魔術(shù)(劇透:這是機(jī)器學(xué)習(xí))我將把對(duì)象評(píng)估發(fā)送到房主。

使用 LAN 上的常識(shí)評(píng)估對(duì)象

此時(shí),您可能會(huì)問(wèn):“您如何評(píng)價(jià)按對(duì)講機(jī)的人?”。

我們選擇了同行評(píng)審的方法,每個(gè)房主都能夠?qū)υ谒仪瞄T(mén)的人進(jìn)行分類(lèi),這樣就建立了一種常識(shí)。

這些知識(shí)將在同一網(wǎng)絡(luò)上存在的所有對(duì)講機(jī)之間共享,例如,即使您的鄰居來(lái)到您家門(mén)口,也能正確檢測(cè)到已被您的鄰居標(biāo)記的騙子。

公寓作為我們的目標(biāo)環(huán)境

我們的項(xiàng)目真正在公寓中大放異彩,那里有多個(gè)建筑物,每個(gè)建筑物都有自己的對(duì)講機(jī),并且有共享網(wǎng)絡(luò)(無(wú)線(xiàn)或有線(xiàn)無(wú)關(guān)緊要)。

?
poYBAGOSl22AKSHGAACxWAQrxyo162.jpg
?

這也可以用于較小的環(huán)境,但這會(huì)導(dǎo)致更差的檢測(cè)率和減少智能對(duì)講機(jī)的常識(shí)。

我們想象這也可以被店主用來(lái)保護(hù)他們的生意。

硬件與服務(wù)

對(duì)于我們的智能對(duì)講機(jī)演示,我們采用了 Raspberry Pi 3(使用 Raspbian 作為其操作系統(tǒng))作為我們的參考板,但只要可以建立與本地網(wǎng)絡(luò)的連接,較新的版本也不錯(cuò)。

連同電路板,我們使用了 Pi Camera 模塊 V2,它提供了按鈴對(duì)象的高清圖像。

您還需要一切才能為電路板提供能量(誰(shuí)會(huì)猜到?)和一個(gè)模擬用戶(hù)在門(mén)鈴上輸入的按鈕。

云服務(wù)?不,謝謝,人類(lèi)防火墻項(xiàng)目不需要它們,一切都將通過(guò)專(zhuān)門(mén)使用 LAN 來(lái)工作,這樣我們就可以為將要使用(但永遠(yuǎn)不會(huì)存儲(chǔ))的敏感數(shù)據(jù)提供最高級(jí)別的隱私。

建筑學(xué)

?
pYYBAGOSl3CAdl6aAADNP8mwR7g364.png
架構(gòu)的表示
?

我們的項(xiàng)目由三部分組成:

  • 從屬子系統(tǒng),用于捕獲門(mén)鈴輸入拍照并與它們一起識(shí)別人。
  • 機(jī)器人子系統(tǒng),托管公寓的電報(bào)機(jī)器人。
  • 主子系統(tǒng),這是我們共享知識(shí)架構(gòu)的焦點(diǎn)。

鑒于這三個(gè)子系統(tǒng),我們有兩種類(lèi)型的板,主板和從板,但是,用戶(hù)看不出主板和從板之間有任何區(qū)別。

所有的板子都應(yīng)該在同一個(gè) NATed WiFi/有線(xiàn)局域網(wǎng)中,不需要開(kāi)放的互聯(lián)網(wǎng)端口,除了機(jī)器人子系統(tǒng)使用的 Telegram 服務(wù)器的端口。

主控系統(tǒng)_

主板托管一個(gè)主子系統(tǒng)的實(shí)例,該子系統(tǒng)由一個(gè) Web 服務(wù)器、一個(gè) MQTT 代理組成,包含公寓的 Telegram 機(jī)器人,并使用從屬子系統(tǒng)作為門(mén)鈴。

Web 服務(wù)器用于與從站通信,并提供幾個(gè)端點(diǎn):

  • Identification endpoint: 使網(wǎng)絡(luò)中新的slaves可以發(fā)現(xiàn)它正在掃描局域網(wǎng)。
  • Ring 端點(diǎn):用于管理事件,當(dāng)有人按響連接到網(wǎng)絡(luò)的門(mén)鈴時(shí),master 會(huì)將照片和評(píng)估數(shù)據(jù)發(fā)送給 Telegram bot,允許它向用戶(hù)通知事件并識(shí)別誰(shuí)按鈴。
  • 時(shí)間戳端點(diǎn):當(dāng)被詢(xún)問(wèn)時(shí),它會(huì)給出數(shù)據(jù)庫(kù)中的最后一個(gè)時(shí)間戳,讓從屬了解它們是否是最新的。
  • Recovery endpoints:允許slaves下載從給定時(shí)間戳到最后一個(gè)時(shí)間戳的反饋和識(shí)別數(shù)據(jù)。

這些端點(diǎn)由從系統(tǒng)使用,因此需要在任何從系統(tǒng)之前初始化主系統(tǒng)。

奴隸制度

從板僅包含從子系統(tǒng)的一個(gè)實(shí)例。

從屬子系統(tǒng)由一個(gè) SQLite 數(shù)據(jù)庫(kù)組成,用于維護(hù)用戶(hù)的反饋和一個(gè)內(nèi)存中的特征向量數(shù)據(jù)庫(kù),以及一個(gè)磁盤(pán)副本以支持重啟,這是我們表示人臉的方式。

反饋數(shù)據(jù)庫(kù)使用復(fù)合鍵,由以下組成:

  • 特征向量,標(biāo)識(shí)響鈴的人,需要分類(lèi)
  • 聊天 ID,用于識(shí)別提供反饋的人

使用此模式,即使在多個(gè)門(mén)鈴和多個(gè)響鈴事件中,一個(gè)用戶(hù)也只能對(duì)響鈴的人進(jìn)行一次反饋,因此我們更新了用戶(hù)對(duì)特定人給出的舊的且可能不正確的反饋,而不是添加到數(shù)據(jù)庫(kù)更新的反饋。這樣做是為了保持我們的分類(lèi)有意義和可更新。

啟動(dòng)后,它將通過(guò)掃描網(wǎng)絡(luò)定位標(biāo)識(shí)端點(diǎn)來(lái)定位主控,然后,在找到主控后,它將啟動(dòng)恢復(fù)程序,檢查其數(shù)據(jù)是否已更新并在必要時(shí)下載更新。

在找到主節(jié)點(diǎn)并更新數(shù)據(jù)庫(kù)后,它將訂閱 MQTT 代理以接收來(lái)自整個(gè)系統(tǒng)的新更新,并將等待本地環(huán)事件。

這個(gè)恢復(fù)過(guò)程在第一次初始化和災(zāi)難恢復(fù)的情況下都非常方便(例如,一個(gè)從屬已經(jīng)斷電,可能以一個(gè)與主或其他從屬相關(guān)的不同步的數(shù)據(jù)庫(kù)結(jié)束)。

當(dāng)本地響鈴事件被攔截時(shí)(即當(dāng)有人按從屬門(mén)鈴時(shí)),將捕獲一張照片,并通過(guò)使用Dlibface_recognition庫(kù)定位人臉并將其編碼為特征向量。然后,slave 詢(xún)問(wèn)它本地的反饋數(shù)據(jù)庫(kù),看看是否有針對(duì)那個(gè)人的任何反饋;然后照片、電路板 ID 和反饋通過(guò)環(huán)端點(diǎn)發(fā)送到主板。

?
pYYBAGOSl3-AMVkRAAD5XIGmfMQ435.png
可視化門(mén)鈴被觸發(fā)時(shí)發(fā)生的情況
?

如果在任何時(shí)候收到來(lái)自 MQTT 代理的消息,其內(nèi)容將被添加到反饋和編碼數(shù)據(jù)庫(kù)中,從而增加董事會(huì)知識(shí)。

機(jī)器人子系統(tǒng)

機(jī)器人子系統(tǒng)僅托管在主板上,用于與用戶(hù)交互、通知他們響鈴事件以及收集和分發(fā)他們的反饋。

通知通過(guò)使用 Telegram API 發(fā)送到用戶(hù)的 Telegram 帳戶(hù)。

我們選擇使用 Telegram 是因?yàn)檫@樣做,我們可以輕松訪(fǎng)問(wèn)每個(gè)平臺(tái)(iOS、Android、Windows、Mac、Linux),而無(wú)需實(shí)施我們自己的移動(dòng)應(yīng)用程序和服務(wù)器基礎(chǔ)架構(gòu),同時(shí)用戶(hù)不會(huì)他心愛(ài)的設(shè)備上又裝了一個(gè)應(yīng)用程序。

Telegram 機(jī)器人使用聊天 ID 來(lái)識(shí)別用戶(hù),并使用通過(guò)散列面板序列號(hào)獲得的面板 ID 來(lái)識(shí)別門(mén)鈴。

機(jī)器人由用戶(hù)在指定它將接收通知的門(mén)鈴 ID 時(shí)進(jìn)行配置,為了更加用戶(hù)友好的應(yīng)用程序,我們讓用戶(hù)為配置的每個(gè)門(mén)鈴指定一個(gè)名稱(chēng),這比 ID 更容易記住.

這些配置設(shè)置保存在用戶(hù)數(shù)據(jù)庫(kù)中,我們?cè)谄渲写鎯?chǔ)用戶(hù)聊天 ID 和配置的門(mén)鈴。

當(dāng)響鈴事件被通知到主板時(shí),它會(huì)通知機(jī)器人子系統(tǒng),機(jī)器人子系統(tǒng)將向每個(gè)配置了門(mén)鈴的用戶(hù)發(fā)送通知,其中包含照片和人的分類(lèi),根據(jù)可用反饋計(jì)算出多數(shù)票與相應(yīng)的事件板 ID。

然后用戶(hù)可以在他們的手機(jī)上看到事件,如果系統(tǒng)找到了人的臉,那么用戶(hù)還可以看到人的分類(lèi),如果以前的反饋可用,并給出他們自己的分類(lèi)。

當(dāng)給出分類(lèi)時(shí),bot 子系統(tǒng)會(huì)將消息發(fā)布到 MQTT 隊(duì)列中,所有從屬都訂閱了該隊(duì)列,其中包含聊天 ID、我們用來(lái)識(shí)別人員的特征向量和用戶(hù)給出的分類(lèi)。

技術(shù)

人臉識(shí)別庫(kù)

dlib最先進(jìn)的人臉識(shí)別庫(kù)接口,提供多種人臉定位算法和預(yù)訓(xùn)練的矢量化模型。

我們使用 HOG 模型 (O(#pixels)) 來(lái)定位人臉,而不是 dlib 的默認(rèn) CNN 模型,這是一種不太準(zhǔn)確的模型,但CPU 密集度也較低。

為了計(jì)算編碼,預(yù)訓(xùn)練模型基于 ResNet,一種深度 CNN

我們?cè)跉W幾里得產(chǎn)品中使用 0.6 的閾值來(lái)檢測(cè)兩個(gè)編碼是否指的是同一個(gè)人,規(guī)模有點(diǎn)高,但對(duì)于公寓來(lái)說(shuō)是可以的。

蚊子和帕霍

我們選擇Eclipse Mosquitto作為我們的代理,它是 MQTT 代理的開(kāi)源實(shí)現(xiàn)。

Mosquitto 重量輕,適合在 CPU 時(shí)鐘較低的設(shè)備上使用。

我們選擇不持久存儲(chǔ)消息,以免浪費(fèi)磁盤(pán)空間。

我們選擇的 MQTT 客戶(hù)端是Eclipse Paho項(xiàng)目,它為多種編程語(yǔ)言(包括 Python)提供 MQTT 和 MQTT-SN 消息傳遞協(xié)議的開(kāi)源客戶(hù)端實(shí)現(xiàn)。

在 Raspberry Pi 3 上,dlib 的多進(jìn)程執(zhí)行會(huì)導(dǎo)致死鎖,因此我們不得不使用以下變通方法強(qiáng)制在單線(xiàn)程上執(zhí)行 dlib 庫(kù),該變通方法已包含在我們的設(shè)置腳本中:

export OPENBLAS_NUM_THREADS=1 
export OPENBLAS_MAIN_FREE=1

燒瓶

Flask是基于 Werkzeug 和 Jinja 2 的 Python 微框架。

我們使用它來(lái)托管主板 Web 服務(wù)器,因?yàn)樗且粋€(gè)可擴(kuò)展的框架,可以輕松地針對(duì)多種用途進(jìn)行定制。

對(duì)于項(xiàng)目的基本需求,我們只選擇了 Flask 核心模塊和一些使我們的 Web 服務(wù)器輕量級(jí)和快速的基本擴(kuò)展。

python電報(bào)機(jī)器人

為了在 bot 子系統(tǒng)中與 Telegram 的 API(通過(guò) HTTP)交互,我們選擇了一個(gè)名為python-telegram-bot的社區(qū)制作的包裝器

包裝器實(shí)現(xiàn)了從發(fā)送消息到對(duì)話(huà)處理的廣泛功能,同時(shí)防止出現(xiàn)同步問(wèn)題。

它內(nèi)存占用小,CPU 使用率低,因?yàn)樗褂?webhook 來(lái)防止輪詢(xún) Telegram 的服務(wù)器。

如何部署和測(cè)試

  • 部署應(yīng)用程序:獲取master_scripts
    中的代碼并執(zhí)行 install.py 以設(shè)置主板。它既可以在裝有 Ubuntu 的筆記本電腦上運(yùn)行,也可以在裝有 Raspbian 操作系統(tǒng)的 Raspberry 上運(yùn)行。該腳本會(huì)要求您提供電報(bào) API 密鑰。如果要添加一個(gè)或多個(gè)slave,可以使用slave_scripts中的代碼來(lái)實(shí)現(xiàn)。在 Raspbian 上,服務(wù)也被添加到 systemd 并在啟動(dòng)時(shí)啟動(dòng)。

  • 在電報(bào)上設(shè)置電路板:
    啟動(dòng)機(jī)器人并提供 /configure 命令,以命名和添加電路板
  • 使用門(mén)鈴:
    按下門(mén)鈴上的按鈕以接收通知并留下反饋,一旦給出反饋,系統(tǒng)將使用它進(jìn)行未來(lái)預(yù)測(cè)。(為了讓我們的代碼生效,門(mén)鈴必須連接到樹(shù)莓派上的 3 號(hào)引腳。)
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)