劉 鵬
(蘇州盛景信息科技股份有限公司,江蘇 蘇州 215004)
圖像分類技術(shù)在圖像檢索、用戶搜索行為分析、人臉識(shí)別等領(lǐng)域有著廣泛的應(yīng)用前景。目前國(guó)內(nèi)外學(xué)者對(duì)圖像分類和識(shí)別方向的研究都是基于開放的圖像數(shù)據(jù)集,例如有COCO[1]、CIFAR10[2]、MNIST[3]、ImageNe[4]和Fasion-MNIST等圖像集,其中,COCO圖像集是微軟發(fā)布的大規(guī)模對(duì)象檢測(cè)、分割和字幕數(shù)據(jù)集,MNIST圖像集是訓(xùn)練各種數(shù)字圖像識(shí)別,同時(shí)也是最先用在卷積神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集,ImageNe圖像集是一個(gè)用于視覺物品識(shí)別研究的大型數(shù)據(jù)集,包含了超20 000個(gè)類別和超1 400萬(wàn)個(gè)圖像以及每個(gè)圖像上的標(biāo)注。Fasion-MNIST圖像集是用于衣服的識(shí)別。本文采用改進(jìn)后的卷積神經(jīng)網(wǎng)絡(luò)模型,選取包含了10個(gè)分類由60 000個(gè)32×32彩色圖像組成的CIFAR10圖像集作為訓(xùn)練集,提出將圖像增強(qiáng)技術(shù)應(yīng)用在圖像集上,通過對(duì)圖像的預(yù)處理從而達(dá)到增強(qiáng)圖像特征層信息的目的,有效地避免了訓(xùn)練集中圖像的冗雜,從而實(shí)現(xiàn)對(duì)CIFAR10圖像集中所有圖像的有效分類。
2015年,何愷明在CNN的神經(jīng)網(wǎng)絡(luò)模型中引入了一種稱為殘差網(wǎng)絡(luò)的新結(jié)構(gòu)(ResNet)[5],殘差網(wǎng)絡(luò)的技術(shù)如圖1所示,可以實(shí)現(xiàn)連接跳過幾層的訓(xùn)練并直接連接到輸出。
圖1 殘差塊
殘差網(wǎng)絡(luò)是為了在進(jìn)一步加深網(wǎng)絡(luò)結(jié)構(gòu)的同時(shí),能夠?qū)W習(xí)到更精細(xì)的特征從而提高網(wǎng)絡(luò)精度,首先實(shí)現(xiàn)的一點(diǎn)就是恒等映射H(x)=x,所以何愷明等人將網(wǎng)絡(luò)設(shè)計(jì)成H(x)=F(x)+x,即F(x)=H(x)-x[5]。這樣隨著網(wǎng)絡(luò)的加深,F(xiàn)(x)便會(huì)逼近于0,從而實(shí)現(xiàn)恒等映射。殘差塊的優(yōu)點(diǎn)是如果有任何層損壞了架構(gòu)的性能,那么它將被正?;^。因此,使用殘差塊后可以訓(xùn)練得到非常深的神經(jīng)網(wǎng)絡(luò),而不會(huì)因梯度消失或者爆炸梯度而導(dǎo)致的問題。ResNet50是一個(gè)易于使用和優(yōu)化、具有更小的卷積核的殘差學(xué)習(xí)網(wǎng)絡(luò)框架,因此,本文將采用基于殘差神經(jīng)網(wǎng)絡(luò)框架的ResNet50網(wǎng)絡(luò)作為圖像分類訓(xùn)練的模型。
CIFAR10是一套典型的用來(lái)訓(xùn)練機(jī)器學(xué)習(xí)與電腦視覺演算法的圖像集[2],其包括60 000幅32×32的10種不同類型的彩色圖片,這10個(gè)類別分別是飛機(jī)、汽車、鳥類、貓、鹿、狗、青蛙、馬、船和貨車。每一類均有6 000幅圖片,其中5 000張的訓(xùn)練圖像和1 000張的測(cè)試圖像。由于CIFAR10中的圖像分辨率為32×32像素,因此該數(shù)據(jù)集通常被科研人員用于測(cè)試各種網(wǎng)絡(luò),且各種卷積神經(jīng)網(wǎng)絡(luò)也往往最擅長(zhǎng)識(shí)別CIFAR10中的圖像。因此本文所設(shè)計(jì)的圖像分類系統(tǒng)選取CIFAR10作為圖像分類模型的數(shù)據(jù)集。
為了提高數(shù)據(jù)集的分類準(zhǔn)確率,以鳥的類別為例,本文將對(duì)此采取了色彩空間轉(zhuǎn)換和噪聲注入的圖像數(shù)據(jù)增強(qiáng)技術(shù)。
2.2.1 色彩空間轉(zhuǎn)換
簡(jiǎn)單的色彩強(qiáng)化就包括了隔離每一個(gè)色彩通道,比如,使用RGB通過隔離該矩陣和在其他的色彩通道加入二個(gè)零矩陣,就能夠使圖形迅速地轉(zhuǎn)化為它在一個(gè)色彩通道上的表現(xiàn)。本文將通過grey,hsv,yuv3種不同的顏色轉(zhuǎn)換來(lái)進(jìn)行展示[4]。
2.2.2 噪聲注入
噪聲注入包含了一個(gè)隨機(jī)值矩陣,該矩陣一般是從高斯分布中提取的。本文將噪聲矩陣加入圖像中可以使得優(yōu)化后的卷積網(wǎng)絡(luò)模型獲得更多的特征??梢郧逦乜闯黾尤朐肼暫筒患釉肼曉趫D片上的區(qū)別。
基于CIFAR10圖像集的圖像分類模型的構(gòu)建流程如圖2所示,分為以下3步驟。
圖2 圖像分類模型構(gòu)建流程
步驟1:需要從本地加載圖片,并將圖片進(jìn)行預(yù)處理操作。
步驟2:建立ResNet50神經(jīng)網(wǎng)絡(luò)模型,并利用遷移學(xué)習(xí)技術(shù)來(lái)提取圖片的特征參數(shù)。
步驟3:將輸出的特征參數(shù)進(jìn)行特征匹配,設(shè)置CIFAR10圖像集中的10個(gè)分類對(duì)應(yīng)10個(gè)不同范圍,如果輸出的參數(shù)在某一范圍便返回某一類別。
為了更好地優(yōu)化模型,以便能提升圖像分類識(shí)別的準(zhǔn)確率,本次模型訓(xùn)練將分為以下兩個(gè)階段進(jìn)行。
階段1:對(duì)已有的模型參數(shù)進(jìn)行調(diào)整。由于模型中最后的特征輸出層為2 048維,所以在進(jìn)行外積操作時(shí)可能會(huì)因維度過大導(dǎo)致顯存爆炸,因此,利用1×1卷積將特征輸出的維度降成1 024維,并添加正則化技術(shù)和激活函數(shù)來(lái)避免過擬合和梯度爆炸。由于ResNet50的訓(xùn)練模型使用遷移學(xué)習(xí)進(jìn)行預(yù)習(xí)的,因此可以將預(yù)先訓(xùn)練的權(quán)重裝入已建立的ResNet50模型中,在提高訓(xùn)練時(shí)間的前提下,達(dá)到較好的分類效果[6]。
階段2:通過對(duì)階段1中出現(xiàn)的損耗和精度進(jìn)行觀察,并對(duì)各權(quán)重進(jìn)行重新調(diào)整。利用ResNet50的預(yù)訓(xùn)練模型,對(duì)殘差神經(jīng)網(wǎng)絡(luò)進(jìn)行初值重建,固定預(yù)訓(xùn)練卷積層的參數(shù),只訓(xùn)練未參加預(yù)訓(xùn)練的卷積層,以便獲得較好的殘差網(wǎng)絡(luò)參數(shù);采用模型優(yōu)化技術(shù),在其之后加入 Dropout層和RELU線性整流函數(shù),逐步對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化;最后采用反向傳播算法對(duì)已優(yōu)化好的殘差神經(jīng)網(wǎng)絡(luò)進(jìn)行加權(quán)更新,直到網(wǎng)絡(luò)收斂。
由于Pytorch-lightning可以很好地將訓(xùn)練過程進(jìn)行復(fù)現(xiàn),考慮到訓(xùn)練時(shí)間和算力的消耗,本次圖像分類模型第二階段僅迭代50次,通過Tensorboard工具將預(yù)測(cè)結(jié)果和模型損失以可視化的方式進(jìn)行展現(xiàn)。
這里,Train_loss為訓(xùn)練集的損失量,經(jīng)歷了一次迭代之后,損失率便出現(xiàn)了大幅度下降,這是因?yàn)檫w移學(xué)習(xí)已經(jīng)預(yù)先加載好權(quán)重。Train_acc為訓(xùn)練集的準(zhǔn)確率,經(jīng)歷了50次迭代后,訓(xùn)練集的準(zhǔn)確率已經(jīng)逼近于百分之九十,由于實(shí)驗(yàn)時(shí)迭代次數(shù)較少,從而導(dǎo)致了準(zhǔn)確率產(chǎn)生波動(dòng),未能達(dá)到更高的準(zhǔn)確率。Val_loss為測(cè)試集的損失,在經(jīng)過幾輪迭代后,損失率降至1.5左右,和訓(xùn)練集的損失率基本持平。Val_acc為測(cè)試集的準(zhǔn)確率,由于測(cè)試集圖片數(shù)量相對(duì)較少,但其準(zhǔn)確率也高達(dá)到95%,其幅度在經(jīng)歷了幾次迭代后逐漸轉(zhuǎn)為平穩(wěn)。
通過加載上文訓(xùn)練得到的圖像權(quán)重值和構(gòu)建的ResNet50模型,圖像分類實(shí)現(xiàn)步驟:
步驟1:為了增加結(jié)果的準(zhǔn)確率,在進(jìn)行分類識(shí)別前利用圖像增強(qiáng)技術(shù)對(duì)圖像進(jìn)行預(yù)處理。
步驟2:分別加載訓(xùn)練階段的殘差神經(jīng)網(wǎng)絡(luò)和訓(xùn)練好的權(quán)重。
步驟3:將權(quán)重和圖像進(jìn)行匹配,獲得圖像的所屬類別及識(shí)別準(zhǔn)確率。
步驟4:利用matplotlib庫(kù)將圖像和分類結(jié)果以可視化進(jìn)行展示。
最后,通過CIFAR10圖像集來(lái)驗(yàn)證本文模型的圖像分類結(jié)果是否達(dá)到需求,下列所示為本文模型在CIFAR1中的識(shí)別結(jié)果,從表1的結(jié)果可以看出10類圖像結(jié)果均達(dá)到了90%以上的準(zhǔn)確率。
表1 圖像分類測(cè)試結(jié)果
本文設(shè)計(jì)的圖像分類模型引入RELU激活函數(shù)和正則化技術(shù)來(lái)對(duì)整個(gè)模型進(jìn)行優(yōu)化。通過ReLU激活函數(shù)可以使網(wǎng)絡(luò)隨機(jī)梯度下降和反向傳播算法更加有效,避免梯度爆炸和梯度消失的問題,同時(shí)在池化層的后面添加Dropout層來(lái)防止網(wǎng)絡(luò)過擬合。為了加快深度神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí),可以在兩個(gè)卷積層之間施加附加的限制,從而使各層網(wǎng)絡(luò)的輸入平均值與方差值在某一區(qū)間。
從圖像分類預(yù)測(cè)結(jié)果可以看出,本文設(shè)計(jì)的圖像分類神經(jīng)網(wǎng)絡(luò)模型應(yīng)用到CIFAR10圖像集上的圖像分類識(shí)別準(zhǔn)確率高,具有較好的魯棒性,識(shí)別準(zhǔn)確率基本能夠達(dá)到90%以上。但由于硬件限制,本文實(shí)驗(yàn)所采用的GPU環(huán)境都部署在云端,并不能很好地調(diào)動(dòng)GPU性能,如果有計(jì)算性能更好的硬件環(huán)境和設(shè)備,在滿足最大顯存的要求下,通過提高batch_size和增加迭代次數(shù)又或者更換神經(jīng)網(wǎng)絡(luò)模型,來(lái)提高訓(xùn)練的準(zhǔn)確率。