馮明強 曹冬穎 李佳妮
摘? 要: 為了幫助養(yǎng)豬場實現(xiàn)豬只精準(zhǔn)管理,應(yīng)用深度學(xué)習(xí)技術(shù)設(shè)計了一款豬臉識別APP。利用ResNet50神經(jīng)網(wǎng)絡(luò)模型對照片進行訓(xùn)練與預(yù)測,并以MUI框架和Django框架為依托開發(fā)APP。實驗結(jié)果表明,在ResNet50模型基礎(chǔ)上優(yōu)化后的網(wǎng)絡(luò),對豬的面部照片有著較高的識別率。
關(guān)鍵詞: 豬臉識別APP; ResNet50; 深度學(xué)習(xí); MUI框架
中圖分類號:TP311.5? ? ? ? ? 文獻標(biāo)識碼:A? ? ?文章編號:1006-8228(2020)06-46-04
Abstract: In order to help the pig farm to achieve accurate pig management, a pig face recognition App is designed by using deep learning technology in this paper. The ResNet50 neural network model is used to train and predict photos, combining with MUI framework and Django framework, a pig face recognition App is finally realized. The experiment results show that the optimized network based on ResNet50 model has a high recognition rate for pig's facial photos.
Key words: pig face recognition App; ResNet50; deep learning; MUI framework
0 引言
隨著畜牧業(yè)不斷發(fā)展,人們對于食物安全和食品質(zhì)量的要求不斷提升。養(yǎng)殖場為了滿足集約化管理與精確測量的要求,需要進行更高效的牲畜識別管理。目前用于豬只身份識別的方法主要為RFID標(biāo)簽方案,但是此方案耗時長、成本高,耳標(biāo)易丟失,且要對豬耳朵打洞,豬難以適應(yīng),對操作人員的安全也構(gòu)成了威脅[1]。此外,在傳統(tǒng)的豬只識別方法下,養(yǎng)殖戶進行騙保的現(xiàn)象難以避免。
近年來,計算機視覺的飛速發(fā)展推動了深度學(xué)習(xí)技術(shù)在眾多領(lǐng)域的廣泛應(yīng)用。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的一大經(jīng)典網(wǎng)絡(luò),在圖像識別上的表現(xiàn)比傳統(tǒng)方法更加優(yōu)秀。隨著AlexNet、VggNet、GoogleNet、ResNet等[2]深層網(wǎng)絡(luò)模型被相繼提出、不斷改進,網(wǎng)絡(luò)模型的識別準(zhǔn)確率越來越高,這同時帶來了梯度消失和梯度爆炸的問題,而殘差網(wǎng)絡(luò)可以在一定程度上解決這個問題[3]。ResNet50[4]是一種易優(yōu)化、計算負(fù)擔(dān)小的殘差學(xué)習(xí)框架。隨著移動互聯(lián)網(wǎng)技術(shù)迅速發(fā)展,各種APP憑借強大的實用功能愈發(fā)普及[5]。
本文介紹的豬臉識別APP利用ResNet50網(wǎng)絡(luò)模型的訓(xùn)練結(jié)果,實現(xiàn)了對豬只的高精度識別。這款A(yù)PP能夠方便養(yǎng)殖戶、保險公司等用戶,減少養(yǎng)殖場進行豬只識別所耗費的人力、物力和財力,降低保險公司被養(yǎng)殖戶騙取保險金的概率。
1 數(shù)據(jù)采集處理與網(wǎng)絡(luò)模型訓(xùn)練
在深度學(xué)習(xí)中,網(wǎng)絡(luò)模型的結(jié)構(gòu)優(yōu)劣是識別率高低的決定性因素,因此下面將分析豬臉照片在ResNet50網(wǎng)絡(luò)模型下的準(zhǔn)確率。
1.1 數(shù)據(jù)采集與處理
數(shù)據(jù)集來源于吉林省某地的一家養(yǎng)豬場,此場對豬只實行分欄管理。將攝像頭安裝在食槽上方,根據(jù)攝像頭視角范圍調(diào)整安裝角度后,可保證一個攝像頭能夠拍攝到五頭豬只吃飯時的臉部照片。由于豬圈不是完全處于室內(nèi),因此拍攝要考慮太陽光照強度,在上午和下午的適宜時間打開攝像頭,拍攝期為三天。獲得視頻數(shù)據(jù)后,使用OpenCV完成對視頻流的分幀,得到的每一張圖片包含五頭豬。可用兩種方法獲取到單張照片,一種是使用目標(biāo)檢測神經(jīng)網(wǎng)絡(luò),另一種是使用標(biāo)記工具。為了提高分割的準(zhǔn)確率,本文采用labelImg工具,標(biāo)記出每一張圖片中較為清晰的豬臉,labelImg將每一張圖片中的標(biāo)簽信息保存在對應(yīng)的xml文件中,借助python對文件做相關(guān)操作,將每一張圖片中標(biāo)記出的豬臉裁剪為單張照片并保存到相應(yīng)編號的文件夾。最后,統(tǒng)一各編號豬的數(shù)據(jù)集并按照3:1:1比例劃分為訓(xùn)練集、驗證集、測試集。
為了提高識別的精確度需要擴充數(shù)據(jù)集大小,在訓(xùn)練網(wǎng)絡(luò)時,利用Keras中的數(shù)據(jù)生成器對原始數(shù)據(jù)集進行旋轉(zhuǎn)等增強操作。
1.2 網(wǎng)絡(luò)搭建與訓(xùn)練
在神經(jīng)網(wǎng)絡(luò)中,殘差網(wǎng)絡(luò)可以在不影響網(wǎng)絡(luò)性能的前提下解決梯度消失和梯度爆炸這兩個問題。殘差網(wǎng)絡(luò)通過加入shortcutconnections,變得更易于優(yōu)化。ResNet50是一個性能優(yōu)良的的殘差網(wǎng)絡(luò)模型,它包含49個卷積層和1個全連接層[6]。為了提高豬臉識別準(zhǔn)確率,本文對ResNet50結(jié)構(gòu)進行優(yōu)化,在最后的全連接層后連接一個最大池化層,以0.25的概率隨機丟棄特征,增加一層flatten層,最后連接一個全連接層。本文搭建的網(wǎng)絡(luò)在Keras平臺上運行,keras是一種使用Python語言的深度學(xué)習(xí)框架,具有良好的封裝性,隱藏實現(xiàn)細(xì)節(jié),便于搭建、測試網(wǎng)絡(luò)。
在Resnet50殘差網(wǎng)絡(luò)模型下,對比分析不同數(shù)量級的學(xué)習(xí)率對驗證集正確率的影響,可以得到如下結(jié)論:
⑴ 學(xué)習(xí)率lr在過大的時候(如圖1.lr=1e-3),損失函數(shù)難以收斂,導(dǎo)致誤差較大,驗證集的準(zhǔn)確率在80%附近劇烈波動。
⑵ 學(xué)習(xí)率lr在過小的時候(如圖3.lr=1e-5),可以看出損失函數(shù)在逐漸收斂,但是收斂速度太慢,在訓(xùn)練輪數(shù)到達40輪時loss值仍舊在1.0以上,而驗證集準(zhǔn)確率由于損失函數(shù)值的影響,只到達72%左右。
⑶ 當(dāng)選擇學(xué)習(xí)率lr=1e-4(如圖2),則損失函數(shù)值收斂比較迅速,在40輪左右時,已經(jīng)降到0.5左右,而準(zhǔn)確率也已經(jīng)到達了92%左右。
通過以上分析我們最終選擇學(xué)習(xí)率lr=1e-4。
2 APP總體設(shè)計
本款A(yù)PP設(shè)計主要分為四個模塊:登錄注冊模塊、天氣氣溫模塊、豬只信息修改模塊和照片識別模塊(如圖4所示)。登錄注冊模塊實現(xiàn)用戶的身份驗證,確保不同養(yǎng)豬場的信息安全。天氣氣溫模塊能夠獲得今日的實時天氣。鑒于氣溫對豬的生長發(fā)育和繁殖力等方面均有一定影響[7-8],故獲取氣溫可以便于養(yǎng)殖戶根據(jù)不同的氣溫情況對豬圈的室溫、通風(fēng)情況進行調(diào)整。信息修改模塊方便養(yǎng)殖戶在豬的成長過程中能夠?qū)崟r地更新豬的最新信息。照片識別模塊則對用戶上傳的照片進行分析識別,并且展示豬只所對應(yīng)的詳細(xì)信息。
同時,為了適應(yīng)“高內(nèi)聚低耦合”的設(shè)計思想,將神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練與識別和手機端APP進行分離,把對運行性能具有較高要求的模型訓(xùn)練與識別部署到服務(wù)器當(dāng)中去,借助計算機網(wǎng)絡(luò)使得APP與服務(wù)器能夠進行交互,前后端的總體設(shè)計如圖5所示。
3 APP功能實現(xiàn)
在移動端,為了使其擁有更好的跨平臺性和維護簡單性,本文采用了由DCloud推出的混合APP前端開發(fā)框架—MUI框架。MUI框架具有輕量級、仿原生UI、跨平臺、易上手等特點,同時也克服了以往Hybrid APP開發(fā)的頁面白屏、浮動元素抖動、下拉刷新不流暢等問題[9]。在服務(wù)器端,考慮到本文搭建的神經(jīng)網(wǎng)絡(luò)模型使用了基于python語言的keras框架,故選擇python的Web框架—Django。Django框架具有url設(shè)計簡潔、管理界面自動化、可擴展性強大等特點。Django自身所具有的MTV架構(gòu)也大大的簡化了后端的邏輯開發(fā)。
在整個APP框架當(dāng)中,根據(jù)關(guān)鍵技術(shù)進行劃分,系統(tǒng)主要包含了三個模塊:數(shù)據(jù)交互請求模塊,圖像識別模塊和數(shù)據(jù)存儲訪問模塊。
3.1 數(shù)據(jù)交互技術(shù)模塊
在MUI官方文檔中說明了網(wǎng)絡(luò)交互的API,mui封裝了常用的Ajax函數(shù),支持GET、POST請求方式,在數(shù)據(jù)傳輸時支持多種格式的數(shù)據(jù)類型。本豬臉識別APP開發(fā)均采用了JSON格式,因為JSON格式是一種輕量級的數(shù)據(jù)交換格式,具有占用網(wǎng)絡(luò)資源小,與編程語言無關(guān)等優(yōu)點,同時對電腦而言,解析和生成JSON格式的數(shù)據(jù)也具有較高的效率。
3.2 圖像識別模塊
在圖像識別模塊主要有兩大步驟:
⑴ 通過網(wǎng)絡(luò)請求傳輸照片。
⑵ 利用訓(xùn)練好的模型進行預(yù)測。
在傳輸照片時將圖片轉(zhuǎn)化成base64編碼,base64是一種常用的傳輸8Bit字節(jié)碼的編碼方式,常用于傳遞較長的標(biāo)識信息。因為利用base64編碼圖片后,得到的數(shù)據(jù)是無法被人識別的,所以可以同時實現(xiàn)對圖片數(shù)據(jù)的加密(如圖6)。
在進行預(yù)測時,利用在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時保存好的權(quán)重參數(shù)模型(即保存的.h5文件),就可以得到待測試圖片對應(yīng)所有已有模型的one-hot編碼,進一步得到上傳的圖片的樣本標(biāo)簽,再根據(jù)此標(biāo)簽從數(shù)據(jù)庫當(dāng)中獲取對應(yīng)的豬只信息發(fā)送回前端。
3.3 數(shù)據(jù)存儲訪問模塊
將用戶信息與豬的信息存儲在Mysql數(shù)據(jù)庫當(dāng)中,而Django服務(wù)只需要對配置文件進行配置就可以使用自身帶有的數(shù)據(jù)庫訪問組件對數(shù)據(jù)庫進行操作。也正是因為框架本身對數(shù)據(jù)庫操作的封裝,使得編程者不必關(guān)心數(shù)據(jù)庫定義語言和操作語言,大大降低了操作的難度與出錯率。Django自身還帶有admin后臺管理,只需要在終端進行用戶創(chuàng)建操作和在admin.py文件里注冊需顯示的類信息以及自定義顯示樣式即可。管理員能夠在網(wǎng)頁端對數(shù)據(jù)庫數(shù)據(jù)直接進行增、刪、改、查的操作。
豬臉識別APP的主要功能實現(xiàn)如圖7-10所示。
4 結(jié)束語
本文通過對具有良好性能的ResNet50網(wǎng)絡(luò)模型進行學(xué)習(xí)研究,設(shè)計開發(fā)了一款界面簡潔,操作簡單的豬臉識別APP。此款A(yù)PP能夠在不需要標(biāo)簽的情況下,對豬進行識別,降低了養(yǎng)殖成本。實驗表明:Resnet50模型對豬臉照片有著較高的識別率,準(zhǔn)確率在92%左右。此外,在有適合的權(quán)重配置文件時可以直接應(yīng)用于其他動物的識別,有著較好的擴展性。在后續(xù)研究中,將進一步優(yōu)化網(wǎng)絡(luò)模型,從而獲得更高的識別率,同時擴展APP功能,提高APP的實用性。
參考文獻(References):
[1] 秦興,宋各方.基于雙線性卷積神經(jīng)網(wǎng)絡(luò)的豬臉識別算法[J].杭州電子科技大學(xué)學(xué)報(自然科學(xué)版),2019.39(2):12-17
[2] 王衛(wèi)民,唐洋,張健,張軼秋.基于卷積神經(jīng)網(wǎng)絡(luò)特征融合的人臉識別算法[J].計算機與數(shù)字工程,2020.48(1):88-92,105
[3] 肖雅敏,張家晨,馮鐵.基于多窗口殘差網(wǎng)絡(luò)的單圖像超分辨率重建[J].計算機工程:1-11[2020-02-28].https://doi.org/10.19678/j.issn.1000-3428.0057224.
[4] HE K, ZHANG X, REN S,et al. Deep residual learning for?image recognition[C]//Proceeding of the IEEE Conference on Computer Vision and Pattern Recognition,2016:770-778
[5] 高國弘,緱曉輝,高愷寧.基于MUI前端框架繪制天氣預(yù)報APP[J].電腦編程技巧與維護,2019.10:56-60
[6] 王恒,李霞,劉曉芳,徐文龍.基于ResNet50網(wǎng)絡(luò)的乳腺癌病理圖像分類研究[J].中國計量大學(xué)學(xué)報,2019.30(1):72-77
[7] 韓君,靳偉霞.天津民俗文化的數(shù)字化讀物APP設(shè)計研究[J].包裝工程,2017.38(20):179-183
[8] 姚建國,夏東.氣溫對豬繁殖力的影響[J].動物科學(xué)與動物醫(yī)學(xué),2000.2:25-27
[9] 譚良溪.淺談氣溫對豬生長育肥的影響及對策[J].湖南畜牧獸醫(yī),1998.3:2-3