高琪娟,李春波,金 秀,李葉云,吳慧平
(1. 安徽農(nóng)業(yè)大學(xué)信息與計(jì)算機(jī)學(xué)院,合肥230036;2. 安徽農(nóng)業(yè)大學(xué)茶樹(shù)生物學(xué)與資源利用國(guó)家重點(diǎn)實(shí)驗(yàn)室,合肥230036;3. 安徽農(nóng)業(yè)大學(xué)植物保護(hù)學(xué)院,合肥230036)
在茶園生態(tài)環(huán)境下,茶園雜草與茶樹(shù)爭(zhēng)奪水肥和光照,是影響茶園產(chǎn)量的重要因素之一[1]。當(dāng)前主要采用噴施除草劑除草,不合理的施肥會(huì)帶來(lái)環(huán)境污染及食品安全等問(wèn)題[2-3]。近年來(lái),智能化除草技術(shù)發(fā)展迅速,如何對(duì)雜草分類(lèi)是實(shí)現(xiàn)智能化除草技術(shù)的關(guān)鍵問(wèn)題[4]。隨著現(xiàn)代化農(nóng)業(yè)的發(fā)展,利用計(jì)算機(jī)的圖像和視覺(jué)處理技術(shù),將雜草分類(lèi)結(jié)果反饋給除草機(jī)器或者將數(shù)據(jù)傳達(dá)給除草的人是未來(lái)研究的課題。
目前,利用基于機(jī)器學(xué)習(xí)的方法在雜草分類(lèi)技術(shù)領(lǐng)域取得了很多進(jìn)展,李慧等提出利用主成分分析(principal components analysis,PCA)和支持向量機(jī)(support vector machine,SVM)的方法對(duì)棉花雜草分類(lèi),并通過(guò)實(shí)驗(yàn)取得了很好的分類(lèi)效果[5]。劉冥羽利用k-means算法結(jié)合層級(jí)聚類(lèi)方法對(duì)農(nóng)作物中的雜草圖片分類(lèi),提高了分類(lèi)的準(zhǔn)確性[6]。隨著深度學(xué)習(xí)的興起,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在圖像分類(lèi)任務(wù)中的應(yīng)用越來(lái)越廣泛,能夠自動(dòng)提取到圖像的特征,降低圖像的分類(lèi)錯(cuò)誤率。2012年AlexNet模型有效提高了大規(guī)模數(shù)據(jù)集的圖像分類(lèi)準(zhǔn)確率后[7],卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展方向是層數(shù)的加深,產(chǎn)生了效果更加的VGGNet模型[8],例如,周云成等[9]提出了一種基于VGGNet的8層CNN優(yōu)化結(jié)構(gòu)TD-Net,實(shí)現(xiàn)了對(duì)番茄主要器官的分類(lèi)識(shí)別。隨著模型深度加深,訓(xùn)練會(huì)增大訓(xùn)練誤差,于是Szegedy等在2015年提出了深度殘差網(wǎng)絡(luò)ResNet50[10]。ResNet50深度神經(jīng)網(wǎng)絡(luò)模型具有更多的網(wǎng)絡(luò)層,有巨大參數(shù),對(duì)硬件資源要求很高。需要用到性能較好的GPU來(lái)提高運(yùn)算速度。目前網(wǎng)絡(luò)剪枝(network pruning)是一種流行的模型壓縮方法[11],通過(guò)對(duì)不重要的神經(jīng)元、濾波器或者通道進(jìn)行剪枝,能有效壓縮模型的參數(shù)量和計(jì)算量。
本研究基于ResNet50、VGGNet和AlexNet等網(wǎng)絡(luò)架構(gòu)分別構(gòu)建茶園雜草分類(lèi)模型,通過(guò)對(duì)比實(shí)驗(yàn),結(jié)果表明ResNet50網(wǎng)絡(luò)模型優(yōu)于VGGNet,AlexNet。在此基礎(chǔ)上,本研究進(jìn)一步結(jié)合神經(jīng)網(wǎng)絡(luò)參數(shù)稀疏度和權(quán)重裁剪閾值設(shè)定方法,刪除預(yù)訓(xùn)練好的ResNet5050模型中冗余參數(shù),減少計(jì)算復(fù)雜度,進(jìn)而實(shí)現(xiàn)模型輕量化,且提高了準(zhǔn)確率。
本實(shí)驗(yàn)選擇了茶園常見(jiàn)的10種雜草,包括蓬蘽、酸模葉蓼、菝葜、絡(luò)石、刺兒菜、黃鵪菜、苦苣菜、野艾蒿、一年蓬和中華小苦荬。其中每張圖片的分辨率為6 144×4 084,如圖1所示,共計(jì)1 737張圖片。為了避免樣本數(shù)量不足造成模型訓(xùn)練過(guò)擬合問(wèn)題,利用原始圖像進(jìn)行旋轉(zhuǎn)、平移、放大和翻轉(zhuǎn)等操作擴(kuò)充圖像數(shù)據(jù)至15 003張。
圖1 10種不同種類(lèi)的雜草圖片F(xiàn)igure 1 Photos of ten different kinds of weeds
將上述10類(lèi)雜草圖片添加文本標(biāo)簽,以0—9編號(hào),數(shù)據(jù)集按照訓(xùn)練集70%與測(cè)試集30%隨機(jī)劃分,其中訓(xùn)練集12 006張,測(cè)試集共2 997張。結(jié)果如下表1所示。
表1 茶園常見(jiàn)的雜草種類(lèi)Table 1 Common weeds in tea garden
1.2.1 茶園雜草識(shí)別模型的設(shè)計(jì)方法 本研究基于深度神經(jīng)網(wǎng)絡(luò)構(gòu)建的茶園雜草識(shí)別模型,主要用到3種網(wǎng)絡(luò)結(jié)構(gòu),AlexNet、VGG16和ResNet50,其中ResNet50提出了殘差bottleneck結(jié)構(gòu),卷積層和全連接層加起來(lái)深度共50層[12]。該方法應(yīng)用深度殘差網(wǎng)絡(luò)結(jié)構(gòu)ResNet50訓(xùn)練模型,再用訓(xùn)練好的模型測(cè)試識(shí)別的準(zhǔn)確率。本研究采用10種雜草類(lèi)別,對(duì)ResNet50預(yù)訓(xùn)練模型進(jìn)行了適當(dāng)?shù)母脑?。如圖2所示,首先刪除頂層的全連接層及其參數(shù),保留其他層的模型參數(shù),并獲取預(yù)訓(xùn)練模型學(xué)到的內(nèi)容;然后針對(duì)雜草的10個(gè)分類(lèi)重新建立全連接,隨機(jī)初始化參數(shù)。本研究為了對(duì)比殘差網(wǎng)絡(luò)和其他卷積模型學(xué)習(xí)的效果,用同樣的雜草圖片數(shù)據(jù)放入在VGGNet(VGG16)和AlexNet模型,分別從零訓(xùn)練得到雜草分類(lèi)模型。
圖2 基于深度學(xué)習(xí)雜草識(shí)別模塊結(jié)構(gòu)Figure 2 The architecture of weed identification model
1.2.2 實(shí)驗(yàn)環(huán)境 本實(shí)驗(yàn)基于TensorFlow框架進(jìn)行訓(xùn)練和測(cè)試雜草圖片。使用AlexNet、VGG16和ResNet50網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練。軟件環(huán)境為CUDEV10,Python 3.8,Tensorflow-GPU。
1.2.3 深度模型的剪枝壓縮方法研究 參數(shù)剪枝是模型壓縮及加速的常用方法之一。對(duì)神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),模型訓(xùn)練中的參數(shù)是網(wǎng)絡(luò)中的權(quán)重。剪枝就是利用某一個(gè)準(zhǔn)則對(duì)某一組或某一個(gè)權(quán)值置0從而達(dá)到將網(wǎng)絡(luò)神經(jīng)元置0以達(dá)到稀疏化網(wǎng)絡(luò)連接從而加快整個(gè)推理過(guò)程及縮小模型大小的迭代過(guò)程。模型訓(xùn)練時(shí)的剪枝,針對(duì)需要剪枝的層,增加二進(jìn)制掩膜變量矩陣,閾值是指每層設(shè)置一個(gè)閾值,其中每個(gè)權(quán)值都有與之對(duì)應(yīng)的掩膜mask代表其剪枝狀態(tài),每層的權(quán)值矩陣wl設(shè)置一個(gè)同等大小的掩膜矩陣,掩膜取值只能取0或者1,其中0代表相應(yīng)的權(quán)值被剪枝而1代表相應(yīng)的權(quán)值被保留[13]。
ResNet50模型在多個(gè)遷移學(xué)習(xí)任務(wù)中的表現(xiàn)要優(yōu)于許多網(wǎng)絡(luò)結(jié)構(gòu)?;贐ottleneck,每個(gè)layer都由若干Block搭建而成,再由layer組成整個(gè)網(wǎng)絡(luò)。每種ResNet50都是4個(gè)layer,改變最后一層的輸出,將多維的輸入一維化,對(duì)全連接層進(jìn)行修剪。由于存在殘差網(wǎng)絡(luò)塊,在裁剪的時(shí)候減少了很多限制。
為了加快模型的訓(xùn)練速度,提高模型精度,將模型訓(xùn)練的茶園圖像數(shù)據(jù)原始圖像尺寸調(diào)整為224×224像素。本實(shí)驗(yàn)在模型訓(xùn)練過(guò)程中取訓(xùn)練樣本的數(shù)量(batch_size)為64,訓(xùn)練批次(epoch)為100,采用ReLu激活函數(shù),加入Batch Normalization對(duì)每一批數(shù)據(jù)進(jìn)行歸一化處理,最好采用Dropout按照一定概率丟掉神經(jīng)網(wǎng)絡(luò)單元,防治過(guò)擬合。
模型優(yōu)化器選擇隨機(jī)梯度下降優(yōu)化器(stochastic gradient descent,SGD),學(xué)習(xí)率為0.001,3種模型使用上面相同樣本量和相同的訓(xùn)練批次,相同激活函數(shù),研究結(jié)果如圖3所示,ResNet50、VGG16和AlexNet的網(wǎng)絡(luò)結(jié)構(gòu)在訓(xùn)練集準(zhǔn)確率結(jié)果為0.98、0.86和0.96;測(cè)試集準(zhǔn)確率結(jié)果為0.74、0.63和0.63。
圖3 ResNet50(a)、VGG16(b)和AlexNet(c)的訓(xùn)練集和測(cè)試集的訓(xùn)練對(duì)比Figure 3 The figure of compared training and testing results based on ResNet50,VGG16 and AlexNet network
表3 VGG16模型混淆矩陣Table 3 Confusion matrix of VGG16 model %
此外,進(jìn)一步分別利用混淆矩陣對(duì)3個(gè)模型測(cè)試分類(lèi)結(jié)果進(jìn)行統(tǒng)計(jì)[14],如表2,3和4所示。研究結(jié)果表明,斜對(duì)角線(xiàn)顯示的10個(gè)類(lèi)別雜草分類(lèi)的準(zhǔn)確率,其中最優(yōu)模型是ResNet50,VGG16混淆了蓬蘽和酸模葉蓼,絡(luò)石的準(zhǔn)確率只有4%,AlexNet對(duì)每一類(lèi)雜草的分類(lèi)準(zhǔn)確率也只有50%。
表2 ResNet50模型混淆矩陣Table 2 Confusion matrix of ResNet50 model %
綜上所述,通過(guò)訓(xùn)練集和測(cè)試集的結(jié)果表明基于ResNet50訓(xùn)練出的雜草分類(lèi)準(zhǔn)確率高于非遷移的VGG16和AlexNet網(wǎng)絡(luò)結(jié)構(gòu),表明ResNet50模型對(duì)該雜草種類(lèi)分類(lèi)效果更好。鑒于此,本研究最終選擇了ResNet505構(gòu)建雜草分類(lèi)模型。
表4 AlexNet模型混淆矩陣Table 4 Confusion matrix of AlexNet model %
ResNet50深度模型有很多參數(shù),本研究首先設(shè)置Batch_Size為{32,48,64,80}。通過(guò)對(duì)比不同Batch_Size的損失函數(shù),結(jié)果如圖4(a)所示,發(fā)現(xiàn)Batch_Size越小,模型收斂速度越好。進(jìn)一步在驗(yàn)證集上,對(duì)比了不同的Batch_Size的訓(xùn)練效果,如圖4(b)所示,研究表明Batch_Size=32時(shí),模型分類(lèi)的效果最好,從而使得模型有更好的泛化能力。
圖4 ResNet50模型Batch_Size和lr參數(shù)調(diào)整對(duì)比Figure 4 The comparison of ResNet50 network under different parameters of Batch_Size and lr
此外,還研究了學(xué)習(xí)率(learning rate, lr)對(duì)模型訓(xùn)練效果的影響,將lr分別設(shè)置為{0.1, 0.05, 0.01,0.005, 0.001, 0.000 5, 0.000 1, 0.000 05, 0.000 01}。通過(guò)對(duì)ResNet50模型中l(wèi)r的對(duì)比實(shí)驗(yàn),圖4(c)結(jié)果顯示,當(dāng)lr為0.005時(shí)模型收斂速度越好,但并不是lr越大或越小越好,當(dāng)lr設(shè)置太大時(shí),模型反而不能很好收斂。鑒于此,由4(d)所示,得出lr取適中間值時(shí),模型在驗(yàn)證集上準(zhǔn)確率較好。
綜上所述,深度模型通過(guò)設(shè)置參數(shù)調(diào)優(yōu)有效提升了模型的雜草分類(lèi)效果。
本研究基于訓(xùn)練后的雜草分類(lèi)模型(ResNet50)進(jìn)行剪枝訓(xùn)練,根據(jù)設(shè)置動(dòng)態(tài)閾值方法,每層設(shè)置不同的閾值,如果低于某一閾值就直接刪除,減少模型連接。研究結(jié)果如圖5所示,壓縮后的模型在訓(xùn)練集和測(cè)試集結(jié)果分別為0.98和0.68。
圖5 ResNet50剪枝后的訓(xùn)練集和測(cè)試集的訓(xùn)練對(duì)比Figure 5 The result of compared training and testing after pruning ResNet50 network
進(jìn)一步對(duì)比了ResNet50模型剪枝前后的分類(lèi)效果,結(jié)果如表5所示,研究表明,在訓(xùn)練集和測(cè)試集上,分類(lèi)的準(zhǔn)確率基本沒(méi)有變化。簡(jiǎn)言之,壓縮模型沒(méi)有對(duì)模型的分類(lèi)效果產(chǎn)生影響。
表5 ResNet50壓縮前后在訓(xùn)練集和測(cè)試集上準(zhǔn)確率對(duì)比Table 5 Compared training and testing result of accuracy between before and after pruning ResNet50 network
量化的過(guò)程是一邊量化一邊訓(xùn)練,量化訓(xùn)練取batch_size=64,epoch=100,采用ReLu激活函數(shù),加入Batch Normalization對(duì)每一批數(shù)據(jù)歸一化處理,將模型隨機(jī)梯度優(yōu)化器SGD, ResNet50壓縮結(jié)果由剪枝前484.5 M減少到94.3 M。
本研究基于深度卷積神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)茶園雜草分類(lèi)模型的可行性,設(shè)計(jì)和選用了3種不同的模型ResNet50、VGG16和AlexNet進(jìn)行雜草分類(lèi),再基于最優(yōu)分類(lèi)模型ResNet50進(jìn)行剪枝壓縮,實(shí)驗(yàn)結(jié)果表明:在訓(xùn)練集和測(cè)試集中,模型未壓縮前ResNet50的分類(lèi)準(zhǔn)確度分別是97%和87%,優(yōu)于其他兩個(gè)模型的準(zhǔn)確率;另外3個(gè)模型的混淆矩陣列表說(shuō)明ResNet50對(duì)10類(lèi)雜草的每一類(lèi)都能較準(zhǔn)的識(shí)別,且錯(cuò)誤率較低。為了進(jìn)一步優(yōu)化模型。對(duì)模型ResNet50設(shè)置不同的參數(shù)Batch_size和學(xué)習(xí)率lr,研究顯示Batch_size越小,模型越能防止過(guò)擬合,能提升模型的訓(xùn)練效果;隨著lr增大時(shí),模型反而不能很好收斂。毫無(wú)疑問(wèn),深度模型ResNet50層數(shù)多,模型的參數(shù)也加大,容易造成模型的訓(xùn)練誤差。鑒于此,本研究在ResNet50模型基礎(chǔ)上刪除冗余參數(shù),進(jìn)行剪枝壓縮。結(jié)果表明模型得到了大幅度的壓縮;而且通過(guò)分析該模型壓縮前后分類(lèi)結(jié)果,發(fā)現(xiàn)殘差學(xué)習(xí)網(wǎng)絡(luò)對(duì)模型的分類(lèi)結(jié)果沒(méi)有大的影響??傊琑esNet50模型能準(zhǔn)確識(shí)別出茶園雜草并能有效壓縮,為后期部署到移動(dòng)端提出了更好的設(shè)計(jì)方案。