廖力紫 張馨月
在人工智能的學(xué)習(xí)中,“人臉識別”是一個重要的主題,但是人臉識別涉及一些復(fù)雜高深的專業(yè)術(shù)語和算法,中學(xué)生目前還沒有達(dá)到這方面的知識儲備。怎么辦呢?這實在是對教師的考驗,如果不顧一切地講算法,學(xué)生肯定云里霧里,聽不懂,但是如果完全跳過算法,直接給出程序,那么課堂就成了體驗課,沒有一定深度,沒有涉及知識核心,沒有展現(xiàn)學(xué)科精華。要想解決這一矛盾,關(guān)于“人臉識別”的教學(xué)必須做到既要讓學(xué)生體會學(xué)科核心思想,又不能讓那些專業(yè)算法成為攔路虎,阻擋學(xué)生學(xué)習(xí)的腳步。為了做到這一點,筆者經(jīng)過深入思考后,把知識進(jìn)行了簡化分解和重構(gòu)。
● 設(shè)計思想
針對中學(xué)生的理解能力,筆者將“人臉識別”的內(nèi)容從三個維度進(jìn)行解構(gòu)(如右圖)。橫向簡化分解成人臉檢測定位和人臉訓(xùn)練識別這兩部分;縱向分成基于靜態(tài)圖片的識別和基于動態(tài)視頻的識別兩部分;第三維度設(shè)置知識卡片、拓展閱讀,對學(xué)習(xí)過程中不可避免的專業(yè)名詞和術(shù)語,以知識卡片和拓展閱讀的形式進(jìn)行簡單介紹和補充說明,讓學(xué)生自行閱讀了解,避免干擾主體思維的形成。
根據(jù)上面的知識解構(gòu),第一部分首先從人臉檢測定位入手,學(xué)習(xí)基于靜態(tài)圖片的人臉定位和基于視頻攝像頭的人臉定位,這部分建議2~3課時。第二部分進(jìn)行人臉訓(xùn)練識別的學(xué)習(xí),也是從圖片和視頻這兩方面分別進(jìn)行,這部分建議2~3課時。
● 教學(xué)內(nèi)容
1.人臉檢測定位
學(xué)習(xí)人臉檢測定位先從圖片入手,讓學(xué)生首先了解核心的分類器技術(shù),再過渡到視頻,這樣在學(xué)習(xí)視頻處理時,加上幀的相關(guān)知識即可。
(1)基于圖片的人臉檢測
這部分的教學(xué)目標(biāo)是了解原理和過程、讀懂程序,能在現(xiàn)有程序的基礎(chǔ)上進(jìn)行簡單的修改變換和應(yīng)用;教學(xué)重點是人臉檢測的過程和詳細(xì)步驟,教學(xué)難點是分類器。
人臉檢測在生活中有很多地方會運用到,如為方便大家拍照,手機畫面會自動標(biāo)注出人臉。在進(jìn)行教學(xué)時,可以用這個例子,讓學(xué)生有直觀印象。
讓學(xué)生對人臉檢測的過程有一個整體的認(rèn)識,這是教學(xué)的重點,人臉檢測先判斷是否存在人臉,如果存在人臉,則給出臉的位置、大小和各個主要面部器官的位置信息。人臉檢測程序的主要步驟為:引入OpenCV——讀入圖片,并預(yù)處理——人臉分類器——人臉標(biāo)注顯示。
本節(jié)課的人臉檢測程序?qū)婕癘penCV庫,為了不影響學(xué)生主體思維的形成,將對OpenCV庫的介紹設(shè)置成“知識卡片”的形式,讓學(xué)生自行閱讀。圖片預(yù)處理成灰度圖,這個可以根據(jù)情況進(jìn)行講解,也可讓學(xué)生自行閱讀。分類器是人臉檢測的核心,需要重點講解,本次程序要用到的是Haar分類器中的haarcascade_frontalface_default.xml。
在學(xué)生實踐了人臉檢測程序、理解了相關(guān)代碼后,可在練習(xí)環(huán)節(jié)讓學(xué)生修改人臉標(biāo)注框的形狀,把方形框改成圓形框,或者修改標(biāo)注框的顏色。如果這個任務(wù)完成良好,可以加入第二個練習(xí),在檢測人臉的基礎(chǔ)上檢測眼睛。對學(xué)有余力的學(xué)生,還可以讓其在檢測人臉的基礎(chǔ)上檢測笑容。
(2)基于視頻的人臉檢測
學(xué)習(xí)了基于圖片的人臉檢測,再學(xué)習(xí)基于視頻的檢測就容易多了,只需要補充動態(tài)視頻的相關(guān)知識即可。這部分的教學(xué)目標(biāo)是理解動態(tài)視頻的原理,能調(diào)用攝像頭讀取幀、檢測人臉;教學(xué)重難點是理解幀,將動態(tài)影像轉(zhuǎn)化成靜態(tài)圖像進(jìn)行處理。
動態(tài)視覺效果是由多幅靜態(tài)圖片連續(xù)播放形成,每一幅靜態(tài)圖片就是“幀”。因此,視頻檢測的實質(zhì)是針對一系列的連續(xù)靜態(tài)圖片——幀所做的檢測,所以這節(jié)的重點是學(xué)習(xí)如何處理幀。
教師先講解如何調(diào)用攝像頭→讀取幀→關(guān)閉攝像頭,讓學(xué)生上機實踐,學(xué)會對攝像頭的控制和對幀的讀取;再結(jié)合基于圖片檢測的知識,對幀加入進(jìn)行人臉檢測的代碼。根據(jù)前面的圖片檢測眼睛的練習(xí),可以設(shè)置“基于視頻檢測眼睛”的拓展練習(xí)。為了提高學(xué)生的學(xué)習(xí)興趣,可以讓學(xué)生閱讀關(guān)于人臉識別技術(shù)發(fā)展的相關(guān)資料。
2.人臉訓(xùn)練識別
在已經(jīng)檢測到人臉的基礎(chǔ)上讓機器“認(rèn)識”人,核心是機器學(xué)習(xí)。機器要“學(xué)習(xí)”,離不開數(shù)據(jù),這體現(xiàn)了數(shù)據(jù)的重要性。
(1)基于圖片的人臉識別
這部分的教學(xué)目標(biāo)是理解基于圖片的“人臉識別”原理,能對不同的人臉進(jìn)行識別;教學(xué)重難點是理解機器學(xué)習(xí),了解標(biāo)簽的作用和置信度的含義。
機器學(xué)習(xí)是教學(xué)的重難點,機器學(xué)習(xí)的過程要分析清楚。機器學(xué)習(xí)需要數(shù)據(jù),輸入人臉圖片,對它進(jìn)行訓(xùn)練,它會學(xué)習(xí)關(guān)于人臉特征的內(nèi)容。在訓(xùn)練完成后,當(dāng)輸入一張人臉照片時,它會依據(jù)前面的學(xué)習(xí)判斷出這個人是否“認(rèn)識”。一般來說,給機器訓(xùn)練的數(shù)據(jù)越多,它的識別結(jié)果越準(zhǔn)確,可以給學(xué)生提供介紹“人臉數(shù)據(jù)集”的相關(guān)資料。
本節(jié)課的人臉識別程序使用LBPH識別器,這個識別器由OpenCV擴展庫提供,需要安裝此擴展庫,對LBPH識別器的介紹可放在“知識卡片”中。
在實踐環(huán)節(jié),教師首先分析針對單人的訓(xùn)練識別,明確人臉識別程序的主要步驟為:引入相關(guān)庫——輸入訓(xùn)練圖片——設(shè)置圖片標(biāo)簽——加入LBPH識別器——機器訓(xùn)練——輸入預(yù)測圖片——機器識別預(yù)測——輸出預(yù)測結(jié)果。設(shè)置標(biāo)簽屬于機器學(xué)習(xí)中的有監(jiān)督學(xué)習(xí),此處可以根據(jù)學(xué)生的接受程度,適當(dāng)加入有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的介紹。
接著讓學(xué)生思考如何在單人識別的基礎(chǔ)上完成兩人的訓(xùn)練識別。如果學(xué)生能夠完成多人的訓(xùn)練識別,可以進(jìn)行練習(xí)二:將程序中輸出的標(biāo)簽和置信度修改成更容易讓普通人看懂的結(jié)果。順著這個思路,拓展練習(xí)可設(shè)置成:直接在圖片上標(biāo)注識別出的人名。人臉識別屬于計算機視覺的范圍,拓展閱讀可以給學(xué)生提供計算機視覺的相關(guān)資料。
(2)基于視頻的人臉識別
這部分的教學(xué)目標(biāo)是綜合運用前面的知識,完成一個比較完整的項目。如果學(xué)生基礎(chǔ)比較薄弱,可以把這部分簡化,作為體驗課。
● 教學(xué)反思
學(xué)生在運行基于圖片的人臉檢測程序時發(fā)現(xiàn),只有用正臉照片才能識別,側(cè)臉圖片無法識別。筆者順著這個問題引導(dǎo)學(xué)生觀察OpenCV庫的Haar分類器,有些學(xué)生發(fā)現(xiàn)了側(cè)臉分類器 haarcascade_frontalface_alt.xml,用這個分類器可以對側(cè)臉進(jìn)行識別。為什么側(cè)臉分類器可以識別正臉分類器無法識別的人臉呢?筆者拋出這個問題,引發(fā)了學(xué)生的熱烈討論。另外,在一個班有一對雙胞胎,為了分辨雙胞胎,學(xué)生們反復(fù)調(diào)整置信度,或者換不同的識別器,整個課堂的教學(xué)氛圍非常積極活躍,完全超出了教學(xué)預(yù)設(shè)。
教學(xué)設(shè)計是有規(guī)律可尋的,但真實的課堂遠(yuǎn)比預(yù)設(shè)的更精彩,這也是值得教師慶幸的事。