曹靖城,張繼東,史國杰
(天翼智慧家庭科技有限公司,江蘇 南京 210006)
圖像分類的主要任務是利用圖像信息中呈現的各類特征,將不同種類的圖像數據按相應維度進行區分、歸類。圖像分類的核心內容在于圖像特征的提取,提取的高級語義特征有利于對圖像內容或本質的理解,也能進一步提高圖像分類的精度。在大數據時代,互聯網技術實現了量變到質變的突破,龐大的數據量為數據的分析、特征的挖掘提供了堅實的基礎,加上機器算力的快速發展,使深度學習方法逐漸成為圖像分類的主流方法[1]。卷積神經網絡是深度學習技術中的熱點研究方向,具有強大的特征提取能力和非線性擬合數據能力,是現今圖像分類任務中最為有效的算法之一[2]。
本文根據神經網絡的特性,將其應用于海量云盤圖片的分類。對于同一物體,由于成像角度的細微變化會引起圖像的旋轉,云盤中可能存有同一物體的多張旋轉圖像,因此要求分類方法具有旋轉不變性,即方法提取的特征不會受圖像旋轉的影響。此外,同一物體在不同背景下的圖像也常見于云盤中,同樣需要考慮背景變化對分類性能的影響。
本文使用經典的深層網絡結構VGG19 進行圖像分類,并采用邊緣增強圖像替代原始圖像以減少旋轉或背景變化對VGG 網絡分類性能造成的影響,基于大量數據進行多次對比實驗以避免偶然性結果,驗證了本文所提方法的可行性與有效性。
卷積神經網絡(convolutional neural network,CNN)是一種前向神經網絡,其設計靈感來源于動物視覺神經的工作過程,通過研究視覺神經細胞中感受野(receptive field)之間的工作性質與原理,將逐層激勵的思路通過計算機代碼實現[3]而提出了第一個CNN——神經認知機(Neocognitron),人工神經網絡的應用之路也由此開啟。真正意義上的第一個CNN 模型是LeNet,隨后出現了各種模型,例如經典的Alex Net、VGG-Net、Google Net[4]等。
卷積神經網絡的工作流程如圖1 所示,與傳統神經網絡相比,CNN 的網絡特點在于其深度,CNN 通過加大深度的方式提高性能,在輸入圖片數據之后對其進行多輪次、多維度的卷積與池化處理,提取圖像的特征,并在最后的全連接層進行匯總和決策輸出。在訓練過程中,CNN 通過卷積運算模擬視覺神經的工作方式,使用權值共享的方法減少網絡中的一些重復或者冗余的參數,從而在一定程度上簡化網絡的計算過程,節約存儲空間。池化操作的主要任務是降低維度,通過避免數據過擬合現象來強化模型的泛化能力。

圖1 卷積神經網絡的工作流程
卷積神經網絡為多層次結構,每層具有不同功能與計算方式,具體如下。
(1)輸入層主要完成圖像表述形式的轉換,將每張圖像轉換成矩陣表示形式,矩陣中的元素為三元組,對應圖像中每個像素點的RGB 分量。矩陣中的每個像素點均參與卷積計算,并得到相應的輸出結果。
(2)卷積層則負責主要的特征運算,是卷積神經網絡中的核心部分。一般在網絡內會使用多個大小不同的卷積核,常見的卷積核大小有1×1、3×3 和7×7 等,卷積操作將輸出一個二維的特征圖,特征圖數量與卷積核的數量相同。卷積操作的核心是簡化網絡結構,通過局部連接減少連接總數,通過權值共享減少權值參數,從而在整體上達到減少參數的目的,在一定程度上防止出現過擬合現象。另外,通過卷積操作得到的特征具有更好的魯棒性和拓撲對應性。卷積的數學表達式如下。

其中,x是指二維輸入信號向量x中的元素,W表示J×I 的卷積核W中的元素,b為偏移量,y為M×N的輸出向量y中的元素。
(3)池化層也稱作下采樣層,其主要任務是進行網絡結構的簡化,對冗余信息進行刪減,降低模型的參數和整體運算量,一般出現在卷積層之后,在VGG19 的網絡中通常選用最大池化。
(4)全連接層位于最后一層,不同于局部連接,該層節點與上層的節點全部采用兩兩連接方式,由于全連接的特性,全連接層的操作可以將圖像的維度降到一維,在整個卷積神經網絡中起到分類輸出的作用。
(5)輸出層可以使用Softmax 等分類器對結果進行分類,使用何種分類器取決于實際的應用場景,對于Softmax 分類器而言,全連接層得到的向量x,在Softmax 回歸中將其分類為類別j的概率可由式(2)計算得到:

其中,j為類別代號,k為向量x的維度,θ表示模型參數,其值通過最小化代價函數得到,代價函數如下:

其中,Bij為判斷函數,當時為1,否則為0。
常用的VGG 模型一般有VGG13、VGG16 和VGG19 等,它們分別為13 層、16 層、19 層的網絡結構[5]。VGG19 的模型結構如圖2 所示,從圖2 可以看出VGG19模型輸入圖像的像素大小為224 dpi×224 dpi×3 dpi,VGG19 網絡中全部采用3×3 的卷積核,步長為 1 dpi,在卷積層(convolution)后面都設有一個步長為2 dpi 的2×2的最大池化層(max pooling),使用時,可以根據不同的場景、不同的需求選取不同層次網絡的輸出結果。Softmax 是一個多分類器,用于計算輸入的圖像在Image Net 中每個類別下的概率,由最終的概率矩陣得出預測標簽。
在VGG 中,采用以多個小型卷積核代替單個大型卷積核的策略進行優化,小型卷積核所需的參數更少并且更能保留圖像的特性[6],例如,使用3 個步長為1 dpi 的3×3 卷積核通過層層疊加達到7×7 卷積核的效果能大幅度減少參數數量,同時更小的卷積核更有利于保持圖像原本的性質。
VGG 網絡的結果非常簡潔,整個網絡中的卷積核尺寸相同,最大池化尺寸也相同,能適應各種不同尺寸的輸入圖像,并且通過縮小卷積核的方式增強了卷積層性能。但除去卷積層之外,全連接層中使用了較多的參數,使VGG 的計算將耗費更多的資源。目前,已有大量研究表明,VGG網絡隨著層數的增加,識別率也會相應上升,但耗費的時間同樣會增加。
VGG 網絡的結構非常簡潔,能處理不同尺寸的輸入圖像;同時,為了增強卷積層性能,采用以多個小型卷積核代替單個大型卷積核的策略進行優化。但除去卷積層之外,全連接層使用的參數相對更多,同樣會在一定程度上使VGG 的計算耗費更多的資源。目前,已有大量研究表明,增加VGG 網絡的層數能相應提升識別率,但與之相對應,計算的時間耗費同樣會增加。
綜上所述,VGG19 是一種深層的卷積神經網絡,可以對任意尺寸的圖片進行處理,在處理時首先通過共享卷積層或特化卷積層,利用滑動特征映射圖的方法提取圖像的低級特征信息,再通過卷積層與池化層進一步提取高維的特征信息,最終通過全連接(fully connected)層與分類器計算各類的分類得分。對于樣本圖片,由于圖片的低級特征大體類似,對于不同任務、不同類型的卷積神經網絡在網絡的前部卷積時提取的特征都可以相互借鑒,實現權值共享。本文利用這一特點,將VGG19 應用于云盤圖片數據的分類。

圖2 VGG19 模型結構
卷積神經網絡本身并不具有旋轉不變性,其結構中的最大池化層能在一定程度上代償這個功能缺失,但由于池化操作本身并不是為此設計的,因此在總體上來說深層卷積神經網絡提取旋轉不變特征的能力較弱。針對該問題,有學者提出將圖像進行旋轉以生成新的訓練樣本來擴充訓練集的方法[7],能降低旋轉鎖帶來的影響。但事實上,數據集的擴充導致網絡僅學習與訓練過程中使用的圖像非常相似的圖像的不變性,并且由于訓練集中的圖像分布存在偏差,最終仍會導致不遵循偏差的圖像缺乏不變性。
神經網絡在訓練過程中以降低損失函數為目標,但損失函數并不是對于任意的輸入都具有不變性。雖然訓練的目的是希望網絡能將其學習得到的內容推廣到訓練數據集以外的數據,但是這種推廣可能僅限于與訓練集相似的圖像,這就使訓練集的要求格外高,其中的數據不應該具有偏向性,而是應盡可能地覆蓋所有的情況,當然,這是很難做到的。
本文采用VGG19 網絡計算圖像的一維特征向量,并使用兩張圖像特征向量的余弦相似度來作為判別依據,余弦值與向量相似度成正比。對于給定的向量A和向量B,余弦相似度的計算式如下:

其中,Ai、Bi分別代表向量A和B的各個分量,n是向量的維度。
實驗針對VGG19 網絡模型5 個不同卷積層的輸出結果,以及是否使用最后3 個全連接層作為模型結構的變量,分別對不同拍攝角度、不同背景以及不同光照條件下的相同物體圖像進行了余弦相似度計算實驗,比較了VGG19 網絡模型不同卷積層次的處理性能以及圖像的不同屬性對VGG19 網絡模型造成的影響。
VGG19 網絡在圖像分類方面具有較高的準確率和出色的性能,但使用VGG19 對同一物體的旋轉圖像進行分類,卻有很大概率得到錯誤的結果,同時,不同背景或者不同光照條件也會對相同物體的檢測造成影響。圖3(a)和圖3(c)、圖3(e)和圖3(g)、圖3(i)和圖3(k),均為同一物體在不同角度拍攝得到的旋轉圖像,使用VGG19 網絡的不同層次計算圖像特征,并進一步計算兩張圖像的余弦相似度,得到的結果見表1。
從表1 中的數據可以看出,對于紋理、復雜程度不同的多張圖像而言,旋轉圖像與原圖像進行對比,余弦相似度都有著不同程度的下降,圖像結構越復雜,相似度下降越大,可見拍攝角度不同造成的圖像旋轉會對VGG19 網絡模型的分類性能造成較大的負面影響。對于同一物體,僅因拍攝角度發生變化而被歸于不同的類別顯然是不合理的,但由于VGG 網絡的局限性,并不能很好地處理此類情況。在VGG19 網絡各個不同層次的輸出結果中,使用第3 卷積層輸出結果進行分類的平均效果最好,使用其他層次卷積結果均會使圖像的分類效果有一定程度的下降,可見使用VGG19 網絡第3 卷積層的輸出結果對于旋轉圖像分類有更好的效果。
除此之外,即使針對同一物體的相同角度的圖像進行分類,光照條件不同、背景不同也會造成不同程度的影響,圖4(a)和圖4(b)、圖4(b)和圖4(c)為同一物體在不同背景、不同光照條件下拍攝得到的圖像,使用 VGG19網絡計算圖像特征,并計算余弦相似度,結果見表2。

表1 旋轉圖像的余弦相似度對比

圖4 背景、光照圖像數據

表2 同一物體不同背景、亮度圖像的余弦相似度對比
從表2 可以看出,對于同一物體相同拍攝角度下的圖片,背景不同、光照條件不同,均會對VGG19 網絡的處理性能造成一定影響,尤其在背景和亮度都發生變化的情況下,圖像的余弦相似度與僅改變單個條件的圖像相比有更為明顯的下降。而在各個卷積層輸出中,使用第3 卷積層輸出進行分類的平均效果最好,使用其他卷積層輸出結果進行分類的效果都與實際情況存在較大偏差,尤其使用最后3 個全連接層得到輸出結果,與其他層次相比下降了一個量級。
用于分類任務的卷積神經網絡的每一層本質上是在對輸入圖像進行編碼,通過卷積核滑動的方式給圖像中的每個像素點打分,最終由全連接層解碼,將不同卷積核得到的特征圖中不同位置的分值解碼為不同類別的概率。使用多個卷積層就是不斷地對圖像的特征進行抽象,淺層主要提取圖像的細節特征,層次越深網絡的抽象能力越強,因此中間層次對于圖片中物體的抽象程度較好。結合上述實驗結果可以看出,對于不同場景的圖片,VGG19 網絡模型各層的分類性能并不是相同的,本文以圖片中的物體而不是整張圖片作為比較的對象,可以發現使用第3 卷積層的輸出結果進行分類效果更好。
圖像邊緣是圖像最基本的特征之一,使用邊緣檢測算法對圖像進行增強,可以初步提取圖像中物體的底層基礎特征。因此,在使用第3 卷積層輸出進行分類的前提條件下,使用邊緣增強圖像作為輸入以增強物體的輪廓信息,方法的整個流程對圖像中物體的特征進行了二次提取,能在一定程度上減輕旋轉或者環境變化對VGG19 造成的影響。
針對上述圖像旋轉時圖像背景、光照條件不同而導致分類性能降低的問題,本文提出一種改進策略,在將圖像投入VGG19 網絡計算之前,先對原始圖像進行邊緣增強處理,突出主要拍攝對象的邊緣特征,結合VGG19 網絡第3 卷積層對物體抽象程度較好的特點,以此增加同一對象在不同拍攝角度下、不同背景下以及不同光照條件下得到圖像與原始圖像的余弦相似度。
3.3.1 旋轉圖像對比實驗
本文基于圖3、圖4 所示的幾組數據進行實驗。其中,圖3(a)和圖3(c)、圖3(e)和圖3(g)、圖3(i)和圖3(k) 3 組圖像為同一物體在不同拍攝角度下得到的旋轉圖像組,而圖3(b)和圖3(d)、圖3(f)和圖3(h)、圖3(j)和圖3(l)分別是使用拉普拉斯變換得到的對應邊緣增強圖像,實驗結果數據見表3。從表3 可知,對于不同物體,不管使用原始圖像得到的相似水平如何,不同的拍攝角度都會造成相同物體的余弦相似度降低,但使用邊緣增強圖像進行相同的計算,與原始數據相比,最終得到的余弦相似度都有不同程度的提升,對于邊緣簡單的圖像,VGG19 的分類效果更接近于實際情況,因此邊緣增強對分類效果的提升空間不大,而對于邊緣較為復雜的圖像,邊緣增強方法可以在更大程度上改善分類性能。從表3 數據可以看出,使用邊緣增強的方式突出圖像主體,能在一定程度上降低拍攝角度旋轉給VGG19 網絡帶來的負面影響,提高VGG19 網絡的分類穩定性。
對比3 組數據,前兩組數據的圖像主體邊緣相對第三組要復雜得多,因此旋轉角度對于前兩組圖像的影響較大。前兩組數據中,對于同一物體,旋轉造成了0.5 左右的相似度誤差,而第三組數據因為邊緣簡單,受旋轉的影響較小。在使用邊緣增強圖像替換原始圖像投入網絡之后,對相似度誤差都有了不同程度的減小,邊緣增強對于前兩組數據的提升效果優于第三組數據,第三組數據的相似度誤差降到了0.002 以下,幾乎消除了旋轉帶來的影響。

表3 旋轉條件邊緣增強圖像的余弦相似度對比
3.3.2 變換背景對比實驗
圖4(a)、圖4(b)、圖4(c)分別為同一物體在不同背景、不同光照條件下的原始彩色圖像,圖4(d)、圖4(e)、圖4(f)分別是與之對應的邊緣增強圖像,實驗結果見表4。從表4可知,對于同一物體,不同的背景、不同的光照條件會使圖像的余弦相似度有不同程度的降低,與物體旋轉相比,背景和光照條件的變化將使圖像中的大部分像素點發生變化,雖然圖像的主體部分沒有過大的改變,但是其余像素點的變化會使VGG19 網絡在處理時受一定的影響,因此,背景和光照條件變化的圖像相比于旋轉變化的圖像來說,余弦相似度更低,網絡的分類性能更差。使用邊緣增強圖像進行計算,與原始彩色圖像相比,余弦相似度都有較大的提升,特別對于不同光照條件下的圖像,邊緣增強帶來的效果提升尤為明顯。與采用原始彩色圖像的對照組相同,對于變換背景、變換光照條件的圖像來說,使用VGG19 的第3 卷積層輸出來計算余弦相似度的分類效果最好。
通過上述幾組對比實驗可以看出,對于同一物體,不同的拍攝角度、不同的背景、不同的光照條件都會對VGG19 網絡的分類性能帶來一定的影響,變換背景、變換光照條件造成的影響相對較大,但使用邊緣增強圖像均能在一定程度上降低拍攝條件對VGG19 網絡造成的負面影響,提高VGG 網絡的穩定性。由此可以看出,通過邊緣增強突出圖片主體對象的輪廓,使其在圖片中更為明顯,可以改善VGG19 網絡的分類性能,此外,對于不同的條件變化,使用VGG19 網絡不同層次的輸出也獲得不同的效果。

表4 背景、光照條件邊緣增強圖像的余弦相似度對比

表5 與參考文獻[8]方法對比結果
3.3.3 與其他增強算法對比
參考文獻[8]中所提方法將不同尺寸的圖像進行定量平均分塊以保證圖像在卷積過程中的特征完整性,然后對分塊圖像進行深度卷積池化增強以提高算法的分類性能。基于圖3、圖4 的數據,將本文方法與參考文獻[8]所提方法進行對比,結果見表5,進一步驗證了本文方法的有效性。
由表5 數據可以看出,本文方法的分類性能在大部分情況下優于參考文獻[8]所提方法,在結構簡單、背景單一且物體占據圖像主要部分的情況下,如圖3(i)和圖3(k),參考文獻[8]算法的余弦相似度結果略優于本文算法,但在圖像結構較為復雜或者背景變化較大的情況下,本文方法得到的結果明顯優于參考文獻[8]的算法,從數據中可以看出,在大部分情況下,本文所提方法具有更好的適用性和穩定性。
本文采用卷積神經網絡模型VGG19 結合余弦相似度進行圖像的分類,使用邊緣增強圖像代替原始圖像作為網絡輸入以降低對象拍攝角度的旋轉對分類性能造成的影響。實驗基于天翼云盤平臺,選取了大量旋轉圖片和背景變換圖片進行驗證,并以其中最具有代表性的3 組數據進行客觀分析。實驗結果表明使用邊緣增強圖像突出圖像主體邊緣信息有助于降低旋轉圖片和背景變換圖片對VGG 網絡分類性能帶來的影響,對于各類對象的旋轉圖像和背景變換圖像,本文方法均能在一定程度提高同一物體不同類圖像的余弦相似度,但對于邊緣簡單的物體提升效果不夠明顯,這也是后續研究中有待探索并改進的問題。