劉 鵬
(蘇州盛景信息科技股份有限公司,江蘇 蘇州 215004)
圖像分類技術(shù)在圖像檢索、用戶搜索行為分析、人臉識別等領(lǐng)域有著廣泛的應用前景。目前國內(nèi)外學者對圖像分類和識別方向的研究都是基于開放的圖像數(shù)據(jù)集,例如有COCO[1]、CIFAR10[2]、MNIST[3]、ImageNe[4]和Fasion-MNIST等圖像集,其中,COCO圖像集是微軟發(fā)布的大規(guī)模對象檢測、分割和字幕數(shù)據(jù)集,MNIST圖像集是訓練各種數(shù)字圖像識別,同時也是最先用在卷積神經(jīng)網(wǎng)絡的數(shù)據(jù)集,ImageNe圖像集是一個用于視覺物品識別研究的大型數(shù)據(jù)集,包含了超20 000個類別和超1 400萬個圖像以及每個圖像上的標注。Fasion-MNIST圖像集是用于衣服的識別。本文采用改進后的卷積神經(jīng)網(wǎng)絡模型,選取包含了10個分類由60 000個32×32彩色圖像組成的CIFAR10圖像集作為訓練集,提出將圖像增強技術(shù)應用在圖像集上,通過對圖像的預處理從而達到增強圖像特征層信息的目的,有效地避免了訓練集中圖像的冗雜,從而實現(xiàn)對CIFAR10圖像集中所有圖像的有效分類。
2015年,何愷明在CNN的神經(jīng)網(wǎng)絡模型中引入了一種稱為殘差網(wǎng)絡的新結(jié)構(gòu)(ResNet)[5],殘差網(wǎng)絡的技術(shù)如圖1所示,可以實現(xiàn)連接跳過幾層的訓練并直接連接到輸出。

圖1 殘差塊
殘差網(wǎng)絡是為了在進一步加深網(wǎng)絡結(jié)構(gòu)的同時,能夠?qū)W習到更精細的特征從而提高網(wǎng)絡精度,首先實現(xiàn)的一點就是恒等映射H(x)=x,所以何愷明等人將網(wǎng)絡設計成H(x)=F(x)+x,即F(x)=H(x)-x[5]。這樣隨著網(wǎng)絡的加深,F(xiàn)(x)便會逼近于0,從而實現(xiàn)恒等映射。殘差塊的優(yōu)點是如果有任何層損壞了架構(gòu)的性能,那么它將被正常化跳過。因此,使用殘差塊后可以訓練得到非常深的神經(jīng)網(wǎng)絡,而不會因梯度消失或者爆炸梯度而導致的問題。ResNet50是一個易于使用和優(yōu)化、具有更小的卷積核的殘差學習網(wǎng)絡框架,因此,本文將采用基于殘差神經(jīng)網(wǎng)絡框架的ResNet50網(wǎng)絡作為圖像分類訓練的模型。
CIFAR10是一套典型的用來訓練機器學習與電腦視覺演算法的圖像集[2],其包括60 000幅32×32的10種不同類型的彩色圖片,這10個類別分別是飛機、汽車、鳥類、貓、鹿、狗、青蛙、馬、船和貨車。每一類均有6 000幅圖片,其中5 000張的訓練圖像和1 000張的測試圖像。由于CIFAR10中的圖像分辨率為32×32像素,因此該數(shù)據(jù)集通常被科研人員用于測試各種網(wǎng)絡,且各種卷積神經(jīng)網(wǎng)絡也往往最擅長識別CIFAR10中的圖像。因此本文所設計的圖像分類系統(tǒng)選取CIFAR10作為圖像分類模型的數(shù)據(jù)集。
為了提高數(shù)據(jù)集的分類準確率,以鳥的類別為例,本文將對此采取了色彩空間轉(zhuǎn)換和噪聲注入的圖像數(shù)據(jù)增強技術(shù)。
2.2.1 色彩空間轉(zhuǎn)換
簡單的色彩強化就包括了隔離每一個色彩通道,比如,使用RGB通過隔離該矩陣和在其他的色彩通道加入二個零矩陣,就能夠使圖形迅速地轉(zhuǎn)化為它在一個色彩通道上的表現(xiàn)。本文將通過grey,hsv,yuv3種不同的顏色轉(zhuǎn)換來進行展示[4]。
2.2.2 噪聲注入
噪聲注入包含了一個隨機值矩陣,該矩陣一般是從高斯分布中提取的。本文將噪聲矩陣加入圖像中可以使得優(yōu)化后的卷積網(wǎng)絡模型獲得更多的特征。可以清晰地看出加入噪聲和不加噪聲在圖片上的區(qū)別。
基于CIFAR10圖像集的圖像分類模型的構(gòu)建流程如圖2所示,分為以下3步驟。

圖2 圖像分類模型構(gòu)建流程
步驟1:需要從本地加載圖片,并將圖片進行預處理操作。
步驟2:建立ResNet50神經(jīng)網(wǎng)絡模型,并利用遷移學習技術(shù)來提取圖片的特征參數(shù)。
步驟3:將輸出的特征參數(shù)進行特征匹配,設置CIFAR10圖像集中的10個分類對應10個不同范圍,如果輸出的參數(shù)在某一范圍便返回某一類別。
為了更好地優(yōu)化模型,以便能提升圖像分類識別的準確率,本次模型訓練將分為以下兩個階段進行。
階段1:對已有的模型參數(shù)進行調(diào)整。由于模型中最后的特征輸出層為2 048維,所以在進行外積操作時可能會因維度過大導致顯存爆炸,因此,利用1×1卷積將特征輸出的維度降成1 024維,并添加正則化技術(shù)和激活函數(shù)來避免過擬合和梯度爆炸。由于ResNet50的訓練模型使用遷移學習進行預習的,因此可以將預先訓練的權(quán)重裝入已建立的ResNet50模型中,在提高訓練時間的前提下,達到較好的分類效果[6]。
階段2:通過對階段1中出現(xiàn)的損耗和精度進行觀察,并對各權(quán)重進行重新調(diào)整。利用ResNet50的預訓練模型,對殘差神經(jīng)網(wǎng)絡進行初值重建,固定預訓練卷積層的參數(shù),只訓練未參加預訓練的卷積層,以便獲得較好的殘差網(wǎng)絡參數(shù);采用模型優(yōu)化技術(shù),在其之后加入 Dropout層和RELU線性整流函數(shù),逐步對網(wǎng)絡進行優(yōu)化;最后采用反向傳播算法對已優(yōu)化好的殘差神經(jīng)網(wǎng)絡進行加權(quán)更新,直到網(wǎng)絡收斂。
由于Pytorch-lightning可以很好地將訓練過程進行復現(xiàn),考慮到訓練時間和算力的消耗,本次圖像分類模型第二階段僅迭代50次,通過Tensorboard工具將預測結(jié)果和模型損失以可視化的方式進行展現(xiàn)。
這里,Train_loss為訓練集的損失量,經(jīng)歷了一次迭代之后,損失率便出現(xiàn)了大幅度下降,這是因為遷移學習已經(jīng)預先加載好權(quán)重。Train_acc為訓練集的準確率,經(jīng)歷了50次迭代后,訓練集的準確率已經(jīng)逼近于百分之九十,由于實驗時迭代次數(shù)較少,從而導致了準確率產(chǎn)生波動,未能達到更高的準確率。Val_loss為測試集的損失,在經(jīng)過幾輪迭代后,損失率降至1.5左右,和訓練集的損失率基本持平。Val_acc為測試集的準確率,由于測試集圖片數(shù)量相對較少,但其準確率也高達到95%,其幅度在經(jīng)歷了幾次迭代后逐漸轉(zhuǎn)為平穩(wěn)。
通過加載上文訓練得到的圖像權(quán)重值和構(gòu)建的ResNet50模型,圖像分類實現(xiàn)步驟:
步驟1:為了增加結(jié)果的準確率,在進行分類識別前利用圖像增強技術(shù)對圖像進行預處理。
步驟2:分別加載訓練階段的殘差神經(jīng)網(wǎng)絡和訓練好的權(quán)重。
步驟3:將權(quán)重和圖像進行匹配,獲得圖像的所屬類別及識別準確率。
步驟4:利用matplotlib庫將圖像和分類結(jié)果以可視化進行展示。
最后,通過CIFAR10圖像集來驗證本文模型的圖像分類結(jié)果是否達到需求,下列所示為本文模型在CIFAR1中的識別結(jié)果,從表1的結(jié)果可以看出10類圖像結(jié)果均達到了90%以上的準確率。

表1 圖像分類測試結(jié)果
本文設計的圖像分類模型引入RELU激活函數(shù)和正則化技術(shù)來對整個模型進行優(yōu)化。通過ReLU激活函數(shù)可以使網(wǎng)絡隨機梯度下降和反向傳播算法更加有效,避免梯度爆炸和梯度消失的問題,同時在池化層的后面添加Dropout層來防止網(wǎng)絡過擬合。為了加快深度神經(jīng)網(wǎng)絡的學習,可以在兩個卷積層之間施加附加的限制,從而使各層網(wǎng)絡的輸入平均值與方差值在某一區(qū)間。
從圖像分類預測結(jié)果可以看出,本文設計的圖像分類神經(jīng)網(wǎng)絡模型應用到CIFAR10圖像集上的圖像分類識別準確率高,具有較好的魯棒性,識別準確率基本能夠達到90%以上。但由于硬件限制,本文實驗所采用的GPU環(huán)境都部署在云端,并不能很好地調(diào)動GPU性能,如果有計算性能更好的硬件環(huán)境和設備,在滿足最大顯存的要求下,通過提高batch_size和增加迭代次數(shù)又或者更換神經(jīng)網(wǎng)絡模型,來提高訓練的準確率。