史晨陽,楊自忠,陳響育,張宇航,錢正坤,王永良,王建明*
(1.大理大學數(shù)學與計算機學院,云南大理 671003;2.云南省昆蟲生物醫(yī)藥研發(fā)重點實驗室,云南大理 671000)
蜘蛛在生態(tài)系統(tǒng)中具有重要地位,在生物防治、藥物研究等領(lǐng)域中起重要作用,在維持農(nóng)林生態(tài)系統(tǒng)穩(wěn)定中的作用更是不容忽視。而要加速對蛛形類資源的研究、開發(fā)與利用,首先需要解決物種的鑒定與識別問題。目前已經(jīng)有諸多植物、大型動物的智能識別技術(shù)或系統(tǒng),一定程度上解決了科研、生產(chǎn)上缺乏專家指導的問題,但目前有關(guān)蜘蛛物種的智能識別研究鮮有報道〔1〕。因此,研究蜘蛛物種的智能識別技術(shù),對于生態(tài)領(lǐng)域蜘蛛病蟲害防治、物種保護、藥物研發(fā)等方面具有極大的促進作用,具有較大的理論及實踐價值。
當前深度學習是物種圖像識別分類的重要方法,相比于人工篩選的方法,它能對圖像高效識別和分類,減小識別錯誤率和縮短識別分類時間。深度學習的效果嚴重依賴于數(shù)據(jù)的數(shù)量與質(zhì)量,數(shù)據(jù)量不足會導致模型識別精度低下。而對于物種圖像數(shù)據(jù)的采集,難以有效保證數(shù)據(jù)的數(shù)量與質(zhì)量,對于蜘蛛物種來說更是如此。大多數(shù)蜘蛛物種如顏氏大疣蛛(Macrothele yani)、白額巨蟹蛛(Heteropoda venatoria)等一般于夜間出沒捕食且容易受到驚嚇而逃跑,只能于夜間進行物種圖像數(shù)據(jù)的采集,在一定程度上加劇了數(shù)據(jù)的采集難度,數(shù)據(jù)質(zhì)量也難以保證。同時,對大量無標簽樣本進行標注工作也將會耗費極大的人力。因此,如何通過技術(shù)手段,有效提高蜘蛛物種圖像數(shù)據(jù)的數(shù)量與質(zhì)量,更好地支撐圖像識別分類相關(guān)研究,是值得重點研究并解決的問題。目前,國內(nèi)外對于蜘蛛識別研究有一定進展,Ticay-rivas 等〔2〕使用具有徑向基函數(shù)的最小二乘向量支持機作為分類器,對蜘蛛進行識別和驗證。Dolev 等〔3〕對跳躍蜘蛛的先天圖案的識別和分類進行了研究。Clark 等〔4〕研究了跳躍蜘蛛的視頻圖像識別。然而,以上研究多是針對單一的一種蜘蛛進行理論上的研究,且沒有形成可實際應(yīng)用的系統(tǒng)軟件。針對上述問題,本文設(shè)計了一種基于遷移學習的蜘蛛物種細粒度識別方法,以在ImageNet〔5〕上預(yù)訓練的VGG-16〔6〕模型參數(shù)作為初始參數(shù),從而利用預(yù)訓練模型強大的特征提取能力,緩解訓練數(shù)據(jù)不足帶來的訓練過擬合以及模型精度不足問題。并以此為基礎(chǔ),結(jié)合數(shù)據(jù)增強技術(shù),研建了蜘蛛物種智能識別系統(tǒng)平臺。
1.1 數(shù)據(jù)來源通過野外采集、網(wǎng)絡(luò)爬蟲的方式獲取原始數(shù)據(jù)集,經(jīng)專家人工分類鑒定并標注,之后采用下述方法進行數(shù)據(jù)增強?;谇熬巴怀龅闹┲霐?shù)據(jù)增強示例見圖1,數(shù)據(jù)集的劃分和設(shè)置見表1。
圖1 蜘蛛數(shù)據(jù)集
表1 數(shù)據(jù)集設(shè)置
1.2 數(shù)據(jù)增強
1.2.1 傳統(tǒng)數(shù)據(jù)增強 傳統(tǒng)數(shù)據(jù)增強是解決小樣本學習問題的常用方法。流行的有幾何變換類:翻轉(zhuǎn)、旋轉(zhuǎn)、裁剪、縮放變形、仿射,顏色變換類:噪聲、隨機擦除、模糊、超像素法、顏色變換〔7〕等。
1.2.2 基于突出前景的數(shù)據(jù)增強技術(shù) 基于顯著性目標檢測〔8〕(salient object detection,SOD)能夠快速且較為準確地區(qū)分出一張圖片中人們可能感興趣的目標或區(qū)域,這樣當面對日益增長的大量圖像時,可以通過該方法分割圖像中重要的部分,對于蜘蛛數(shù)據(jù)集使用顯著性目標檢測可以快速地提取蜘蛛前景。
本文針對小樣本數(shù)據(jù)集模型訓練樣本量過少導致的過擬合問題,設(shè)計了一種可突出前景的數(shù)據(jù)增強方法,使用預(yù)訓練的U-Net〔9〕圖像分割模型對蜘蛛前景進行提取并結(jié)合PS(Photo Shop)技術(shù)實現(xiàn)自動替換純色背景來實現(xiàn)數(shù)據(jù)增強,最后結(jié)合傳統(tǒng)數(shù)據(jù)增強方法構(gòu)造新數(shù)據(jù)集。數(shù)據(jù)增強示例見圖1。
1.3 數(shù)據(jù)集設(shè)置經(jīng)過基于突出前景的數(shù)據(jù)增強方法和傳統(tǒng)數(shù)據(jù)增強的方法擴充數(shù)據(jù)后,將其與原圖進行混合,構(gòu)建了4 科1 種共5 類蜘蛛的數(shù)據(jù)集。如表1 所示,分為初始數(shù)據(jù)集,其每個種類圖片數(shù)量為100 張左右,經(jīng)過數(shù)據(jù)增強后將原始數(shù)據(jù)集擴充了大約10 倍左右。由于只能使用原圖作為測試集,因此無法對測試集數(shù)量進行擴充,每類測試集圖片數(shù)量在60 張左右。
2.1 遷移學習遷移學習〔10〕的出現(xiàn)極大地提高了小樣本學習的精度,緩解了數(shù)據(jù)量不足帶來的過擬合問題,同時加速了神經(jīng)網(wǎng)絡(luò)的收斂。本文以大型數(shù) 據(jù) 集ImageNet 作 為 源 域〔11〕(Domain source,Ds),以目標任務(wù)的小型數(shù)據(jù)集作為目標域(Domain target,Dt)。ImageNet 中含有大量動物昆蟲類數(shù)據(jù)以及蜘蛛數(shù)據(jù),比較適合作為本研究的蜘蛛物種細粒度分類的源域。VGG-16 網(wǎng)絡(luò)由Simonyan 等〔6〕于2015 年提出,表現(xiàn)優(yōu)異,且VGG 適用于大多數(shù)物種分類任務(wù)。綜上所述,本文針對小樣本學習問題,將收集的絡(luò)新婦(Nephilaclavata)、蟹蛛(Thomisidae)、鼠蛛(M.tussulena)、園蛛(Araneidae)和捕鳥蛛(Theraphosidae)等5 類蜘蛛樣本數(shù)據(jù)集作為訓練樣本,使用VGG-16 作為目標模型進行遷移學習,具體流程見圖2。
圖2 基于共享參數(shù)的遷移學習
在遷移學習的范疇中有一種基于共享參數(shù)的遷移,其主要方法是預(yù)訓練(pre-training)加微調(diào)(fine-tuning)〔11-12〕。神經(jīng)網(wǎng)絡(luò)提取特征的規(guī)律是淺層的神經(jīng)網(wǎng)絡(luò)提取圖像的初級特征,如邊緣、紋理、角點等;中層的網(wǎng)絡(luò)提取顏色、形狀等中級特征,如在人臉識別任務(wù)中提取人臉的眼睛、鼻子、嘴巴等特征;而深層的神經(jīng)網(wǎng)絡(luò)則提取高級特征,如空間位置、相對方向等,并將前面提取到的局部特征進行組合。對于蜘蛛數(shù)據(jù)集來說,模型在訓練過程中提取特征的規(guī)律是先提取蜘蛛的邊緣輪廓,然后提取蜘蛛身上的細節(jié)信息,隨著網(wǎng)絡(luò)層次的加深,所提取的特征越抽象,對應(yīng)的特征矩陣也就越模糊,因此可利用大型數(shù)據(jù)集預(yù)訓練模型底層參數(shù)遷移的方法來彌補小樣本蜘蛛數(shù)據(jù)集訓練過程中底層特征提取不充分問題。模型訓練過程中提取蜘蛛圖像特征的特征矩陣見圖3。
圖3 特征矩陣
本文以VGG-16 作為識別模型,將在ImageNet上預(yù)訓練的VGG-16 模型去除3 個全連接層,只保留卷積層的參數(shù)作為初始參數(shù)。在使用蜘蛛數(shù)據(jù)集進行訓練的過程中,凍結(jié)模型所有卷積層參數(shù)不參與訓練,只訓練后面全連接層參數(shù)。因為模型底層提取的是邊緣輪廓等公共特征,使用在源域與目標域特征空間相似的大型數(shù)據(jù)集上預(yù)訓練過的參數(shù),可以解決因數(shù)據(jù)量不足造成的模型底層特征提取能力不足的問題,能將源模型的知識(參數(shù))遷移到新模型上進行新的分類任務(wù),從而增強模型的泛化能力。本文實驗遷移學習預(yù)訓練加微調(diào)的VGG-16結(jié)構(gòu)見圖4,模型的參數(shù)設(shè)置見表2。
表2 模型參數(shù)設(shè)置
圖4 微調(diào)VGG-16
2.2 評價指標采用以下指標衡量模型性能:
準確率:分類正確樣本數(shù)與樣本總數(shù)之比,如式(1)所示:
查準率:被模型正確識別的樣本數(shù)與被檢索到樣本總數(shù)之比,如式(2)所示:
召回率:被正確識別的樣本數(shù)與應(yīng)當被檢索到的樣本數(shù)之比,如式(3)所示:
其中,TP 表示被模型識別為正樣本的正樣本數(shù);FP 表示被模型識別為正樣本的負樣本數(shù);FN 表示被模型識別為負樣本的正樣本數(shù);TN 表示被模型識別為負樣本的負樣本數(shù);ALL 為樣本總數(shù)。
3.1 實驗環(huán)境本文蜘蛛智能識別平臺,物種識別模塊是其最核心的部分,通過遷移學習中預(yù)訓練加微調(diào)的方法,訓練VGG-16 模型,實現(xiàn)對不同種類蜘蛛的細粒度分類。實驗硬件配置為:RTX2080Ti GPU×1、內(nèi)存32 G×2、處理器Intel E5-2603×2。在Windows10 操作系統(tǒng)下使用Python 3.7 和Tensorflow 2.1 深度學習框架進行模型實現(xiàn)。
3.2 VGG-16 模型訓練過程在模型訓練之前首先要對數(shù)據(jù)進行重設(shè)尺寸(resize)、亂序(shuffle)及歸一化處理〔13〕。resize 是重新定義圖片尺寸以適應(yīng)不同模型,此處將圖片尺寸大小重設(shè)為VGG-16 模型的標準輸入尺寸224×224;shuffle 是打亂訓練圖片數(shù)據(jù)防止模型抖動,增加模型泛化能力;傳統(tǒng)的歸一化是將圖片像素[0,255]值控制到0~1 從而防止梯度爆炸或梯度消失。在使用預(yù)訓練模型參數(shù)時要按照預(yù)訓練模型的數(shù)據(jù)預(yù)處理方式對數(shù)據(jù)進行處理。此處因使用ImageNet 作預(yù)訓練數(shù)據(jù)集,故對于目標域數(shù)據(jù)集也要按照源域的數(shù)據(jù)預(yù)處理方式,減去ImageNet 數(shù)據(jù)集的圖像RGB 均值。
在進行數(shù)據(jù)預(yù)處理之后,將其輸入模型中進行訓練。設(shè)置Learning_rate(學習率)、Bach_size(1 次迭代使用的樣本量)、Epoch(迭代次數(shù))等超參數(shù)〔14〕。之后開始模型訓練,VGG-16 模型由13 個卷積層以及3 個全連接層組成,在第一個模塊由2 個堆疊的64 個卷積核對輸入圖像進行卷積操作,此時特征圖的維度由3 維變?yōu)?4 維,接著使用ReLU 函數(shù)對特征矩陣的權(quán)重x 進行激活,在x<0 時硬飽和,將權(quán)重置為0,x>0 時,導數(shù)為1,此時保持梯度不衰減,對應(yīng)的特征矩陣權(quán)值不變,從而緩解梯度消失的問題,ReLU 激活函數(shù)如式(4)所示:
之后進行最大池化操作,此時圖像尺寸被縮小為112×112。在第二個模塊由2 個堆疊的112 個卷積核進行卷積、ReLU、池化,此時圖像縮小為56×56,維度為128。重復上述過程,每次縮小圖像尺寸大小并擴張?zhí)卣骶仃嚨木S度,最后經(jīng)過全連接層,將局部特征組合為全局特征,通過Softmax 函數(shù)進行多分類并得到每個類的預(yù)測概率〔15〕,所有類別的概率相加起來約等于1。模型訓練過程需要經(jīng)過前向傳播和反向傳播。以nl表示第l 層網(wǎng)絡(luò)節(jié)點(卷積核)數(shù)目,Kp,q作為第l 層p 通道與第l 層q 通道對應(yīng)卷積核,bp表示第l 層p 節(jié)點(通道)的偏置,Wl表示第l 層全連接網(wǎng)絡(luò)的權(quán)重,zl表示第l 層未經(jīng)過激活函數(shù)的前向輸入,al表示第l 層經(jīng)過激活函數(shù)后的前向輸出。u 和v 表示卷積操作的坐標位置。式(5)為第l 層卷積操作公式,第l 層最大池化公式見式(6):
模型的卷積和池化操作在提取圖像特征的同時能不斷對輸入圖像進行降維,在經(jīng)過前13 層卷積和5 層池化操作以后,可將圖像維度改變?yōu)椋?×7×512),即圖像的尺寸縮小為7×7,特征圖的厚度增加到512 層,之后將其轉(zhuǎn)化為一個25 088 維的向量作為全連接層的輸入,在經(jīng)過全連接層后的輸出為式(7),前向傳播的公式為式(8)、(9),輸出層通過Softmax 函數(shù)激活為式(10)。在計算反向傳播時引入中間變量δl作為第l 層的誤差,第l 層前向傳播zl的梯度可以表示為,采用式(11)、(12)計算梯度:
在添加了平均梯度信息后添加L2 正則化項〔16〕,設(shè)系數(shù)為γ,正則化是為了減少參數(shù)的數(shù)量,縮減參數(shù)的規(guī)模,以避免參數(shù)冗余導致模型復雜化從而造成對樣本特征學習過好而對模型分類器造成負面影響帶來的過擬合問題。如若使用n 階多項式模型,則可能使得需要計算的參數(shù)過多且運算過于復雜,容易造成過擬合現(xiàn)象。過擬合〔17〕指模型在學習不同種類的細節(jié)特征時過于嚴格,以至于神經(jīng)網(wǎng)絡(luò)將部分樣本中極具特點的局部特征作為所有樣本數(shù)據(jù)都具有的一般性質(zhì),從而導致模型的識別和泛化能力下降。因此,為了防止過擬合,將其高階部分的權(quán)重w 限制為0,相當于從高階形式轉(zhuǎn)換為低階形式。L2 正則化主要是運用奧卡姆剃刀法則〔18〕,在損失函數(shù)后增加一個正則化項,以達到對不重要特征權(quán)值的衰減作用〔19〕,如式(13)所示:
在使用遷移學習中預(yù)訓練加微調(diào)的方式進行訓練時,首先從Tensorflow 官網(wǎng)下載VGG-16 對應(yīng)的在ImageNet 上的預(yù)訓練權(quán)重,之后對該權(quán)重全連接層參數(shù)進行去除,再加載到模型中,訓練時凍結(jié)除全連接層之外的所有層,只訓練全連接層。整個模型訓練和識別流程見圖5。
圖5 VGG-16 模型訓練流程
3.3 結(jié)果與討論為研究遷移學習對識別精度的影響,本文設(shè)計了(A)遷移學習+數(shù)據(jù)增強、(B)僅數(shù)據(jù)增強兩組實驗進行對比分析。分別以上述兩種方式進行訓練,訓練過程中準確率和損失函數(shù)的變化見圖6~7,其中圖6(a)為(A)組模型訓練準確率折線圖,圖6(b)為(B)組模型訓練準確率折線圖,圖7(a)為(A)組損失函數(shù)折線圖,圖7(b)為(B)組損失函數(shù)折線圖。由圖6~7 可知:遷移學習訓練過程中,訓練集和測試集的準確率曲線間相對夾角及損失函數(shù)曲線相對夾角幾乎為零,表明遷移學習中預(yù)訓練加微調(diào)的方法緩解了小樣本學習通常存在的過擬合問題。同時模型中加入的L2 正則化Dropout(隨機丟棄),以及對原始數(shù)據(jù)集進行的數(shù)據(jù)增強,都對防止過擬合起到了一定的作用。而(B)組實驗,訓練集和測試集的準確率曲線間相對夾角及損失函數(shù)曲線間相對夾角較大,屬于明顯的過擬合現(xiàn)象。在收斂速度方面,在數(shù)據(jù)集相同的情況下,(A)組實驗僅需訓練30 個Epoch 便可收斂,而(B)組至少需要70 個Epoch 才能達到收斂狀態(tài),且預(yù)訓練加微調(diào)的方法能較大程度提高模型的訓練速度。在模型精度方面,(B)組測試集準確率只有79.69%,相比之下,(A)組能在測試集上達到95.31%的準確率,比前者高出15.62%。
圖6 準確率折線圖
圖7 損失函數(shù)折線圖
為測試該識別平臺的泛化性能和識別準確率,設(shè)置園蛛、蟹蛛、鼠蛛、捕鳥蛛、絡(luò)新婦等5 個經(jīng)模型訓練過的類別作為測試數(shù)據(jù)集,分別使用模型進行測試,得到測試結(jié)果見表3,其中A 表示基于遷移學習和數(shù)據(jù)增強的測試結(jié)果,B 表示只有數(shù)據(jù)增強的測試結(jié)果。
表3 模型測試結(jié)果
測試結(jié)果表明使用遷移學習與基于突出前景的數(shù)據(jù)增強方法進行訓練時,平均識別準確率可達到95%以上,模型具有良好的魯棒性,且較只使用數(shù)據(jù)增強方法有明顯提升。可以看出,源域ImageNet 很好地適配了目標域的蜘蛛數(shù)據(jù)集,微調(diào)預(yù)訓練模型參數(shù)對蜘蛛物種識別任務(wù)提供了很大的幫助。且使用遷移學習的方法訓練,模型站在了更高的起點,在測試集上的初始準確率就能達到80%以上。
在小樣本情況下,傳統(tǒng)數(shù)據(jù)增強方法雖可大幅度提高訓練數(shù)據(jù)量,但生成的圖像與原圖像之間差距過小,對模型性能的提升具有一定局限。本文提出基于突出前景的數(shù)據(jù)增強技術(shù),通過提取蜘蛛前景并替換純色背景,在增大生成圖像與原圖像差距的同時,保留最重要的蜘蛛主體圖像特征信息,使特征提取更有層次性和判別性,模型更容易學習到圖片前景的特征。將突出前景的數(shù)據(jù)增強技術(shù)與遷移學習方法結(jié)合使用,可以互相彌補各自的不足,達到相互促進的效果,從而更好地解決小樣本蜘蛛細粒度識別問題。
4.1 系統(tǒng)框架結(jié)構(gòu)設(shè)計蜘蛛智能識別平臺由3個子系統(tǒng)構(gòu)成:安卓手機端識別系統(tǒng)(簡稱“蜘識”)、微信手機端識別系統(tǒng)、后臺管理系統(tǒng)。其中,安卓和微信端統(tǒng)稱為移動端子系統(tǒng)。蜘蛛智能識別平臺總體流程見圖8。
圖8 系統(tǒng)總體流程
4.2 系統(tǒng)業(yè)務(wù)流程設(shè)計在通過神經(jīng)網(wǎng)絡(luò)進行蜘蛛物種智能識別同時,系統(tǒng)集成了對上傳識別的圖片進行分類管理的功能。不同權(quán)限的用戶有著不同的功能。管理員主要功能有用戶權(quán)限分配、識別任務(wù)管理、照片管理、酬勞發(fā)放。管理員可對所有用戶采集上傳的圖像,按批次分配給專家進行人工鑒定,從而不斷迭代完善樣本數(shù)據(jù)集、增加物種識別種類、增強系統(tǒng)功能,這是系統(tǒng)的核心功能之一。若采集的圖片模糊或達不到標準,管理員可以剔除這些照片;管理員同時負責對專家和普通用戶鑒定所得酬勞的發(fā)放:在數(shù)據(jù)庫中根據(jù)不同用戶的鑒定級別設(shè)計標準薪酬、浮動比例等字段。專家用戶主要功能有物種人工識別:通過管理員用戶的任務(wù)分配,鑒別蜘蛛物種(目科屬種),鑒定完成后打上標簽,且專家也可對所有照片進行管理;普通用戶主要有拍照上傳識別、個人采集圖片管理、輔助鑒定的功能。系統(tǒng)角色任務(wù)流程見圖9。
圖9 系統(tǒng)角色任務(wù)流程圖
4.3 數(shù)據(jù)庫設(shè)計使用Mysql作為后臺數(shù)據(jù)庫,本系統(tǒng)設(shè)計了用戶信息、圖像信息等數(shù)據(jù)表,分別應(yīng)用于用戶安全信息的管理、上傳圖片的生態(tài)環(huán)境信息管理以及社交的點贊信息管理。用戶信息表記錄了用戶的用戶名、密碼、角色、綁定微信號、手機號、郵箱、頭像信息、標準薪酬、浮動比例、用戶薪酬等信息。圖像信息表記錄了圖片臨時編碼、用戶名、物種編碼、圖片狀態(tài)、圖片路徑、圖片ID、經(jīng)度、緯度、海拔、采集日期等信息。用戶信息和圖像信息示例見表4~5。
表4 用戶信息示例
表5 圖像信息示例
系統(tǒng)設(shè)計了蜘蛛物種目錄樹,采用層次編碼法,將編碼分為目、亞目、下目、總科、科、亞科、屬、種、亞種,每一層的蜘蛛編碼由兩位阿拉伯數(shù)字組成,對于缺失的層,用數(shù)字00 表示,如鼠蛛的編碼結(jié)果為:010300000003010100。編碼結(jié)構(gòu)圖見圖10,數(shù)據(jù)庫蜘蛛編碼規(guī)則示例見表6。
圖10 鼠蛛編碼示意圖
4.4 子系統(tǒng)設(shè)計
4.4.1 安卓端識別子系統(tǒng) 安卓端的蜘蛛識別程序開發(fā)工具為Android Studio。主要由登錄注冊模塊、拍照識別模塊、選取相冊照片識別模塊、設(shè)置傳輸壓縮率模塊、更新說明模塊、官方網(wǎng)站模塊、點贊和分享等模塊組成。
進入主頁面后顯示各種蜘蛛的圖片和介紹,可以點贊分享到朋友圈、QQ 等社交平臺。在識別界面可以選擇拍照識別或者選取相冊中的圖片進行識別,拍照后會獲取經(jīng)緯度等生態(tài)環(huán)境信息,并將這些信息一起傳回到服務(wù)器端,系統(tǒng)使用Socket 模塊來進行客戶端與服務(wù)器端的交互,拍攝的照片以字節(jié)流的方式傳入到服務(wù)器端時,會調(diào)用后臺的核心識別模塊進行識別并反饋識別結(jié)果,然后將結(jié)果傳回到客戶端,客戶端根據(jù)返回的字符串結(jié)果來判斷并展示相對應(yīng)的蜘蛛種類及相關(guān)介紹以及置信度,目前可識別蟹蛛、園蛛、捕鳥蛛、絡(luò)新婦4 類蜘蛛科及鼠蛛1 類蜘蛛種。如果選擇從相冊中選取圖片上傳識別,則無法獲取經(jīng)緯度信息并會給出提示,但同樣可以成功識別。為了降低用戶野外采集圖像時的流量消耗、節(jié)約成本,系統(tǒng)設(shè)置了傳輸壓縮率設(shè)置功能。該模塊可以設(shè)置圖片壓縮率,其范圍在0~100,數(shù)值越低則圖片壓縮的程度越高,而上傳速度越快,但不可避免地會損失一些清晰度,用戶可根據(jù)實際情況進行取舍。更新說明模塊記錄APP 每次更新迭代的內(nèi)容,在官方網(wǎng)站模塊可進入到蜘識的官方頁面〔20〕進行版本更新或者下載。系統(tǒng)實現(xiàn)流程見圖11,系統(tǒng)識別界面見圖12。
圖11 安卓端系統(tǒng)實現(xiàn)流程
圖12 安卓端識別界面
4.4.2 微信端識別子系統(tǒng) 微信端開發(fā)語言為WXSS(Weixin Style Sheets),使用微信開發(fā)者工具開發(fā)。微信端識別子系統(tǒng)包含拍照識別、選取相冊照片識別、獲取用戶當前位置、獲取天氣、蜘蛛百科等模塊。在拍照識別和選擇相冊模塊,可以拍攝照片或直接從相冊選擇照片,然后通過微信端的uploadfile()方法將圖片上傳到JAVA 后臺端,JAVA后臺調(diào)用upload()方法獲取圖片并將圖片傳到識別端,由核心識別模塊進行識別,再將識別后反饋的結(jié)果傳入到JAVA 后臺,JAVA 后臺再通過post.addHeader()方法將識別結(jié)果傳回到微信端,然后微信端再調(diào)用數(shù)據(jù)庫中的蜘蛛百科選擇渲染結(jié)果并展示。系統(tǒng)實現(xiàn)流程見圖13,系統(tǒng)識別界面見圖14。
圖13 微信端系統(tǒng)實現(xiàn)流程
圖14 微信端識別界面
4.4.3 后臺管理系統(tǒng) 后臺管理系統(tǒng)采用Spring Boot 框架,包括用戶信息管理和圖片信息管理兩大模塊,分管理員、普通用戶、專家3 種角色。該模塊主要是對移動端拍照上傳的蜘蛛圖像信息進行一個分類管理,從而不斷收集新的蜘蛛圖像來擴充蜘蛛數(shù)據(jù)集。系統(tǒng)實現(xiàn)流程見圖15。
圖15 后臺管理系統(tǒng)實現(xiàn)流程
4.5 系統(tǒng)測試系統(tǒng)的測試方法有單元測試、集成測試、黑盒測試、白盒測試等。使用移動端APP 進行拍照上傳服務(wù)器對5 類蜘蛛進行識別測試,驗證該APP 在實際應(yīng)用中的表現(xiàn)以及結(jié)果反饋的反應(yīng)時間,測試結(jié)果見表7。由測試結(jié)果可知在對每類蜘蛛進行的250 次測試中,識別的平均準確率能達到95%以上,且反應(yīng)時間均在1.6 s 左右。
表7 系統(tǒng)測試結(jié)果
針對蜘蛛物種細粒度分類問題,本文基于遷移學習方法,以VGG-16 作為實驗?zāi)P驮谥┲霐?shù)據(jù)集上進行訓練,研建了蜘蛛識別平臺。結(jié)果表明,該識別平臺對4 科1 種共5 類蜘蛛的平均識別準確率達到95%以上。用戶可通過移動設(shè)備拍照上傳蜘蛛圖像進行識別并得到結(jié)果反饋,同時獲取該蜘蛛的百科信息。
本研究所達到的識別準確率及識別種類還有較大的提升空間。在接下來的研究中,我們將采用其他數(shù)據(jù)增強技術(shù),如生成對抗網(wǎng)絡(luò)等增強樣本數(shù)據(jù)集,嘗試應(yīng)用EfficientNet、Vision Transformer 等其他更先進的模型進行訓練,并通過系統(tǒng)用戶采集、野外拍攝等方式不斷收集數(shù)據(jù),擴增識別種類,不斷迭代完善識別系統(tǒng)。