鄭浩鑫 林楷焱 陶銘
摘? 要: 在現(xiàn)實(shí)生活中,人們具有豐富的情感,而情感會(huì)影響人的行為及認(rèn)知等。為了獲取并識(shí)別人類的情感,提出一種基于深度學(xué)習(xí)的“視覺情感識(shí)別系統(tǒng)”的設(shè)計(jì)方案。通過Python語言編寫網(wǎng)絡(luò)爬蟲程序,爬取網(wǎng)絡(luò)上帶有情感標(biāo)簽的人臉圖片,從而為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練提供數(shù)據(jù);采用Keras框架搭建卷積神經(jīng)網(wǎng)絡(luò),對(duì)帶有情感標(biāo)簽的人臉圖片進(jìn)行深度學(xué)習(xí),使卷積神經(jīng)網(wǎng)絡(luò)收斂到理想的模型,從而實(shí)現(xiàn)對(duì)人臉圖片的情感識(shí)別。實(shí)驗(yàn)結(jié)果表明,該方案具有一定的識(shí)別效率。
關(guān)鍵詞: 網(wǎng)絡(luò)爬蟲; 深度學(xué)習(xí); 卷積神經(jīng)網(wǎng)絡(luò); 情感識(shí)別
中圖分類號(hào):TP393? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ?文章編號(hào):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 引言
人的情感能夠表達(dá)出人的想法和行為。人對(duì)于情感的利用有很多方面,例如教學(xué)中研究學(xué)生的情感以便即時(shí)關(guān)注學(xué)生的心理活動(dòng);商家通過客戶的情感來對(duì)商品和服務(wù)進(jìn)行改進(jìn);企業(yè)通過研究員工的情感來對(duì)工作進(jìn)行合理分配等。對(duì)于情感的獲取渠道也有多種,比如圖像、聲音和文字等[1-2]。
本系統(tǒng)是在人臉檢測(cè)基礎(chǔ)之上的更進(jìn)一步地研究[3],通過識(shí)別人臉的表情來獲取人的情感。先使用網(wǎng)絡(luò)爬蟲技術(shù)和人臉目標(biāo)檢測(cè)技術(shù)從網(wǎng)絡(luò)上爬取帶有情感標(biāo)簽的人臉圖片并按照訓(xùn)練圖片所需的格式對(duì)圖片進(jìn)行處理。然后使用Keras框架,來進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì)和參數(shù)優(yōu)化[4-6],并且通過爬取的圖片數(shù)據(jù),來對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行多次迭代訓(xùn)練,從而得到一個(gè)理想的情感識(shí)別模型。最后實(shí)現(xiàn)對(duì)人臉情感的識(shí)別。
1 系統(tǒng)架構(gòu)
系統(tǒng)主要有兩大模塊。爬蟲模塊負(fù)責(zé)爬取數(shù)據(jù)和對(duì)圖片數(shù)據(jù)進(jìn)行格式化處理;訓(xùn)練模塊負(fù)責(zé)生成TFRecord訓(xùn)練文件、搭建卷積神經(jīng)網(wǎng)絡(luò)模型,并對(duì)其進(jìn)行訓(xùn)練和識(shí)別人臉的情感。
1.1 爬蟲模塊
1.1.1 網(wǎng)絡(luò)圖片爬取
本項(xiàng)目使用Scrapy框架進(jìn)行圖片爬取[7]。首先確定爬取圖片的網(wǎng)址,然后根據(jù)需要要爬取的標(biāo)簽和網(wǎng)頁(yè)頁(yè)碼得到完整的URL列表并發(fā)送給調(diào)度器,接著調(diào)度器分析URL地址響應(yīng)內(nèi)容并找出圖片下載地址。最后,只需在Scrapy框架里的setting中設(shè)置好下載路徑,就可以啟動(dòng)引擎調(diào)度各模塊,讓爬蟲程序自動(dòng)下載這些圖片。為防止瀏覽器阻止python爬蟲程序爬取網(wǎng)頁(yè)圖片,還需要修改setting里的ROBOTSTXT_OBEY為TRUE以及讓爬蟲程序每一次爬取網(wǎng)頁(yè)時(shí)使用不同的USER_AGENT。圖片爬蟲流程圖如圖1所示。
1.1.2 圖片格式化處理
本項(xiàng)目對(duì)爬取的圖片進(jìn)行格式化處理將用到Dlib庫(kù)和Opencv庫(kù)。如圖2 所示,圖片格式化處理流程為:先使用Dlib庫(kù)的人臉目標(biāo)檢測(cè)函數(shù)循環(huán)檢測(cè)每一張圖片,若檢測(cè)到人臉,則使用Opencv庫(kù)的圖片切割函數(shù)對(duì)人臉進(jìn)行矩形框切割并轉(zhuǎn)為灰度圖,然后保存圖片;若檢測(cè)不到圖片,則跳過此圖片選取下一張就行人臉檢測(cè)。
1.2 訓(xùn)練模塊
1.2.1 生成TFRecord文件
本系統(tǒng)通過網(wǎng)絡(luò)爬蟲模塊爬取的圖片已經(jīng)放到了對(duì)應(yīng)的標(biāo)簽?zāi)夸浵?。首先把每個(gè)標(biāo)簽?zāi)夸浵碌膱D片按照比例分為train,test和val這三部分,然后生成對(duì)應(yīng)的TFRecord訓(xùn)練文件,分別為train訓(xùn)練集,val驗(yàn)證集和test測(cè)試集。train訓(xùn)練集用于卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練;val驗(yàn)證集是訓(xùn)練過程中的測(cè)試集,主要是用來判斷網(wǎng)絡(luò)是否過于擬合,以便網(wǎng)絡(luò)參數(shù)的調(diào)整;test測(cè)試集是在網(wǎng)絡(luò)模型訓(xùn)練結(jié)束后,用來評(píng)估網(wǎng)絡(luò)模型效果的測(cè)試集。