孫麗君 于方軍



目前,中學階段進行的人工智能教學采用的方式大多為采集數(shù)據(jù),然后通過調(diào)用接口將數(shù)據(jù)上傳到人工智能平臺(如百度AI、訊飛等),再返回預測結果,或者調(diào)用已有的模型,進行結果預測。本實驗將結合以上教學方式,運用Python代碼進行中學人工智能教學的探索,進而引導學生體驗人工智能的應用,了解人工智能基本原理,使用已有的人工智能平臺和模型處理身邊的問題。
● 設計思路
嘗試通過本實驗活動,實現(xiàn)人臉檢測和識別功能,解決生活中的實際問題。實驗過程可以通過調(diào)用攝像頭,借助訓練好的已有模型檢測人臉;將照片數(shù)據(jù)上傳至云端人工智能平臺(如百度AI),進行圖像對比實現(xiàn)人臉識別。
在此實驗原理基礎上,還可以進行應用拓展,如人臉識別門禁,可以加載硬件控制庫Pinpong庫來控制舵機實現(xiàn)。通過Pinpong庫將開源硬件與Python聯(lián)系起來,與人工智能算法相結合,將過去的“輸入+編程+輸出”模式,變?yōu)楝F(xiàn)在的“輸入+AI+輸出”模式。
● 活動準備
帶有攝像頭的學生機、創(chuàng)建百度AI應用、Arduino板、舵機、Python源代碼等文件。
● 程序?qū)崿F(xiàn)
1.使用訓練好的模型驗證人臉檢測
(1)查看OpenCV中訓練好的Haar模型文件
OpenCV是一款開源的計算機視覺和機器學習軟件庫,它提供了很多.xml格式的訓練好的模型文件,在實驗的素材包中,可以把這些模型文件放在FaceRecognition文件夾中,F(xiàn)aceFile文件夾中存放著允許進入的用戶照片,并以人名命名。由于這些已經(jīng)訓練好的模型存放在本地文件夾中(如上頁圖1),不必聯(lián)網(wǎng),我們便可直接調(diào)用來實現(xiàn)人臉檢測。
(2)調(diào)用模型文件檢測人臉
在本實驗中通過Python代碼實現(xiàn)調(diào)用攝像頭,采集人臉數(shù)據(jù),再調(diào)用OpenCV模型庫中的Haarcascade_frontalface_default.xml模型文件,進行人臉檢測,代碼如圖2所示。在檢測到的人臉上畫出方框,當用戶按下空格鍵,則將圖像截圖保存。
(3)更換其他模型文件,觀察檢測結果
還可以把模型文件替換為貓臉模型haarcascade_frontalcatface.xml,讀入一張貓的圖片,運行檢測代碼后,就能檢測出貓臉,與此類似還可以選擇其他模型嘗試(如圖3)。
2.使用云端人工智能平臺識別人臉
(1)申請接口參數(shù)
開放的人工智能平臺會提供用戶使用的API接口,API接口參數(shù)主要包含APP_ID、API_KEY、SECRET_KEY,做個簡單的比喻,APP_ID就像身份證號,API_KEY就像銀行卡號,SECRET_KEY就像銀行卡密碼,使用Python語言調(diào)用百度人臉識別接口服務,首先需要安裝百度aip,然后在百度AI控制臺的人臉識別服務中創(chuàng)建應用,獲得APP_ID、API_KEY、SECRET_KEY,在Python代碼中鍵入即可。
(2)連接百度AI
通過新建AipFace,將百度AI創(chuàng)建應用中獲得的APP_ID、API_KEY、SECRET_KEY復制到代碼中,以連接百度AI人臉識別接口,實現(xiàn)交互。通過Mactch函數(shù)參數(shù)的設置,可將兩張圖片數(shù)據(jù)上傳到百度AI中,實現(xiàn)圖像對比識別(如上頁圖4)。
(3)讀取本地用戶照片與截圖照片進行對比
通過調(diào)用前面定義的Mactch函數(shù),將逐一取出本地FaceFile文件夾中的用戶照片與保存的截圖數(shù)據(jù),上傳到百度AI平臺,進行人臉數(shù)據(jù)的比對、識別,并返回兩兩比對人臉相似值(如上頁圖5)。
(4)顯示返回的預測結果
對于人臉識別返回結果中相似度小于等于50的,則在截圖照片上顯示為陌生人“Name:Stranger”;相似度大于50的,則將FaceFile中對應照片的文件名,也就是人名印到截圖照片上。
(5)小組討論
討論不同用戶申請的APP_ID、API_KEY、SECRET_KEY三個值是否相同?
3.效果改進
在上述代碼基礎上,利用Pinpong庫控制旋轉(zhuǎn)舵機,仿真人臉識別門禁,體驗人工智能在生活中的應用。
(1)安裝Pinpong庫
Pinpong庫是一套控制開源硬件主控板的Python庫,安裝完成后,通過在Python程序中加載Pinpong庫并初始化后,即可連接硬件,直接用代碼就能給常見的開源硬件編程,使它們執(zhí)行各種命令。這里筆者借助Pinpong庫,通過Arduino板控制舵機,實現(xiàn)門禁的效果。
(2)連接硬件
連接Arduino主控板到計算機,將舵機與Arduino板各引腳相連(如圖6)。在程序中,加載Pinpong庫的主板、引腳、舵機,并進行初始化。
(3)利用Pinpong庫,編寫代碼控制舵機(如圖7)
這里對于返回預測結果中相似度大于50的,除了將人名顯示在截圖照片上外,還可控制舵機轉(zhuǎn)動一定角度,打開門禁,停留幾秒后,舵機再次轉(zhuǎn)動復位,以此實現(xiàn)自動控制門禁的效果。
總之,通過本次實驗活動,利用攝像頭截圖和收集用戶照片來采集數(shù)據(jù),調(diào)用原有已訓練好的Haar模型進行人臉檢測,連接云端的百度AI來進行人臉識別,得到預測結果,體驗人工智能在生活中的應用。那么,可否自己來收集數(shù)據(jù)、搭建模型、訓練模型、檢測模型,完成一個完整的智能系統(tǒng),脫離網(wǎng)絡和現(xiàn)有模型的限制,實現(xiàn)本實驗同樣效果,這將是筆者進一步探索的方向。