国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于卷積神經網絡的課堂人臉打卡算法

2019-11-22 08:23涂鑫
現(xiàn)代計算機 2019年29期
關鍵詞:關鍵點人臉卷積

涂鑫

(四川大學錦城學院計算機與軟件工程學院,成都610065)

0 引言

在如今的在各類學校的教學中,為了監(jiān)督學生是否按時上課,教師是否起到應有的監(jiān)督作用,從而使課前點名成為了衡量學生的學習情況以及教師的教學質量的一項重要的參考指標。但在現(xiàn)行的課堂考勤方式中,教師需對學生的到位情況一一確認,是非常耗費課堂時間,降低課堂的效率以及增加了教師的工作負擔。為了提高課堂的利用率,降低時間成本,在課堂中運用計算機視覺技術對課堂中的學生進行快速檢測以及識別,使其降低人工清點學生到位情況的時間,從而提高課堂時間的利用效率。

為了實現(xiàn)上述方法,本文提出了一種結合Dlib 人臉檢測器與卷積神經網絡的課堂環(huán)境下的人臉打卡算法,主要工作可簡述如下:利用Dlib 68 個人臉關鍵點提取器提取人臉特征并識別出人臉區(qū)域,并通過OpenCV 對人臉區(qū)域進行摳取保存;之后,通過基于Keras 框架構建卷積神經網絡(CNN),將保存的人臉區(qū)域通過數(shù)據(jù)處理后送入網絡,經過3 層卷積層,F(xiàn)latten層,最后全連接層,Softmax 層輸出個分類標簽的概率;其中,本文使用ReLU 函數(shù)作為激活函數(shù),避免了梯度消失問題,使模型的收斂速度維持在一個穩(wěn)定的狀態(tài)。最后,訓練數(shù)據(jù)通過選擇通用人臉數(shù)據(jù)和真實課堂場景數(shù)據(jù)結合對卷積神經網絡進行訓練,從而是訓練結果不僅更加符合真實場景下的使用,而且也不使卷積神經網絡過擬合。

通過實驗驗證,本文提出的算法在課堂場景下的圖像中有著較理想的正確率。

1 基本原理

1.1 Dlib人臉檢測器

Dlib 是一個基于C++的跨平臺通用的框架庫,其中包含機器學習算法和工具,并且廣泛的應用在圖像處理、數(shù)據(jù)處理和高性能計算中。本文采用的提取68個人臉關鍵點算法[1]是以梯度提升樹(Gradient Boosting Decision Tree,GBDT)[2]為基礎,構建殘差樹從而實現(xiàn)對人臉關鍵點提取。

首先,輸入的具有人臉的圖像數(shù)據(jù),對圖像中的人臉區(qū)域進行判斷和處理,由于在每份圖像數(shù)據(jù)中,人臉的尺寸不同,所以利用仿射變換[3]將處理后的人臉關鍵點仿射到單位空間內,使尺寸和坐標統(tǒng)一,從而避免不同尺寸帶來的影響。將圖像數(shù)據(jù)中的人臉關鍵點做平均處理,使其成為人臉的初始形狀,然后再基于初始形狀進行殘差計算從而擬合人臉關鍵點。

然后在初始關鍵點的范圍內隨機采樣像素作為對應的特征像素點。特征像素點選擇最接近的初始關鍵點作為參照,并計算偏差。當前像素點通過旋轉、轉換、伸縮后的坐標系要與初始關鍵點(關鍵點的平均位置)接近,即最小化之間的距離平方[4],得到最優(yōu)變換后的參數(shù)。最優(yōu)變換后的參數(shù)作用于偏差,加上當前自身的像素位置,得到當前關鍵點的特征像素點。

最后在得到關鍵點的特征像素點后開始構建殘差樹,計算當前關鍵點與目標關鍵點的偏差。

得到特征像素點后開始構建殘差樹,計算出當前關鍵點與目標關鍵點的偏差。通過特征像素點,利用模擬退火的方法[5]選擇多個分割點,進行左右樹劃分,選擇最小化劃分后的偏差為最優(yōu)分割點。其中最小化目標公式為:

其中ri是每個圖關鍵點的殘差,而μθ,S是對應子樹的殘差均值,即:

分割樣本,其后基于樣本的平均殘差更新當前關鍵點位置。回到上一步驟,重新選擇出特征關鍵點,擬合下一顆殘差樹,最終綜合所有殘差樹的結果,即得到關鍵點位置。最終,Dlib 人臉檢測器步驟如圖1 所示。

圖1 Dlib人臉檢測器步驟圖

1.2 卷積神經網絡

近年來,隨著數(shù)據(jù)量的劇增以及計算機硬件的發(fā)展,廣泛應用于圖像,視頻中的卷積神經網絡得到了充分的發(fā)展,從最初的LeNet[6]、AlexNet[7]、VggNet[8]到目前目標的Faster R-CNN[9]等以簡單的神經網絡發(fā)展到復雜的網絡,使其向跟加深層次的發(fā)展,但是隨著網絡深度不斷增加,也隨之出現(xiàn)了一系列的問題,如梯度消失或梯度爆炸,準確率降低,過擬合以及數(shù)據(jù)消失等。針對上述問題,考慮到課堂人臉打卡的實際應用以及其算法所需要的訓練數(shù)據(jù)量不大,本文提出了基于LeNet的改進網絡,通過在全連接層部分增加一層全連接,使越接近輸出層時,神經元個數(shù)越接近輸出層個數(shù),從而增加網絡訓練速度以及提高模型準確率。本文的網絡基本模型結構如圖2 所示。

圖2 卷積神經網絡結構圖

本文中所構建的卷積神經網絡是采用兩層卷積層以及三層全連接層的方式組成。在全連接層之間加入Dropout 層,從而提高網絡模型的泛化能力。具體而言,本文所提出的卷積神經網絡的具體參數(shù)如表1所示。

1.3 神經網絡損失函數(shù)

課堂人臉打卡算法最終需要得到是具體人臉所以應的人名。但是能夠通過模型訓練得出我們所期望的結果的則是分類損失函數(shù),本文中所使用的分類損失函數(shù)是交叉熵函數(shù)[10],其表達式如下:

其中,xi是卷積神經網絡所輸出的值,Wyi代表網絡學習到的權重值,bj表示偏置,m 表示mini-batch 的數(shù)值,n 代表所需分類的類別。交叉熵函數(shù)的輸出數(shù)值是描述的是目標輸出概率與實際輸出概率的距離,交叉熵輸出數(shù)值大小越小,則表明實際輸出概率值越靠近真實的輸出的概率值。

表1 卷積神經網絡的具體參數(shù)

1.4 神經網絡激活函數(shù)

在整個卷積神經網絡做訓練的過程中,激活函數(shù)在每一層的結構中有著至關重要的作用,它能使網絡中的每一層的輸入輸出去線性化,從而使非線性模型比線性模型的特征能夠更好地保留下來以及有更好的表達力。

經常使用的激活函數(shù)Sigmoid[11]函數(shù)來提高模型的非線性能力,他能把一個實數(shù)壓縮到0 到1 之前,即一個非常大的正數(shù)會趨近于1,一個非常大的負數(shù)會趨近于0。但是當趨近于0 或1 的數(shù)過多時會形成飽和,使輸入激活后梯度幾乎為0,從而產生梯度消失。Sigmoid 函數(shù)表達式為:

Sigmoid 函數(shù)圖像如圖3。

圖3

本文采用的是ReLU[12]作為激活函數(shù),其最大的優(yōu)點是沒有任何指數(shù)級的運算,能很好地提升網絡的運算速度,并且由于ReLU 的負半軸為0,所以會使一部分神經元的輸出為0,這樣就會讓網絡產生稀疏性,使網絡中的參數(shù)減小了相互之間的依賴,從而緩和過擬合問題和避免了梯度消失。

ReLU 函數(shù)的表達式為:

ReLU 函數(shù)的圖像如圖4。

圖4

2 實驗

2.1 測試環(huán)境

平臺:Windows 10。

編程語言:Python。

網絡框架:Keras。

框架版本:Open CV 4.0;Dlib 19.7;Keras 2.2.4;TensorFLow 1.10.0。

圖像庫:CelebFaces[13];自行采集的課堂圖像。

2.2 人臉檢測算法測試

本次測試,直接調用了Dlib 人臉提取器,使其在CelebFaces 圖像庫中選取了460 張不同場景的人臉圖片,正確檢測出人臉個數(shù)為445 張,檢測率為96.7%,平均每張圖片檢測時間為13ms/張。沒有檢測出人臉的照片數(shù)為15 張,漏檢率為3.3%,通過觀察漏檢照片,漏檢原因大部分為人臉部分有遮擋,例如帶有墨鏡、抽煙等,以及面部的傾斜角度較大,只有半邊臉等。

2.3 人臉識別算法測試

在提前準備的課堂照片數(shù)據(jù)集中抽取33 人,每人10 張圖片,共計330 張樣本圖片,以7:3 的比例分割樣本圖片,即隨機選取70%的樣本圖片為訓練集,30%的樣本圖片測試集。

在實驗訓練過程中,在測試集中隨機打亂輸入樣本的順序,利用上述的卷積神經網絡的方式對人臉識別進行測試,最終在測試集樣本上的結果為86.4%。隨后,通過對測試集樣本的旋轉,調整亮度的方式增加測試樣本集的數(shù)量后,二次對卷積神經網絡進行訓練,得出最終在測試集樣本上的結果為88.8%,如圖5所示。

圖5 測試集準確率

在網絡模型訓練過程中,模型在訓練集和驗證集中準確率和損失值的變化趨勢,如圖6 和圖7 所示。

圖6 訓練過程中網絡模型準確率變化圖

測試結果表明,測試樣本的數(shù)量對網絡模型的訓練結果是有影響的??梢灾捞峁┑挠柧殬颖緮?shù)量越多,模型的訓練結果準確率則越高。所以在后期課堂人臉識別打卡應用中,需要盡可能地采集更多的數(shù)據(jù)來不斷訓練模型,從而增加模型的準確率。

圖7 訓練過程中網絡模型損失值變化圖

3 結語

針對課堂這一特殊的應用場景,本文提出了一種基于Dlib 人臉檢測器和卷積神經網絡相結合的課堂人臉打卡算法。本文使用Dlib 中的人臉關鍵點提取器對人臉進行檢測,并通過基于Keras 框架構建的卷積神經網絡對人臉進行檢測;同時使用交叉熵損失函數(shù),使識別后的分類結果更加準確,并且選擇了適當?shù)募せ詈瘮?shù),使整個卷積神經網絡去線性化。最終本文所提出的方法在測試集中得到了較理想的準確率。

猜你喜歡
關鍵點人臉卷積
基于全卷積神經網絡的豬背膘厚快速準確測定
論建筑工程管理關鍵點
肉兔育肥抓好七個關鍵點
一種基于卷積神經網絡的地磁基準圖構建方法
基于3D-Winograd的快速卷積算法設計及FPGA實現(xiàn)
有特點的人臉
一種并行不對稱空洞卷積模塊①
一起學畫人臉
玻璃窗上的人臉
利用定義法破解關鍵點
西峡县| 长垣县| 千阳县| 离岛区| 佛山市| 杨浦区| 香格里拉县| 文山县| 肇东市| 玛多县| 正镶白旗| 彭山县| 武川县| 东乌珠穆沁旗| 新龙县| 措美县| 九龙县| 恭城| 酉阳| 盐源县| 寿光市| 郎溪县| 唐山市| 昭通市| 梁山县| 象山县| 滦南县| 曲水县| 无锡市| 安顺市| 金华市| 基隆市| 白玉县| 湖口县| 珠海市| 乃东县| 南安市| 筠连县| 申扎县| 革吉县| 宁乡县|