羅 娟,蔡 騁
西北農(nóng)林科技大學(xué) 信息工程學(xué)院,陜西 楊凌712100
近年來,隨著計(jì)算機(jī)視覺的快速發(fā)展,自動(dòng)識別植物受到越來越多的關(guān)注。植物識別就是分類已知類別的植物標(biāo)本,這個(gè)過程已經(jīng)發(fā)展了數(shù)百年,即便是對于專業(yè)植物學(xué)家來說也是一項(xiàng)繁瑣的工作。如圖1所示,識別這些圖像中的植物存在較大的難度。
圖1 PlantCLEF2017
為了縮小植物分類學(xué)缺口,自動(dòng)識別植物圖像有著重要的意義。而且自動(dòng)識別植物具有廣泛的應(yīng)用場景。例如,使用自動(dòng)識別植物算法來識別植物,并開發(fā)相應(yīng)的智能手機(jī)應(yīng)用程序,從而可以達(dá)到科普植物學(xué)知識的目的[1-2]。它還可以幫助專業(yè)植物學(xué)家在科學(xué)研究期間識別該領(lǐng)域的植物。
目前已經(jīng)有許多關(guān)于自動(dòng)識別植物的研究工作正在積極地開展[3-4]。盡管在該領(lǐng)域取得了一定進(jìn)展,但由于這項(xiàng)任務(wù)極具挑戰(zhàn)性以及對容易混淆的植物的識別缺乏穩(wěn)健性,這些工作的表現(xiàn)還不能達(dá)到令人滿意的效果。
在早期研究工作中,研究人員主要應(yīng)用局部特征進(jìn)行圖像表示。例如,Szücs 等[3]使用尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)[5]作為密集網(wǎng)格上的特征提取器,并應(yīng)用主成分分析(Principal Component Analysis,PCA)[6]將特征向量的維數(shù)從128 減少到80。然后,應(yīng)用詞袋(Bag-of-Words,BoW)[7]和高斯混合模型(Gaussian Mixture Model,GMM)[8]來描述圖像。支持向量機(jī)(Support Vector Machine,SVM)分類算法,應(yīng)用徑向基函數(shù)(Radial Basis Function,RBF)作為核函數(shù)將數(shù)據(jù)映射到特定空間實(shí)現(xiàn)分類。然而,由于低級特征的描述和辨別能力有限,這些分類方法的性能并不令人滿意。蔡騁等[9]提出基于壓縮感知的種子識別方法,Kumar 等[1]從葉子圖像中提取基于曲率的形狀特征,然后使用最近鄰法進(jìn)行識別。付波等[10]提出基于葉片形狀的方法,盡管這些方法實(shí)現(xiàn)了較好的性能,但此解決方案在很大程度上依賴于特定的手動(dòng)選擇的特征集。因此,它可能會遇到過度擬合和數(shù)據(jù)集偏差問題[4,11],而且這些方法對數(shù)據(jù)集的要求太高。
近年來,DCNN 以其優(yōu)良的性能,已經(jīng)被廣泛應(yīng)用于圖像識別領(lǐng)域,例如ImageNet 分類[12]、手寫數(shù)字分類[13]和 人 臉 識 別[14]。Lee 等[4]提 出 用DCNN 來 識 別 植物。此外,目前使用DCNN進(jìn)行植物鑒定的方法主要集中在從單個(gè)特定器官(例如花、葉或果實(shí))中獨(dú)立鑒定植物。用單一器官識別的準(zhǔn)確率不高,很難滿足科普植物知識的需求。如圖1中的四張圖片,分別表示植物的整株、花、果和葉,如果直接將植物的四個(gè)器官放入一個(gè)DCNN 中識別,由于它們的特征相差太大,會降低識別準(zhǔn)確率,因此選擇先識別單個(gè)器官。對于植物的各個(gè)獨(dú)立的器官,整株、葉、花和果分別訓(xùn)練一個(gè)識別網(wǎng)絡(luò),最后根據(jù)單器官網(wǎng)絡(luò)識別的準(zhǔn)確率,采用多線索相結(jié)合的方法來預(yù)測該植物的類別標(biāo)簽。
現(xiàn)有的深度卷積網(wǎng)絡(luò)模型很多,包括Alex Net[15]、VGG Net[16]、Google Net[12]、Resnet[17]等,這 些 網(wǎng) 絡(luò) 在ILSVRC 每年的競賽中都有非常出色的表現(xiàn),它們在人、車以及生活中常見物品的識別中都有非常優(yōu)良的表現(xiàn)。特別是越深的網(wǎng)絡(luò)需要的圖片數(shù)量越多,由于本文的圖片數(shù)量有限,因此本文的單器官識別模型需要選擇深度適中的網(wǎng)絡(luò)。
多線索模型識別系統(tǒng)包含兩個(gè)關(guān)鍵階段。首先,為每種類型的器官訓(xùn)練一個(gè)單器官子模型。其次是將所有單個(gè)器官的模型有效地組合在一起。該系統(tǒng)的整個(gè)結(jié)構(gòu)如圖2所示。
單個(gè)器官的識別性能直接影響多個(gè)器官的識別性能。深度卷積神經(jīng)網(wǎng)絡(luò)已被證明是圖像分類問題的有效模型[10]。受其強(qiáng)大的圖像表示能力的啟發(fā)[18],將此模型應(yīng)用于本文中的植物識別。
CNN 是前饋神經(jīng)網(wǎng)絡(luò)。它首先應(yīng)用于Lecun[19]等的手寫字符識別問題。近年來隨著并行計(jì)算的快速發(fā)展,開發(fā)了深度卷積神經(jīng)網(wǎng)絡(luò)。DCNN是一種引起廣泛關(guān)注的有效識別方法,原始圖像可以直接作為模型的輸入。因此,該網(wǎng)絡(luò)可以避免圖像復(fù)雜的預(yù)處理。卷積神經(jīng)網(wǎng)絡(luò)利用空間關(guān)聯(lián)關(guān)系來減少參數(shù)的數(shù)量,與其他前饋神經(jīng)網(wǎng)絡(luò)相比,卷積神經(jīng)網(wǎng)絡(luò)需要更少的參數(shù)。然而,仍然需要針對深度卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練許多參數(shù)。因此,用有限的計(jì)算資源訓(xùn)練這樣的網(wǎng)絡(luò)仍然是具有挑戰(zhàn)性的。慶幸的是,近年來深度學(xué)習(xí)領(lǐng)域取得了許多重大進(jìn)展。例如,Hinton等[20]提出的丟棄部分神經(jīng)元的方法(Dropout),有效通過防止特征檢測器的共適應(yīng)性來避免過擬合的現(xiàn)象。此外,修正線性單元(Rectified Linear Units,ReLU)比其他激活函數(shù)(如Sigmod、Tanh[15,21])能夠更好地防止梯度彌散。最重要的是,深度卷積神經(jīng)網(wǎng)絡(luò)的GPU實(shí)現(xiàn)使每個(gè)圖像的訓(xùn)練時(shí)間低至約2.5 ms[22]。由于上述的這些方法,可以有效地訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)?;谶@些方法,Szegedy 等[12]提出的具有數(shù)百萬個(gè)參數(shù)的深度卷積神經(jīng)網(wǎng)絡(luò)被應(yīng)用于ImageNet數(shù)據(jù)集。該網(wǎng)絡(luò)采用Inception 模塊化的結(jié)構(gòu),共22 層。網(wǎng)絡(luò)最后采用了平均池化來代替全連接層,參數(shù)量僅為AlexNet的1/12,性能卻優(yōu)于AlexNet。在網(wǎng)絡(luò)的最后是Softmax層,它輸出ImageNet數(shù)據(jù)集中1 000個(gè)類的概率。
本文中的深度卷積神經(jīng)網(wǎng)絡(luò)如文獻(xiàn)[12]中所述實(shí)現(xiàn)。預(yù)訓(xùn)練模型在大規(guī)模圖像數(shù)據(jù)集[23]上進(jìn)行訓(xùn)練,其中包含大約120萬個(gè)1 000個(gè)類別的圖像。通過在大規(guī)模圖像數(shù)據(jù)集上的訓(xùn)練,該模型可以為圖像分類提供良好的特征表達(dá)。本文使用了遷移學(xué)習(xí)法[24],將在ImageNet 數(shù)據(jù)集上預(yù)訓(xùn)練好的GoogleNet 僅修改最后的全連接層,將全連接層網(wǎng)絡(luò)的神經(jīng)元的個(gè)數(shù)改為需要分類的類別數(shù)量。根據(jù)訓(xùn)練數(shù)據(jù)微調(diào)網(wǎng)絡(luò),且只迭代更新后三層網(wǎng)絡(luò)的參數(shù)。然后,對預(yù)先訓(xùn)練的模型在PlantCLEF2017[25]數(shù)據(jù)集上進(jìn)行微調(diào),以便對每個(gè)植物器官進(jìn)行識別。如圖2所示,最終模型中使用了四種器官。因此,用四個(gè)DCNN 模型在四種器官圖片上微調(diào)四種單器官識別網(wǎng)絡(luò)。
如圖1 所示,對于植物的每個(gè)種類進(jìn)行分類,由單個(gè)器官提供的信息是有限的。通過多器官輸入分類可以在某種程度上緩解這個(gè)問題。模型的每個(gè)輸入代表該分類單元的一種類型的器官。具有多個(gè)器官的輸入可以允許模型獲得關(guān)于該植物分類的更多信息用于鑒定。受到Go?au H等[26]、Dan C等[27]和Yang J等[28]的啟發(fā),本文提出了一種新的多線索的植物識別方法。源于集成學(xué)習(xí)的思想,將多個(gè)單器官分類器采用加權(quán)式,結(jié)合為一個(gè)更強(qiáng)的分類器。每次根據(jù)各個(gè)單器官分類器預(yù)測類別的分?jǐn)?shù),來決定該分類器所預(yù)測的類別標(biāo)簽在最終的多線索模型的輸入中所占的比重。該模型的結(jié)構(gòu)如圖2所示。
在訓(xùn)練時(shí),四個(gè)單獨(dú)的網(wǎng)絡(luò)模型的輸入是各自對應(yīng)的器官,這四個(gè)網(wǎng)絡(luò)模型是完全獨(dú)立的,有各自的全連接層和損失函數(shù),根據(jù)遷移學(xué)習(xí)的思想,只更新后三層網(wǎng)絡(luò)的網(wǎng)絡(luò)參數(shù)。多線索模型不需要訓(xùn)練參數(shù),因此訓(xùn)練時(shí)僅訓(xùn)練四個(gè)單器官模型即可。
在測試時(shí),四個(gè)單器官網(wǎng)絡(luò)的輸出作為多器官融合識別模型輸入,這種輸入是帶權(quán)輸入,多器官融合模型接受的不僅僅是單器官網(wǎng)絡(luò)預(yù)測的類別,還接收單器官網(wǎng)絡(luò)預(yù)測的分?jǐn)?shù),采用加權(quán)后的預(yù)測分?jǐn)?shù)作為多器官融合模型各類別預(yù)測分?jǐn)?shù)的初始值Si*:
其中,Si表示單器官模型對最終預(yù)測類別的評分,表示第i 種器官輸入多線索模型的初始分?jǐn)?shù)。
多線索模型對相同的類別分?jǐn)?shù)進(jìn)行合并當(dāng)Pi=Pj,Pi,Pj∈{1,2,…,12}時(shí),且i <j
統(tǒng)計(jì)得分最高的類別標(biāo)簽,將它的類別標(biāo)簽作為最終的類別標(biāo)簽輸出:
最終確定得分最高的類別作為預(yù)測類別。
然而,神經(jīng)網(wǎng)絡(luò)對圖片的數(shù)據(jù)量要求較高,且要求各類別圖片的數(shù)量盡量均衡。在將所有子模型組合在一起之后,該模型中的參數(shù)數(shù)量是單器官中的參數(shù)數(shù)量的4 倍。單模型并行計(jì)算對GPU 的要求太高,要實(shí)現(xiàn)此模型并獲得更好的性能,需要在此模型中應(yīng)用以下技巧。
(1)對圖片數(shù)量較少的類別采用圖像增強(qiáng)技術(shù),使得各類別各器官的圖片數(shù)量盡量是均衡的。在訓(xùn)練準(zhǔn)確率上明顯優(yōu)于沒有采用圖像增強(qiáng)技術(shù)。
(2)多個(gè)單器官模型依次訓(xùn)練,并采用遷移學(xué)習(xí)僅訓(xùn)練最后三層的參數(shù),凍結(jié)前面所有層的參數(shù)。它在時(shí)間效率和訓(xùn)練準(zhǔn)確率上都明顯優(yōu)于隨機(jī)初始化的權(quán)重。
實(shí)驗(yàn)數(shù)據(jù)集包括ImageNet和PlantCLEF2017,Image Net 數(shù)據(jù)集用于神經(jīng)網(wǎng)絡(luò)模型的初始訓(xùn)練,Plant-CLEF2017 數(shù)據(jù)集用于模型的微調(diào)和測試。Image Net是一個(gè)用于視覺對象識別軟件研究的大型可視化數(shù)據(jù)庫。超過14 000 000 的圖像標(biāo)注了對象類別,超過100萬個(gè)圖像標(biāo)注了對象邊界框。ImageNet 包含2 萬多個(gè)類別,其中包括:人、車、氣球和水果等。本文的初始訓(xùn)練采用的是ImageNet 中用于視覺挑戰(zhàn)賽的包含1 000個(gè)類別的數(shù)據(jù)子集[23]。
PlantCLEF2017數(shù)據(jù)集包含生長在西歐的10 000種植物(樹木、草本和蕨類)共計(jì)約200 000張圖片,每種植物的圖片有植物的七種器官(整株、果實(shí)、葉子、花、莖、枝干和掃描葉)的一種或幾種器官,每種植物的每種器官又包含一張或若干張圖片。數(shù)據(jù)集收集了同一種類的植物可能生活在不同地區(qū)和一年中不同時(shí)段的圖片。
為了驗(yàn)證本文提出的多線索植物識別算法的有效性,將PlantCLEF2017 的圖片分器官和類別統(tǒng)計(jì),由于掃描葉的圖片數(shù)量太少,將掃描葉的圖片統(tǒng)計(jì)入葉器官分類圖片中,最終六種器官都有的植物種類為114 類,枝和干的圖片數(shù)量偏少除去枝干這兩種器官后,每種器官圖片數(shù)量超過20張的為12類。如圖1,分別是整株、花、果和葉。
原始圖片各器官的圖片數(shù)量統(tǒng)計(jì)見表1,原始數(shù)據(jù)的標(biāo)簽數(shù)據(jù)對類別的劃分很準(zhǔn)確,但對器官的劃分不準(zhǔn)確,存在部分器官錯(cuò)分的圖片。
為了得到分類性能更好的單分類器,用各種器官圖片訓(xùn)練單分類器。根據(jù)圖片的得分和真實(shí)的類別標(biāo)簽,設(shè)定一個(gè)圖片接收因子,接收因子是圖片正確類別的得分。刪除圖片接收因子低于規(guī)定閾值的圖片,本文的圖片接收閾值設(shè)定為0.05。刪除噪聲圖片后對正確類別的各器官圖片以9/1 的比例劃分為訓(xùn)練集和測試集,并對訓(xùn)練集和測試集分別采用數(shù)據(jù)增強(qiáng)技術(shù),來均衡各類別各器官圖片。
表1 植物各個(gè)器官類別統(tǒng)計(jì)表
采用對比增強(qiáng)、疊加噪聲、仿射變換、顏色抖動(dòng)、透視變換等操作分別對訓(xùn)練集和測試集實(shí)現(xiàn)數(shù)據(jù)擴(kuò)充,可以避免訓(xùn)練階段的識別類別偏向某幾種圖片數(shù)據(jù)多的類別。通過透視變換可以模擬實(shí)際場景的不同視角。仿射變換包括平移、縮放、錯(cuò)切、旋轉(zhuǎn)和翻轉(zhuǎn)等基本變換,具有平行性和平直性,即變換后直線依然是直線,平行線依然是平行線。
利用OPenCV實(shí)現(xiàn)透視變換的步驟如下:
(1)指定源圖像和目標(biāo)圖像中的四組對應(yīng)點(diǎn)。
(2)利用OpenCV的getPerspectiveTransform函數(shù)計(jì)算透視變換矩陣。
(3)利用OpenCV 的warpPerspective 函數(shù)對源圖像應(yīng)用剛才的透視變換。
利用OPenCV實(shí)現(xiàn)仿射變換的步驟如下:
(1)指定源圖像和目標(biāo)圖像中的四組對應(yīng)點(diǎn)。
(2)利用OpenCV的getAffineTransform函數(shù)計(jì)算仿射變換矩陣。
(3)利用OpenCV 的warpAffine 函數(shù)對源圖像應(yīng)用剛才的仿射變換。
通過刪除接收因子低于閾值的圖片和采用選擇性數(shù)據(jù)增強(qiáng)后,各類別各器官訓(xùn)練集圖片數(shù)量均在兩百張左右,測試集圖片數(shù)量均在二十張左右。
硬件環(huán)境如下:Intel?Core?i-6100CPU@3.70 GHz,64 GB 內(nèi)存;Nvidia GeFore GTX 1050 Ti,4 GB 顯存;軟件環(huán)境:CUDAToolkit9.0,CUDNN V7.0;Matlab R2018a,Windows 10 64 bit操作系統(tǒng)。
模型訓(xùn)練與測試均通過GPU加速。綜合考慮硬件性能和運(yùn)行時(shí)間,訓(xùn)練和測試的MiniBatch 設(shè)置為16,Epoch 設(shè)置為10。單器官模型參照經(jīng)典Google Net 模型的參數(shù)設(shè)置,綜合考慮實(shí)驗(yàn)復(fù)雜度,組合2種學(xué)習(xí)方式(全新學(xué)習(xí)和遷移學(xué)習(xí)),3種數(shù)據(jù)處理方式(無擴(kuò)充+無丟棄、無擴(kuò)充+丟棄、丟棄+擴(kuò)充),共進(jìn)行6組組合實(shí)驗(yàn)。這些結(jié)果總結(jié)在表2。
表2 全新學(xué)習(xí)和遷移學(xué)習(xí)準(zhǔn)確率對比 %
全新學(xué)習(xí)時(shí),網(wǎng)絡(luò)模型的權(quán)值參數(shù)W 初值用均值μ=0,標(biāo)準(zhǔn)差σ=0.01 的正太分布生成,偏置參數(shù)初值b=0。
遷移學(xué)習(xí)時(shí),單器官模型最后的全連接層的權(quán)值參數(shù)W,b 按照上面的方式隨機(jī)初始化,其他各層的W,b 則保留Google Net在Image Net圖像數(shù)據(jù)集訓(xùn)練得到的權(quán)值參數(shù)和偏置參數(shù)。本文實(shí)驗(yàn)采用十折交叉驗(yàn)證,為了保證實(shí)驗(yàn)結(jié)果的準(zhǔn)確性,十次實(shí)驗(yàn)分別采用數(shù)據(jù)增強(qiáng)。實(shí)驗(yàn)結(jié)果為十折交叉驗(yàn)證的平均實(shí)驗(yàn)結(jié)果,后面的實(shí)驗(yàn)結(jié)果也均為十折交叉驗(yàn)證的平均結(jié)果,不再贅述。
傳統(tǒng)的植物識別,是將一個(gè)種類的植物圖像包括花、果和葉等,直接訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),并用類似的植物圖像測試模型性能。為了證明本文提出的多線索模型的性能,優(yōu)于同種模型的傳統(tǒng)識別方法,將多線索模型的結(jié)果與全部植物圖像混合識別結(jié)果進(jìn)行對比。主體模型均采用Google Net模型,采用的數(shù)據(jù)處理方式和模型參數(shù)訓(xùn)練方式為表2中得出的最好的組合方式,訓(xùn)練和測試的MiniBatch 設(shè)置為16,Epoch 設(shè)置為10。實(shí)驗(yàn)結(jié)果對比見表3。
表3 多線索模型和混合識別模型準(zhǔn)確率對比
目前用于植物識別的優(yōu)秀的算法包括:CNN+SVM[29]、CNN+SOFTMAX[29]、Alex Net、VGG等,模型的最后輸出改為12 類,其他參數(shù)設(shè)置均保留原論文的參數(shù)設(shè)置,本文提出的多線索模型(MC)和目前優(yōu)秀的植物識別算法的對比結(jié)果見表4。
為了評估本文提出的多線索模型的性能,將多線索模型的結(jié)果與單器官模型的結(jié)果進(jìn)行比較。對比方式分為兩種,一種是無器官缺失的多線索模型和單器官模型測試準(zhǔn)確率對比,見表5,第二種是有一種器官缺失和兩種器官缺失的多線索模型測試結(jié)果對比,見表6。采用的數(shù)據(jù)處理方式和模型參數(shù)訓(xùn)練方式為表2 中得出的最好的組合方式,訓(xùn)練和測試的MiniBatch設(shè)置為16,Epoch設(shè)置為10。
表4 多線索模型和其他模型識別準(zhǔn)確率對比
表5 單器官模型和多器官模型準(zhǔn)確率對比
表6 各種組合的多器官模型準(zhǔn)確率對比%
多線索模型與單器官模型的結(jié)果相比表明,本文提出的多線索模型大多數(shù)結(jié)果遠(yuǎn)遠(yuǎn)優(yōu)于單器官的結(jié)果。但是實(shí)驗(yàn)結(jié)果表明,某些組合會導(dǎo)致性能不是太好。例如,整株和葉的組合模型的性能低于單器官花和果模型的性能。因此,單器官的識別性能也是影響組合后識別性能的主要因素。
針對傳統(tǒng)植物識別算法在特征提取上耗時(shí)耗力,以及對野外直接采集的圖片識別準(zhǔn)確率不高的問題,分析了深度卷積神經(jīng)網(wǎng)絡(luò)在植物識別中的優(yōu)勢和局限性,提出了一種結(jié)合多個(gè)神經(jīng)網(wǎng)絡(luò)的多線索植物識別模型,可以有效地自動(dòng)識別植物。單個(gè)模型可以通過遷移學(xué)習(xí)得到比隨機(jī)初始化更加有效的參數(shù)初始值,再根據(jù)訓(xùn)練數(shù)據(jù)對模型中的參數(shù)進(jìn)行微調(diào),可以更加節(jié)省時(shí)間,得到更高的測試準(zhǔn)確率。還提出了丟棄噪聲圖片的方法,來優(yōu)化本文模型。針對部分類別的部分器官圖片較少的情況,本文采用了選擇性增強(qiáng)的方法來擴(kuò)充和均衡圖片的數(shù)量。個(gè)別器官模型的識別性能遠(yuǎn)低于其他器官模型,這限制了多線索模型的整體表現(xiàn)。由于圖片數(shù)量有限,本次實(shí)驗(yàn)只驗(yàn)證了12 個(gè)植物類別的四種器官模型的組合,今后的工作可以綜合更多的數(shù)據(jù)集,在更多的植物類別上組合更多的器官模型,從而形成一個(gè)更加實(shí)用和高效的植物識別模型。此外,Google Net[12]可以被一些更強(qiáng)大的模型取代,例如和ResNet[17]。相信這種自動(dòng)化植物識別算法的性能將得到進(jìn)一步提高。