基於Raspberry Pi的DIY面部識別功能

1. 目的

本課程的目的在於展示如何在Raspberry Pi項目中添加面部識別功能。

注意:該面部識別門鎖設計並不應該被應用於保護或鎖定任何有價值的物品或房屋上。一個簡單的破解方法就是將“列入白名單”的用戶的照片舉到相機前就可以將門打開。

2. 概述

在本課程中,我將說明如何使用Microsoft的Face API(應用程式設計發展介面)為您的Raspberry Pi專案和應用程式添加面部識別功能。該項目基於一個Microsoft面部識別門鎖項目。這是一個中級課程。在此我假設您已經在Raspberry Pi上設定了作業系統(OS)。如果沒有的話,我建議您對Raspberry Pi進行設定,然後在完成一些入門級專案後再嘗試本項目。

3. 裝置

注意:請確認您獲取的是Microsoft認證的硬體,否則在您的Raspberry Pi上啟動並運行Windows 10 IOT時會遇到問題。點擊此處可以找到經過認證的硬體。

表1:裝置

裝置 連結
Raspberry Pi 3 Raspberry Pi 連結
Microsoft LifeCam HD-3000 WebCam的Amazon連結
HDMI 電纜 HDMI 電纜連結
LED Adafruit LED連結
滑鼠 + 鍵盤 任何有線USB滑鼠 +鍵盤
顯示器/TV 任何具有HDMI的TV或顯示器
跳線 跳線Amazon連結
微型USB電纜 微型USB電纜Amazon連結
麵包板 麵包板Amazon連結
微型SD卡 Samsung SD卡連結
按鍵 w/ Caps按鍵連結

4. 目錄

  1. Windows 10 IoT核心版安裝
    1. 安裝步驟
    2. 安裝技巧
  2. 設計電路
    1. 我的電路
    2. 專案應用—門鎖
  3. 設定軟體
  4. 部署及運行應用程式
    1. 部署應用程式
    2. 運行應用程式

5. 步驟

1. Windows 10 IoT核心版安裝

1.2 安裝步驟

Windows 10 IoT核心版是您需要在Raspberry Pi上運行的用於此專案的作業系統。它是Windows 10針對Raspberry Pi之類的小型裝置和單板電腦進行最佳化之後的版本。該專案還需要您在PC上安裝Microsoft Visual Studio。

  1. 格式化SD卡
  2. NOOBS拷貝到您的SD卡
  3. 在連接到乙太網時啟動您的Raspberry Pi
  4. 選擇Windows 10 IoT核心版進行安裝(圖1:Windows IoT安裝)
  5. 安裝完成後,完成必要的設定過程,直到進入主頁(圖3:Windows IoT主頁螢幕)。

圖1:Windows IoT安裝

圖2:Windows IoT核心版歡迎頁面

圖3:Windows IoT主頁螢幕
1.2 安裝技巧

本課程的重點在於向Raspberry Pi中添加面部識別功能,而不是安裝Windows 10 IoT核心版,但是還是在這裡補充一些安裝技巧。

  1. 確保您使用的是Microsoft認證過的硬體。當我使用的不是經過認證的滑鼠和鍵盤時,這些硬體都無法正常工作。
  2. 如果您有了一個Windows PC,請下載Windows IoT 10儀錶板來對裝置進行設定。如果您使用的是Mac或者Linux電腦,則該選項不適用。
  3. 確保您的Raspberry Pi是透過乙太網而不是Wi-Fi連接到網路的。
  4. 確保將SD卡格式化為FAT32或exFAT。
  5. 確保您使用的電源可以為Raspberry Pi提供高達2安培的電流。

如果有任何問題,請參閱包含了調試與安裝過程的本篇文章

2. 設計電路
2.1 我的電路

我通常使用一個開源的包含原理圖繪製及PCB佈線功能的軟體Fritzing來繪製接線圖。您可以用過以下連結下載Fritzing(可選):http://fritzing.org/home/

第一個原理圖是我所構建的以LED作為驅動器的電路圖(圖4:w/ LED電路圖)。我將一個引腳直接接地來作為一個感測器,以使應用程式透過相機拍照。該項目可以被修改為透過使用任何其他類型的驅動器和感測器來實現面部識別功能。

2.2 專案應用—門鎖

第二個電路是用一個繼電器作為驅動器,用一個按鍵作為感測器(圖5:w/繼電器以及門鎖的電路圖)。如果您希望將您的設計作為一個門鎖使用,則應該構建該電路。門鈴向相機髮出訊號使其拍照。繼電器控制電子門的動作(斷路),如果所拍攝的照片與“白名單”上的用戶匹配,那麼繼電器將會把門打開,否則保持鎖定狀態。

注意:該面部識別門鎖設計並不應該被應用於保護或鎖定任何有價值的物品或房屋上。一個簡單的破解方法就是將“列入白名單”的用戶的照片舉到相機前就可以將門打開。

圖4:w/ LED電路原理圖

圖5:w/繼電器及閘鎖電路原理圖

圖6:我的電路設定
3. 設定軟體

創建一個您打算存放本專案檔案的資料夾。使用git clone指令下載專案。
git clone https://github.com/ms-iot/Facial-Recognition-Door.git

在Visual Studio中,打開名為FacialRecognitionDoor.sln的文件。要接收API金鑰,請使用此連結,然後點擊“免費試用識別功能(Try Cognitive Services for free)”,然後選擇Face API,按照登錄說明接收您的唯一金鑰。在“Constants.cs”中輸入金鑰,替換OXFORD_KEY_HERE(圖7:Oxford API金鑰)。在此檔中,您還可以更改用於門鈴的引腳和用於控制門鎖的繼電器。您也可以更改“列入白名單”的用戶以及被拒絕使用者的資訊。

在螢幕的左上方,將下拉式功能表改為“Debug”,“ARM”以及“Remote Machine”(圖8:調試配置)。

圖7:Oxford API金鑰

圖8:調試配置
4. 部署及運行應用程式

4.1 部署應用程式

有多種方法可以將應用程式部署到您的Windows IoT裝置上。我將在下面列出幾個不同的選項。其中一個可能比其他方法更容易一些,具體情況要取決於您所使用的硬體。我使用的是第一個方法。

  1. 透過Windows裝置門戶使用遠程控制台進行部署/調試
  2. 使用Visual Studio進行部署/調試
  3. 使用Windows 10 IoT核心版儀錶板進行部署/調試

4.2 運行應用程式

當應用程式開始運行時,您將在螢幕上看到以下圖像(圖9:面部識別啟動頁面)。您需要做的第一件事就是將自己添加到允許透過的“白名單”中。為此,請選擇螢幕右下角的加號(+)按鈕。然後頁面會顯示要求您拍攝一張ID照片。您可以對準鏡頭然後點擊“拍攝ID照片(Capture ID Photo)”,然後相機會拍攝一張您的照片並將其顯示在螢幕上。最後輸入您的姓名,按一下“確認(Confirm)”對用戶個人資料進行確認。

圖9:面部識別主頁螢幕
現在,您將返回到歡迎頁面。您應該會在螢幕左側的“列入白名單的訪問者”列表下看到您的用戶個人資料。

現在,當您站在相機前時,可以按下按鍵或者門鈴。如果應用程式將您識別為“白名單”用戶,將會解鎖10秒鐘。

恭喜您完成此項目。現在您可以對該應用程式進行修改來將面部識別API使用到其他Raspberry Pi項目中了。