魏甫豫,張振宇,梁桂珍
(1.河北工程大學 園林與生態(tài)工程學院,河北 邯鄲 056000;2.新鄉(xiāng)學院 a.美術(shù)學院;b.數(shù)學與統(tǒng)計學院,河南 新鄉(xiāng) 453000)
我國作為占世界近四分之一人口的大國,糧食問題直接影響人們的物質(zhì)生活水平,關(guān)系到國家的穩(wěn)定.農(nóng)業(yè)是我國重要的基礎產(chǎn)業(yè),蟲害是影響糧食生產(chǎn)的重要限制條件之一,因此蟲害防治就顯得尤為重要.但昆蟲種類眾多,目前已知的種類超過百萬.對于不同種類的蟲害也需要有相應針對性的防治措施.因此高效快速準確識別昆蟲種類是有效防治蟲害的前提.在農(nóng)作物蟲害識別及預測領域,我國傳統(tǒng)方法且目前仍普遍使用的辦法多是早期傳統(tǒng)人工類識別方法,即對昆蟲種類的識別都是基于人工調(diào)查,如目測法、拍打法、掃網(wǎng)法、誘捕法[1]等,大多通過昆蟲專家或相關(guān)領域?qū)W者對昆蟲進行人工識別,其準確性精準度取決于相關(guān)調(diào)查專家的專業(yè)水平,且現(xiàn)有昆蟲學領域相關(guān)專家和專業(yè)人員無法滿足分布廣泛、各類場景的實際應用需求.因此這類方法局限性很大,效率低下,費時費力,很難做到高效率快速識別,不是最佳的監(jiān)測識別方法.隨著人工智能機器學習的快速發(fā)展,特別是在深度學習領域各種算法不斷涌現(xiàn),使得在昆蟲種類圖像領域方面進行高效快速準確的識別成為可能.
在深度學習領域,CNN即卷積神經(jīng)網(wǎng)絡是一種在圖像分類識別領域極具優(yōu)勢的方法.其結(jié)構(gòu)包含輸入層、隱含層和輸出層,且卷積神經(jīng)網(wǎng)絡的隱含層包含卷積層、池化層、全連接層,這個五層結(jié)構(gòu)是一個標準的卷積神經(jīng)網(wǎng)絡模型.卷積層作為重要的核心模塊,它包含多個卷積核,可以從輸入圖像中提取特征.池化層可以重新提取卷積層的特征,即多重濾波增強特征信息.全連接層將提取的特征結(jié)合起來,以便最終使用softmax進行目標分類.首個標準深度卷積神經(jīng)網(wǎng)絡是由LeNet-5[2]開始,其模型在灰度圖像手寫體字符識別方面有著很高的識別率,其也含有標準CNN網(wǎng)絡結(jié)構(gòu).隨后在2012年AlexNet[3]網(wǎng)絡在ImageNet大賽有著突出表現(xiàn),AlexNet網(wǎng)絡將激活函數(shù)Sigmoid[4]替換成ReLU[5],ReLU函數(shù)具有梯度穩(wěn)定的特點,解決了神經(jīng)網(wǎng)絡中梯度彌散的問題.自此,基于卷積神經(jīng)網(wǎng)絡的算法和模型大量出現(xiàn),并在計算機視覺領域迅速發(fā)展.
隨著模型深度越來越深,模型復雜度也不斷增加.后續(xù)產(chǎn)生了一系列模型網(wǎng)絡,如Google提出的googLeNet[6]網(wǎng)絡模型,由牛津大學視覺幾何計算組提出的VGG[7]模型等.而由微軟提出的ResNet[8]殘差網(wǎng)絡解決了神經(jīng)網(wǎng)絡深度增加帶來網(wǎng)絡退化的問題,緩解了深度神經(jīng)網(wǎng)絡增加深度梯度消失的難題.其模型優(yōu)化方便,性能有了大幅提升.卷積神經(jīng)網(wǎng)絡在圖像識別領域之所以能被廣泛應用并取得顯著效果的關(guān)鍵在于它的兩個特點,即局部連接和權(quán)值共享方式.局部連接指CNN與ANN神經(jīng)元全連接不同,而是進行部分連接,好處是在特定視域下每個卷積核都可以專注于一種特征.權(quán)值共享意味著在同層中的卷積核參數(shù)共享,并且可以直接輸入圖像,較傳統(tǒng)圖像識別復雜圖像特征提取方法更優(yōu).
使用卷積神經(jīng)網(wǎng)絡進行圖像識別雖然有很大的優(yōu)勢,但其對數(shù)據(jù)集的要求較高,并且需要大量標記數(shù)據(jù)集進行訓練.遷移學習是深度學習中一種非常重要的方法.在圖像識別領域,采用預訓練模型作為新任務的第一個模型來訓練新任務的數(shù)據(jù)集.其目的是使用預訓練模型的權(quán)重和參數(shù)重新訓練新的數(shù)據(jù)集,加快新模型的收斂速度,減少對數(shù)據(jù)集中數(shù)據(jù)量的需求,并減少數(shù)據(jù)不足導致的模型過度擬合.簡而言之,舊領域(即源領域)的學習模型將應用于新領域(即目標領域)上.遷移學習有多種類型,例如基于樣本、特征、參數(shù)和關(guān)系的遷移學習.在實踐中,使用遷移學習可以節(jié)省從頭開始訓練新的神經(jīng)網(wǎng)絡的時間.因為由個人創(chuàng)建像ImageNet這樣龐大數(shù)據(jù)集是不現(xiàn)實的.在大多數(shù)情況下,在特定的實際應用場景中很少有標記的數(shù)據(jù)集.因此,使用預訓練模型進行微調(diào)是一個非常好的選擇.
當前已有很多專家學者對不同種類的昆蟲進行了研究,成果顯著.彭明杰[9]構(gòu)建了蜻蜓識別系統(tǒng),張瑞瑞等[10]首次將基于神經(jīng)網(wǎng)絡方法運用于松材線蟲病變色木識別方面,薛大暄等[11]設計了一種識別模型IHCDM結(jié)合Inception _ v2 網(wǎng)絡的 Faster R-CNN,對單一種類物體進行目標檢測有良好的檢測效果,對美國白蛾可達到99.5%識別率.王衛(wèi)民等[12]構(gòu)建了昆蟲圖像分割的Insect-Net模型,基于U-Net可將圖片背景與目標昆蟲進行分離并計數(shù).王茂林等[13]設計的自動化計數(shù)軟件運用 OpenCV和 VGG相結(jié)合,可以精準對薊馬進行預測預報.陳彥彤等[14]提出了蠅類面部識別模型,此模型將蠅類面部輪廓和具體部位進行特征提取,結(jié)果表明對蠅類面部識別準確率可達94.03%.張銀松等[15]設計了一種改進的目標檢測算法,將Faster-RCNN主干網(wǎng)絡由ResNet50代替VGG16,可以更有效地提取小昆蟲的特征,減少密集昆蟲區(qū)域漏檢.由此可見,在昆蟲種類圖像識別領域,已有許多學者開展了相關(guān)研究,且取得了較為顯著的結(jié)果.但基于以上研究表明,目前已有研究大多為特定場景下優(yōu)化階段,未能在實際應用場景下落地部署發(fā)布.
深度學習領域的技術(shù)已日趨成熟,尤其在圖像識別領域的卷積神經(jīng)網(wǎng)絡及目標檢測算法在不斷優(yōu)化與迭代.在昆蟲種類圖像識別領域獲得了顯著的研究結(jié)果,并有了極大的發(fā)展.在實際應用領域,已有相關(guān)科研單位及高校與科技公司進行項目合作,探索開發(fā)出了多款昆蟲圖像識別APP產(chǎn)品,如慧植農(nóng)當家、植保家等APP.但仍有不足,一方面是由于日常實際應用場景下獲取識別圖像的干擾較大,在不同場景下其算法模型難以適用.另一方面,由于昆蟲種類眾多,需要大量的昆蟲圖像數(shù)據(jù)集來對算法模型進行訓練.而現(xiàn)有昆蟲數(shù)據(jù)集大多是某一些昆蟲種類或針對特定科研目的場景下昆蟲集合的數(shù)據(jù)集,其種類及數(shù)量都相對有限,目前尚未有較為完善的昆蟲種類數(shù)據(jù)集來支撐.因此其數(shù)據(jù)集訓練的對應算法模型就不能滿足實際應用場景下昆蟲識別的普適性需求.由此可見,進行構(gòu)建模型到端的場景化研發(fā)應用就顯得非常重要且勢在必行了.
為實現(xiàn)模型到端的基于場景化研發(fā)應用需求,本文基于kaggle開源昆蟲數(shù)據(jù)集,利用開源工具Paddle,基于ImageNet的預訓練模型采用兩種目前比較流行的卷積網(wǎng)絡結(jié)構(gòu)MobileNetV2和ResNet50_vd_ssld進行遷移學習訓練.本實驗模型訓練環(huán)境為Windows10版X64_64bit操作系統(tǒng),Intel i5-4590CPU處理器,Intel(R)HDGraphics 4600顯存,8 GB內(nèi)存.
3.1.1數(shù)據(jù)準備
本實驗模型到端場景化應用研究的數(shù)據(jù)集以kaggle平臺上的昆蟲開源數(shù)據(jù)集arthropod-taxonomy-orders-object-detection-dataset作為實驗數(shù)據(jù)集,簡稱ArTaxOr數(shù)據(jù)集.kaggle是2010年由Anthony Goldbloom在墨爾本創(chuàng)立的平臺,作為一個為開發(fā)者和數(shù)據(jù)科研學家提供機器學習競賽與分享數(shù)據(jù)編程等功能的平臺.ArTaxOr數(shù)據(jù)集共15 376張圖片,占12.06 GB大小.圖像大多拍攝于自然條件下的場景,包含7類數(shù)據(jù), Araneae,Coleoptera,Diptera,Hemiptera,Hymenoptera,Lepidoptera,Odonata,即蜘蛛目、鞘翅目、雙翅目、半翅目、膜翅目、鱗翅目和蜻蜓目.每類目昆蟲包含2 000余張圖片,共計15 000余張圖片.
3.1.2數(shù)據(jù)預處理
考慮CNN算法在圖像視點變化及對數(shù)據(jù)波動變化處理能力的不足,如出現(xiàn)目標在圖像中不同位置,有不同角度、包含不同背景、以不同光照強度的情況.為了使訓練模型具有更好魯棒性并提高擬合度,在進行數(shù)據(jù)集訓練前,需要對數(shù)據(jù)進行預處理.對數(shù)據(jù)集進行數(shù)據(jù)增強優(yōu)化策略,隨機對圖像進行水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)進行位置改變,進行隨機亮度、隨機對比度調(diào)整,并進行圖像歸一化Normalize處理,進而擴充數(shù)據(jù)集,提高模型泛化能力.
利用Paddle內(nèi)置工具命令對本實驗數(shù)據(jù)集進行數(shù)據(jù)劃分,將數(shù)據(jù)劃分為訓練集、驗證集和測試集.執(zhí)行命令需要提前在對應實驗PC機上預安裝Paddle,通過pip安裝命令可進行快速安裝Paddle.命令執(zhí)行可將數(shù)據(jù)集隨機劃分為70%的訓練集,20%驗證集,10%的測試集.并自動在對應目錄下生成labels.txt,train_list.txt,val_list.txt,test_list.txt 4個文件,即標簽文本、訓練集文本、驗證集文本和測試集文本.命令行如下:
paddlex--split_dataset--format ImageNet--dataset_dir ArTaxOr--val_value 0.2--test_value 0.1.
3.1.3模型訓練
Paddle作為基于飛槳核心框架、開發(fā)套件及深度全流程的開發(fā)工具,內(nèi)置了20余種圖像分類模型網(wǎng)絡,包括適用于移動端的MobileNet系列網(wǎng)絡,及適用于服務器端的其他類型,如ResNet系列,DenseNet[16]系列等內(nèi)置模型網(wǎng)絡.由微軟提出的ResNet殘差網(wǎng)絡解決了神經(jīng)網(wǎng)絡深度增加導致的網(wǎng)絡退化問題,緩解了深度神經(jīng)網(wǎng)絡增加深度梯度消失的難題.其模型易優(yōu)化,性能有了大幅提升.至今ResNet都仍是非常穩(wěn)定的CNN骨架網(wǎng)絡,而其模型深度也已達152層之多.經(jīng)典流行的ResNet雖然在識別效果上有足夠精準度,但其模型參數(shù)量和訓練計算量巨大,在某些實際場景下,這些過于龐大且復雜的模型難以應用于嵌入式設備或移動終端.因此更適合移動端的輕量級CNN模型設計就應運而生.MobileNet系列是輕量級經(jīng)典網(wǎng)絡模型.谷歌在2017年提出了MobileNetV1[17],其最重要的創(chuàng)新是提出了深度可分離卷積(depthwise separable convolution),其主要作用是將傳統(tǒng)網(wǎng)絡中的卷積分離成兩步來進行,分別為depthwise和pointwise.這樣的好處是比傳統(tǒng)卷積神經(jīng)網(wǎng)絡減少了幾倍的計算量,其缺點是會損失一定的精度.MobileNetV1在網(wǎng)絡深度上已經(jīng)減少到28層,但其泛化能力較強,保持了較高的網(wǎng)絡魯棒性.2018年谷歌提出MobileNetV2[18],較之MobileNetV1引入了Inverted Residuals和Linear Bottlenecks,即反向殘差和線性瓶頸,雖然網(wǎng)絡為54層,但優(yōu)化了網(wǎng)絡結(jié)構(gòu),模型體積更小,速度更快.
適用于服務器端ResNet系列中的ResNet50_vd_ssld模型網(wǎng)絡大小為103.5 MB,在ImageNet數(shù)據(jù)集上Top1準確率有82.4%,Top5準確率有96.1%,相比于此系列的其他模型網(wǎng)絡在體積大小適合的同時也保持有更高精度.適用于移動端MobileNet系列中的MobileNetV2模型網(wǎng)絡大小為15.0 MB,在ImageNet數(shù)據(jù)集上Top1準確率有72.2%,Top5準確率有90.7%,相比于此系列的其他模型網(wǎng)絡在較小體積的同時也保持有較高精度.因此本實驗采用了輕量級較具代表性MobileNet系列中的模型小預測快速的MobileNetV2與經(jīng)典模型ResNet系列中模型精度高的ResNet50_vd_ssld兩種模型網(wǎng)絡進行數(shù)據(jù)集訓練.實驗MobileNetV2網(wǎng)絡與ResNet網(wǎng)絡采用在ImageNet上訓練模型作為預訓練模型,并對MobileNetV2網(wǎng)絡不進行加載預訓練模型作為參照組.針對本實驗數(shù)據(jù)集,對Paddle訓練接口的內(nèi)置參數(shù)進行fine-tune.最主要核心參數(shù)調(diào)整如下:
pretain_weights(str):即預訓練模型.若為指定路徑,則加載路徑下預訓練模型;若為字符串"IMAGENET",則自動下載imagenet數(shù)據(jù)集的預訓練模型權(quán)重;若為None,則不進行預訓練模型加載.默認為"IMAGENET".本實驗使用"IMAGENET"為預訓練模型,并采用None作為不進行加載預訓練模型的參照組.
num_epochs(int):訓練迭代輪數(shù),即模型對所有樣本數(shù)據(jù)訓練集訓練一輪就是一個epoch.本實驗參數(shù)設置為8.
learning_rate(float):本實驗采用默認初始學習率0.025.
train_batch_size(int):訓練數(shù)據(jù)批大小,默認為64.batch_size設定大小跟實驗環(huán)境所需的GPU或CPU相關(guān),設定值越大,對相應顯存或內(nèi)存消耗越大.本實驗設置參數(shù)為100.
save_interval_epochs(int):模型保存迭代輪數(shù)間隔,本實驗采用默認值1,即為每一輪進行一次模型保存.
lr_decay_gamma(float):默認優(yōu)化器的學習率衰減率.默認為0.1.
lr_decay_epochs(list):默認模型優(yōu)化器的學習率衰減輪數(shù),默認為[30,60,90].本實驗采用[4,6,8],即學習率在第4個epoch,第6個epoch和第8個epoch進行衰減.每一次衰減為上次學習率與 lr_decay_gamma的乘積,即每次衰減為之前學習率的0.1.
3.1.4模型訓練結(jié)果
基于不同預訓練模型的訓練預測值匯總?cè)绫?所示.
表1 基于不同預訓練模型的訓練結(jié)果
對比不加載預訓練模型MobileNetV2模型網(wǎng)絡與加載ImageNet模型的MobileNetV2模型網(wǎng)絡,Top1預測精準度分別為0.294 6和0.746 0,Top5預測精準度分別為0.861 1和0.982 1.訓練結(jié)果可以明顯看出,運用遷移學習加載預訓練模型的網(wǎng)絡能更高效對目標數(shù)據(jù)集進行模型訓練,且結(jié)果更加收斂,魯棒性高.對比加載ImageNet的MobileNetV2模型網(wǎng)絡和ResNet50_vd_ssld模型網(wǎng)絡,在Top1預測精準度上,ResNet50_vd_ssld比MobileNetV2高近14個百分點,在Top5預測精準度上,ResNet50_vd_ssld比MobileNetV2高1.37個百分點.訓練的結(jié)果可以明顯看出,ResNet50_vd_ssld模型網(wǎng)絡在同等條件下訓練所得模型各個指標均高于MobileNetV2模型網(wǎng)絡.但若考慮其二者的模型大小、模型訓練預測時長及預測Top5準確率的差異,MobileNetV2模型網(wǎng)絡其綜合性能比更高,相對于ResNet50_vd_ssld模型網(wǎng)絡更適用于部署發(fā)布應用,即符合MobileNetV2適用于移動端開發(fā)部署的要求.
3.1.5模型結(jié)果保存
Paddle在訓練時,可根據(jù)訓練接口的save_interval_epoch參數(shù)進行保存模型,保存模型目錄中的model.pdparams包含"_model_","_params_"和"model.yml"3個文件."_model_"即為網(wǎng)絡結(jié)構(gòu)的相關(guān)信息."_params_"為包括網(wǎng)絡模型的參數(shù)權(quán)重信息.這兩個文件也是作為后續(xù)EasyEdge開源平臺模型部署發(fā)布所必需的信息文件.
目標檢測的產(chǎn)生源于傳統(tǒng)CNN網(wǎng)絡無法對圖像內(nèi)對應目標進行定位,只能進行相應的分類且不能對多目標物體進行檢測.而目標檢測算法的出現(xiàn)和發(fā)展,大大加速了圖像目標定位的實現(xiàn).目標檢測實現(xiàn)了圖像中目標對象的定位和分類兩重性問題,且更進一步解決了多目標的分類及定位問題.使得圖像識別應用領域更廣泛,運用場景更加多元化.其算法核心在于對定位目標的錨點Anchor設定,即選取候選框.針對Anchor設定不同,大致可分為Anchor-Based算法和Anchor-Free算法兩大類.Anchor-Based算法中針對Anchor是否和目標分類同時進行檢測,可分為兩階段算法和單階段算法.兩階段算法指先在圖像上選取候選框,再對候選框目標進行分類,其代表是Faster R-CNN[19],提出RPN(Region proposal network區(qū)域建議網(wǎng)絡)代替SS(selective search),提高精度同時還大大減少了目標候選框數(shù)量,提升了速度.單階段算法的代表是YOLO[20]算法,單階段算法速度遠大于兩階段算法,且對于目標定位的精準度也沒有較大損失.
3.2.1數(shù)據(jù)準備
采用百度開源Insect_det數(shù)據(jù)集作為目標檢測數(shù)據(jù),此數(shù)據(jù)集涵蓋共6大種類,包括leconte,boerner,armandi,linnaeus,coleoptera,acuminatus,共計217張標注圖像.
其數(shù)據(jù)標注采用VOC數(shù)據(jù)格式,即每張圖像含有同名XML文件.其包括圖像尺寸大小,目標物體類別、坐標等信息.具體字段如下所示:
圖像名稱:
圖像尺寸,包括寬度、高度和深度:
目標名稱及坐標,還有一些如目標對象姿態(tài)、目標被截斷原因、和識別難易程度等非必須字段:
3.2.2數(shù)據(jù)預處理
考慮目標檢測數(shù)據(jù)集作為一個小樣本集,為使訓練模型具有更好魯棒性并提高擬合度,在進行訓練前,也對其進行預處理.對數(shù)據(jù)集進行數(shù)據(jù)增強優(yōu)化策略,如隨機對圖像進行水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)進行位置改變,進行隨機亮度、隨機對比度調(diào)整.進而擴充數(shù)據(jù)集.并對數(shù)據(jù)集按照70%的訓練集,20%驗證集,10%的測試集劃分.
3.2.3模型訓練
框架采用Paddle,其內(nèi)置包含如FasterRCNN及Yolo系列等具有代表性的目標檢測模型網(wǎng)絡.本文采用兩階段具有代表性的FasterRCNN-ResNet50網(wǎng)絡,及單階段Yolo系列的YoloV3-MobileNetV3,PPYoloTiny-MobileNetV3網(wǎng)絡進行訓練.
其各自核心參數(shù)是FasterRCNN-ResNet50:運用兩階段FasterRCNN與以ResNet50為主干網(wǎng)絡,采取在COCO數(shù)據(jù)集上的預訓練模型,輸入圖像尺寸為800×1 333,迭代輪數(shù)為12,學習率為0.002 5,Batch size為2,學習衰減輪數(shù)為[8,11];YoloV3-MobileNetV3:運用單階段YoloV3與以MobileNetV3為主干網(wǎng)絡,采取在COCO數(shù)據(jù)集上的預訓練模型,輸入圖像尺寸為608×608,迭代輪數(shù)為100,學習率為0.004 167 7,Batch size為8,學習衰減輪數(shù)為[50,90];PPYoloTiny-MobileNetV3:運用單階段PPYoloTiny與以MobileNetV3為主干網(wǎng)絡,采取在COCO數(shù)據(jù)集上的預訓練模型,輸入圖像尺寸為608×608,迭代輪數(shù)為100,學習率為0.004 167 7,Batch size為8,學習衰減輪數(shù)為[50,90].
與圖像分類衡量網(wǎng)絡準確率的Top1與Top5不同,目標檢測的衡量網(wǎng)絡性能有幾個常見指標:IoU閾值:目標檢測的測量符合條件依據(jù)IoU閾值判定,其表示預測框和真實標簽框的交集與預測框和真實標簽框的并集比值,常規(guī)設定為0.5,TP表示正樣本被識別正確的總量,F(xiàn)P表示負樣本被錯誤識別為正樣本的總量即誤報量,F(xiàn)N表示正樣本被識別為負樣本的總量即漏報量.precision(P)表示找出正確框數(shù)量概率,即精準度.recall(R)表示找出正確框的比例,即召回率.PA表示各類別目標平均精度值,也是由PR曲線面積所表示。PR曲線面積表示精準度和召回率所形成的面積,用積分計算.mPA表示所有類別的PA均值.公式如下所示:
精準度precison(P)公式為
召回率recall(R)公式為
3.2.4模型訓練結(jié)果
采用COCO預訓練模型的FasterRCNN-ResNet50網(wǎng)絡訓練結(jié)果如圖1所示.
運用FasterRCNN-ResNet50網(wǎng)絡訓練在精準率上最高的一類為acuminatus的0.800 0,最低的一類為coleoptera的0.486 5;在召回率上最高的一類為boerner的0.968 8,最低的一類為acuminatus的0.695 7;在AP上最高一類為boerner的0.969 4,最低一類為acuminatus的0.767 2.6大類別整體平均精準率即mAP為0.878 2.
采用COCO預訓練模型的YoloV3-MobileNetV3網(wǎng)絡訓練結(jié)果如圖2所示.
運用YoloV3-MobileNetV3網(wǎng)絡訓練在精準率上最高的一類為boerner的0.965 5,最低的為coleoptera與armandi兩類,同為0.680 0;在召回率上最高的一類為leconte的0.921 6,最低的一類為acuminatus的0.565 2;在AP上最高一類為boerner的0.969 1,最低一類為acuminatus的0.772 1.6大類別整體平均精準率即mAP為0.877 2.
采用COCO預訓練模型的PPYoloTiny-MobileNetV3網(wǎng)絡訓練結(jié)果如圖3所示.
運用PPYoloTiny-MobileNetV3網(wǎng)絡訓練在精準率上最高的一類為leconte的0.770 5,最低的一類為armandi的0.380 0;在召回率上最高的一類為linnaeus的1.000 0,最低的一類為acuminatus的0.478 3;在AP上最高一類為boerner的0.932 0,最低一類為armandi的0.398 2.6大類別整體平均精準率即mAP為0.712 1.
對比目標檢測網(wǎng)絡訓練結(jié)果可知,由FasterRCNN-ResNet50及YoloV3-MobileNetV3訓練所得模型網(wǎng)絡mAP指標較好,考慮模型大小、訓練時長及模型響應時間等性能指標,YoloV3-MobileNetV3訓練模型更適用于部署發(fā)布應用,即適用于邊緣設備開發(fā)部署的要求.
3.2.5模型結(jié)果保存
Paddle在訓練時,可根據(jù)訓練接口的save_interval_epoch參數(shù)進行保存模型,與目標分類產(chǎn)生文件信息不同,網(wǎng)絡結(jié)構(gòu)信息文件名為model.pdmodel,網(wǎng)絡參數(shù)文件為model.pdiparams.這兩個文件也是作為后續(xù)EasyEdge開源平臺模型目標檢測部署發(fā)布所必需的信息文件.
訓練完成的模型往往并不能直接在端的產(chǎn)品級應用,需要根據(jù)不同型號不同硬件配置的服務端或移動端來進行針對性的部署和發(fā)布,如較為便捷的方式利用Docker開源應用容器進行打包,將應用包到一個可移植的鏡像中,其可在Windows或Linux系統(tǒng)上發(fā)布,但其最大一個局限性是不能在32 bit的Linux或Windows環(huán)境下使用.而開源EasEdge可以解決所有關(guān)于模型最終發(fā)布為端產(chǎn)品的局限性問題.提供了統(tǒng)一方案和開源平臺,讓開發(fā)者能更高效率將訓練模型發(fā)布于APP產(chǎn)品或應用于服務端,嵌入式設備中.
本實驗采用百度開源服務平臺EasyEdge,可將訓練好的模型快速轉(zhuǎn)化并發(fā)布成到端的模型應用.其產(chǎn)品包含模型中心,純離線服務,端協(xié)同服務三大功能模塊部分.模型應用部分包括自建模型和開源模型兩類.開源模型涵蓋近10多種開源模型,包括圖像分類及目標檢測等.本實驗利用自建模型功能,訓練模型發(fā)布使用方式如下,選擇模型中心的上傳本地模型模塊.如圖4所示.
模型類型內(nèi)置圖像分類、物體檢測、人臉檢測、姿態(tài)估計、語義分割5種主流方式,模型框架涵蓋了幾乎所有現(xiàn)今主流框架,如caffe,TensorFlow,PyTorch等,且其對應框架下也幾乎涵蓋目前主流所有模型網(wǎng)絡.如圖像分類中的AlexNet,VGG系列,MobileNet系列,ResNet系列等近20余種,物體檢測中的SSD,FasterRCNN,Yolo系列,PP-Yolo系列等.
部署昆蟲圖像分類模型網(wǎng)絡:在自定義模型名稱中將本實驗模型名稱定為kaggle-Insect.本實驗選擇模型的類型為圖像分類,采用PaddlePaddle框架,模型網(wǎng)絡使用MobileNet系列的MobileNetV2.網(wǎng)絡結(jié)構(gòu)采用MobileNetV2訓練模型的_model_,網(wǎng)絡參數(shù)使用MobileNetV2訓練模型的_params_,模型標簽使用對應實驗數(shù)據(jù)集的標簽文本即label.txt.選好相應配置及上傳相關(guān)內(nèi)置參數(shù)文件后,點擊校驗并提交模型功能按鈕.
部署昆蟲目標檢測模型網(wǎng)絡:在自定義模型名稱中將本實驗模型名稱定為Yolo-Insect.本實驗選擇模型的類型為目標檢測,采用PaddlePaddle框架,模型網(wǎng)絡使用Yolo系列的YoloV3.網(wǎng)絡結(jié)構(gòu)采用YoloV3-MobileNetV3訓練模型的model.pdmodel,網(wǎng)絡參數(shù)使用YoloV3-MobileNetV3訓練模型的model.pdiparams,模型標簽使用對應實驗數(shù)據(jù)集的標簽文本即label.txt.選好相應配置及上傳相關(guān)內(nèi)置參數(shù)文件后,點擊校驗并提交模型功能按鈕.
在平臺進行系統(tǒng)校驗后會自動分配模型ID及顯示對應模型名稱,模型類型以及后續(xù)SDK操作功能.應用生成端模型功能,會顯示相應發(fā)布離線SDK界面(如圖5).端模型提供模型網(wǎng)絡相適用的各類芯片硬件、操作系統(tǒng).其芯片硬件涵蓋目前市面主流各類廠商產(chǎn)品,包括服務端與移動端,如通用x86芯片、通用ARM芯片、蘋果A-Bionic、高通驍龍GPU與DSP、華為海思NPU、英特爾系列處理器、英偉達GPU等.操作系統(tǒng)也包括目前主流的移動端Android、IOS與服務器端Windows、Linux.并且可支持單模型多版本SDK發(fā)布.
在進行多版本設置進行發(fā)布后,平臺系統(tǒng)會自動校驗并生成對應版本SDK.在全部模型界面下可以看到目前版本生成狀態(tài).已發(fā)布的模型版本可以進行獲取SDK,Demo體驗下載等操作.運用手機瀏覽器進行對應SDK二維碼掃描即可下載對應版本SDK應用.最終實現(xiàn)模型到邊緣產(chǎn)品的發(fā)布流程.
本文在昆蟲種類識別領域技術(shù)基礎方面對卷積神經(jīng)網(wǎng)絡CNN及其發(fā)展的脈絡進行說明,并對目前深度學習應用于圖像分類、目標檢測方面的主流模型網(wǎng)絡進行梳理,介紹了遷移學習相關(guān)的原理,結(jié)合目前昆蟲種類研究識別現(xiàn)狀,提出了一種模型到邊緣的落地場景的全流程開發(fā)應用實現(xiàn)方法.以深度學習圖像分類及目標檢測兩方面主流模型網(wǎng)絡為主,本文在圖像分類上采用kaggle開源昆蟲數(shù)據(jù)集作為實驗數(shù)據(jù)集,運用Paddle開源框架工具,采用基于ImageNet的預訓練模型并對比兩種目前比較流行的卷積神經(jīng)網(wǎng)絡結(jié)構(gòu)MobileNetV2和ResNet50_vd_ssld進行遷移學習訓練.在目標檢測上采用百度開源昆蟲數(shù)據(jù)集作為實驗數(shù)據(jù)集,采用基于COCO的預訓練模型并對比兩階段有代表性的FasterRCNN及單階段具有代表性的Yolo系列兩種網(wǎng)絡進行遷移學習訓練.并對其實驗效果較好的圖像分類中MobileNetV2訓練模型及目標檢測中YoloV3-MobileNetV3訓練模型在EasyEdge上進行部署發(fā)布,生成了應用于移動端的SDK版本.完成了從模型構(gòu)建到端的落地場景的全流程開發(fā)應用實現(xiàn),為后續(xù)昆蟲圖像識別在場景化應用方面的研究提供依據(jù)參考.本實驗也存在一定局限性,如在數(shù)據(jù)集上未采用細分類數(shù)據(jù)集,只是劃分到目級,對于科級和種級未進行探究實驗,對于像昆蟲種類較為細化的圖像識別領域訓練模型不夠細化,目標檢測場景化數(shù)據(jù)性較弱.這也是今后需要繼續(xù)深入研究的方向.