在樹莓派上實現人臉識別
來自專欄 AI研習社社區40 人贊了文章
本文為 AI 研習社編譯的技術博客,原標題 Facial Recognition & Identification On Raspberry Pi,作者為 Adam Milton-Barker。
翻譯 | 陶玉龍 校對 | 李欣 整理 | 凡江
介紹
預計在不久後的將來,人臉識別和身份認證技術將在我們的日常生活中扮演一個非常重要的角色。這項技術為我們開闢了一個全新的世界,它幾乎適用於我們生活的方方面面。面部識別/身份認證的使用案例包括安全系統、認證系統、個性化智能家居和家庭護理助理等。
視頻鏈接:文章配圖0801_騰訊視頻
我們將搭建什麼?
本教程將幫助你建立一個可以訓練 HARASCALDES 模型的樹莓派,該模型可用於檢測已識別的/未識別過的人,使用監控攝像頭進行實時監控,並利用物聯網 JumpWay 來發送感測和警告消息,進而允許你的設備利用其他物聯網 JumpWay 網與其他設備進行通信。
本教程將利用 TechBubble Technologies 物聯網 JumpWay Python MQTT 庫進行通信,利用 OpenCV 實現計算機視覺,在本地埠上建造移動 Web 流和安全的 NGNX 伺服器,以便可以安全地從外部訪問視頻流。
這個例子是我們最初的 TASS 版本,因為我們的進步依靠了很多更先進的計算機視覺庫和框架,所以我們決定將代碼進行開源。
Python 版本
- 2.7 版本
- 3.4 或更高版本
軟體要求
- Jessie
- TechBubble IoT JumpWay Python MQTT Client(https://github.com/TechBubbleTechnologies/IoT-JumpWay-Python-MQTT-Clients)
- Linux 驅動
- Nginx
硬體要求
- 樹莓派
- Linux 兼容攝像頭
準備工作
在開始之前,有幾個教程你應該看一下,尤其是如果這是你第一次按照我們的樹莓派教程,或者如果這是你第一次使 TekBaseIO-JavaWoW 開發程序。如果這是你第一次在物聯網項目中使用 TechBubble IoT JumpWay,在你創建 IOT 設備之前需要註冊開發帳戶,並在進行一些基本的設置。訪問下面的物聯網 JumpWay 開發者使用文檔(5-10 分鐘閱讀/設置 https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/),並查看引導來進行註冊並設置你的位置、區域、設備和應用程序(大約 5 分鐘)。
- 物聯網 JumpWay 開發者程序文檔 (5-10 分鐘 閱讀/設置 https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/)
- 準備你的樹莓派(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md)
- 設置區域名字 & 樹莓派的 SSL(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)
- 在你的樹莓派上配置 OpenCV(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)
- 在你的樹莓派上配置 Linux 驅動(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)
- 在樹莓派上為 Linux 驅動安裝(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)
- 用 IPTables 確保樹莓派的安全(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)
準備你的樹莓派
花一些時間來確保你的樹莓派的硬體和包都是最新的,並且確保你的準備過程嚴格按照樹莓派 3 的教程文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/1-Raspberry-Pi-Prep.md),設備是安全的。
複製 Repo
你將需要將 echBubble IoT JumpWay (https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples)樹莓派實例 Examples 示例庫下載到你的樹莓派上,並導航到你想下載的目錄,以下命令是將其下載到主目錄最簡單的方式。
安裝要求
接下來,你需要將計算機視覺庫導航到目錄並按照要求進行安裝,如果你已經將庫複製到你的主目錄上,那麼這一部分的命令如下:
安裝 OpenCV
OpenCV 需要遵循樹莓派教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/2-Installing-OpenCV.md)進行安裝,它是我們將使用的一種計算機視覺庫。
安裝 Linux 驅動
我們將使用 Linux 驅動把視頻流傳送到樹莓派本地埠上,OpenCV 在這裡連接到視頻流並從中讀取圖像幀。為了建立 Linux 驅動,遵循安裝教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md)在你的樹莓派教上安裝 Linux 驅動。
這裡有一些修改,在驅動安裝教程的第 9 部分中,它告訴你如何修改媒體的保存目錄,在本教程中,你應該將這些設置更改為:
不要忘記注意第 10 部分中關於關閉圖像保存來節省磁碟空間的問題。
設置域名和 SSL
我們希望我們提供的教程可以確保幫助人們學會創建安全的項目。為了使視頻流安全工作,你需要設置指向你的樹莓派域名,你也需要設置 SSL 證書來確保用於視頻流的伺服器是安全的。樹莓派域名和 SSL 設置教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)會向你詳細解釋如何做到這一點,如果有疑問,你可以讓你的註冊員或主機來協助你。如果你將這個存儲庫複製到你的主目錄中,你需要使用如下的 CSR 和密鑰生成的路徑:
一旦你從證書頒發機構收到你的簽名 crt.crt 和 ca.crt 文件,你需要將它們上傳到:
為 Linux 驅動安裝安全的 NGINX 伺服器
我們將使用 NGNIX 作為我們的伺服器解決方案,並在 QualSS-SSL 實驗室 SSL 報告中將其設置為 A 級+ SSL 等級。為了做到這一點,我們提供了一個可以在 RasBuriPi 上的 Linux 驅動上安裝 NGINX 伺服器的指南(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/6-Secure-Nginx-Server-For-Motion.md)。在開始這一步之前,你需要在你的樹莓派上安裝 Linux 驅動(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/5-Installing-Motion.md),並為你的樹莓派設置域名和 SSL(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)。
用 IPTables 保證樹莓派的安全
下一個你應該採取的安全步驟是設置 IPTABLE。遵循 Securing Your Raspberry Pi With IPTables 文件(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/4-Securing-Your-Raspberry-Pi-With-IPTables.md)來實現這一點。
視頻流
如果你遵循了以上步驟,如果它們還沒有運行,你需要按照下面的步驟操作
重要的是:這種流式傳輸是一個新的特性,我們仍然在消除一些扭結,如果你想讓 OpenCV 直接訪問網路攝像頭,而不需要驅動/NGNIX 流,那麼在 TASS.py 重取消注釋 43 行,注釋 44 行和 45 行。
連接證書和感測設置
下一步是在互聯網 JumpWay 開發者控制台中安裝設備實例。遵循 IoT JumpWay Location Device Doc (https://github.com/TechBubbleTechnologies/IoT-JumpWay-Docs/blob/master/4-Location-Devices.md)來設置你的設備。你將需要設置一個有閉路監控的設備,並且添加了感測器/執行器部分。
檢索你的連接證書並用新的連接證書和相機 ID 設置更新配置文件 JSON 文件(你需要在創建它之後進入設備頁面以獲得正確的攝像頭 ID)。
訓練你的數據
現在基本構架已經搭建好,是時候用你自己的照片訓練你的模型了。當你下載這個 RPO 時,在那個被處理的文件夾中已經有一個經過訓練的模型和被處理的圖像,但是這個模型不會識別你。你需要選擇自己在不同的位置和燈光下的照片。你訓練模型的照片越多,它就越精確,如果你的設備沒有識別你,你只需要用更多的圖像來訓練它。
你可以添加你喜歡的圖片(這取決於你的樹莓派 3 可用的空間),有很多像你這樣人。為了將訓練數據導航到訓練文件夾中並創建目錄,目錄應該是一個數字,而且不是那個已處理文件夾中的數字。
一旦你建立了圖像的文件夾,進入 Tas.Py 文件改變第 34 行(self.train = 0)為 self.train = 1,並啟動程序。程序將循環檢測你的圖像,如果它檢測到臉部,它將以模型所需的格式重新創建一個圖像,將其保存到匹配文件夾處理後的目錄中中,並刪除原始圖像以節省空間。如果它沒有檢測到面部,它將簡單地刪除原始圖像,因為它是無效的面部識別。
一旦處理階段完成,你的新模型將自動開始訓練,訓練完成後,它將自動運行主面部識別程序。把你的臉放在你連接的攝像頭前面,看著程序的輸出你是誰。
注意:從處理目錄中刪除 read me 文件。
執行程序
自主物聯網通信
當你的設備每次檢測到一個人時,設備會把感測器數據傳送到 TechBubble IoT JumpWay(https://iot.techbubbletechnologies.com/),當運動感測器檢測到入侵者時會發出警報。你可以使用感測器值和警告消息與連接到 IoT JumpWay Location 的其他設備實現自主通信。
在「設備編輯」頁面上,向下滾動到「執行器/感測器」下的「創建規則」部分。你可以在這裡利用下拉菜單創建規則,允許你的設備發電子郵件給你,或者在狀態更新、感測器數據和警告的情況下自主地與其網路上的其他設備進行通信。
查看數據
每次你的設備檢測到一個人或一個入侵者,它將發送數據到 TechBubble IoT JumpWay。你將能夠訪問 TechBubble IoT JumpWay 開發區中的數據(https://iot.techbubbletechnologies.com/developers/dashboard/)。一旦登錄到開發區,訪問 TechBubble IoT JumpWay Location Devices Page 頁面(https://iot.techbubbletechnologies.com/developers/location-devices),找到你的設備,然後訪問感測器/執行器頁和警告頁,查看從你的設備發送的數據。物聯網 JumpWay 樹莓派計算機視覺實例缺陷/問題
當你在運行物聯網 JumpWay 樹莓派計算機視覺實例遇到困難時請保持一種釋然,當你遇到麻煩時你也可以在提問區尋求幫助。
物聯網 JumpWay 樹莓派實例貢獻者
TechBubble 科技公司創始人:Adam Milton Barker(https://github.com/AdamMiltonBarker)
TechBubble Technologies Dev 公司:Andrej Petelin(https://github.com/AndrejPetelin)
原文鏈接:
https://www.hackster.io/AdamMiltonBarker/facial-recognition-identification-on-raspberry-pi-1c7495
一個專註於
AI技術發展和AI工程師成長的求知求職社區
誕生啦!Facial Recognition & Identification On Raspberry Pi誕生啦!
歡迎大家訪問以下鏈接或者掃碼體驗
https://club.leiphone.com/page/homehttps://club.leiphone.com/page/home (二維碼自動識別)
推薦閱讀:
※精讀深度學習論文(23) MTCNN
※人臉特徵向量用整數存儲精度損失多少?
※[VFR]基於關鍵幀提取的CNN-閱讀筆記
※阿里安全X實驗室最新黑科技:「人臉識別」3.0版可毫秒識破假人臉
※亞馬遜遭遇15萬人聯名抗議:AI刷臉可以,但賣給政府不OK
TAG:樹莓派RaspberryPi | 人臉識別 | Arduino |