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