周 宇, 楊國平, 劉 淼
(上海工程技術大學 機械與汽車工程學院, 上海 201620)
智慧城市建設不斷的推進,智能化產品的安全性和便捷性的研究越來越受重視,訾斌設計了一種新型指紋門鎖,通過限位擋塊實現門把手的換向開門;袁進等針對指紋智能門鎖識別慢,識別能力弱等問題,提出了基于現場可編程門陣列(FPGA)的指紋識別優化方法。 隨著深度學習的興起,人臉識別等技術也逐漸應用到智能家居,趙若禺、宋家松等人利用人臉識別技術作為門禁系統的身份驗證依據,開發了一套智能門禁管理系統,通過下位機完成人臉信息的采集,通過上位機完成人臉識別;劉廷泰、王斌等人同樣利用人臉識別技術遠程控制門鎖的開關。 人臉識別技術的相關應用更是數不勝數,于洋針對人臉識別技術如何賦能醫療產業進行了研究;周光權對人臉識別犯罪的關鍵問題展開了綜述;修揚、曹天杰等人研究了移動端使用人臉識別技術的安全性。 基于人臉識別智能門鎖識別存在速度慢,識別率低等問題,本文構建基于Jetson Nano 和OpenCV 的智能門鎖系統,設計一種新的智能門鎖來解決上述問題。
本文所構建的基于Jetson Nano 和OpenCV 的智能門鎖系統包括硬件和軟件兩部分。
硬件包括:Jetson Nano、攝像頭、數字門鎖等。Jetson Nano 是NVIDIA 的小型人工智能計算機,提供了用于連接各種外接設備的接口、SD 卡插槽,用于與外接設備接口的40 針擴展接頭、用于有線網絡連接的千兆以太網端口,用于監視器輸出的HDMI端口等。 開發系統所需要的主要硬件見表1。

表1 系統硬件表Tab.1 System hardware table
系統基于Linux 操作系統,利用python 語言完成。 在Jetson Nano 上下載并安裝Jetpack 映像文件,連接外接設備并啟動Jetson Nano,根據引導創建用戶名、密碼,最終登陸成功就完成了啟動。
本文所提出的智能門鎖系統特點如下:
(1)使用通用CSI 相機捕獲真實的人臉并收集深度學習模型的訓練數據;
(2) Jetson Nano 是 配 備4 個GPU(Graphic Processing Unit)的小型人工智能計算機,用于在獨立的智能門系統中快速訓練圖像數據;
(3)使用OpenCV 庫進行實時圖像處理;
(4)使用Harr Cascade 算法進行面部檢測,該算法優點是檢測速度快,準確率高;
(5)面部識別使用OpenCV 庫中的LBPH(Local Binary Patterns Histograms)算法,該算法能夠快速處理特征;
(6) Jetson Nano 和數字門鎖的連接依賴于Jetson Nano 中的GPIO 端口。
CSI 攝像機通過移動行業處理器接口MIPI(Mobile Industry Processor Interface)連接到配備了深度學習庫的Jetson Nano 嵌入式系統,通過GPIO(General Purpose Input Output)接口連接,最終識別到人臉特征,系統整體結構如圖1 所示。

圖1 系統整體結構Fig.1 Overall structure of system
模型的開發分為訓練和預測兩步。
(1)通過相機收集圖像進行訓練,使用基于管道的多媒體框架GStreamer 連接到Jetson Nano 的CSI 攝像機捕獲視頻,該框架能夠實現各種媒體功能,如:音頻和視頻播放、流式傳輸和編輯,但在使用之前需要完成設置,包括獲取視頻的分辨率、顯示分辨率、幀速率和視頻輸出模式;Haar 級聯分類器是OpenCV 提供的一種基于深度學習的對象檢測算法,用于對攝像機圖像中的面部進行分類,將Haar級聯分類器應用于所捕獲圖像的一個圖像幀,對面部圖像進行分類和存儲,重復該過程用以收集目標面部的圖像來進行訓練。
(2)預測,通過讀取訓練數據來訓練人臉識別模型,這些訓練數據為真實的人臉圖像。 人臉識別模型使用OpenCV 的LBPH(Local Binary Patterns Histograms)算法,從訓練的人臉圖像中提取特征,同時也可以通過該算法提取到一張不在訓練數據庫中的人臉圖像特征,并計算該人臉特征和在庫中的特征相似度,通過將新面部圖像的特征與訓練面部圖像的特征進行比較并測量可信度來進行面部識別。
需要識別的人臉圖像輸入模型可以得到置信度,將預測的置信度與閾值進行比較,如果閾值高于參考值,則打開門鎖,如果閾值小于參考值,則關閉門鎖。 使用Jetson Nano 的智能門控制程序的流程如圖2 所示。

圖2 智能門鎖控制流程圖Fig.2 Flow chart of controlling smart door
Jetson Nano 通過GPIO 接口控制數字門鎖,從攝像機圖像中讀取實時捕獲的圖像,檢測并分析人臉,通過分析結果來控制門的打開和關閉。 Jetson Nano 的GPIO 接口和門鎖通過D 型閂鎖連接,通過D 閂鎖通過電子方式連接或斷開門鎖開關的兩端來打開和關閉門。 基于Jetson Nano 的智能門鎖實物如圖3 所示。

圖3 Jetson Nano 控制門鎖Fig.3 Door lock controlling with Jetson Nano
收集目標面部的100 張圖像進行訓練,以用于解鎖門鎖。 首先,從攝像機圖像中讀取一幀并將其轉換為黑白圖像,通過將Har Cascade 面部分類器檢測出方形的面部區域;從框中切出的臉部的大小與被檢測區域的大小一樣,裁剪的臉部區域被規格化大小為200 × 200,轉換為黑白圖像并保存。 重復此過程100 次,收集到100 個訓練目標圖像。 面部圖像進行訓練和收集樣本的過程,如圖4 所示。

圖4 面部圖像訓練和收集的樣本過程Fig.4 Face images collection and training process
門鎖的開關由人臉識別模型的分析結果控制,人為設定閾值,系統從相機圖像中檢測出一張新臉,并使用經過訓練的AI 模型進行預測。 計算預測結果的置信度,即將預測圖像的結果與所有注冊過的人臉模型進行匹配,分別求出相似度,取最大的相似度為置信度,并將其與人為設置的閾值進行比較,本文中閾值設置為80%,如果置信度大于80%,則會通過Jetson Nano 的GPIO 接口輸出鎖釋放信號,將門鎖解鎖,由于具有一定時間延遲,使門鎖在一定時間內保持解鎖狀態。
選一位已經注冊好人臉數據的人物進行了兩次測試,將面部數據輸入到模型中,計算置信度87%和89%,可以打開門鎖。 如圖5 所示。

圖5 解鎖門鎖Fig.5 Unlocking the door
另外一組實驗采用了兩種方法,一種是前面的面部數據用貼圖的方式遮蓋住,輸入模型并計算置信度;另外一種是一個未注冊人臉數據的人物,將其面部數據輸入模型并計算置信度,結果分別為73%和74%,小于設定的閥值80%,門鎖并未打開,如圖6 所示。

圖6 鎖門鎖Fig.6 Locking the door
本文針對人臉識別智能門鎖識別速度慢,識別效率低等問題,構建了基于Jetson Nano 和OpenCV的智能門鎖系統,將人臉識別功能成功嵌入到普通智能門鎖上,通過設置閾值,計算置信度的方法來控制門鎖的開關,本系統具有以下特點:
(1)使用100 張真人照片作為深度學習模型訓練數據,更加貼近真實環境;
(2)使用已經經過驗證且表現優異的深度學習模型進行人臉識別;
(3)通過電腦端連接現有的數字門鎖進行控制。
使用基于特征的面部檢測算法和面部識別算法對系統進行了實驗,本文所提出的基于Jetson Nano和OpenCV 的智能門鎖系統能夠有效提高識別的快速性、可靠性及準確性,具有一定的參考及實用價值。