牟曉東
在現(xiàn)實生活中,小區(qū)的門禁系統(tǒng)能夠?qū)κ孪鹊怯涍^的“合法”汽車牌照進行識別和自動放行;同樣,單位的上下班“刷臉”系統(tǒng)則可以對職員的人臉進行識別打卡。其實,類似的車牌與人臉等身份識別的原理并不復雜,以“人臉識別”為例:系統(tǒng)先要對單位的員工進行拍照和圖像預(yù)處理及特征的提取,然后將提取的信息存儲到“人臉”數(shù)據(jù)庫中;人臉識別的過程就是將“刷臉”抓拍到的數(shù)據(jù)特征與庫中的記錄進行匹配,當二者的相似度達到某個設(shè)定的閾值時(比如80%),即認定為匹配成功,再執(zhí)行某些預(yù)設(shè)的“動作”——比如語音輸出“張三上班打卡成功!”,同時還會在系統(tǒng)中進行該用戶某一時刻打卡成功的記錄。目前,我們普通人可以借助于百度智能云,通過使用樹莓派和攝像頭等設(shè)備進行開源硬件編程,快速打造出一個智能的門禁“刷臉”系統(tǒng)。
實驗裝置包括樹莓派3B+和古德微擴展板各一塊,USB接口高清攝像頭一個,SG90舵機一個,音箱一個,紅色、綠色和黃色LED燈各一支。
首先,將擴展板正確安裝在樹莓派上;接著,將舵機插入18號插孔,注意紅色線接VCC(電源正極)端、棕色線接GND(接地)端、黃色線接D(信號)端;然后,將紅色、綠色和黃色LED燈分別插入5號、6號和12號插孔,注意“長腿正、短腿負”的原則;最后,將攝像頭插入樹莓派的USB接口,音箱數(shù)據(jù)線插入音頻輸出孔;給樹莓派通電,啟動操作系統(tǒng)(圖1)。

首先,訪問百度智能云(https://ai.baidu.com/),注冊并登錄進入個人中心,點擊“文檔”-“產(chǎn)品文檔”項;然后,在“文檔中心”頁面左側(cè)點擊“人工智能”,選擇中間區(qū)域的“人臉識別”項,再點擊其中的“立即使用”按鈕,進入“應(yīng)用”頁面;接著,點擊“創(chuàng)建應(yīng)用”按鈕,在“應(yīng)用名稱”處輸入“face”,“接口選擇”處的信息是之前申請時設(shè)置好的(包括人臉檢測和在線活體檢測等項),下方的“應(yīng)用歸屬”設(shè)置為“個人”,“應(yīng)用描述”中輸入“將‘人臉識別’應(yīng)用于小區(qū)門禁檢測的實驗”,點擊“立即創(chuàng)建”按鈕(圖2)。

此時,會有“創(chuàng)建完畢”的提示,點擊“返回應(yīng)用列表”按鈕就會看到已經(jīng)生成了一個名為“face”的應(yīng)用項目,后面對應(yīng)有三處非常關(guān)鍵的應(yīng)用信息,分別是應(yīng)用編號(AppID)、開發(fā)密鑰(API Key)和密鑰(Secret Key),復制粘貼到文本文件face.txt中,暫時保存(圖3)。

現(xiàn)在的“face”只是一個沒有用戶和人臉信息的“空倉庫”,可點擊“新建組”按鈕會彈出“新建用戶組”窗口,輸入組ID:“face_01”后點擊“確認”按鈕,完成“face_01”用戶組的建立操作,“詳情”處顯示為只有“0張人臉”;然后,點擊“face_01”(會提示“沒有相關(guān)的用戶”),再點擊“馬上創(chuàng)建”按鈕,在“用戶ID”中輸入“ZhangSan”;接著,點擊下方的“點此添加圖片”按鈕,選擇一張“合法”用戶的“正面、無遮擋照片”,將事先拍攝準備好的5MB以內(nèi)的相片進行上傳,之后點擊“確認”按鈕,完成第一個用戶人臉信息的采集。再使用同樣方法,添加第二個用戶“LiSi”的人臉信息,等等(圖4)。

值得一提的是,目前百度智能云對個人賬戶進行了一定的限制,需要先進行實名認證,而且必須手動申請免費資源的領(lǐng)取才可以使用包括人臉識別在內(nèi)的相關(guān)接口服務(wù),操作方法是:從個人賬戶的“文檔”中再次找到“人臉識別”項,按照提示先完成實名認證后再點擊“領(lǐng)取免費資源”項,選中“接口名稱”處羅列的所有項目后再點擊下方的“0元領(lǐng)取”按鈕;此時,會有“領(lǐng)取成功”的提示,只不過“領(lǐng)取的免費測試資源預(yù)計30分鐘內(nèi)生效”,約半小時后刷新查看,發(fā)現(xiàn)在“已領(lǐng)取資源”中已經(jīng)有了對應(yīng)的基礎(chǔ)服務(wù)項(圖5)。

樹莓派門禁“刷臉”系統(tǒng)的實現(xiàn)功能是:黃色LED燈一直處于閃爍的警示狀態(tài),提醒慢行通過;當有人在攝像頭前停留時,開始進行抓拍檢測,如果該人臉信息與數(shù)據(jù)庫中的某合法用戶的人臉信息較為吻合(置信度較高),則紅色LED燈亮起,同時播放歡迎的語音提醒,舵機控制門禁桿緩緩抬起90度,然后熄滅紅色LED燈、亮起綠色LED燈并持續(xù)7秒鐘,行人通行后綠色LED燈熄滅;接著又會亮起紅色LED燈,由舵機控制門禁桿恢復為原來的0度位置,熄滅紅色LED燈;如果“刷臉”失敗(判定為“非法”用戶),只播放“非本小區(qū)人員,禁止入內(nèi)!”的語音提醒信息,LED燈和門禁桿均無動作。
修改樹莓派config配置文件中的“baiduFaceKey”信息。首先,運行Windows的“遠程桌面連接”程序,通過IP地址(192.168.1.116)登錄進入樹莓派的遠程操作系統(tǒng)界面;接著,運行“文件管理器”并定位于/home/pi/back/testWrite目錄,雙擊打開其中的config文件,找到“[baiduFaceKey]”項,將原來默認的三個“default”值(FaceAppID、FaceAPIKey和FaceSecretKey)進行替換,分別對應(yīng)之前在百度智能云中“face”應(yīng)用項目的三處信息(AppID、API Key和Secret Key);最后,將config配置文件保存并關(guān)閉,重啟一次樹莓派操作系統(tǒng),使config配置文件生效(圖6)。

修改config配置文件中的“baiduFaceKey”信息,目的是讓樹莓派按照這些信息去進行人臉數(shù)據(jù)的查找與判斷,相當于在config配置文件中FaceAppID、FaceAPIKey和FaceSecretKey三處信息的“引導”下,與百度智能云對應(yīng)賬號的人臉庫“face_01”用戶組中所保存的若干張人臉信息數(shù)據(jù)進行置信度的計算與匹配,從而判斷攝像頭所抓拍到的人臉是否為應(yīng)該放行的本小區(qū)“合法”用戶。
在古德微機器人網(wǎng)站登錄自己的賬號后,開始“積木”式圖形化編程:
第一個是“黃燈持續(xù)閃爍”函數(shù),通過“控制12號小燈亮/滅”(黃色LED燈插在12號引腳)和“等待1秒”模塊語句,在主程序中使用多線程調(diào)用后就會實現(xiàn)黃色LED燈不斷閃爍的功能(不必在函數(shù)中進行循環(huán))。
第二個是“抬桿通行”函數(shù),實現(xiàn)紅色LED燈(5號引腳)先亮后滅、音箱語音播放“歡迎回家!”、舵機控制門禁桿抬起90度和熄滅紅色LED燈、控制綠色LED燈(6號引腳)持續(xù)亮起7秒后再熄滅的功能,其中的固定次數(shù)循環(huán)結(jié)構(gòu)(變量i從500到1500),作用是控制舵機(18號引腳)緩緩從0度升至90度。
第三個是“通行后落桿”函數(shù),實現(xiàn)的功能與“抬桿通行”函數(shù)相反:亮起紅色LED燈、語音播放“注意安全!”和舵機控制門禁桿由90度恢復為0度、熄滅紅色LED燈,其中的循環(huán)結(jié)構(gòu)所使用的變量i初值和終值分別是1500、500,步長也由1改為-1,實現(xiàn)舵機“反轉(zhuǎn)”90度的功能(圖7)。

從左側(cè)“線程”中找到“添加子線程,線程函數(shù)名為‘’”功能模塊,將調(diào)用的函數(shù)名設(shè)置為“黃燈持續(xù)閃爍”;然后,在“重復當真”的循環(huán)結(jié)構(gòu)中先建立一個名為“拍照”的變量,為其賦值為“用USB攝像頭拍一張照片”;接著,通過“檢測圖片‘拍照’中的人臉是否在人臉庫‘face_01’中”功能模塊,實現(xiàn)人臉信息置信度的獲取功能,將該數(shù)據(jù)保存至變量“人臉在人臉庫中的概率”中;再通過“建立字串使用”和“輸出調(diào)試信息”功能模塊,實現(xiàn)LOG調(diào)試信息區(qū)的提示輸出功能;最后,通過一個“如果…執(zhí)行…否則…”雙分支的選擇結(jié)構(gòu),對人臉置信度進行設(shè)置的閾值(80%以上)判斷,條件成立,說明是“合法”用戶,則分別調(diào)用執(zhí)行“抬桿通行”和“通行后落桿”函數(shù);條件不成立,則輸出對應(yīng)的提醒信息(圖8)。

將程序保存并打開LOG調(diào)試信息區(qū),點擊“連接設(shè)備”后再點擊“運行”按鈕:
黃色LED燈開始閃爍。先從手機中打開一張明星相片(未進行過人臉采集),靠近攝像頭后,很快就在屏幕上顯示有“人臉識別置信度為:11%”和“非本小區(qū)人員,禁止入內(nèi)!”的提示信息,同時還會有語音提醒;然后,本人直接正面靠近攝像頭,屏幕上顯示的是“人臉識別置信度為:91%”和“歡迎回家!”的提示信息,接著紅色LED燈亮起、音箱語音播報“歡迎回家!”、舵機控制門禁桿慢速抬起90度、紅色LED燈熄滅、綠色LED燈發(fā)光7秒鐘(此為“合法”用戶的通行時段);接著,紅色LED燈又會亮起、門禁桿從90度慢速轉(zhuǎn)至0度位置、紅色LED燈熄滅。多次進行“合法”與“非法”用戶的模擬檢測,均實現(xiàn)了門禁“刷臉”系統(tǒng)的預(yù)設(shè)功能(圖9)。
