林貴敏,邱立達,林 南,唐曉騰
(閩江學院物理與電子信息工程學院,福建 福州 350108)
為高等教育培養(yǎng)的人才能適應新經(jīng)濟發(fā)展的需求,2017年教育部會同60多所高校共商“新工科”建設[1],明確提出“新工科”建設的目標和任務,為推動我國高等工程教育的改革創(chuàng)新提供一個全新的視角。新工科相較于傳統(tǒng)工科,“新”是取向,但又不能脫離“工科”[2]。因而,新工科不單單是指適應新經(jīng)濟和新產(chǎn)業(yè)的新型工程學科體系,同時強調(diào)新的工程教育理念,突出工科人才培養(yǎng)的前沿性。這也使得新工科專業(yè)的學科交叉融合更為明顯[3]。一些老牌工科高校早早就將新工科人才培養(yǎng)理念融入到本科人才培養(yǎng)方案中,而對于工科基礎較為薄弱的一般高等學校,或因存在培養(yǎng)目標定位不準確、缺乏特色,或因課程體系較為陳舊,缺乏先進的工程技術人才培養(yǎng)理念等問題,培養(yǎng)出來的學生與行業(yè)需求缺少有機耦合,造成學生畢業(yè)后難以適應行業(yè)的發(fā)展,而企業(yè)進校招聘時又面臨難以找到合適人才的窘境。
新工科建設“天大行動”中指出,要注重“大數(shù)據(jù)、云計算、物聯(lián)網(wǎng)、人工智能、虛擬現(xiàn)實、基因工程、核技術等新技術和智能制造、集成電路、空天海洋、生物醫(yī)藥、新材料等11類新產(chǎn)業(yè)對卓越工程科技人才的需求狀況及變化趨勢”[4]。其中,近年來人工智能技術的快速發(fā)展,使得智能化正在成為相關技術和產(chǎn)業(yè)發(fā)展的重要方向,國家已從戰(zhàn)略層面對人工智能提出了規(guī)劃和要求,如出臺《新一代人工智能發(fā)展規(guī)劃》《高等學校人工智能創(chuàng)新行動計劃》《促進新一代人工智能產(chǎn)業(yè)發(fā)展三年行動計劃(2018-2020年)》等重要文件。人工智能已進入與產(chǎn)業(yè)深度融合發(fā)展新階段[5],如人工智能與智能制造、自動駕駛、語音識別、圖像處理、醫(yī)療衛(wèi)生、金融、教育等領域相結(jié)合,正推動新工科人才培養(yǎng)向智能化、自動化和類人化等目標轉(zhuǎn)變。
隨著人工智能產(chǎn)業(yè)的發(fā)展,需要大批具備相關知識和實踐能力的專業(yè)人才,如何將信息技術人才的培養(yǎng)與行業(yè)發(fā)展智能化的需求相耦合。在高等工程技術人才培養(yǎng)中,根據(jù)學校自身特點,找準與人工智能相結(jié)合的切入點,向新工科科學體系轉(zhuǎn)型,引入先進的工程技術人才培養(yǎng)理念,培養(yǎng)符合行業(yè)需求的卓越人才是一個值得探討的課題。近年來,以深度學習為代表的人工智能技術獲得了令人矚目的發(fā)展,本文將以某高校電子信息工程專業(yè)學生為培養(yǎng)對象,研究電子專業(yè)創(chuàng)新人才培養(yǎng)模式,探索電子專業(yè)大學生創(chuàng)新學習和活動,突出專業(yè)特色,培養(yǎng)符合行業(yè)需求“人工智能+”人才。
人臉檢測與識別技術在公共安全、身份認證等領域有著廣泛的應用。基于深度學習技術實現(xiàn)的人臉檢測,已達到非常高的性能。下面通過一個基于卷積神經(jīng)網(wǎng)絡的人臉檢測案例,分析在案例中涉及的知識體系,然后推演在人才培養(yǎng)計劃中,如何在不過多增加學生學習負擔的情況下,讓他們掌握人工智能技術的基本知識體系,為以后的就業(yè)發(fā)展打下良好的知識基礎。
人臉檢測,顧名思義就是判斷輸入的圖像或視頻中是否存在人臉,若存在則標出人臉所在的位置。因為人臉在圖像中可能有正臉、側(cè)臉、抬頭、低頭、微笑、大笑等各種姿態(tài),人臉在圖像中的大小、位置也常常是不同的,甚至還有遮擋等各種因素干擾,所以要有效檢測出無約束條件下的人臉,還是有一定的挑戰(zhàn)。人臉檢測的方法已有很多,本文要分析的案例只涉及較為容易的正臉檢測,且采用的是滑動窗口的檢測方式。為了充分利用圖像中元素在二維空間中的關聯(lián)信息,卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNNs)是提取圖像特征信息的一種有效方法?;贑NN提取人臉特征常用的經(jīng)典模型有VGGNet[6]、ResNet[7]、DesNet[8]等。利用CNN進行人臉檢測的流程如圖 1所示,其中CNN模型可看做是一個非線性的映射函數(shù)f(x|W),W代表CNN模型的可調(diào)參數(shù),x表示CNN接收的輸入數(shù)據(jù)。經(jīng)過映射后,CNN輸出兩個數(shù)值,分別代表x屬于人臉和非人臉的置信度。圖1中上半部分是對CNN模型的訓練,下半部分是運用訓練之后的CNN模型進行人臉檢測。
圖1 基于CNN的人臉檢測Fig.1 Face detection based on CNN
利用機器學習的方法完成特定領域的任務,都離不開收集、整理用于訓練模型所需的特定領域的數(shù)據(jù)集。本案例是要完成機器視覺領域的人臉檢測任務,需要收集含有人臉和不含人臉的大量圖像,并對含有人臉的圖像標定出人臉在圖像中的位置,而無人臉的圖像可不用標定。整理訓練數(shù)據(jù)時,可先搜索是否有已公開的數(shù)據(jù)集。可用于訓練人臉檢測模型的數(shù)據(jù)集,已公開的有FDDB[9],CASIA-WebFace,Wider Face[10]等。收集完數(shù)據(jù)集后,通常還需要進行一些預處理工作,才能用于訓練模型。本案例需進行的預處理工作主要是,在含有人臉的圖像中,根據(jù)已標注的人臉位置從圖中截取包含人臉的部分圖像,并經(jīng)過適當?shù)目s放后放入訓練集中,確保訓練集中的圖像都有固定的空間大小。這些人臉圖像稱為正樣本。另外還需要隨機截取不含人臉的圖像,或者只包含小部分人臉的圖像,這些圖像同樣要進行適當?shù)目s放,使其與人臉圖像保持同樣的大小。這些非人臉圖像稱為負樣本。制作負樣本時,也可從含有人臉的圖像中取隨機截取部分子圖,但要注意檢查截取的子圖中,是否含有人臉。若含有人臉,要注意截取的人臉部分,與標注的人臉區(qū)域重疊部分(Intersection over Union,IoU)盡量不超過30%,即IoU<0.3.
一個CNN模型,通常由若干個卷積層、池化層構成,而一個卷積層中又經(jīng)常包含有卷積運算、歸一化運算和非線性激活函數(shù)等。在設計一個用于解決特定領域問題的CNN模型時,如果自行設計一個全新的模型,需要經(jīng)過大量的訓練和測試才能驗證模型的可行性。此過程既費時又費力,而且設計出來的模型可能還不能滿足應用場景的要求。因此對于沒有太多設計經(jīng)驗的開發(fā)者,可以考慮借助一些比較經(jīng)典的網(wǎng)絡模塊(如Inception模塊[11],殘差模塊[7],以及密連接模塊[8]等),也可以直接從一些已經(jīng)被成功應用的CNN模型中做一些微調(diào)。比如采用經(jīng)典的VGGNet[6]作為人臉檢測模型的主模塊,但因VGGNet原本是用于對含有1 000個類別的ImageNet圖像進行分類,而人臉檢測只需判斷圖像中是否含有人臉,屬于二值分類,因此需對VGGNet做一些修改才能適用。此外,為了下一步模型的訓練,還需定義一個目標函數(shù)。對于二值分類的模型,常采用交叉熵作為目標函數(shù),具體形式如下:
其中,f(xi)表示輸入數(shù)據(jù)xi時CNN模型的輸出,yi表示與數(shù)據(jù)xi配對的標簽,N表示訓練中樣本的總數(shù)。
不論是自行設計的CNN模型,還是從經(jīng)典模型中做適當?shù)男薷模夹枰?jīng)過一定程度的重新訓練,才可能在特定領域問題上取得良好的效果。例如將VGGNet修改成二值分類后,還需用含有人臉和非人臉的數(shù)據(jù)集進行重新訓練或微調(diào)訓練,才能有效檢測人臉。模型的訓練,就是尋找目標函數(shù)的極小值。在模型的訓練過程中,除了準備好的數(shù)據(jù)集和已設計的模型完,要使得訓練過程收斂,一方面要注意模型中可調(diào)參數(shù)的初始化,另一方要注意求解目標函數(shù)的優(yōu)化方法。CNN的訓練方式采用的是BP算法(即反向傳播算法),訓練時采用的優(yōu)化策略一般選擇批量梯度下降法,或一些改進的梯度下降法。另外,要注意優(yōu)化策略中學習率(learning rate, lr)大小的設置。lr值太大,訓練過程會出現(xiàn)目標函數(shù)的值時大時小,往往難以收斂;而lr值太小也不行,目標函數(shù)收斂速度很慢,會大大延長訓練的過程。在同樣的訓練數(shù)據(jù)集的基礎上,為了使CNN模型有更好的檢測效果,還可以采用一些數(shù)據(jù)擴增(data augmentation)策略,如對訓練時輸入的圖像進行一定角度的旋轉(zhuǎn)、位置變動等。
經(jīng)過訓練后的CNN模型,可用于人臉檢測。但在實際應用中,還有一些問題需要處理。在準備訓練數(shù)據(jù)時,圖像都是被預先縮放到某一尺度的,即人臉的大小基本是一致的,且人臉都是在圖像的正中位置。但在實際應用時,輸入的圖像中人臉大小不一,人臉在圖像中的位置也是隨機的。如何讓CNN模型能有效檢測出這些人臉呢?通常的做法是對輸入的圖像做多尺度的縮放,生成圖像金字塔,然后再將這些圖像送入CNN模型進行多尺度檢測。不同的尺度下,CNN模型都會輸出一個置信度矩陣,表示在圖像中的某個位置存在人臉的概率。然后根據(jù)置信度矩陣進行反變換,即根據(jù)CNN模型的輸入與輸出的關系,計算出置信度矩陣中的一個位置對應原圖像的大小。在進行反變換時,通常需要設置一個閾值,只有置信度超過設定的閾值,才認為原圖上對應的位置存在人臉。經(jīng)過反變換之后,原圖中可能存在多個有重疊的人臉檢測窗口。此時需再做進一步的處理,以優(yōu)化檢測效果。這一步驟通常采用的方法為非極大值抑制方法(non maximum suppression,NMS)。從輸入圖像,到輸出置信度矩陣,并進行反變換,再經(jīng)過NMS處理后,就可較為準確地標注人臉位置。檢測流程如圖 1的下半部所示。
根據(jù)上述案例涉及的環(huán)節(jié),分析其中所需了解、掌握的知識點,以及需要開設的課程。首先,從事人工智能的開發(fā)應用離不開相關編程語言的學習,Python語言是一門面向?qū)ο蟮木幊陶Z言,提供大量有關機器學習的算法和功能庫,方便開發(fā)者快速掌握機器學習算法的使用。此外,深度學習的一些開源平臺如Tensorflow、Pytorch、Paddlepaddle等也都有提供Python開發(fā)接口?;谶@種情況,建議在學生的課程體系中,開設一門《Python程序設計基礎》,讓學生掌握Python語言的基本語法規(guī)則,以及熟悉Python中提供的機器學習庫的使用。此外,還需學習《數(shù)據(jù)結(jié)構與算法》,掌握常用的數(shù)據(jù)結(jié)構類型,以及一些基本算法,為下一步進行機器學習的應用開發(fā)打好編程基礎和算法基礎。
在上述案例中輸入的數(shù)據(jù)是二維的人臉圖像,對于二維的數(shù)據(jù)可以拉平為一維的數(shù)據(jù)進行處理,但拉平處理后會丟失數(shù)據(jù)在原來二維空間上的位置關聯(lián)信息。但不管是對轉(zhuǎn)為一維的數(shù)據(jù)進行運算,還是直接在二維的數(shù)據(jù)上進行運算,都需要進行大量的矩陣運算。要理解這些矩陣運算,要求學生掌握相關的《線性代數(shù)》知識。模型設計時,需要考慮處理的數(shù)據(jù)維度。人臉檢測采用的是二維卷積模型。如果將輸入的圖像先拉平為一維的數(shù)據(jù),則CNN模型需要做適當?shù)恼{(diào)整。在學習CNN模型時,學生要掌握一維、二維,甚至三維的卷積運算,以及理解交叉熵、信息熵等概念,這需要有《信號處理》和《數(shù)字信號與系統(tǒng)》課程的支撐。
在理解“模型的訓練”這一環(huán)節(jié)時,學生至少需要掌握BP算法和梯度下降算法。而這兩個算法都與高維矩陣的相乘、求導有關,因此要求學生掌握好《微積分》中的相關知識。在“模型的使用”環(huán)節(jié),需要對輸入的圖像進行多尺度處理,模型輸出的結(jié)果是一個置信度矩陣,還需進行反向坐標變換,以及NMS處理。因此要求學生有一定的《數(shù)字圖像處理》基礎,能夠?qū)D像進行一些基本變換。另外,要理解置信度的相關概念,學生需學習《概率論與數(shù)理統(tǒng)計》課程。為了讓學生早點對機器學習有個宏觀的理解,在低年級時需要開設《人工智能導論》或《機器學習概論》這兩門課程。
學習相關的基礎知識之后,還需要有個強化階段,讓學生知道如何將學習的知識應用起來。因此,在高年級開設capstone或相關的課程設計至關重要。另外,在上述案例中只涉及到深度學習中常用于圖像處理的一種CNN(卷積網(wǎng)絡模型),在實際的應用開發(fā)中,還會根據(jù)實際需求,使用RNN(循環(huán)神經(jīng)網(wǎng)絡)、Attention(注意機制)、Transformer、GCN(圖卷積網(wǎng)絡)等模型。為使學生能夠了解到人工智能的一些前沿技術以增加對人工智能的興趣,可以通過“第二課堂”舉辦一些有關機器學習的講座或讓學生參與一些大學生創(chuàng)新創(chuàng)業(yè)項目。例如讓學生參與“基于GPS的交通流大數(shù)據(jù)出行路線推薦系統(tǒng)設計”“基于深度信任網(wǎng)絡的人體步態(tài)分析與研究”“基于深度稀疏濾波網(wǎng)絡的目標跟蹤識別系統(tǒng)設計”等。
通過案例和課程設置的分析,發(fā)現(xiàn)要讓學生建立起具備“人工智能技術”的基本知識體系并不難,而且涉及的課程大部分在培養(yǎng)方案中已有開設,需要額外增加或調(diào)整的課程只有《Python程序設計基礎》和《人工智能導論》或《機器學習概論》。電子信息工程專業(yè)的培養(yǎng)方案中,通常都要求學生掌握一門面向?qū)ο蟮某绦蛟O計語言。因此,只需要將原有的編程語言改成Python就可以解決學生的編程語言問題。要讓學生對人工智能產(chǎn)生一定的認知,需在低年級時就開設幾次“人工智能”或“機器學習”相關的《導論》課,引起學生的興趣,并在后續(xù)的課程中做適當?shù)囊龑?,到高年級階段開設Capstone或課程設計,以及引導學生參加大學生創(chuàng)新創(chuàng)業(yè)項目,通過實踐性比較強的課程和應用型項目的強化鍛煉,夯實理論知識體系和加強學生動手編程實踐能力,就能建立較完備的“人工智能”知識體系結(jié)構,并使學生具備一定的應用開發(fā)能力。
智能化時代已經(jīng)來臨,人工智能技術不僅僅是計算機專業(yè)或人工智能專業(yè)的學生才需要學習的,其他專業(yè)的學生也都應該了解、學習人工智能相關技術。對于信息工程專業(yè)的學生,掌握了人工智能技術的相關知識之后,不僅可以從事與機器視覺、自然語言處理處理等領域相關的工作,同樣也可以從事智能制造、集成電路的智能化設計等工作。為適應新產(chǎn)業(yè)、新經(jīng)濟的發(fā)展,如何在信息工程專業(yè)融入“人工智能+”知識體系,促進傳統(tǒng)專業(yè)向新工科專業(yè)轉(zhuǎn)化,培養(yǎng)出能適應社會發(fā)展需求的工程科技人才,需要不斷地進行教學模型的探索,為高?!靶鹿た啤睂I(yè)建設提供有益的經(jīng)驗。