■北京醫(yī)學(xué)院附屬中學(xué) 林星翰
對(duì)于硬件愛好者來(lái)說(shuō),樹莓派(Raspberry PI)是再熟悉不過(guò)的開發(fā)板,樹莓派開發(fā)板體積雖小,但是功能非常強(qiáng)大。
最新樹莓派3代B型板采用64位1.2GHz四核的ARM Cortex處理器,具有1G內(nèi)存,支持使用Python語(yǔ)言進(jìn)行軟件開發(fā),主板上預(yù)留的接口可完美對(duì)接與之配套的樹莓派500萬(wàn)像素專用攝像頭、7英寸液晶觸摸屏、Sense Hat傳感器模塊等。
人臉識(shí)別是目前人工智能熱門的應(yīng)用領(lǐng)域之一,我嘗試在樹莓派上開發(fā)一個(gè)Python軟件,實(shí)現(xiàn)人臉識(shí)別功能。
人臉識(shí)別軟件的主要功能是將待識(shí)別的人臉照片與照片庫(kù)中的人臉照片進(jìn)行匹配,如果相似度大于80%,則軟件輸出匹配成功的照片信息。人臉識(shí)別軟件在電子支付、門禁系統(tǒng)、照相工具等領(lǐng)域都得到了廣泛應(yīng)用。
本軟件使用的人臉識(shí)別功能主要通過(guò)云服務(wù)實(shí)現(xiàn),具體來(lái)講是通過(guò)調(diào)用曠視公司提供的Face++ open APIs來(lái)實(shí)現(xiàn)人臉特征庫(kù)的構(gòu)建和照片搜索匹配功能。本軟件進(jìn)行人臉識(shí)別的主要過(guò)程如下。
首先,軟件調(diào)用Detect API對(duì)照片庫(kù)中的照片進(jìn)行人臉檢測(cè)和分析,識(shí)別出人臉會(huì)給出face token,將face token加入Face set,用于后續(xù)的識(shí)別對(duì)比等操作。
然后,軟件對(duì)用戶輸入的人臉照片進(jìn)行處理,調(diào)用Search API在Face set中找出與目標(biāo)人臉匹配的一張或多張照片。
最后,軟件檢查人臉與照片的相似度,如果相似度大于80%,認(rèn)為匹配成功,向用戶返回照片信息。軟件的核心功能代碼如圖1所示。
圖1 人臉識(shí)別核心功能代碼示例
本軟件示例中使用了三張公眾人物的照片作為匹配的照片庫(kù),對(duì)用戶放在軟件運(yùn)行目錄下的輸入圖像face_search_img.jpg進(jìn)行匹配,如果匹配成功,軟件會(huì)顯示匹配成功的照片的人名等信息,否則,軟件會(huì)反饋失敗信息。
軟件運(yùn)行的過(guò)程包括創(chuàng)建人臉特征庫(kù)faceSet,分析照片庫(kù)的照片并將特征添加到faceSet中,使用輸入的照片搜索相似人臉信息,對(duì)搜索結(jié)果進(jìn)行比對(duì)和輸出。需要注意的是,由于采用由曠視公司提供的Face++APIs,因此在使用這些APIs之前,用戶首先需要在曠視開放平臺(tái)上申請(qǐng)?jiān)囉玫馁~號(hào),然后在應(yīng)用管理中可以看到平臺(tái)分配的API key和密碼,接著下載Face++的Python SDK,按照使用文檔的說(shuō)明在SDK中配置API key和密碼,就可以開始調(diào)用Face++ APIs了。
目前該軟件是市面上使用的人像監(jiān)控識(shí)別系統(tǒng)的一個(gè)雛形,在此基礎(chǔ)上再增加圖像獲取模塊和識(shí)別成功后的處理模塊,即可形成一個(gè)完整的人像監(jiān)控識(shí)別軟件。
如何將人臉識(shí)別軟件在樹莓派的平臺(tái)上進(jìn)行實(shí)現(xiàn)和應(yīng)用,并通過(guò)樹莓派提供的攝像頭模塊來(lái)增強(qiáng)本軟件的功能?我做了以下嘗試。
圖2 軟件使用的視覺(jué)云臺(tái)開發(fā)套件
首先,要對(duì)樹莓派的開發(fā)板進(jìn)行操作系統(tǒng)安裝和配置,還需連接電源模塊、數(shù)據(jù)輸入輸出模塊和攝像頭模塊等??梢圆檎蚁嚓P(guān)的教程進(jìn)行學(xué)習(xí),也可以購(gòu)買市面上的開發(fā)套件。
本文使用了亞博智能科技公司開發(fā)的視覺(jué)云臺(tái)套件,已經(jīng)完成了攝像頭模塊的安裝,平臺(tái)結(jié)構(gòu)如圖2所示。操作系統(tǒng)使用的是樹莓派官方系統(tǒng)raspbian,系統(tǒng)預(yù)裝了Python和C編譯器等軟件。
可直接用顯示器進(jìn)入系統(tǒng)桌面,也可以通過(guò)遠(yuǎn)程桌面進(jìn)入系統(tǒng),或者使用putty軟件SSH。本設(shè)計(jì)以遠(yuǎn)程桌面登錄為例。登錄路由器查詢分配給樹莓派的IP地址。打開電腦的遠(yuǎn)程桌面軟件,輸入樹莓派的IP地址,本次設(shè)計(jì)中樹莓派的IP是192.168.1.55。用戶名為pi,密碼為raspberry。進(jìn)入遠(yuǎn)程桌面系統(tǒng)后還可以連接本地Wi-Fi信號(hào)。
在樹莓派上運(yùn)行人臉識(shí)別軟件的重點(diǎn)是使用樹莓派的攝像頭模塊拍照,將拍攝的照片與照片庫(kù)進(jìn)行匹配。我使用picamera庫(kù)來(lái)完成攝像頭拍照的工作。具體代碼如圖3所示。
圖3 基于picamera的攝像頭拍照代碼示例
這段代碼完成的功能包括對(duì)攝像頭進(jìn)行初始化,取得攝像頭的控制權(quán);設(shè)定攝像頭的拍攝參數(shù),包括感光度、拍照速度、曝光模式、白平衡等;控制攝像頭連續(xù)拍照,將十張照片都保存為imageXX.jpg的格式(XX指照片的編號(hào))。
這段代碼使用了樹莓派系統(tǒng)支持的picamera庫(kù)來(lái)完成對(duì)攝像頭的控制,那么如何在樹莓派平臺(tái)上安裝picamera以實(shí)現(xiàn)對(duì)攝像頭的控制?
樹莓派的攝像頭模塊是由內(nèi)核進(jìn)行驅(qū)動(dòng),隨著版本的更迭,修復(fù)了大量的漏洞,并且擴(kuò)展了攝像頭模塊的相關(guān)功能,雖然picamera支持固件向后兼容,但在最新版發(fā)布時(shí),picamera都是參照最新的固件進(jìn)行測(cè)試,所以在安裝庫(kù)之前推薦進(jìn)行固件升級(jí),并使用最新的固件進(jìn)行開發(fā)。
在安裝之前,要先在樹莓派的命令行下執(zhí)行sudo apt-get update和sudo apt-get upgrade這兩條語(yǔ)句,將樹莓派更新到最新固件,然后運(yùn)行sudo apt-get install pythonpicamera語(yǔ)句來(lái)安裝picamera。
我開發(fā)的人臉識(shí)別軟件的工作流程是:用戶按下開關(guān),軟件開始控制樹莓派對(duì)用戶進(jìn)行拍照,并保存十張照片,軟件將十張用戶的照片存儲(chǔ)到軟件所在目錄,執(zhí)行程序時(shí),調(diào)用Face++的detectAPI將照片中的人臉信息存儲(chǔ)在faceSet中,然后執(zhí)行search的API對(duì)程序過(guò)程中拍攝的照片進(jìn)行處理。
檢測(cè)照片中的人臉信息與之前上傳的人臉信息對(duì)比,如果相似度達(dá)到80%以上,返回相似度最高的人臉信息,即完成人臉識(shí)別功能。