介紹
預計在不久後的未來,人臉識別和身份認證技術將在咱們的平常生活中扮演一個很是重要的角色。這項技術爲咱們開闢了一個全新的世界,它幾乎適用於咱們生活的方方面面。面部識別/身份認證的使用案例包括安全系統、認證系統、個性化智能家居和家庭護理助理等。
python
咱們將搭建什麼?
本教程將幫助你創建一個能夠訓練 HARASCALDES 模型的樹莓派,該模型可用於檢測已識別的/未識別過的人,使用監控攝像頭進行實時監控,並利用物聯網 JumpWay 來發送傳感和警告消息,進而容許你的設備利用其餘物聯網 JumpWay 網與其餘設備進行通訊。nginx
本教程將利用 TechBubble Technologies 物聯網 JumpWay Python MQTT 庫進行通訊,利用 OpenCV 實現計算機視覺,在本地端口上建造移動 Web 流和安全的 NGNX 服務器,以即可以安全地從外部訪問視頻流。git
這個例子是咱們最初的 TASS 版本,由於咱們的進步依靠了不少更先進的計算機視覺庫和框架,因此咱們決定將代碼進行開源。github
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),設備是安全的。bash
複製 Repo
你將須要將 echBubble IoT JumpWay (https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples)樹莓派實例 Examples 示例庫下載到你的樹莓派上,並導航到你想下載的目錄,如下命令是將其下載到主目錄最簡單的方式。服務器
1
|
git clone https:
//github
.com
/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples
.git
|
安裝要求
接下來,你須要將計算機視覺庫導航到目錄並按照要求進行安裝,若是你已經將庫複製到你的主目錄上,那麼這一部分的命令以下:網絡
1
2
3
|
cd
IoT-JumpWay-RPI-Examples
/Computer-Vision/Python
pip
install
--upgrade pip
pip
install
-r requirements.txt
|
安裝 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 部分中,它告訴你如何修改媒體的保存目錄,在本教程中,你應該將這些設置更改成:
1
|
/home/YOURUSERNAME/IoT-JumpWay-RPI-Examples/Computer-Vision/Python/media
|
不要忘記注意第 10 部分中關於關閉圖像保存來節省磁盤空間的問題。
設置域名和 SSL
咱們但願咱們提供的教程能夠確保幫助人們學會建立安全的項目。爲了使視頻流安全工做,你須要設置指向你的樹莓派域名,你也須要設置 SSL 證書來確保用於視頻流的服務器是安全的。樹莓派域名和 SSL 設置教程(https://github.com/TechBubbleTechnologies/IoT-JumpWay-RPI-Examples/blob/master/_DOCS/3-Raspberry-Pi-Domain-And-SSL.md)會向你詳細解釋如何作到這一點,若是有疑問,你可讓你的註冊員或主機來協助你。若是你將這個存儲庫複製到你的主目錄中,你須要使用以下的 CSR 和密鑰生成的路徑:
1
2
|
/etc/nginx/key
.key
/etc/nginx/csr
.csr
|
一旦你從證書頒發機構收到你的簽名 crt.crt 和 ca.crt 文件,你須要將它們上傳到:
1
2
|
/etc/nginx/ca
.crt
/etc/nginx/crt
.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)來實現這一點。
視頻流
若是你遵循了以上步驟,若是它們尚未運行,你須要按照下面的步驟操做。
1
2
3
4
5
6
7
|
sudo
service motion start
或
sudo
/etc/init
.d
/motion
start
啓動 NGINX
sudo
service nginx start
或
sudo
/etc/init
.d
/nginx
start
|
重要的是:這種流式傳輸是一個新的特性,咱們仍然在消除一些扭結,若是你想讓 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)。
1
2
3
4
5
6
7
8
9
10
11
|
"IoTJumpWaySettings"
: {
"SystemLocation"
: 0,
"SystemZone"
: 0,
"SystemDeviceID"
: 0,
"SystemDeviceName"
:
"Your Device Name"
,
"SystemCameraID"
:0
}
"IoTJumpWayMQTTSettings"
: {
"username"
:
"Your MQTT Username"
,
"password"
:
"Your MQTT Password"
}
|
訓練你的數據
如今基本構架已經搭建好,是時候用你本身的照片訓練你的模型了。當你下載這個 RPO 時,在那個被處理的文件夾中已經有一個通過訓練的模型和被處理的圖像,可是這個模型不會識別你。你須要選擇本身在不一樣的位置和燈光下的照片。你訓練模型的照片越多,它就越精確,若是你的設備沒有識別你,你只須要用更多的圖像來訓練它。
你能夠添加你喜歡的圖片(這取決於你的樹莓派 3 可用的空間),有不少像你這樣人。爲了將訓練數據導航到訓練文件夾中並建立目錄,目錄應該是一個數字,並且不是那個已處理文件夾中的數字。
一旦你創建了圖像的文件夾,進入 Tas.Py 文件改變第 34 行(self.train = 0)爲 self.train = 1,並啓動程序。程序將循環檢測你的圖像,若是它檢測到臉部,它將以模型所需的格式從新建立一個圖像,將其保存到匹配文件夾處理後的目錄中中,並刪除原始圖像以節省空間。若是它沒有檢測到面部,它將簡單地刪除原始圖像,由於它是無效的面部識別。
一旦處理階段完成,你的新模型將自動開始訓練,訓練完成後,它將自動運行主面部識別程序。把你的臉放在你鏈接的攝像頭前面,看着程序的輸出你是誰。
注意:從處理目錄中刪除 read me 文件。
執行程序
1
|
sudo
python
/python3
TASS.py
|
自主物聯網通訊
當你的設備每次檢測到一我的時,設備會把傳感器數據傳送到 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
轉自雷鋒網:https://club.leiphone.com/page/TextTranslation/624