鄭浩鑫 林楷焱 陶銘
摘? 要: 在現(xiàn)實生活中,人們具有豐富的情感,而情感會影響人的行為及認知等。為了獲取并識別人類的情感,提出一種基于深度學習的“視覺情感識別系統(tǒng)”的設(shè)計方案。通過Python語言編寫網(wǎng)絡爬蟲程序,爬取網(wǎng)絡上帶有情感標簽的人臉圖片,從而為神經(jīng)網(wǎng)絡的訓練提供數(shù)據(jù);采用Keras框架搭建卷積神經(jīng)網(wǎng)絡,對帶有情感標簽的人臉圖片進行深度學習,使卷積神經(jīng)網(wǎng)絡收斂到理想的模型,從而實現(xiàn)對人臉圖片的情感識別。實驗結(jié)果表明,該方案具有一定的識別效率。
關(guān)鍵詞: 網(wǎng)絡爬蟲; 深度學習; 卷積神經(jīng)網(wǎng)絡; 情感識別
中圖分類號:TP393? ? ? ? ? 文獻標識碼:A? ?文章編號:1006-8228(2021)03-33-04
Design and implementation of visual emotion recognition system
Zheng Haoxin, Lin Kaiyan, Tao Ming
(School of Computer Science and Technology, Dongguan University of Technology, Dongguan, Guangdong 523808, China)
Abstract: In real life, people have a wealth of emotions which will affect people's behavior and cognition, etc. In order to acquire and recognize human emotions, a design scheme of "visual emotion recognition system" based on deep learning is proposed. To provide data for the training of neural networks, the Python language is used to write a web crawler to crawl the face pictures with emotional tags on the network. Keras framework is adopted to build convolutional neural networks for deep learning of face images with emotion tags, so that the convolutional neural networks converges to an ideal model to realize the emotion recognition of face images. The experimental results show that the proposed scheme has certain recognition efficiency.
Key words: web crawler; deep learning; convolutional neural networks; emotion recognition
0 引言
人的情感能夠表達出人的想法和行為。人對于情感的利用有很多方面,例如教學中研究學生的情感以便即時關(guān)注學生的心理活動;商家通過客戶的情感來對商品和服務進行改進;企業(yè)通過研究員工的情感來對工作進行合理分配等。對于情感的獲取渠道也有多種,比如圖像、聲音和文字等[1-2]。
本系統(tǒng)是在人臉檢測基礎(chǔ)之上的更進一步地研究[3],通過識別人臉的表情來獲取人的情感。先使用網(wǎng)絡爬蟲技術(shù)和人臉目標檢測技術(shù)從網(wǎng)絡上爬取帶有情感標簽的人臉圖片并按照訓練圖片所需的格式對圖片進行處理。然后使用Keras框架,來進行卷積神經(jīng)網(wǎng)絡的結(jié)構(gòu)設(shè)計和參數(shù)優(yōu)化[4-6],并且通過爬取的圖片數(shù)據(jù),來對卷積神經(jīng)網(wǎng)絡進行多次迭代訓練,從而得到一個理想的情感識別模型。最后實現(xiàn)對人臉情感的識別。
1 系統(tǒng)架構(gòu)
系統(tǒng)主要有兩大模塊。爬蟲模塊負責爬取數(shù)據(jù)和對圖片數(shù)據(jù)進行格式化處理;訓練模塊負責生成TFRecord訓練文件、搭建卷積神經(jīng)網(wǎng)絡模型,并對其進行訓練和識別人臉的情感。
1.1 爬蟲模塊
1.1.1 網(wǎng)絡圖片爬取
本項目使用Scrapy框架進行圖片爬取[7]。首先確定爬取圖片的網(wǎng)址,然后根據(jù)需要要爬取的標簽和網(wǎng)頁頁碼得到完整的URL列表并發(fā)送給調(diào)度器,接著調(diào)度器分析URL地址響應內(nèi)容并找出圖片下載地址。最后,只需在Scrapy框架里的setting中設(shè)置好下載路徑,就可以啟動引擎調(diào)度各模塊,讓爬蟲程序自動下載這些圖片。為防止瀏覽器阻止python爬蟲程序爬取網(wǎng)頁圖片,還需要修改setting里的ROBOTSTXT_OBEY為TRUE以及讓爬蟲程序每一次爬取網(wǎng)頁時使用不同的USER_AGENT。圖片爬蟲流程圖如圖1所示。
1.1.2 圖片格式化處理
本項目對爬取的圖片進行格式化處理將用到Dlib庫和Opencv庫。如圖2 所示,圖片格式化處理流程為:先使用Dlib庫的人臉目標檢測函數(shù)循環(huán)檢測每一張圖片,若檢測到人臉,則使用Opencv庫的圖片切割函數(shù)對人臉進行矩形框切割并轉(zhuǎn)為灰度圖,然后保存圖片;若檢測不到圖片,則跳過此圖片選取下一張就行人臉檢測。
1.2 訓練模塊
1.2.1 生成TFRecord文件
本系統(tǒng)通過網(wǎng)絡爬蟲模塊爬取的圖片已經(jīng)放到了對應的標簽目錄下。首先把每個標簽目錄下的圖片按照比例分為train,test和val這三部分,然后生成對應的TFRecord訓練文件,分別為train訓練集,val驗證集和test測試集。train訓練集用于卷積神經(jīng)網(wǎng)絡的訓練;val驗證集是訓練過程中的測試集,主要是用來判斷網(wǎng)絡是否過于擬合,以便網(wǎng)絡參數(shù)的調(diào)整;test測試集是在網(wǎng)絡模型訓練結(jié)束后,用來評估網(wǎng)絡模型效果的測試集。