本發(fā)明屬于深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)的圖像分類領(lǐng)域。通過(guò)對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行結(jié)構(gòu)改進(jìn),提升網(wǎng)絡(luò)分類速度,節(jié)省圖像分類時(shí)間。
背景技術(shù):
卷積神經(jīng)網(wǎng)絡(luò)(cnn)是一種具代表性的深度學(xué)習(xí)方法,被廣泛高效的應(yīng)用于計(jì)算機(jī)視覺(jué)問(wèn)題的研究。這主要得益于其對(duì)高維數(shù)據(jù)特征的優(yōu)秀學(xué)習(xí)能力。近年來(lái),隨著相關(guān)學(xué)習(xí)技術(shù)、優(yōu)化技術(shù)和硬件技術(shù)的出現(xiàn),卷積神經(jīng)網(wǎng)絡(luò)取得了爆發(fā)式的發(fā)展。imagenet大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)(imagenetlargescalevisualrecognitionchallenge,ilsvrc)是工人的大規(guī)模目標(biāo)識(shí)別標(biāo)準(zhǔn)挑戰(zhàn)。近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)在imagenet下屬的分類比賽中獲得了廣泛的應(yīng)用,并取得優(yōu)異的分類結(jié)果。從8層網(wǎng)絡(luò)alexnet,到19層網(wǎng)絡(luò)的vggnet,到152層網(wǎng)絡(luò)的resnet,分類top-5錯(cuò)誤率從15.3%降低到6.8%、3.57%,卷積神經(jīng)網(wǎng)絡(luò)的深度不斷加深,同時(shí)分類錯(cuò)誤率也不斷降低。
但是,隨著卷積神經(jīng)網(wǎng)絡(luò)的深度的加深,其前向傳播所需要的時(shí)間能量消耗也在急劇增加。在同樣的數(shù)據(jù)集和實(shí)驗(yàn)條件中執(zhí)行分類任務(wù)時(shí),vggnet所需要的運(yùn)行時(shí)間是alexnet的20倍。在工業(yè)和商業(yè)使用場(chǎng)景下,工程師和開(kāi)發(fā)人員通常需要考慮時(shí)間成本。比如線上搜索引擎需要快速響應(yīng),云服務(wù)需要具備每秒處理成千上萬(wàn)用戶圖片的能力。另外,智能手機(jī)和便攜設(shè)備通常不具備強(qiáng)力的計(jì)算能力,這些設(shè)備上的如場(chǎng)景識(shí)別等應(yīng)用也需要快速響應(yīng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明通過(guò)對(duì)卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行改進(jìn),設(shè)計(jì)一個(gè)包含多個(gè)分類器的卷積神經(jīng)網(wǎng)絡(luò)cnn-mc(convolutionneuralnetwork–multipleclassifiers)。策略為,在卷積層添加額外的線性分類器,在進(jìn)行圖像分類任務(wù)時(shí),監(jiān)控(使用激活模塊,該模塊主要包含一個(gè)置信值δ)各個(gè)分類器的輸出,通過(guò)激活函數(shù)判斷分類是否提前結(jié)束,以達(dá)到縮短分類時(shí)間的目的。
為解決以上技術(shù)中的難題,本發(fā)明采用的技術(shù)方案為一種基于多個(gè)分類器的卷積神經(jīng)網(wǎng)絡(luò)快速分類方法,對(duì)卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行改進(jìn)。卷積神經(jīng)網(wǎng)絡(luò)包含輸入層(inputlayer)、卷積層(convolutionlayer)、全連接層(fullconnectionlayer)和分類輸出層(classificationlayer),其中卷積層為多個(gè),并各有一個(gè)池化層(poolinglayer)。該方法包含兩個(gè)設(shè)計(jì)方案,即網(wǎng)絡(luò)訓(xùn)練方法和網(wǎng)絡(luò)分類方法。
網(wǎng)絡(luò)訓(xùn)練方法包括確定額外分類器的數(shù)目,同時(shí)對(duì)所有分類器進(jìn)行訓(xùn)練。
s1.多分類器卷積神經(jīng)網(wǎng)絡(luò)(cnn-mc)以標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)(cnn)為基礎(chǔ)改進(jìn)而來(lái),因此,在構(gòu)造cnn-mc時(shí),首先需要構(gòu)造一個(gè)標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò),該卷積神經(jīng)網(wǎng)絡(luò)包含一個(gè)輸入層,若干個(gè)卷積層,和一個(gè)全連接層,每個(gè)卷積層后都有一個(gè)池化層,全連接層后是分類器。
s2.標(biāo)準(zhǔn)的cnn構(gòu)造完成后,使用訓(xùn)練數(shù)據(jù)集dtrain(如mnist數(shù)據(jù)集、cifar-10數(shù)據(jù)集等)和反向傳播算法訓(xùn)練網(wǎng)絡(luò),損失函數(shù)為普遍使用的交叉熵?fù)p失函數(shù)。由于本方法的目的在于節(jié)省分類時(shí)間,因此,訓(xùn)練cnn時(shí)需要采集單個(gè)樣本經(jīng)過(guò)完整cnn網(wǎng)絡(luò)所需要的平均時(shí)間。
s3.訓(xùn)練好cnn后,在第一個(gè)卷積層后添加一個(gè)分類器以及判斷分類結(jié)果的激活模塊。使用dtrain訓(xùn)練該分類器,并采集單樣本經(jīng)過(guò)該分類器和激活模塊所需要的平均時(shí)間。之后調(diào)節(jié)激活模塊的參數(shù),使網(wǎng)絡(luò)的整體分類準(zhǔn)確率達(dá)到最高。
s4.額外添加的分類器使易識(shí)別的圖像提前被分類而節(jié)省分類時(shí)間。但是對(duì)于不能提前分類的樣本,它們也需要經(jīng)過(guò)額外的分類器和激活模塊,因此會(huì)增加額外的時(shí)間消耗。若對(duì)于若干圖像樣本,綜合節(jié)省時(shí)間大于額外消耗時(shí)間,那么該分類器添加到卷積網(wǎng)絡(luò),反之則不添加。
s5.遍歷整個(gè)神經(jīng)網(wǎng)絡(luò),以此判斷每一卷積層是否要添加分類器,最后確定cnn-mc的最終模型。
cnn-mc添加了額外的分類器,因此傳統(tǒng)cnn的分類方法流程并不適合,因此,設(shè)計(jì)了適用于cnn-mc的分類方法。
s1.對(duì)于一個(gè)要分類的圖像樣本,通過(guò)轉(zhuǎn)化得到其像素特征向量后作為輸入,輸入到cnn-mc。
s2.圖像特征經(jīng)過(guò)一個(gè)卷積層后,若該層含有額外的分類器,那么,便將圖像特征向量轉(zhuǎn)化為一維向量作為分類器的輸入,執(zhí)行分類任務(wù)。
s3.分類器輸出的結(jié)果將由激活模塊進(jìn)行判斷,如果該結(jié)果滿足激活模塊的分類要求,便將分類器的分類結(jié)果作為cnn-mc最終的分類結(jié)果,結(jié)束整個(gè)網(wǎng)絡(luò)的分類進(jìn)行。反之,則激活下一卷積層,將前一層卷積層的卷積特征向量輸入到下一層卷積層繼續(xù)進(jìn)行分類。
s4.當(dāng)圖像特征向量達(dá)到最后一個(gè)卷積層時(shí),由于該層之后的分類器是整個(gè)網(wǎng)絡(luò)最后一個(gè)分類器,故其分類結(jié)果不再進(jìn)行判斷,直接輸出。
附圖說(shuō)明
圖1為cnn-mc的訓(xùn)練流程圖。
圖2為cnn-mc的分類策略流程圖。
圖3為cnn-mc分類實(shí)例
具體實(shí)施方式
下面結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)的說(shuō)明。
如圖1所示,網(wǎng)絡(luò)訓(xùn)練方法主要包括確定額外分類器的數(shù)目,同時(shí)對(duì)所有分類器進(jìn)行訓(xùn)練。步驟如下:
s1.構(gòu)造一個(gè)標(biāo)準(zhǔn)的卷積神經(jīng)網(wǎng)絡(luò)(cnn),包含n個(gè)卷積層和1個(gè)分類器。使用標(biāo)準(zhǔn)圖像數(shù)據(jù)集dtrain(如mnist手寫(xiě)體數(shù)據(jù)集、cifar-10數(shù)據(jù)集等,樣本數(shù)目設(shè)為i個(gè))訓(xùn)練網(wǎng)絡(luò),并獲取圖像經(jīng)過(guò)每層卷積(不包含最后一個(gè)卷積層)后的特征向量(vector,v共n-1個(gè))和單樣本時(shí)間消耗(γorginal,即樣本由輸入層到分類器輸出所需要的時(shí)間消耗)。訓(xùn)練依靠反向傳播(backpropagation,bp),損失函數(shù)使用交叉熵?fù)p失函數(shù)(crossentropylossfunction)。
s2.在第一個(gè)卷積層cl1后添加一個(gè)softmax分類器(sc1)和激活模塊。將第1步獲取的特征向量v1轉(zhuǎn)換為一維向量,并作為sc1的輸入,利用交叉熵?fù)p失函數(shù)訓(xùn)練sc1。由于sc1是第一個(gè)卷積層的分類器,故其訓(xùn)練樣本的數(shù)目為i1=i。
s3.sc1訓(xùn)練完畢后,調(diào)整激活函數(shù)中的置信值δ,使整個(gè)卷積網(wǎng)絡(luò)的分類準(zhǔn)確率達(dá)到最高,該值大小一般為0.4-0.7之間。并獲取單樣本在sc1和激活模塊中的平均時(shí)間消耗γ1。置信值δ的主要作用是判斷分類器的輸出是否達(dá)到分類要求,符合要求的直接輸出分類結(jié)果,結(jié)束分類過(guò)程,反之則將樣本輸入到下個(gè)卷積層。
s4.置信值δ調(diào)整完畢后,統(tǒng)計(jì)通過(guò)激活模塊后直接被分類的樣本數(shù)目i1,未被分類而送入下層卷積的樣本數(shù)目則為i-i1。
s5.計(jì)算i1個(gè)樣本被提前分類所節(jié)省的時(shí)間消耗,未被sc1分類的其他i-i1個(gè)樣本在sc1和激活模塊中消耗的額外時(shí)間。若(γorignal-γ1)·i1>(i-i1)·γ1,那么便將sc1加入到網(wǎng)絡(luò)中,即sc1的添加可以縮短整個(gè)網(wǎng)絡(luò)的分類時(shí)間消耗。
s6.在第一個(gè)卷積層cl1后添加softmax分類器sc2和激活模塊,重復(fù)步驟s2-s5,判斷sc2是否可以添加到網(wǎng)絡(luò)。并不斷重復(fù)該步驟,直到最后一層卷積層。最后一層卷積層后是網(wǎng)絡(luò)原來(lái)的分類器,不再進(jìn)行訓(xùn)練分析。
s7.步驟s1-s6后,將得到一個(gè)具有新結(jié)構(gòu)的卷積神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)包含多個(gè)分類器、多個(gè)分類器和激活模塊。并且該網(wǎng)絡(luò)是已經(jīng)訓(xùn)練完畢的,可以直接執(zhí)行圖像分類任務(wù)。
s8.訓(xùn)練過(guò)程結(jié)束。
如圖2所示,網(wǎng)絡(luò)的圖像分類步驟如下:
s1.對(duì)需要分類的圖像進(jìn)行初始化,獲得圖像的像素矩陣。將該矩陣輸入到cnn-mc中。
s2.獲取第i個(gè)(從第一個(gè)開(kāi)始)卷積層的特征向量vi,若該卷積層存在額外的線性分類器sci,便將v1輸入到分類器中進(jìn)行分類。
s3.將sci的輸出輸入到激活模塊,若輸出值大于置信值δ,則直接將該分類結(jié)果輸出,結(jié)束整個(gè)分類過(guò)程。
s4.若sci的輸出值小于置信值δ,那么該分類結(jié)果不能直接輸出,將該卷積層的特征向量vi輸入到下層卷積。
s5.重復(fù)步驟s2-s4,直到最后一個(gè)卷積層,該卷積層后的分類器是網(wǎng)絡(luò)中最后一個(gè)分類器,其分類結(jié)果將直接輸出作為整個(gè)網(wǎng)絡(luò)的分類結(jié)果。
s6.分類過(guò)程結(jié)束。
圖3是分類實(shí)例
s1.首先對(duì)圖像初始化獲得像素矩陣m,將m輸入到第一個(gè)卷積層。
s2.m經(jīng)卷積后的特征向量m-c-v輸入到該層的分類器進(jìn)行分類。獲得分類標(biāo)簽和分類置信值m-c-v-a。
s3.m-c-v-a與激活模塊中的置信值δ比較,若大于置信值,則分類器的分類結(jié)果直接輸出,如圖像1的分類結(jié)果“dog”,結(jié)束分類任務(wù)。反之則將m-c-v輸入到下一層卷積。
s4.卷積與分類步驟與s2、s3相同。圖片2的分類結(jié)果在第二個(gè)分類器中分類。輸出分類結(jié)果“automobile”,結(jié)束分類過(guò)程。