謝作如
涉及學(xué)科:技術(shù)、電子電路、工程
人臉識別是人工智能的一個熱門應(yīng)用,在我們的生活中已經(jīng)隨處可見,如手機(jī)面部解鎖、火車站進(jìn)站檢票、超市掃臉付款等。因而,人臉識別也成為中小學(xué)人工智能教育中一個重要案例,很多教材都會通過各種方式,讓學(xué)生體驗(yàn)或者實(shí)現(xiàn)人臉識別,感受人工智能的強(qiáng)大功能。
在計(jì)算機(jī)中實(shí)現(xiàn)人臉識別非常簡單,一個攝像頭加上某個特定的軟件,就能體驗(yàn)類似年齡、性別和顏值等方面的識別。但僅僅這樣的體驗(yàn)是不夠的,還要引導(dǎo)學(xué)生討論:我們能應(yīng)用人臉識別技術(shù)做點(diǎn)什么?正是基于這樣的思考,一些創(chuàng)客往往會利用類似樹莓派、虛谷號的迷你電腦,結(jié)合其他硬件,設(shè)計(jì)人臉識別相關(guān)的作品,在制作中學(xué)習(xí)和理解人工智能,如人臉識別門禁。其實(shí)這樣的智能作品實(shí)現(xiàn)難度并不大,借助face_recognition和pinpong,中小學(xué)生也能開發(fā)類似的作品(如圖1)。
● 人臉識別門禁系統(tǒng)的技術(shù)實(shí)現(xiàn)
人臉識別門禁是智能家居、智慧校園和創(chuàng)客教育中的典型案例,體現(xiàn)了人工智能在生活中的真實(shí)應(yīng)用。作為一款人工智能的應(yīng)用,我們總是期望這些系統(tǒng)能夠運(yùn)行在真實(shí)的環(huán)境,讓學(xué)生得到一種不一樣的成就感。例如,要求學(xué)生將人臉識別門禁系統(tǒng)部署在學(xué)校創(chuàng)客空間的門口,讓原來的普通門鎖升級為智能門鎖。那么,這個人臉識別門禁系統(tǒng)需要達(dá)到如下兩個基本要求:
一是能夠運(yùn)行在迷你電腦上。因?yàn)槲覀兛偛荒芙右慌_巨大的PC機(jī),放在大門的旁邊。如果用普通計(jì)算機(jī),不僅接線成為難題,連供電都麻煩。
二是能夠驅(qū)動常見的電子鎖。常見的電子鎖類似一個繼電器,只要給特定的接口提供一定的電流,就能打開或者關(guān)閉鎖舌。
要讓人臉識別門禁系統(tǒng)運(yùn)行在迷你電腦上,那首選的開源硬件肯定是樹莓派、虛谷號和拿鐵熊貓之類。這些開源硬件的特點(diǎn)是都能運(yùn)行Linux和Python。而采用Python作為編程語言,本來就是我們最好的選擇之一。首先,使用Python就意味著我們開發(fā)的應(yīng)用是跨平臺的,能夠很好地運(yùn)行在各種開源硬件上。其次,Python的人工智能相關(guān)庫很多,搭建一個人臉識別應(yīng)用的技術(shù)難度較低。
● 開發(fā)環(huán)境的搭建
人臉識別門禁是一個典型的信息系統(tǒng),涉及多方面的功能,如拍攝人臉、識別人臉和門鎖控制等。這里的人臉識別,指的是對特定人群的人臉識別。以我校的創(chuàng)客空間為例,只有科技制作社的部分學(xué)生有權(quán)限進(jìn)入,系統(tǒng)的攝像頭要能夠?qū)?dāng)前的人臉和預(yù)設(shè)的用戶人臉進(jìn)行比較,匹配成功則開門。具體的工作流程如圖2所示。
1.軟件環(huán)境的搭建
從工作流程中可以看出,人臉識別門禁的核心功能也分為識別、匹配和開門三部分。我們分別使用了三個相關(guān)的庫來完成這些功能。
攝像頭控制:OpenCV。
OpenCV是著名的開源計(jì)算機(jī)視覺庫。絕大多數(shù)的Python項(xiàng)目都會利用OpenCV來控制攝像頭。其實(shí)OpenCV也具備了人臉識別的功能,只不過相對face_recognition來說,要稍微復(fù)雜一點(diǎn)。
安裝方法:pip install opencv-python。
人臉識別和匹配:face_recognition。
在人臉識別的庫方面,我們選擇了face_recognition。face_recognition是一個強(qiáng)大、簡單、易上手的人臉識別開源項(xiàng)目,并且配備了完整的開發(fā)文檔和應(yīng)用案例。face_recognition對硬件的要求比較低,樹莓派和虛谷號都能流暢運(yùn)行。
安裝方法:pip install face_recognition。
門鎖控制:pinpong。
一些開源硬件都已經(jīng)具備了驅(qū)動外圍電子模塊的功能,如樹莓派有GPIO功能,虛谷號和拿鐵熊貓則整合了一塊Arduino。如果使用的是其他類型的迷你電腦,則需要借助Arduino或者掌控板之類的智能終端。不管采用什么開源硬件,pinpong庫都是最佳選擇之一。pinpong庫是一個基于Firmata協(xié)議開發(fā)的Python硬件控制庫,支持多款開源硬件,是虛谷計(jì)劃中眾多開源軟件中的一個組成部分。Pinpong庫的特點(diǎn)是代碼簡潔,而且配置方便。
安裝方法:pip install pinpong。
需要強(qiáng)調(diào)的是,安裝這幾個庫一般還要先安裝一些依賴庫,而這些安裝工作是由pip自動完成的。
2.硬件環(huán)境的搭建
考慮到絕大多數(shù)創(chuàng)客空間都有Arduino,這個項(xiàng)目選擇了虛谷號。但是在本機(jī)測試可以使用任何一塊Arduino,如DFRduino。
擴(kuò)展板和一個繼電器模塊是必需的。如果希望體積小一點(diǎn),這里推薦使用樹莓派Zero。如果用的是NUC或者HTPC,則推薦beetle控制器,結(jié)合專用的擴(kuò)展板,體積很小,安裝起來特別方便,如圖3所示。
器材清單:①開源硬件——虛谷號、擴(kuò)展板;②擴(kuò)展模塊——繼電器、電子鎖(電磁鎖)。
硬件連接:有些電子鎖(電磁鎖)采用9-12V的電壓支持,所以需要用繼電器(或者通用開關(guān)控制模塊)來控制。不同的硬件連接方式大同小異,接線參考如下頁圖4所示。
● 代碼測試和運(yùn)行
限于篇幅,這里僅僅提供了幾段核心代碼,需要具體的代碼請?jiān)L問虛谷號的GitHub官方文檔(vvBoard-docs)。
1.攝像頭檢測人臉
參考代碼如圖5所示。
2.匹配預(yù)設(shè)的人臉
參考代碼如圖6所示。
3.控制繼電器打開門鎖
參考代碼如圖7所示。
● 結(jié)語
自國務(wù)院發(fā)布《新一代人工智能發(fā)展規(guī)劃》以來,全國各地涌現(xiàn)出一大批人工智能教材。但現(xiàn)有的教材中,人工智能與人的交互手段非常單一,無非是鍵盤鼠標(biāo)的輸入和屏幕輸出,再加上語音的交互。對中小學(xué)生而言,沒有結(jié)合硬件的人工智能應(yīng)用總不夠直觀形象、酷炫有趣,缺乏“生活”氣息。以人臉識別為例,讓學(xué)生設(shè)計(jì)具備人臉識別功能的創(chuàng)客作品,無論是學(xué)習(xí)興趣還是最終收獲,都要遠(yuǎn)高于局限于普通電腦的“體驗(yàn)”。在做中學(xué),在研中學(xué),人工智能教育需要結(jié)合真實(shí)的動手實(shí)踐。
其實(shí),在人工智能教育興起之前,我國在創(chuàng)客教育方面已經(jīng)得到了很好的發(fā)展。很多學(xué)校都配置了創(chuàng)客空間,也購買了如Arduino和掌控板之類的開源硬件,為人工智能教育的進(jìn)一步實(shí)施打下了良好的基礎(chǔ)。在face_recognition和pinpong之類擴(kuò)展庫的支持下,很多基于Python開發(fā)的人工智能應(yīng)用,只要再加幾行代碼就能夠感知外部環(huán)境,并且可以控制各種類型的電機(jī),讓人工智能不僅能夠像人一樣思考,還能夠像人一樣動起來。