王志玲,李紹穩(wěn),金 秀
(1.安徽農(nóng)業(yè)大學(xué) 信息與計(jì)算機(jī)學(xué)院,安徽 合肥 230036;2.智慧農(nóng)業(yè)技術(shù)與裝備安徽省重點(diǎn)實(shí)驗(yàn)室,安徽 合肥 230036)
竹類植物是禾本科竹亞科植物,全球約有88屬1400多種,主要分布在亞太、拉美和非洲地區(qū)[1],我國(guó)竹林面積約占森林總面積的3%,達(dá)到了六百余萬(wàn)公頃[2].對(duì)竹種種類的識(shí)別,不僅是竹類學(xué)家研究竹類屬性與應(yīng)用的重要前提,也是人們認(rèn)識(shí)竹類、了解自然的方式.因此如何高效快速對(duì)竹種進(jìn)行分類具有十分重要的意義,對(duì)于推進(jìn)現(xiàn)代信息技術(shù)與林業(yè)深度的跨界融合也具有實(shí)際理論意義.竹種分類的研究一直是植物系統(tǒng)分類研究中的重要部分之一,有許多植物學(xué)家為之探索.近代以來(lái),主要以花和果實(shí)形態(tài)作為竹種分類的指標(biāo).1803年建立了第一個(gè)傘生竹屬Arundinaria Michaux[3].1956年,Holttum[4]依據(jù)子房結(jié)構(gòu),提出了7族4亞族分類系統(tǒng).我國(guó)竹類學(xué)家耿以禮[5]在1957年提出“耿式系統(tǒng)”,主要通過(guò)竹子開花的順序劃分竹子種類.后來(lái)耿伯介等[6]對(duì)“耿式系統(tǒng)”進(jìn)行前后3次修正和補(bǔ)充,并將研究?jī)?nèi)容編入《中國(guó)植物志》第九卷第一冊(cè)竹亞科,且目前一直在使用.李欣等[7]通過(guò)計(jì)算機(jī)技術(shù)以竹種形態(tài)學(xué)作為研究對(duì)象,使用支持向量機(jī)(Support Vector Machine,SVM)做為竹種分類的分類器.
傳統(tǒng)的基于機(jī)器學(xué)習(xí)的圖片分類,需要針對(duì)竹種圖片對(duì)象設(shè)計(jì)最優(yōu)特征選擇,選擇圖片特征不明顯,得出的結(jié)果會(huì)出現(xiàn)較大偏差.而由于竹種類型、生長(zhǎng)時(shí)期、光照時(shí)間、地理環(huán)境復(fù)雜等因素的影響,導(dǎo)致竹種特征的提取也相當(dāng)困難.深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)利用不同的卷積核、池化和最后輸出的特征向量的大小來(lái)控制整體模型的擬合能力,比傳統(tǒng)機(jī)器學(xué)習(xí)方法具有更強(qiáng)大的特征學(xué)習(xí)和特征表達(dá)能力,所提取的特征更加多樣化.該方法采用局部感受野、權(quán)值共享和空間采樣技術(shù)[8],使得網(wǎng)絡(luò)的訓(xùn)練參數(shù)相比于神經(jīng)網(wǎng)絡(luò)大大減少,具有適用性強(qiáng)、特征提取與分類同時(shí)進(jìn)行、泛化能力強(qiáng)、全局優(yōu)化訓(xùn)練參數(shù)少等優(yōu)點(diǎn)[9].AlexNet由Alex等[10]2012年提出.VGGNet模型[11]是2014年ILSVRC競(jìng)賽的第二名,第一名是GoogLeNet.但是VGGNet模型在多個(gè)遷移學(xué)習(xí)任務(wù)中的表現(xiàn)要優(yōu)于GoogLeNet.之后,AlexNet和VGGNet網(wǎng)絡(luò)結(jié)構(gòu)模型被廣泛應(yīng)用到各個(gè)領(lǐng)域.竹子作為重要的多用途森林資源,在世界各國(guó)的地區(qū)發(fā)展和社會(huì)發(fā)展中起著舉足輕重的作用,其研究也越來(lái)越受到世界各地的重視.神經(jīng)網(wǎng)絡(luò)模型壓縮方法主要分為低階近似[12],剪枝[13],量化[14]和二值化[15],知識(shí)蒸餾[16]等.目前國(guó)內(nèi)外主要以果實(shí)形態(tài)作為竹種分類的指標(biāo),本文使用AlexNet和VGGNet進(jìn)行竹種分類,為以后基于深度學(xué)習(xí)的竹種分類模型移植到手機(jī)端提供理論依據(jù).
目前卷積神經(jīng)網(wǎng)絡(luò)模型很多,本文使用了神經(jīng)網(wǎng)絡(luò)中的VGGNet-16和AlexNet網(wǎng)絡(luò)結(jié)構(gòu)作為實(shí)驗(yàn)特征提取網(wǎng)絡(luò),對(duì)竹種圖像數(shù)據(jù)集進(jìn)行訓(xùn)練.AlexNet整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)是由5個(gè)卷積層和3個(gè)全連接層組成,深度總共8層,輸入一張224×224像素的竹種圖像,在第1、2、5層卷積之后增加了Max-Pooling層,還在每一個(gè)Pooling后包含了局部響應(yīng)歸一化處理.AlexNet中每層卷積層中只包含一個(gè)卷積,卷積核的大小是7×7.VGGNet-16網(wǎng)絡(luò)是在AlexNet網(wǎng)絡(luò)的基礎(chǔ)上發(fā)展而來(lái)的,并且將網(wǎng)絡(luò)深度增加到16~19層,整個(gè)網(wǎng)絡(luò)都使用了同樣大小的3×3卷積核尺寸和2×2最大池化尺寸,由13個(gè)卷積層和3個(gè)全連接層組成.相較于AlexNet,VGGNet-16最大的區(qū)別就是用小尺寸的過(guò)濾器代替大尺寸的過(guò)濾器,下圖1是VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)圖.
卷積神經(jīng)網(wǎng)絡(luò)主要有卷積層、池化層、全連接層組成[17],卷積層目的是進(jìn)行特征提取,神經(jīng)網(wǎng)絡(luò)的核心在卷積層,卷積層的核心在卷積運(yùn)算.低卷積層往往只關(guān)注圖像整體特征,提取很少能準(zhǔn)確描述竹種圖片的特征元素,高層卷積更加關(guān)注圖像復(fù)雜特征,在卷積運(yùn)算中不斷迭代更能表現(xiàn)竹種特征.
經(jīng)過(guò)卷積操作后學(xué)習(xí)到竹種圖像特征之后,在卷積層后加一個(gè)池化層,在盡可能保留竹種圖片空間信息的前提下,降低圖片的尺寸,增大卷積感受野,提取高層特征,同時(shí)減少網(wǎng)絡(luò)參數(shù),可以根據(jù)提取出的竹種特征進(jìn)行分類.對(duì)于卷積神經(jīng)網(wǎng)絡(luò)而言,每個(gè)卷積層的參數(shù)量計(jì)算見公式(1):
Params=C0*(Kw*Kh*Ci+1),
(1)
其中:C0表示輸出通道數(shù);Kw表示卷積核寬;Kh表示卷積核高;Ci表示輸入通道數(shù).括號(hào)內(nèi)的w*h*Ci表示一個(gè)卷積核的權(quán)重?cái)?shù)量,+1表示偏置單元bias,括號(hào)內(nèi)表示一個(gè)卷積核的參數(shù)量.
對(duì)全連接層而言,其參數(shù)量計(jì)算見公式(2):
Params=(I+1)*O,
(2)
其中:最初由feature map flatten而來(lái)的向量視為第一層全連接層,即此處的I;O表示偏置單元bias數(shù)量.表1是AlexNet網(wǎng)絡(luò)結(jié)構(gòu)卷積層卷積核和參數(shù)量,其中Con表示卷積層.
表1 AlexNet網(wǎng)絡(luò)結(jié)構(gòu)卷積層參數(shù)Tab.1 AlexNet network structure volume layer parameters
深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)空間復(fù)雜度主要包含兩部分總參數(shù)數(shù)量和各層輸出特征圖,參數(shù)量是指模型所有帶參數(shù)的層的權(quán)重參數(shù)總量即模型體積,特征圖是指模型在實(shí)時(shí)運(yùn)行過(guò)程中每層所計(jì)算出的特征圖大小.空間復(fù)雜度由公式(3)表示.
(3)
其中:K表示卷積核的尺寸;C表示通道數(shù);D表示網(wǎng)絡(luò)層數(shù);M表示空間尺寸.
竹種分類壓縮模型是基于VGGNet和AlexNet網(wǎng)絡(luò)結(jié)構(gòu),這兩種網(wǎng)絡(luò)結(jié)構(gòu)主要有卷積層和全連接層組成,由于參數(shù)共享原因,連接層的參數(shù)遠(yuǎn)大于卷積層,但是卷積層也存在大量冗余參數(shù),所以本文基于權(quán)重的剪枝主要對(duì)是卷積層和全連接層參數(shù)進(jìn)行刪減.在VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)中,卷積層的秒浮點(diǎn)運(yùn)算次數(shù)(FLOPS)占了整個(gè)模型的90%,全連接模型參數(shù)占了整個(gè)模型參數(shù)的89.36%,在剪枝算法中對(duì)卷積層和全連接層進(jìn)行剪枝.本文使用的剪枝方法是指在權(quán)重張量中去除不重要的權(quán)值,著眼點(diǎn)是神經(jīng)網(wǎng)絡(luò)的參數(shù).將低于某一閾值的神經(jīng)網(wǎng)絡(luò)參數(shù)值設(shè)置為0,以刪除估計(jì)的神經(jīng)網(wǎng)絡(luò)各層之間不必要的連接,減少神經(jīng)網(wǎng)絡(luò)層之間的連接數(shù)量,減少計(jì)算中涉及的參數(shù),從而降低操作次數(shù),在訓(xùn)練過(guò)程中使神經(jīng)網(wǎng)絡(luò)能夠適應(yīng)變化.經(jīng)過(guò)不斷訓(xùn)練,確定好稀疏度后,根據(jù)動(dòng)態(tài)設(shè)定閾值進(jìn)行剪枝訓(xùn)練.模型剪枝主要是對(duì)卷積層和全連接層進(jìn)行不重要權(quán)值刪除.模型的剪枝實(shí)際上是一個(gè)迭代的過(guò)程,這通常稱為“迭代式剪枝”.防止試驗(yàn)中一次性修剪得太多,則網(wǎng)絡(luò)可能嚴(yán)重受損,無(wú)法恢復(fù).迭代的過(guò)程就是剪枝和模型訓(xùn)練兩者的交替重復(fù)的過(guò)程.再將剪枝后的稀疏模型權(quán)值通過(guò)K-Means++算法進(jìn)行聚類,通過(guò)K-Means++聚類算法對(duì)神經(jīng)網(wǎng)絡(luò)各層的權(quán)值聚類之后,將聚類后的中心表示為權(quán)值,從而實(shí)現(xiàn)權(quán)值共享.同一個(gè)權(quán)值被本層多個(gè)連接共同享有.由于k值遠(yuǎn)遠(yuǎn)小于權(quán)值數(shù)量,從而降低權(quán)值數(shù)量,實(shí)現(xiàn)竹種分類模型壓縮.
2.2.1 稀疏度的設(shè)置
稀疏度是指該層有多少權(quán)重為0,若稀疏度為50%,則該層50%權(quán)重為0.稀疏度可以預(yù)先設(shè)置,指定最初目標(biāo)稀疏度和最終目標(biāo)稀疏度.隨著訓(xùn)練的進(jìn)行,修剪程序?qū)从?jì)劃執(zhí)行,消除(即設(shè)置為零)幅度值最低的權(quán)重,直到達(dá)到最終當(dāng)前稀疏目標(biāo)為止.在竹種分類模型壓縮實(shí)驗(yàn)中發(fā)現(xiàn),初始稀疏度不宜設(shè)置很大,若是設(shè)置過(guò)大會(huì)將原本重要的權(quán)重剪除,降低準(zhǔn)確率,稀疏度需要逐漸提高,效果最佳.本文稀疏度通過(guò)不斷試驗(yàn),得到將最初稀疏度設(shè)置為0.5和最終稀疏度設(shè)置為0.9剪枝后效果最好.0.5的稀疏度到0.9的稀疏度之間是自動(dòng)逐步修剪的,處于動(dòng)態(tài)變化,在每一步找到最優(yōu)稀疏度.這個(gè)自動(dòng)逐步修剪算法,從訓(xùn)練步驟開始,剪裁開始的訓(xùn)練步數(shù)為t0,裁剪的頻率為Δt(相對(duì)訓(xùn)練步數(shù)),將稀疏度從初始稀疏度值(本文初始稀疏度值為0.5),增加到修剪步驟跨度內(nèi)的最終稀疏度值,二進(jìn)制權(quán)重掩碼Δt更新一次.稀疏度從0.5到最終的0.9,在進(jìn)行剪枝操作時(shí),會(huì)再次計(jì)算此時(shí)設(shè)置的稀疏度,通過(guò)平滑上升函數(shù)來(lái)達(dá)到最終稀疏度.各個(gè)時(shí)刻稀疏度都是變化的,某個(gè)時(shí)刻的稀疏度計(jì)算公式為:
(4)
其中:一開始的稀疏度為Si,最終稀疏度為Sf.
2.2.2 閾值的設(shè)置
為了使特征提取因素更好分類竹種,本文使用了動(dòng)態(tài)設(shè)置閾值方法去除權(quán)重中不重要的權(quán)重.閾值是指每層設(shè)置一個(gè)閾值,低于這個(gè)門限的權(quán)值被設(shè)置為零.其中每個(gè)權(quán)值都有與之對(duì)應(yīng)的掩膜(mask)代表其剪枝狀態(tài),每層的權(quán)值矩陣w(l)設(shè)置一個(gè)同等大小的掩膜矩陣M(l)來(lái)實(shí)現(xiàn)的.掩膜的取值為1和0,取值為1表示該權(quán)值被保留,取值為0表示該權(quán)值被剪除,而M(l)通過(guò)比較權(quán)值與此層閾值進(jìn)行更新,公式(5)是權(quán)值變化公式,根據(jù)權(quán)值的分布為每一步計(jì)算一個(gè)閾值t(l).通過(guò)大量實(shí)驗(yàn),尋找一個(gè)最優(yōu)的閾值定值,但是最優(yōu)也不是對(duì)于每一層最優(yōu).所以本文稀疏度設(shè)置后,根據(jù)每層不同參數(shù)大小,設(shè)置的稀疏度不同,相對(duì)應(yīng)的閾值也不一樣,閾值變化是通過(guò)稀疏表,它決定權(quán)重的閾值大小.當(dāng)神經(jīng)元之間的權(quán)重低于此閾值時(shí),就認(rèn)為此連接不重要,刪除此連接[18].
(5)
閾值由公式(6)計(jì)算,
t(l)=μ(l)+c(l)σ(l),
(6)
2.2.3 剪枝過(guò)程
本文通過(guò)動(dòng)態(tài)設(shè)置閾值的方法,避免在某些卷積層不必要的閾值保留.標(biāo)識(shí)為true的權(quán)值即為之前剪枝過(guò)程中被剪除的,在重新訓(xùn)練的過(guò)程中,這一部分權(quán)值不會(huì)隨著訓(xùn)練而更新,這樣,其他權(quán)值可以繼續(xù)得到訓(xùn)練,而模型依然保持剪枝的稀疏性.剪除對(duì)神經(jīng)網(wǎng)絡(luò)模型影響較小的權(quán)值,從而降低模型中的不重要權(quán)值,減少模型存儲(chǔ)的容量,提高竹種分類模型的運(yùn)行效率.通過(guò)實(shí)驗(yàn)表明,權(quán)值的減少會(huì)帶來(lái)竹種分類精度的減低.本文試驗(yàn)通過(guò)掩膜矩陣的方式實(shí)現(xiàn)了剪枝模型的重新學(xué)習(xí),對(duì)于每一個(gè)被修剪的層,在被剪枝的層中,會(huì)加入一個(gè)二元掩碼矩陣,該矩陣是和此層權(quán)重大小形狀相同.該矩陣的作用是標(biāo)志該位置的權(quán)值在之前的剪枝過(guò)程中是否被剪除,該矩陣的內(nèi)容隨之前的剪枝過(guò)程而保存.圖2是掩膜矩陣的原理圖.在重新訓(xùn)練的過(guò)程中,權(quán)值會(huì)按照絕對(duì)值大小排列,在訓(xùn)練過(guò)程中通過(guò)將掩碼置0來(lái)達(dá)到期望的稀疏度.掩碼置0的權(quán)值會(huì)被剪除,不會(huì)隨著訓(xùn)練更新.M沒(méi)有被剪除的權(quán)重繼續(xù)訓(xùn)練,剪枝和訓(xùn)練同時(shí)進(jìn)行.可以保存竹種分類剪枝模型的稀疏性.
指定好稀疏度后,下一步是閾值的設(shè)定.在剪枝過(guò)程中閾值是動(dòng)態(tài)變化的,可自動(dòng)設(shè)置剪枝從哪一步開始到哪一步結(jié)束,并且可設(shè)置多少步剪一次即剪枝頻率.本文在不斷試驗(yàn)中,得到初始稀疏度為0.5到最終稀疏度0.9,從開始步數(shù)到結(jié)束步數(shù)剪枝,且每100步剪枝效果相對(duì)最好.公式(7)是結(jié)束步數(shù)計(jì)算公式.
(7)
其中:totalsamples是總的訓(xùn)練樣本數(shù);batch_size是訓(xùn)練批次大??;epochs是輪次;Ceil用來(lái)計(jì)算大于等于括號(hào)中數(shù)值的最小整數(shù);astype表示將括號(hào)中數(shù)值轉(zhuǎn)化成整型32位.結(jié)束步數(shù)和總的訓(xùn)練樣本數(shù)與訓(xùn)練批次大小,訓(xùn)練輪次有關(guān).
(8)
K-Means++的目標(biāo)就是通過(guò)選擇C從而最小化代價(jià)函數(shù)φw(C).使用肘方法來(lái)評(píng)價(jià)聚類效果的好壞,肘方法通過(guò)誤差平方和(Sum of the Squared Errors,SSE)進(jìn)行評(píng)價(jià).
(9)
其中:ci是第i個(gè)簇;p是ci中的樣本點(diǎn);mi是ci的質(zhì)心;SSE是所有樣本的聚類誤差,能夠表示聚類的效果.K-Means++算法流程見表2.
表2 用于竹種分類的K-Means++算法流程Tab.2 Process of K-Means++ algorithm for bamboo classification
量化的方法通過(guò)量化模型的參數(shù)值來(lái)壓縮神經(jīng)網(wǎng)絡(luò)模型,減少深度學(xué)習(xí)模型的冗余問(wèn)題.權(quán)值量化是將32bit浮點(diǎn)型量化后8bit的整數(shù)型.量化取輸入圖片中的最小值和最大值,分別對(duì)應(yīng)被量化的輸入中的最小值(0)和最大值(255).公式
(10)
表示實(shí)際值和量化值的映射關(guān)系,其中:r表示實(shí)際值;q表示量化的比特?cái)?shù).這是將keras模型轉(zhuǎn)換為TFLite的平面緩沖區(qū)的一部分,從而使模型大小減少了75%.基于VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)量化后的竹種模型tflite文件大小為128M,基于AlexNet網(wǎng)絡(luò)結(jié)構(gòu)量化后的竹種模型tflite文件大小為44.5M.對(duì)于大模型來(lái)說(shuō),冗余參數(shù)比較多,直接量化的影響比較小,所以本實(shí)驗(yàn)直接量化后精度幾乎沒(méi)有改變.
訓(xùn)練竹種圖像數(shù)據(jù)分類實(shí)驗(yàn)中,采用Python編程,Python是一種簡(jiǎn)單易懂,功能強(qiáng)大的腳本編程語(yǔ)言[19].在實(shí)驗(yàn)室服務(wù)器上運(yùn)行.服務(wù)器硬件環(huán)境為Intel(R)Xeon(R) CPU E5-2630 v4 @2.20GHz,128G內(nèi)存,兩張16G顯存,使用VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)和AlexNet網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練.本實(shí)驗(yàn)中竹種圖像數(shù)據(jù)集來(lái)源于徽省宣城市廣德縣橫山國(guó)家森林公園,共計(jì)9類竹種(圖3).為了使分類結(jié)果更具有普遍性,本實(shí)驗(yàn)的竹種圖片采取各種角度拍攝,竹種高矮,粗細(xì),竹竿大小,竹葉紋理,距離遠(yuǎn)近皆有,每種拍攝40張.對(duì)40張?jiān)瓐D片進(jìn)行旋轉(zhuǎn)、平移、錯(cuò)切變換、放大、翻轉(zhuǎn)5種增強(qiáng)操作以增加竹種樣本的多樣性,這樣每張?jiān)瓐D片擴(kuò)充為14張,加上原圖一共15張。增強(qiáng)后的數(shù)據(jù)集中訓(xùn)練集有圖片3780張,測(cè)試集有圖片1620張。
本試驗(yàn)在Tensorflow框架上使用了VGGNet-16和AlexNet網(wǎng)絡(luò)結(jié)構(gòu)對(duì)竹種圖像進(jìn)行訓(xùn)練.對(duì)9類竹種依次打上0~8的標(biāo)簽,將訓(xùn)練集3780張竹種圖片進(jìn)行學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)通過(guò)卷積層,池化層,全連接層,自動(dòng)提取各類竹種特征進(jìn)行訓(xùn)練,對(duì)學(xué)習(xí)出來(lái)的模型,將分類器參數(shù)設(shè)置為9類,將測(cè)試集1620張竹種圖片進(jìn)行分類.
將訓(xùn)練參數(shù)保存為模型,對(duì)VGGNet-16卷積層和全連接層進(jìn)行剪枝,剪枝和模型訓(xùn)練兩者的交替重復(fù)進(jìn)行.實(shí)驗(yàn)中,剪枝后訓(xùn)練的batch_size設(shè)置為128,epoch為200,采用ReLu激活函數(shù),加入Batch Normalization對(duì)每一批數(shù)據(jù)進(jìn)行歸一化處理.RMSprop的優(yōu)化器,學(xué)習(xí)率為0.001和最大池化法.圖4為VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)第一個(gè)卷積層(Convl)和第一個(gè)全連接層(Dense)稀疏度隨著剪枝步數(shù)從初始稀疏度0.5開始變化到最終稀疏度0.9的過(guò)程.初始時(shí)刻,稀疏度提升較快,而越到后面,稀疏度提升會(huì)逐漸放緩,慢慢靠近目標(biāo)稀疏度.圖5是VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)中第一個(gè)卷積層和第一個(gè)全連接層隨著步數(shù)閾值在不停變化,每一層特征參數(shù)、權(quán)重值等不同,所以剪枝過(guò)程中閾值也是不停地變化.
圖6是VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)剪枝后訓(xùn)練過(guò)程,圖的縱軸表示模型收斂后準(zhǔn)確率前5名的平均值.VGGNet-16網(wǎng)絡(luò)結(jié)構(gòu)的剪枝后訓(xùn)練集準(zhǔn)確率結(jié)果為0.96,測(cè)試集準(zhǔn)確率結(jié)果為0.64.圖7是AlexNet網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練的剪枝訓(xùn)練集準(zhǔn)確率結(jié)果為0.94,測(cè)試集準(zhǔn)確率結(jié)果為0.61.VGGNet-16剪枝前模型大小為512.31M,剪枝后模型可壓縮到273.82M,將模型內(nèi)存占用降低了46.5%.AlexNet剪枝前模型大小為175.81M,剪枝后模型可壓縮到94.14M,將模型內(nèi)存占用降低了46.4%.
量化的過(guò)程是一邊量化一邊訓(xùn)練,量化訓(xùn)練取batch_size為128,epoch為200,采用ReLu激活函數(shù),加入Batch Normalization對(duì)每一批數(shù)據(jù)進(jìn)行歸一化處理,優(yōu)化器為Adadelta.將VGGNet-16剪枝量化后的tflite文件進(jìn)一步壓縮可壓縮到34.2M;將AlexNet剪枝量化后的tflite文件進(jìn)一步壓縮可壓縮到11.76M.
基于深度學(xué)習(xí)的竹種分類,對(duì)模型進(jìn)行訓(xùn)練測(cè)試,結(jié)果見表3(第746頁(yè)).由表3可以看出不同竹種在VGGNet-16和AlexNet網(wǎng)絡(luò)結(jié)構(gòu)準(zhǔn)確率都不同.野外影響因素太多,圖片采集區(qū)域不夠準(zhǔn)確,影響模型壓縮的質(zhì)量.在自然光下采集的圖片背景復(fù)雜,采集角度,太陽(yáng)光照等因素等導(dǎo)致最后得到竹種識(shí)別率不高,其中綠槽毛竹分類效果較差,龜甲竹分類效果最好,與其拍攝竹種圖片角度和龜甲竹其自身特點(diǎn)有很大關(guān)系.實(shí)驗(yàn)中主要拍攝了龜甲竹的桿,其桿粗者可達(dá)20余厘米,竹子形態(tài)像龜背,特征明顯,分類效果相對(duì)較好.由于9種竹種差異很大,分類效果之間存在很大差異,使用方差檢驗(yàn),最好分類值與平均水平之間沒(méi)有顯著性差異.
表3 9種竹種分類結(jié)果Tab.3 Classification results of nine bamboo species
將基于竹種分類剪枝前后模型加載到筆記本上進(jìn)行測(cè)試.以下為筆記本配置,型號(hào)華碩,CPU是Intel Core i5-4200U,1.66Hz,運(yùn)行內(nèi)存4GB,在網(wǎng)絡(luò)通順環(huán)境下進(jìn)行測(cè)試.結(jié)果見表4,載入VGGNet-16網(wǎng)絡(luò)竹種分類剪枝前的模型進(jìn)行測(cè)試,用時(shí)265s,VGGNet-16網(wǎng)絡(luò)竹種分類剪枝后的模型進(jìn)行測(cè)試,用時(shí)98s.使用AlexNet網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練出的模型測(cè)試相同100張竹種圖片時(shí)間,載入剪枝前的模型,用時(shí)126s,載入剪枝后的模型,用時(shí)40s.
表4 Web端深度網(wǎng)絡(luò)模型壓縮前后對(duì)比Tab.4 Comparison of Web end deep network model before and after compression
本文基于VGGNet-16和AlexNet網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練竹種分類模型,再對(duì)訓(xùn)練后的模型進(jìn)行剪枝和量化壓縮操作.使用采集的9種竹種圖片數(shù)據(jù)進(jìn)行遷移訓(xùn)練,對(duì)比分析測(cè)試集準(zhǔn)確度、F1值、召回率、壓縮后測(cè)試時(shí)間等評(píng)價(jià)標(biāo)準(zhǔn),實(shí)驗(yàn)結(jié)果表明基于AlexNet網(wǎng)絡(luò)結(jié)構(gòu)訓(xùn)練壓縮后的竹種分類模型只有11.76M,其能更好的部署到移動(dòng)端.實(shí)際上本文方法可對(duì)具有卷積層和全連接層的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行有效壓縮,可使竹種分類識(shí)別走入人們的日常生活,網(wǎng)絡(luò)剪枝和量化成了壓縮的重要手段,也體現(xiàn)了壓縮方法在解決深度學(xué)習(xí)問(wèn)題時(shí)有實(shí)際的意義.