蔡圣杰,鄭成勇,陳偉杰
(五邑大學(xué) 數(shù)學(xué)與計(jì)算科學(xué)學(xué)院,廣東 江門 529020)
隨著對(duì)環(huán)境治理的持續(xù)投入,我國(guó)綠地面積顯著提升,林地物種也越來越豐富,如何準(zhǔn)確高效地識(shí)別植物便成為亟待解決的問題. 由于硬件性能的提高,基于神經(jīng)網(wǎng)絡(luò)的樹葉分類方法也逐漸流行. 魏書偉等提出了并行殘差卷積神經(jīng)網(wǎng)絡(luò)和加入殘差學(xué)習(xí)的Alexnet網(wǎng)絡(luò),精確率達(dá)到90%以上[1].針對(duì)復(fù)雜背景中的葉片圖像,Yang等提出了基于Mask區(qū)域的卷積神經(jīng)網(wǎng)絡(luò),其平均分類誤差為1.15%[2]. Shivali等采用健康和病株葉片數(shù)據(jù)混合的形式在預(yù)訓(xùn)練的AlexNet上遷移學(xué)習(xí),相較于支持向量機(jī)準(zhǔn)確率提升1%以上[3]. 除了理論上的發(fā)展,基于神經(jīng)網(wǎng)絡(luò)的樹葉分類算法已應(yīng)用于煙葉[4]、芒果葉[5]、草藥[6]等的分類中.
然而上述工作大多應(yīng)用于較少類別數(shù)據(jù)集的分類任務(wù),基于種類較多的數(shù)據(jù)集上的分類工作比較少. 而其中僅少數(shù)分類準(zhǔn)確率可達(dá)到95%,但是這些模型復(fù)雜度較高,運(yùn)行速度不理想. 為此,本文提出一種基于殘差網(wǎng)絡(luò)遷移學(xué)習(xí)的樹葉分類算法,以期滿足現(xiàn)實(shí)分類任務(wù)的需求.
殘差神經(jīng)網(wǎng)絡(luò)[7](Residual Network,ResNet)由微軟研究院的何愷明等人于2015年提出. 在此之前,VGG[8]模型中的卷積層達(dá)到了19層,GoogLeNet[9]模型中的卷積層更是達(dá)到了22層. 隨著網(wǎng)絡(luò)層數(shù)增加,訓(xùn)練集損失逐漸降低,然后趨于平穩(wěn);當(dāng)繼續(xù)增加網(wǎng)絡(luò)深度時(shí),訓(xùn)練集損失反而會(huì)增大,網(wǎng)絡(luò)發(fā)生了退化現(xiàn)象. 而當(dāng)網(wǎng)絡(luò)退化時(shí),淺層網(wǎng)絡(luò)能達(dá)到比深層網(wǎng)絡(luò)更好的訓(xùn)練效果. 這時(shí)如果將低層特征傳到高層,那么理論上效果至少不比淺層的網(wǎng)絡(luò)效果差,因此提出殘差塊的結(jié)構(gòu). 圖1給出了普通塊(圖1-a)和殘差塊(圖1-b)的對(duì)比示意圖。增添一條單位映射即可將普通塊變?yōu)闅埐顗K. 單位映射確保了N+1層的網(wǎng)絡(luò)一定比N層的網(wǎng)絡(luò)包含更多信息,因此基于使用單位映射連接不同層的思想,殘差網(wǎng)絡(luò)應(yīng)運(yùn)而生.
圖1 一個(gè)普通塊和一個(gè)殘差塊
殘差網(wǎng)絡(luò)模型繼承了之前網(wǎng)絡(luò)的優(yōu)點(diǎn),并將普通塊替換為殘差塊,構(gòu)造網(wǎng)絡(luò). 以ResNet18為例,網(wǎng)絡(luò)分為5個(gè)階段,如圖2所示:第一個(gè)階段是過去網(wǎng)絡(luò)中常用的起始設(shè)計(jì);第二至五階段由數(shù)個(gè)殘差塊組成. 最終通過全局平均匯聚層與全連接層輸出類別. 網(wǎng)絡(luò)總計(jì)18個(gè)卷積層(包含全連接層),因此命名網(wǎng)絡(luò)為ResNet18.
圖2 ResNet18的結(jié)構(gòu)
通過增減殘差塊的數(shù)量構(gòu)造了以卷積層數(shù)命名的ResNet18、ResNet34、ResNet50、ResNet101、ResNet152. 它們既有相同點(diǎn)又有不同點(diǎn). 其第一階段均為一個(gè)卷積層和一個(gè)匯聚層,中間均有4個(gè)階段,最后兩層均是全局平均匯聚層和全連接層;不同之處在于4個(gè)階段中的殘差塊數(shù)量. 隨著更多更新的結(jié)構(gòu)出現(xiàn),一些新技術(shù)也被更新進(jìn)殘差網(wǎng)絡(luò)模型.
遷移學(xué)習(xí)是指從源數(shù)據(jù)集中學(xué)到的知識(shí)遷移到目標(biāo)數(shù)據(jù)集. 即使源數(shù)據(jù)集與目標(biāo)數(shù)據(jù)集在內(nèi)容、構(gòu)成上不盡相同,但在源數(shù)據(jù)集中學(xué)到的特征提取能力仍能識(shí)別出邊緣、紋理、形狀以及復(fù)雜組合. 這些類似的功能都將有助于識(shí)別目標(biāo)數(shù)據(jù)集中的物體. 因此使用已在源數(shù)據(jù)集上訓(xùn)練完成的模型,在規(guī)模不大的目標(biāo)數(shù)據(jù)集上稍作訓(xùn)練即可識(shí)別目標(biāo)數(shù)據(jù)集中的物體. 這一方法不僅使制作數(shù)據(jù)集的成本大大降低,同時(shí)也使訓(xùn)練模型的時(shí)間成本大大降低.
算法流程如圖3所示. 首先使用大規(guī)模數(shù)據(jù)集對(duì)主干網(wǎng)絡(luò)進(jìn)行訓(xùn)練,保留其各節(jié)點(diǎn)的權(quán)重,將主干加以改造成為適合樹葉數(shù)據(jù)集的結(jié)構(gòu). 然后為了提升模型分類精度,將模型放在樹葉數(shù)據(jù)集上學(xué)習(xí)之前,先將這些圖片進(jìn)行預(yù)處理. 最后使用樹葉數(shù)據(jù)集在最終模型上進(jìn)行遷移學(xué)習(xí),以得到可以對(duì)較多類別樹葉進(jìn)行分類的模型.
圖3 算法流程
利用殘差網(wǎng)絡(luò)的原始結(jié)構(gòu)在ImageNet上進(jìn)行預(yù)訓(xùn)練至收斂. 之后保留網(wǎng)絡(luò)結(jié)構(gòu)與各個(gè)節(jié)點(diǎn)的權(quán)重,改造成為需要的模型. 基于ImageNet預(yù)訓(xùn)練的ResNet系列模型,其輸出是1 000個(gè)類別. 因此需要將模型最后一層替換為節(jié)點(diǎn)數(shù)是類別數(shù)的全連接層,或在其后增加若干個(gè)全連接層,使模型在結(jié)構(gòu)上具備樹葉分類能力.
對(duì)數(shù)據(jù)的預(yù)處理是為了提升模型分類效果. 本文算法中的預(yù)處理主要是出于增加樣本多樣性的考慮. 對(duì)原始圖片進(jìn)行數(shù)據(jù)增強(qiáng),包括但不限于垂直翻轉(zhuǎn)、水平翻轉(zhuǎn)、隨機(jī)剪裁、中心剪裁、顏色波動(dòng)、高寬比變化等,再進(jìn)行標(biāo)準(zhǔn)化. 數(shù)據(jù)增強(qiáng)的操作僅針對(duì)訓(xùn)練集使用,目的是增強(qiáng)樣本之間的差異性,提高模型的魯棒性,降低過擬合的可能.
改造層的權(quán)重初始化后需使用目標(biāo)數(shù)據(jù)集對(duì)其進(jìn)行訓(xùn)練. 使用預(yù)處理后的圖片對(duì)預(yù)訓(xùn)練后的改造模型進(jìn)行遷移學(xué)習(xí). 在遷移學(xué)習(xí)中有不同的學(xué)習(xí)策略:模型主干參數(shù)可以全部?jī)鼋Y(jié),只訓(xùn)練改造層的權(quán)重;也可以讓主干與改造層在數(shù)據(jù)集上一同學(xué)習(xí)新的權(quán)重,最終實(shí)現(xiàn)高效樹葉分類的目的.
本文實(shí)驗(yàn)全部在Colab平臺(tái)上實(shí)現(xiàn),目標(biāo)數(shù)據(jù)集存放在Google云端硬盤,平臺(tái)提供25 GB內(nèi)存、147 GB磁盤以及Tesla P100-PCIE-16GB的GPU. 因?yàn)镃olab預(yù)裝了很多矩陣運(yùn)算的包,并且該平臺(tái)下載未預(yù)裝的包時(shí)速度較快,同時(shí)能避開因系統(tǒng)不同而造成的裝包錯(cuò)誤,所以實(shí)驗(yàn)選擇在該平臺(tái)上進(jìn)行實(shí)現(xiàn). 實(shí)驗(yàn)中所使用的運(yùn)算包主要有:math、shutil、pandas、mxnet、d2l.
實(shí)驗(yàn)對(duì)比了5個(gè)ResNet模型和2個(gè)VGG模型在數(shù)據(jù)集上的誤差與速度. ResNet系列中從輕量級(jí)到重量級(jí)分別有ResNet18、ResNet34、ResNet50,ResNet101以及ResNet152. VGG16、VGG19與其中ResNet101和ResNet152屬于重量級(jí)模型,難以滿足實(shí)時(shí)要求. 而ResNet18和ResNet34屬于輕量級(jí)模型,支持在便攜設(shè)備上使用,但因其復(fù)雜度較低,所以精度也無法達(dá)到預(yù)期. 因此常用的是復(fù)雜度和速度都適中的ResNet50.
實(shí)驗(yàn)所用數(shù)據(jù)集為Kaggle上一項(xiàng)樹葉分類競(jìng)賽的樹葉數(shù)據(jù)集,其擁有176類形態(tài)各異的樹葉,其中訓(xùn)練樣本16 518個(gè),驗(yàn)證樣本1 835個(gè),測(cè)試樣本8 800個(gè).
實(shí)際任務(wù)中常用的數(shù)據(jù)增強(qiáng)操作有: 垂直翻轉(zhuǎn)、水平翻轉(zhuǎn)、旋轉(zhuǎn)、隨機(jī)剪裁、中心剪裁、五點(diǎn)剪裁、顏色波動(dòng)、高寬比變化、疊加混合、剪切混合、透視、伽馬變換等. 實(shí)驗(yàn)中使用的操作有水平翻轉(zhuǎn)、豎直翻轉(zhuǎn)、裁剪、隨機(jī)顏色波動(dòng)、隨機(jī)長(zhǎng)寬比拉伸. 水平和豎直翻轉(zhuǎn)概率的取值為0和0.5;裁剪方式分為中心裁剪和隨機(jī)裁剪,取值范圍是0~1;顏色波動(dòng)的取值范圍為0~1;隨機(jī)長(zhǎng)寬比拉伸的取值范圍是1/2~2到5/6~6/5. 根據(jù)Leaves數(shù)據(jù)集的特點(diǎn),對(duì)圖像進(jìn)行不同程度的數(shù)據(jù)增強(qiáng),并進(jìn)行對(duì)比實(shí)驗(yàn).
水平翻轉(zhuǎn)與垂直翻轉(zhuǎn)都可以增加數(shù)據(jù)的多樣性,提高模型泛化性能. 然而如圖4所示,水平翻轉(zhuǎn)比無翻轉(zhuǎn)降低了驗(yàn)證誤差,但垂直翻轉(zhuǎn)和垂直水平翻轉(zhuǎn)都提高了驗(yàn)證誤差.因?yàn)閷?duì)于一些物體來說,經(jīng)過垂直翻轉(zhuǎn)后的形象在實(shí)際生活中并不存在(例如汽車、信號(hào)燈、房屋等),因此有些物體不適宜垂直翻轉(zhuǎn).
圖4 垂直翻轉(zhuǎn)與水平翻轉(zhuǎn)交叉驗(yàn)證
裁剪的目的是適當(dāng)放大待識(shí)別物體,使其在圖片中更突出,去除一定的無關(guān)背景,在一定程度上增加物體的多樣性. 如圖5所示,在使用中心剪裁時(shí)驗(yàn)證誤差逐漸增大. 使用隨機(jī)剪裁時(shí),當(dāng)參數(shù)設(shè)為0.9時(shí)驗(yàn)證誤差最小,隨后緩慢增大. 所以,選擇隨機(jī)剪裁圖片大小的90%左右作為輸入較為合適,因?yàn)閿?shù)據(jù)集中的樹葉并不全位于圖片中心且背景簡(jiǎn)單. 因此裁剪的策略主要依據(jù)數(shù)據(jù)集里的圖片類型而定. 若待識(shí)別物體基本位于圖片中心位置時(shí),則可以選擇中心剪裁,中心剪裁的參數(shù)選擇則依據(jù)數(shù)據(jù)集里待識(shí)別物體占圖片的比例來決定. 若數(shù)據(jù)集中待識(shí)別物體并不是都位于圖片中心則可以選擇隨機(jī)剪裁或五點(diǎn)剪裁,隨機(jī)剪裁的參數(shù)選擇與中心剪裁的參數(shù)選擇方法一致.
圖5 隨機(jī)剪裁與中心剪裁交叉驗(yàn)證
顏色波動(dòng)包含3個(gè)方面:亮度、對(duì)比度和飽和度. 由于感光元件和拍攝環(huán)境等不同,同一類物體在照片中的亮度、對(duì)比度、飽和度甚至顏色都會(huì)有所不同. 因此在訓(xùn)練模型時(shí),增加適當(dāng)?shù)念伾▌?dòng),有助于增強(qiáng)模型的泛化性能. 但是波動(dòng)范圍太大時(shí),圖片會(huì)發(fā)生過曝或欠曝等問題,以至于圖片難以識(shí)別. 顏色波動(dòng)的取值范圍為0~1,如圖6所示,一般選擇0.1~0.4的值. 此處當(dāng)參數(shù)設(shè)為0.2時(shí)驗(yàn)證誤差最小,當(dāng)參數(shù)大于0.4時(shí),驗(yàn)證誤差急劇增大.
圖6 顏色波動(dòng)參數(shù)交叉驗(yàn)證
高寬比拉伸是在圖片中隨機(jī)選取一個(gè)高寬比在參數(shù)范圍之內(nèi)的子區(qū)域,最后被拉伸為標(biāo)準(zhǔn)尺寸作為輸入. 這在一定程度上可以增強(qiáng)模型對(duì)物體的認(rèn)知能力,但是拉伸程度也不宜過大,否則可能會(huì)導(dǎo)致模型因?yàn)閷W(xué)習(xí)了拉伸比過大的圖片后反而對(duì)正常尺寸物體無法識(shí)別. 如圖7所示,輕微拉伸到劇烈拉伸,驗(yàn)證誤差先減小后增大,驗(yàn)證誤差選取拉伸比在3/4~4/3時(shí)可有效降低模型的分類誤差.
圖7 長(zhǎng)寬比拉伸參數(shù)交叉驗(yàn)證
對(duì)隨機(jī)剪裁參數(shù)和顏色波動(dòng)參數(shù)進(jìn)行網(wǎng)格搜索,如圖8所示,未出現(xiàn)較大波動(dòng)區(qū)域. 隨機(jī)剪裁參數(shù)設(shè)為0.8~0.9,顏色波動(dòng)參數(shù)設(shè)為0.1~0.2,可見模型較為穩(wěn)定,準(zhǔn)確率較高.
圖8 隨機(jī)剪裁與顏色波動(dòng)參數(shù)網(wǎng)格
同樣對(duì)隨機(jī)剪裁和長(zhǎng)寬比參數(shù)進(jìn)行網(wǎng)格搜索,如圖9所示,未出現(xiàn)較大波動(dòng)區(qū)域. 最優(yōu)區(qū)域出現(xiàn)在隨機(jī)剪裁0.85、長(zhǎng)寬比3/4~4/3附近.
圖9 隨機(jī)剪裁與長(zhǎng)寬比參數(shù)網(wǎng)格
將ResNet50的主干部分參數(shù)凍結(jié),在其末尾層之后再添加新的全連接層,將原本1 000類的輸出映射到目標(biāo)數(shù)據(jù)集的類別數(shù)(176類);或是主干參數(shù)解凍,將最后一層替換為需要的全連接層. 不同的全連接層設(shè)計(jì)將有不同的效果,對(duì)比不同結(jié)構(gòu)、不同學(xué)習(xí)策略對(duì)模型準(zhǔn)確率與效率的影響.
主干凍結(jié)模型結(jié)構(gòu)如圖10所示:模型主干參數(shù)凍結(jié);A)在主干之后增添一個(gè)256節(jié)點(diǎn)的全連接層、B)主干之后增添一個(gè)512節(jié)點(diǎn)的全連接層、C)主干之后增添一個(gè)512節(jié)點(diǎn)的全連接層和一個(gè)256節(jié)點(diǎn)的全連接層;最后使用176節(jié)點(diǎn)的全連接層作為輸出層. 圖11給出了3種全連接層改造方案的實(shí)驗(yàn)對(duì)比結(jié)果. 從圖11可以看出,改造層越豐富,網(wǎng)絡(luò)的學(xué)習(xí)能力就越強(qiáng),訓(xùn)練誤差和驗(yàn)證遷移學(xué)習(xí)策略的對(duì)比實(shí)驗(yàn)如圖12所示:替換末尾層為176節(jié)點(diǎn)的全連接層,對(duì)比凍結(jié)主干僅通過改造層進(jìn)一步學(xué)習(xí)與解凍主干模型整體一同進(jìn)一步學(xué)習(xí)的效果差異. 實(shí)驗(yàn)結(jié)果如圖13所示,解凍方案的效果在誤差和準(zhǔn)確率上均優(yōu)于凍結(jié)策略.
圖10 主干凍結(jié)時(shí)3種全連接層改造方案
圖11 3種全連接層改造方案的實(shí)驗(yàn)對(duì)比結(jié)果
圖12 遷移學(xué)習(xí)策略對(duì)比圖
圖13 遷移學(xué)習(xí)策略對(duì)比實(shí)驗(yàn)結(jié)果
鑒于整體遷移學(xué)習(xí)能大幅提高模型分類能力,本文對(duì)比了使用不同量級(jí)模型整體遷移學(xué)習(xí)的分類情況. 各個(gè)模型的超參數(shù)參考ResNet50中的超參數(shù)進(jìn)行微調(diào). 實(shí)驗(yàn)結(jié)果如圖14所示,準(zhǔn)確率較高的網(wǎng)絡(luò)分布在靠右的位置,其中ResNet101的準(zhǔn)確率最高,達(dá)到了96.3%. ResNet152雖然層數(shù)更多,但在準(zhǔn)確度上與ResNet50相近;在速度方面,隨著殘差網(wǎng)絡(luò)卷積層的增多,速度越來越慢. 速度最快的ResNet18每秒可以處理圖片212.2幀,其準(zhǔn)確率仍有95.6%. 與殘差網(wǎng)絡(luò)相比,VGG16在準(zhǔn)確率與速度方面都不占優(yōu).
圖14 解凍主干時(shí)模型精確度與效率
因此,當(dāng)整個(gè)模型參數(shù)都進(jìn)行學(xué)習(xí)時(shí),可根據(jù)實(shí)際任務(wù)的不同需求選擇合適的模型. 若實(shí)際任務(wù)需要更高的精度,則選擇ResNet101更好;若實(shí)際任務(wù)需要更快的分類速度,則選擇ResNet18更佳.
由以上的實(shí)驗(yàn)結(jié)果及分析,得到如下3個(gè)方面的結(jié)論:1)模型的選擇既不是越快越好(輕量級(jí)),也不是層數(shù)越多越好(重量級(jí)),而是需要選擇與數(shù)據(jù)集復(fù)雜度相適應(yīng)的模型進(jìn)行訓(xùn)練. 模型過輕時(shí),雖然訓(xùn)練時(shí)間比較短,但是模型的學(xué)習(xí)能力不足以匹配數(shù)據(jù)集的復(fù)雜程度,因此精度也大打折扣;模型過重時(shí),雖然其學(xué)習(xí)能力非常強(qiáng),但是不僅訓(xùn)練速度十分緩慢,而且很大可能出現(xiàn)過擬合的情況,從而使其泛化性能不強(qiáng)、精度不高;2)數(shù)據(jù)增強(qiáng)并非越多越好. 數(shù)據(jù)增強(qiáng)需要根據(jù)數(shù)據(jù)集的特點(diǎn)加以選擇. 例如:一般情況下水平翻轉(zhuǎn)都有助于提高精度,而垂直翻轉(zhuǎn)對(duì)于一些數(shù)據(jù)集來說卻并不合適,甚至?xí)档途? 同理,選擇隨機(jī)裁剪或中心裁剪也要根據(jù)數(shù)據(jù)集中的圖片構(gòu)圖情況來決定. 總的來說,數(shù)據(jù)增強(qiáng)還是有助于提高模型的分類精度的;3)遷移學(xué)習(xí)中,深度網(wǎng)絡(luò)主干作為特征提取器時(shí),多層感知機(jī)的層數(shù)與節(jié)點(diǎn)數(shù)也應(yīng)與目標(biāo)數(shù)據(jù)集的復(fù)雜度匹配. 當(dāng)在深度網(wǎng)絡(luò)主干后設(shè)計(jì)契合目標(biāo)數(shù)據(jù)集種類的全連接層時(shí),新的全連接層與主干形成了一個(gè)新的整體網(wǎng)絡(luò)模型.新模型中的參數(shù)在目標(biāo)數(shù)據(jù)集上進(jìn)行遷移學(xué)習(xí),從而達(dá)到對(duì)目標(biāo)數(shù)據(jù)集的分類目標(biāo). 在樹葉數(shù)據(jù)集上,不凍結(jié)主干的遷移學(xué)習(xí)比凍結(jié)主干的遷移學(xué)習(xí)效果要好很多;4)基于ResNet18的樹葉分類方法是輕量級(jí)網(wǎng)絡(luò),可在便攜設(shè)備上實(shí)現(xiàn)部署,同時(shí)滿足了精度要求和速度要求,可應(yīng)用于實(shí)際護(hù)林工作.
實(shí)驗(yàn)有待提高之處有3個(gè)方面:1)數(shù)據(jù)集中的背景比較簡(jiǎn)單,干擾因素較少,未采取室外復(fù)雜環(huán)境背景進(jìn)行實(shí)驗(yàn);2)地球植物種類眾多,176類相對(duì)來說還是太少,數(shù)據(jù)集類別增多勢(shì)必會(huì)帶給模型新的挑戰(zhàn);3)信息量不足,實(shí)際的分類需求并不僅僅只需要物種名稱,往往還需要其他相關(guān)信息. 未來可以嘗試復(fù)雜背景下針對(duì)更多類別樹葉的分類工作.