謝作如



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