王鵬程 蘇一水 王茂發(fā)
(桂林電子科技大學(xué)計(jì)算機(jī)與信息安全學(xué)院,廣西 桂林 541004)
中國(guó)食品安全報(bào)紙發(fā)布的《2021年烘焙食品零售額有望達(dá)近3000億》[1]一文中指出我國(guó)烘焙食品近些年來(lái)的增幅巨大:銷售總量從2016年的1700億元增長(zhǎng)到2020年的2569億元,銷售總額的增長(zhǎng)率高達(dá)151%,同時(shí)預(yù)測(cè)2021年的銷售額預(yù)計(jì)到達(dá)2856億元。文章也指出隨著人們對(duì)于烘焙類產(chǎn)品的重視和新冠疫情的影響,烘焙食品行業(yè)對(duì)食品安全要求和對(duì)于中高端產(chǎn)品的需求愈來(lái)愈高。本文所編寫(xiě)的系統(tǒng)便是這針對(duì)這一需求開(kāi)發(fā)的,保障食品安全,滿足人們對(duì)于中高端產(chǎn)品的需求。
本文結(jié)合市場(chǎng)的發(fā)展需要[2,3]運(yùn)用VGG16神經(jīng)網(wǎng)絡(luò)遷移模型開(kāi)發(fā)了一套面包產(chǎn)品的溯源、溯鮮系統(tǒng)。本系統(tǒng)把生產(chǎn)線作為起點(diǎn),先對(duì)生產(chǎn)線產(chǎn)出的面包產(chǎn)品的紋理進(jìn)行特征提取,在提取特征值的過(guò)程當(dāng)中訓(xùn)練相應(yīng)的VGG16 的神經(jīng)網(wǎng)絡(luò)遷移學(xué)習(xí)模型,經(jīng)過(guò)產(chǎn)品線的大量訓(xùn)練之后,將得到一套適配于當(dāng)前生產(chǎn)線產(chǎn)品的特征值提取模型。之后將該模型提取出的生產(chǎn)線產(chǎn)品的特征值和與之對(duì)應(yīng)的產(chǎn)品信息(如:生產(chǎn)日期、產(chǎn)地、價(jià)格等)裝載到數(shù)據(jù)庫(kù)H5 文件當(dāng)中。當(dāng)顧客挑選面包時(shí),只需要使用系統(tǒng)提供的用戶端,根據(jù)系統(tǒng)的提示對(duì)于產(chǎn)品拍照上傳。系統(tǒng)會(huì)使用對(duì)應(yīng)特征值提取模型提取產(chǎn)品的特征值,并通過(guò)余弦相似度算法從數(shù)據(jù)庫(kù)當(dāng)中提取對(duì)應(yīng)的產(chǎn)品信息返回給用戶,從而實(shí)現(xiàn)溯源、溯鮮過(guò)程。
本系統(tǒng)當(dāng)中的特征值提取模型的識(shí)別率的高低,對(duì)于系統(tǒng)最終的查詢準(zhǔn)確度有著最核心的影響。因此模型種類的選擇、模型改進(jìn)的策略與模型訓(xùn)練的方法等方面都直接影響著整個(gè)系統(tǒng)品質(zhì)的高低,在以上問(wèn)題的選擇當(dāng)中本文都經(jīng)過(guò)了詳細(xì)的對(duì)比與分析。
近些年來(lái)卷積神經(jīng)網(wǎng)絡(luò)無(wú)論是在理論還是在應(yīng)用方面都取得了長(zhǎng)足的進(jìn)步,鄭遠(yuǎn)攀[4]等人的研究介紹了諸如深度信念網(wǎng)絡(luò)(DBN)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、生成式對(duì)抗網(wǎng)絡(luò)(GAN)等多種應(yīng)用于圖像識(shí)別的深度學(xué)習(xí)模型;同時(shí)圖像識(shí)別也在眾多領(lǐng)域取得了廣泛的引用,如Wu[5]等人提出的一種用于人臉識(shí)別的優(yōu)化的稀疏深度學(xué)習(xí)網(wǎng)絡(luò)(SDLN),何雪英[6]等人改進(jìn)了一種用于乳腺癌病理圖像識(shí)別的遷移學(xué)習(xí)深度卷積模型,王鑫[7]等人提出了一種七層CNN的高分辨率遙感圖像分類算法,王彥翔[8]等人在農(nóng)作物害蟲(chóng)檢測(cè)領(lǐng)域使用深度學(xué)習(xí)技術(shù)結(jié)合高光譜成像技術(shù)提出算法等。
以上文獻(xiàn)當(dāng)中的種種研究成果促進(jìn)了深度學(xué)習(xí)在圖像識(shí)別領(lǐng)域的發(fā)展與圖像識(shí)別在眾多領(lǐng)域的應(yīng)用,也為本文的研究指明了方向。
圖1 系統(tǒng)運(yùn)行流程圖
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)在圖像分類、目標(biāo)檢測(cè)和特征提領(lǐng)域取得了驚人的成就,其憑借著局部連接、權(quán)值共享以及池化操作等特性,不但使CNN算法的網(wǎng)絡(luò)復(fù)雜性得到了有效降低,同時(shí)也對(duì)于產(chǎn)生了變形、扭曲和局部縮放的圖像有著出色的魯棒性和容錯(cuò)性[9]。CNN網(wǎng)絡(luò)的特性能夠有效降低模型的復(fù)雜度,同時(shí)有利于模型后續(xù)的優(yōu)化與改進(jìn)?;贑NN模型的這些優(yōu)越的特征,本系統(tǒng)選取CNN網(wǎng)絡(luò)模型作為面包食品的特征值提取模型。
為了進(jìn)一步選定特征值提取模型,本文對(duì)于Dense Net121、DenseNet169、DenseNet201、inceptionV3、VGG16、VGG19、ResNet50等預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型的準(zhǔn)確性進(jìn)行了一系列的對(duì)比。結(jié)果見(jiàn)表1。
表1 各神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)的預(yù)測(cè)準(zhǔn)確率
經(jīng)過(guò)對(duì)比實(shí)驗(yàn)發(fā)現(xiàn)ResNet50、VGG16、VGG19在烘焙類產(chǎn)品的特征提取上獲得了較高的準(zhǔn)確率能夠滿足本系統(tǒng)的開(kāi)發(fā)需求。在Dong Su[10]等人的研究中,其系統(tǒng)地測(cè)試了被學(xué)術(shù)界與工業(yè)界廣泛接受的18 個(gè)ImangeNet 深度神經(jīng)模型如AlexNet、VGG Nets、MobileNets、ResNets、DenseNets 的魯棒性,結(jié)果顯示VGG16和VGG19模型比其他的模型有更強(qiáng)的可遷移性,雖然ResNet 也表現(xiàn)出了較好的識(shí)別精度,但是其遷移學(xué)習(xí)的魯棒性不如VGG 系列模型。同時(shí)VGG16 模型的卷積層相較于VGG19 精簡(jiǎn)了三層,其特性有利于在訓(xùn)練的過(guò)程中加快訓(xùn)練過(guò)程,簡(jiǎn)化模型的復(fù)雜度。
神經(jīng)網(wǎng)絡(luò)的遷移學(xué)習(xí)是指將已經(jīng)訓(xùn)練好的源領(lǐng)域的神經(jīng)網(wǎng)絡(luò)模型通過(guò)微調(diào)其中參數(shù)相關(guān)層參數(shù)后繼續(xù)訓(xùn)練,直至訓(xùn)練出的模型在與源模型領(lǐng)域相關(guān)的目標(biāo)模型領(lǐng)域仍具有高度的可用性,將訓(xùn)練過(guò)的模型輸出為新模型。本系統(tǒng)為了避免反復(fù)繁雜的人工特征值調(diào)整工作,運(yùn)用遷移學(xué)習(xí)的思想[11,12],充分利用模型在源數(shù)據(jù)集訓(xùn)練得到的大量知識(shí)。
遷移學(xué)習(xí)首先找到源領(lǐng)域與目標(biāo)領(lǐng)域在神經(jīng)網(wǎng)絡(luò)上相似的、共享的參數(shù)信息[13],在源模型上進(jìn)行訓(xùn)練之后進(jìn)行遷移學(xué)習(xí)得到新的模型。由于目標(biāo)領(lǐng)域的訓(xùn)練可能缺乏數(shù)據(jù)抑或是訓(xùn)練的過(guò)程復(fù)雜,而源領(lǐng)域的訓(xùn)練數(shù)據(jù)充足、訓(xùn)練簡(jiǎn)單,因此在使用大量的源領(lǐng)域的數(shù)據(jù)對(duì)于模型進(jìn)行訓(xùn)練,之后對(duì)于模型的卷積層進(jìn)行凍結(jié)和微調(diào),使用少量的目標(biāo)領(lǐng)域的數(shù)據(jù)對(duì)模型再次訓(xùn)練,即可得到新的模型。
在遷移學(xué)習(xí)當(dāng)中,模型的選擇、頂層的解凍層數(shù)、解凍層的激活函數(shù)等的選擇對(duì)于模型的遷移學(xué)習(xí)的效果都具有很大的影響,所以本文通過(guò)如下步驟進(jìn)行遷移學(xué)習(xí)并得出相應(yīng)的結(jié)論:
Step1:對(duì)比分析不同模型的遷移學(xué)習(xí)能力和準(zhǔn)確度,發(fā)現(xiàn)VGG16模型表現(xiàn)最佳;
Step2:對(duì)不同的神經(jīng)網(wǎng)絡(luò)的頂層解凍層數(shù)進(jìn)行分別實(shí)驗(yàn),得到不同的特征值;
Step3:將特征值使用余弦相似度算法進(jìn)行比較,得到最高置信區(qū)間的解凍層數(shù)為2層;
Step4:使用不同的激活函數(shù)對(duì)模型進(jìn)行激活,對(duì)比其損失函數(shù),得到結(jié)果為relu激活函數(shù)效果最好。
同一產(chǎn)品由廠家拍照上傳數(shù)據(jù)庫(kù)的照片與用戶拍攝的照片必定存在差異,因此特征值提取模型計(jì)算出的特征值也存在不同,在查詢產(chǎn)品價(jià)格的時(shí)候不能簡(jiǎn)單做相等比較,而是要選取適當(dāng)?shù)钠ヅ渌惴▽?duì)于特征值進(jìn)行匹配選取出對(duì)應(yīng)的產(chǎn)品。
本文采用余弦相似度算法[14]計(jì)算出兩個(gè)產(chǎn)品的相似度,通過(guò)記錄和對(duì)比目標(biāo)產(chǎn)品與數(shù)據(jù)庫(kù)產(chǎn)品的相似度來(lái)選取數(shù)據(jù)庫(kù)中相似度最高的產(chǎn)品作為目標(biāo)產(chǎn)品,從而利用特征值的相似度實(shí)現(xiàn)了目標(biāo)產(chǎn)品和數(shù)據(jù)庫(kù)中的產(chǎn)品的匹配算法。下面將介紹本系統(tǒng)中使用的匹配產(chǎn)品特征值的余弦相似度算法。
余弦相似度,本意表示兩個(gè)空間向量的夾角的大小,當(dāng)兩個(gè)向量的夾角小時(shí)其余弦值越接近1,可以認(rèn)為兩個(gè)向量的相似度度量高;當(dāng)兩個(gè)向量的夾角大,甚至反向的時(shí)候其相似度越小。
使用上文所使用的方法訓(xùn)練出的VGG16 模型,對(duì)于圖片的特征值進(jìn)行提取,將圖片的fc7 層特征值提取結(jié)果轉(zhuǎn)為Base64 文本信息。對(duì)于Base64 文本信息我們將其映射到向量空間,使用兩段文本當(dāng)中出現(xiàn)的所有詞語(yǔ)的詞頻作為向量的多個(gè)維度的值,使用如下公式便可計(jì)算出兩段文本的余弦相似度:
圖2 遷移學(xué)習(xí)訓(xùn)練過(guò)程
其中:A、B分別表示目特征值與原始特征值在向量空間的繪制,Ai與Bi表示目特征值與原始特征值在向量空間的第i維的數(shù)值。
由于使用特征值提取模型計(jì)算出的產(chǎn)品的特征值為一段數(shù)字字母文本,將目標(biāo)特征值與原始特征值作為A和B,進(jìn)行余弦相似度的計(jì)算,余弦相似度作為置信度,表示匹配程度。
本系統(tǒng)可以分為兩個(gè)模塊:用戶模塊和管理員模塊。用戶模塊負(fù)責(zé)提供面包識(shí)別的功能,以及查看常見(jiàn)問(wèn)題、面包定價(jià)規(guī)則。管理員模塊負(fù)責(zé)提供面包圖片管理、神經(jīng)網(wǎng)絡(luò)模型更新、常見(jiàn)問(wèn)題管理、面包定價(jià)管理。系統(tǒng)端口劃分如圖3所示。
圖3 系統(tǒng)接口模塊劃分
用戶端的前端使用端采用uni-app 技術(shù),uni-app 是一個(gè)使用vue.js 開(kāi)發(fā)所有前端應(yīng)用的框架,開(kāi)發(fā)者編寫(xiě)一套代碼,可以直接發(fā)布到微信小程序端。用戶直接使用微信小程序即可打開(kāi)系統(tǒng)的用戶端界面,上傳產(chǎn)品的圖片進(jìn)行識(shí)別。
后端代碼采用基于Python 的Flask 后端框架。Flask 是一個(gè)使用Python 編寫(xiě)的輕量級(jí)Web 應(yīng)用程序框架。Arimin Ronacher帶領(lǐng)一個(gè)名為Pocco的國(guó)際Python愛(ài)好者團(tuán)隊(duì)開(kāi)發(fā)了Flask。Flask能夠非常快速、穩(wěn)定地響應(yīng)Web請(qǐng)求,作為輕量級(jí)的代碼,由于Web 極簡(jiǎn)的設(shè)計(jì)理念,會(huì)更加專注于服務(wù)請(qǐng)求的響應(yīng),能夠很好地滿足高頻且單一的服務(wù)請(qǐng)求,所以選取Flask作為后端框架。
圖4 系統(tǒng)用戶端部分界面
管理員端的前端,采用Vue-cli 技術(shù),其由Vue.js 和Webpack組成。Vue.js是一套構(gòu)建用戶界面的漸進(jìn)式框架。與其他重量級(jí)框架不同的是,Vue 采用自底向上增量開(kāi)發(fā)的設(shè)計(jì)。Vue的核心庫(kù)只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫(kù)或已有項(xiàng)目整合。另一方面,Vue完全有能力驅(qū)動(dòng)采用單文件組件和Vue 生態(tài)系統(tǒng)支持的庫(kù)開(kāi)發(fā)的復(fù)雜單頁(yè)應(yīng)用。Webpack 是代碼編譯工具,有入口、出口、loader 和插件,具有代碼分割、模塊化功能,Webpack2.0 中加入tree shaking,用來(lái)提取公共代碼,去掉死亡代碼。Webpack 作為前端模塊化開(kāi)發(fā)的標(biāo)配,是目前流行的模塊化打包工具,所以選用Vue-cli作為后臺(tái)管理系統(tǒng)的前端框架。
本系統(tǒng)將用戶模塊和管理員模塊劃分兩個(gè)Web服務(wù),目的就是減少相互之間的系統(tǒng)影響,借鑒了微服務(wù)[5]的思想。用戶模塊查詢神經(jīng)網(wǎng)絡(luò),計(jì)算量較大,容易導(dǎo)致該服務(wù)宕機(jī)。管理員模塊主要是系統(tǒng)資源管理,負(fù)責(zé)面包圖片文件的上傳、神經(jīng)網(wǎng)絡(luò)H5 模型文件的上傳。本系統(tǒng)將兩個(gè)服務(wù)器劃分開(kāi),就能夠讓兩個(gè)服務(wù)獨(dú)立運(yùn)行,即使有一個(gè)服務(wù)宕機(jī),另一個(gè)服務(wù)也能夠正常運(yùn)行。
圖5 系統(tǒng)管理員端部分界面
隨著硬件的發(fā)展和深度學(xué)習(xí)理論在圖像識(shí)別技術(shù)中的推廣,讓從上世紀(jì)40年代就開(kāi)啟的圖像識(shí)別技術(shù)達(dá)到了前所未有的熱度與技術(shù)高度;同時(shí)人們對(duì)于智能化、高端化的面包食品供應(yīng)也表現(xiàn)出全新的需求。本文利用深度學(xué)習(xí)VGG16 神經(jīng)遷移網(wǎng)絡(luò)為核心,開(kāi)發(fā)了一套包含前后端的面包類食品的溯源、溯鮮系統(tǒng),意在滿足面包市場(chǎng)需求、擴(kuò)寬面包市場(chǎng)藍(lán)海。
圖6 系統(tǒng)交互示意圖