印桂生, 嚴 雪, 王宇華, 張 震
(哈爾濱工程大學 計算機科學與技術學院, 哈爾濱 150001)
手繪草圖是人類進行交流的一種有效的方式, 近幾年隨著各種電子設備及觸摸屏的發(fā)展, 手繪圖像已經變得隨處可見, 人們可以在手機、 iPad及電子手表等產品上通過手指觸動屏幕畫出想要表達的內容, 也因此帶動了對于手繪草圖的研究和發(fā)展, 包括手繪草圖識別[1], 手繪草圖檢索[2]和基于手繪草圖的3D模型檢索[3-4]等。其中手繪草圖識別是目前廣大學者研究的重點也是這一領域的基礎。
手繪草圖識別是一項有挑戰(zhàn)性的任務, 主要因為相比于有顏色有紋理等信息因子的自然圖像而言, 手繪草圖有以下幾個明顯的特征: 1) 具有高度的抽象性和夸張性。2) 大部分的手繪圖像都是由非專業(yè)人士繪制的, 因此由于不同人的繪畫能力和風格不同導致同畫一個自然物體產生的手繪圖像之間的差異很大。3) 繪畫過程中會產生筆畫的停斷。4) 手繪圖像缺乏紋理和顏色等要素, 一般為二值圖像或灰度圖像[5]。這些挑戰(zhàn)使目前對手繪草圖的識別精確度仍然較低, 且經過實驗驗證, 準確識別手繪圖像的類別也具有一定的難度[1]。
研究以前的工作發(fā)現, 手繪草圖的識別方法和傳統(tǒng)的自然圖像識別方法非常相似, 即先進行手工特征提取, 然后將提取到的特征傳給分類器進行分類識別。手工提取特征一般采用方向梯度直方圖(HOG: Histogram of Oriented Gradient)[6]和尺度不變特征變換(SIFT: Scale-Invariant Feature Transform)[7]等并結合詞袋模型BOW(Bag-Of-Words)[4]形成最后的K維統(tǒng)計直方圖, 而后使用相應分類器進行分類[8]。但這種方法存在的問題是訓練精度不高且忽略了手繪草圖本身的固有特征, 例如忽略了其自身存在的筆畫順序信息。最近隨著卷積神經網絡在圖像處理領域的顯著優(yōu)勢, 不少學者嘗試使用經典CNN(Convolutional Neural Networks)進行手繪草圖的識別, 結果發(fā)現即使目前性能最好的CNN, 也是為彩色圖像識別而設計, 在解決手繪圖像識別的工作中性能卻并不突出[9], 因此, 有學者嘗試設計專門的手繪圖像識別CNN網絡, 解決了上述問題, 且取得了超人類的性能[5]。
筆者提出了一種深度神經網絡DCSN(Deeper-CNN-Sketch-Net), 主要針對手繪圖像的特殊性進行設計??紤]到手繪草圖都沒有顏色和紋理信息, 只是由簡單的黑色線條勾勒而成的圖像, 因此存在很多空白區(qū)域, 如果使用太小的卷積核, 會導致一些區(qū)域學習不到特征, 增加一些不必要的計算和開銷, 所以DCSN首層采用大的卷積核, 以保證每個卷積核都可以提取到有用的特征, 且大的卷積核便于提取手繪草圖的空間結構特征。考慮到小的步長可以保留手繪草圖更多的特征信息, DCSN首層卷積層采用更小的步長。最后, 通過增加網絡層數加深網絡深度從而學習更多特征提高網絡的識別準確率。在利用CNN進行網絡訓練時發(fā)現, 過擬合是一個常見的問題, 在網絡中可以利用Dropout技術[10]減少過擬合, 此外, 增加數據量也可以明顯的改善過擬合問題。在常見的數據增強技術外, 筆者根據手繪圖像的筆序信息, 提出了兩種新的數據增強算法, 即小圖形縮減策略和尾部移除策略。小圖形縮減策略可以選取面積小于某個閾值的圖形進行不同比例的縮減, 這也符合不同人對于同一個物體的某一部分可能畫的偏大或偏小的特點, 表示了不同人不同的繪畫風格。尾部移除策略主要考慮大部分人進行繪畫通常會先畫外部輪廓, 最后去描細節(jié)的特點, 所以每次從最后幾筆去移除筆畫, 即不會影響圖像的整體表達含義而且使圖片具有差異性。通過這兩種方法豐富了訓練數據集, 有效改善了過擬合問題。
筆者提出的算法主要思路如下。
1) 提出了一個深度卷積神經網絡模型DCSN, DCSN在首層使用了更大的卷積核獲取手繪草圖的結構信息和更小的步長保留更多的特征信息, 并增加了網絡層數加深網絡深度, 通過這些方法提升網絡的識別準確率;
2) 根據手繪圖像的固有特征提出了兩種數據增強算法, 小圖形縮減策略和尾部移除策略, 增加了訓練數據集, 減少了網絡的過擬合。
筆者使用了TU-Berlin[1]數據集在GPU(Graphics Processing Unit)服務器上進行實驗驗證筆者所提方法的有效性。
從原始時期到現在, 手繪草圖一直在人類生活交流中扮演著重要的角色, 隨著科技和時代的發(fā)展, 人們開始對手繪草圖重視起來并展開了一系列的相關研究, 比如手繪草圖識別[1], 手繪草圖檢索[2]等并將相關技術應用到特定領域。很長一段時間, 人們普遍采用的方法是人工提取特征而后將得到的特征傳給分類器進行分類。其中識別性能最好的是Tuytelaars等[11]提出的使用Fisher Vector進行手繪草圖分類的方法, 取得了近人類的識別性能。近幾年, 隨著深度神經網絡(DNN: Deep Neural Network)的發(fā)展[12], 人們發(fā)現, 它對特征的學習更加方便和有效, 不僅節(jié)省了人工提取特征所需要的人力且減少了對先驗知識的依賴, 特別是卷積神經網絡在近幾年的視覺識別挑戰(zhàn)賽[13]上的不斷突破, 以及出現的一大批優(yōu)秀的經典網絡結構, 如AlexNet、 GoogleNet、 ResNet等[14], 顯示了CNN在圖像識別上的優(yōu)勢, 目前, 70%左右的CNN應用于圖像處理領域。但現有的CNN網絡架構大部分為更好的識別自然彩色圖像而設計, 專門為只由黑白線條組成的手繪草圖設計的網絡相對較少。2015年, Yu等[4]提出了一種專門為識別手繪圖像而設計的網絡架構Sketch-a-Net, 并達到了超人類的性能, 進一步推動了手繪圖像識別的發(fā)展。2016年, 趙鵬等[15]提出Deep-Sketch模型, 從整個網絡架構設計適合手繪草圖缺乏紋理和顏色信息、 高度抽象等特點的網絡, 取得了很好的性能。2018年, 在文獻[15]的基礎上, 他們進行了改進, 提出了deep-CRNN-sketch模型[16], 將CNN與RNN(Recurrent Neural Network)進行結合, CNN用于提取各子圖特征, 并按照時序將提取的子圖特征圖傳給RNN, 生成最終的手繪草圖特征, 最終輸入到SVM(Support Vector Machine)分類器中進行分類識別, 相比之前Deep-Sketch網絡提高了2.6%的識別準確率。
盡管很多工作已經在很大程度上設計了適合手繪草圖識別的網絡架構, 但是網絡仍然存在很多問題, 例如目前的相關網絡層數相對較少, 不能更深入的學習手繪草圖的內在特征, 且目前的網絡參數較多, 訓練時間較長, 如何有效減少參數提高性能是人們應該努力的方向。筆者在經典AlexNet網絡的基礎上, 增加了網絡的深度, 進行了相應的結構改進, 使之適合應用于手繪圖像的識別。
在深度學習圖像識別任務中, 構建一個識別率高的網絡除了需要一個好的網絡結構外, 用于訓練的數據也至關重要, 需要使用大量的數據進行網絡訓練, 而現存的很多數據集數據規(guī)模較小, 不能滿足訓練網絡時對大量數據的要求, 且當訓練數據集過小時, 網絡很容易產生過擬合, 影響網絡的性能。現存有很多的數據增強技術, 比如最基本的翻轉、 旋轉、 隨機切割、 加噪等[17-18], 可以通過這些增強技術增加訓練集, 提高訓練模型的泛化能力。除了這些基本方法, 也存在一些特殊的數據增強技術, 如Inoue等[19]提出的一種高效數據增強方式SamplePairing, 從訓練集隨機抽取的兩幅圖像疊加合成一個新的樣本(像素取平均值), 可以使訓練集規(guī)模從N擴增到N×N。當然也存在對于要處理的特殊數據集的數據圖片進行特殊處理, 比如筆者的手繪圖像數據集, 可以針對這一類圖像的特征設計專門的圖像增強技術; 如Yu等[20]在2017年提出了針對手繪圖像的多種數據增強技術, 可以根據手繪圖像筆畫的順序和長度移除筆畫生成更多的相似圖像,也可以通過局部和全局的圖像形變豐富訓練數據, 數據集的擴充很好的提高了識別性能。筆者在此基礎上根據手繪草圖的筆畫順序信息提出了兩種數據增強方法, 擴大了原有數據集, 將新增的數據應用于DCSN網絡的訓練中, 并取得了很好的效果。
在本節(jié)中筆者主要給出根據手繪草圖特點而設計的用于手繪草圖識別的DCSN網絡, 并進行一系列的數據增強以訓練網絡, 提高所設計的網絡的識別準確率。
卷積神經網絡主要包括卷積層和池化層, 卷積層進行圖像特征提取, 池化層進行圖像壓縮, 卷積層中, 上一層的特征圖會和當前卷積層的卷積核進行卷積運算, 卷積的結果加權求和后, 經過非線性函數處理得到這一層的特征圖。卷積層的計算如下所示
(1)
其中xi和yj表示第i個輸入特征和第j個輸出特征,kij表示xi和yj之間的卷積核, *表示卷積操作,bj表示第j個輸入特征的偏置系數,r采用非線性函數ReLU作為激活函數, ReLU被證明比sigmoid函數的擬合效果要好。具體計算如圖1所示。圖中將6×6的原始圖像輸入或上一層的特征映射圖經過中間的3×3卷積核, 生成4×4的特征映射圖, 圖中最右面的第1行不同顏色的框中的值是由左圖中相同顏色3×3的框中的值同中間卷積核進行卷積操作求得的值。筆者所用的池化方法為最大池化, 它是選取某一個區(qū)域中的最大值代表選中的區(qū)域, 它的計算如式(2)所示。xi表示一個特征圖上某個區(qū)域第i個數值,y是最后得到的代表值, 即所選區(qū)域的最大值。具體如圖2所示, 圖中將4×4的輸入特征圖進行最大池化降維處理后變?yōu)?×2的特征映射圖。
y=max(x1,x2,x3,…,xn)
(2)
a 4×4的輸出特征映射圖 b 3×3的卷積核(權重) c 6×6的輸入圖1 卷積層計算過程示例圖Fig.1 Example of convolutional layer calculation process
a 3×3的卷積核(權重) b 6×6的輸入圖2 池化層計算過程示例圖Fig.2 Example of the pooling layer calculation process
筆者采用softmax進行多分類, 它將多分類的輸出數值轉化為相對概率, 通過概率值確定此樣本所屬的類別, 計算公式如下所示
(3)
其中Vi是前一級輸出單元的輸出,i是類別索引,C為總類別數,Si表示當前元素的指數與所有元素指數和的比值。
卷積神經網絡訓練主要包括3部分, 初始化、 前向傳播和反向傳播。初始化主要是初始化網絡權值和神經元的閾值, 初始化后通過前向傳播逐層向前計算出輸出值, 通過誤差函數計算誤差和反向傳播更新網絡的權值和閾值, 直到滿足終止條件結束。筆者進行網絡訓練和測試過程如算法1, 算法2所示。
算法1
輸入: 訓練樣本、 網絡參數、 DCSN網絡
輸出: 已訓練的DCSN網絡
1) 初始化DCSN網絡
2) while(未達到最大迭代次數或未滿足訓練誤差)
3) for(每個訓練樣本X1)
4) 前向傳播: 使用式(1)、 式(2)計算每層的輸出
5) 通過誤差函數計算誤差, 求得誤差和
6) 反向傳播, 更新權值和閾值
7) 返回2)進行判斷, 若滿足條件繼續(xù)3)~6), 直至跳出循環(huán), 若不滿足, 則跳出循環(huán), 訓練結束
8) end while
算法2
輸入: 測試樣本、 訓練好的DCSN網絡
輸出: 識別準確率
1) for(每個測試樣本X2)
2) 利用式(1)、 式(2)計算網絡輸出
3) 輸入到softmax中使用式(3)計算概率并分類
4) 計算識別準確率
5) end for
在進行手繪草圖識別的任務中, 首先要做的是構建一個CNN網絡模型結構, 這個模型結構應該專門為我們的目標圖像而設計, 即它的設計應該結合要識別的手繪草圖圖像的特征使訓練出的網絡更加適合完成對手繪草圖的識別。因此, 筆者以AlexNet網絡模型為基礎, 在此基礎上進行更進一步的改進, 完成了DCSN模型的構建, 使之更適合識別手繪草圖。
DCSN網絡專門為識別手繪草圖而設計, 主要包括9層, 網絡輸入為225×225像素的經過預處理的草圖圖像, 共有6個卷積層和3個全連接層, 第1層卷積層中卷積核大小為15×15, 與為自然圖像識別構建的卷積網絡首層卷積層卷積核較小不同, 這里選取一個相對大的過濾器, 這是因為小的過濾器更能捕捉到顏色、 紋理等細節(jié)的信息, 因此更適合用于自然圖像識別, 而手繪草圖中筆畫較為稀疏, 使用大的過濾器反而更容易捕捉到整個圖片的結構信息。每個卷積層后面接著ReLU激活函數, 1,2,3層后面使用最大池化層進行降維處理, 縮小圖像的尺寸, 卷積核的尺寸大致上由大到小, 卷積核的數量由64不斷以倍數遞增, 最高為512, 最后一層為250個, 對應于分類數據集的類別數(這里250指的是TU-Berlin數據集共有250個分類), 卷積層步長除第1層為2外其余全部為1。池化層的尺寸有3×3、 2×2兩種, 步長均為2。網絡中第5層使用1進行填充, 其余使用0填充, 進行填充主要為了保證特征圖按照整數尺寸大小輸出, 使卷積計算有意義。跟以往識別自然圖像的CNN和專門為識別手繪草圖而設計的CNN一樣, DCSN網絡最后3層為全連接層, 7,8全連接層后面接著Dropout層, Dropout率為0.5, 這樣的好處是縮減了參數的數量, 減少了過擬合和網絡訓練的時間。網絡具體參數如表1所示。
表1 架構圖
筆者的DCSN模型和經典的AlexNet模型的對比如下。兩種網絡模型的主要相同點如下。
1) 兩者均是由卷積層、 池化層和全連接層組成的卷積神經網絡。
2) 兩者都使用Dropout解決全連接層參數多計算量大以及由此產生的過擬合問題。
3) 兩種網絡結構均采用ReLU激活函數解決非線性因素的, 提高模型解決復雜問題的能力。
兩種網絡模型的主要不同點如下。
1) DCSN網絡層數更多, 共有9層, 而AlexNet只有8層。DCSN結構是在AlexNe前兩層后增加了一個卷積層和一個池化層, 并去掉AlexNet第5層卷積層后的池化層。層數增多, 學習到的特征更細, 有利于提高識別準確率。
2) DCSN網絡首層使用更大的15×15卷積核學習特征, 而AlexNet網絡使用較小的11×11卷積核進行學習, 這主要是因為小的卷積核更容易學習到細節(jié)特征如顏色、 紋理特征等, 適合用于識別自然圖像, 而大的卷積核更容易捕獲到圖像的結構信息, 適合識別沒有顏色、 紋理特征的手繪草圖。
3) DCSN網絡首層卷積步長較小, 在AlexNet中首層步長為4, 而DCSN網絡首層步長為2, 其余層步長均為1。首層使用較小的步長可以保留更多的特征信息, 學習到的特征越多, 分類越準確。
4) DCSN網絡過濾器的數量除最后一層全連接層外, 其他層從64依次或穩(wěn)定或成倍數遞增, 而AlexNet網絡則沒有這種遞增規(guī)律, 且沒有倍數關系。
5) DCSN網絡去掉了局部相應歸一化(LRN: Local Response Normalization)操作。LRN的主要作用是提供亮度歸一化, 而手繪草圖中沒有亮度特征, 增加LRN不僅不能提高識別準確率還會增加計算量, 所以在DCSN網絡中去掉了LRN。
數據增強技術常被應用在原始的自然圖像識別中, 用來豐富數據集, 常用的數據增強技術有圖片翻轉、 旋轉、 裁剪、 高斯噪聲等。這里根據所要識別的圖像特征提出了兩種增加數據量的方法, 在筆者使用的原始數據集TU-Berlin的基礎上進行數據的擴充, 并將擴充的數據應用到網絡的訓練中。
2.2.1 小圖形縮減策略
筆者提出小圖形縮減策略的思想是先檢測一幅圖中的圖像輪廓, 將里面的類似矩形、 圓形、 三角形的圖形分別檢測出來并標識, 將標識的圖形進行面積判斷, 這里會先設定一個面積閾值, 當檢測到的圖形面積小于該閾值時, 將這個圖形按照原圖75%、50%、25%的比例縮減為3幅圖, 如果面積大于該閾值則保持原大小不變, 這是因為大面積圖形對圖像整體識別的影響大, 所以筆者對大面積的形狀不做更改。這樣將部分小圖形做縮減得到3張新的圖片, 便將原數據集擴大了3倍。提出此策略的依據是考慮了非專業(yè)人員的繪畫水平和繪畫風格不同, 所以對于相同的圖形畫的大小和形狀會有所不同, 將小圖形進行縮減可以想象為另一個人的繪畫風格。
圖3左側為數據集原圖, 右側為經過小圖形縮減策略之后生成的3幅圖片, 可以發(fā)現新生成的3幅圖片和原圖片有些微的差別, 這種差別可以類比不同人的繪畫風格不同產生的差異。通過這種方法可以有效的將數據集擴充3倍用于訓練, 擴充后的數據集命名為S1,S2,S3,S1,S2,S3分別含有20 000張原圖像做小圖形縮減比例為75%、50%、25%后的對應圖像。
a 原圖 b 縮小25% c 縮小50% d 縮小75%圖3 小圖形縮減策略示例圖Fig.3 Small graph reduction strategy example diagram
2.2.2 尾部移除策略
筆者提出的尾部移除策略是通過去掉原始圖片最后幾筆來完成數據的擴充。這里由一幅原圖通過去掉最后一筆、 最后兩筆、 最后3筆擴展了3幅圖片, 用于訓練。由于手繪草圖實質是由一些筆畫序列組成的一個筆畫集合, 且經過研究表明, 大部分人的繪畫都是先整體輪廓, 后進行細節(jié)方面的修飾, 因此, 對于一幅手繪草圖, 最后幾筆一般都是對細節(jié)的描繪, 對于手繪草圖來說, 一個細節(jié)的描述并不能從整體上影響整幅圖片所表達的含義, 也不會影響整體的識別。提出此策略的依據便是考慮到不同人的繪畫風格和樣式不同, 對于最后的細節(jié)描繪, 有的人選擇去具體刻畫, 而有的人卻選擇忽略, 筆者去掉最后幾筆的想法來源于此, 將去掉最后幾筆所生成的圖像放入到訓練數據集中, 增加了數據量, 提高了網絡的泛化能力。
圖4同理左側為數據集原圖, 右側是經過尾部移除策略之后生成的3幅圖片, 分別為由原圖去掉最后一筆生成的圖片, 去掉最后兩筆生成的圖片和去掉最后3筆生成的圖片, 將后3張圖片與原圖進行對比發(fā)現, 只是在原圖的基礎上去掉了最后幾個筆畫, 并沒有改變圖片的其他地方, 將擴充后的數據集命名為W1,W2,W3,W1,W2,W3各含有20 000張原圖像做一筆畫、 兩筆畫、 三筆畫尾部移除策略后的對應圖像。
a 原圖 b 去掉最后一筆 c 去掉最后兩筆 d 去掉最后三筆圖4 尾部移除策略示例圖Fig.4 Example of tail removal strategy
使用筆者專為識別手繪草圖設計的DCSN網絡在TU-Berlin數據集和筆者新擴充的數據集上按照2.1節(jié)中算法1、 算法2的步驟進行實驗訓練DCSN網絡并測試網絡的性能, 并將準確率作為度量標準衡量筆者所提方法的有效性。
筆者實驗在Windows 7系統(tǒng)上進行, 系統(tǒng)內存為64 GByte, 使用Matlab2016a、 Visual Studio 2015平臺, Matconvnet-1.0-beta25深度學習工具, GPU的CUDA版本為CUDA 8.0, 計算能力2.0。
筆者使用目前存在的最大手繪圖像數據集TU-Berlin數據集進行實驗驗證筆者所提方法的有效性。該數據集是在2012年, 由Eitz等組織收集的, 它一共包含250類, 每類含有80幅不同風格的手繪草圖。原始圖像共20 000張, 擴充數據集后共140 000張圖像。原始數據集示例圖如圖5所示。
圖5 TU-Berlin數據集草圖樣圖Fig.5 TU-Berlin dataset sketch sample
筆者使用的度量標準為網絡的識別準確率。準確率是指所有樣本中, 正確分類樣本數量所占的比例。如式(4), 其中Aacc為實驗的指標值(準確度),n為識別正確的圖像數,N為總的測試樣本數量。它是圖像識別中最基本也是最重要的度量標準, 這里通過這個度量標準評價筆者所提出的DCSN網絡的識別性能。
(4)
這里將筆者的實驗結果與傳統(tǒng)的手工提取特征的方法及已有的深度學習方法進行對比, 其中進行對比的傳統(tǒng)方法包括: 1) 傳統(tǒng)的HOG-SVM, 即使用HOG進行手工特征提取, 使用SVM進行分類。 2) 當前最新的FV-SP(Fisher Vector Spatial Pooling)方法。進行對比的深度學習方法包括 1)LeNet網絡, 它在手寫數字識別任務中有很好的性能。2) AlexNet網絡, 筆者基于這個網絡設計的DCSN網絡。實驗結果如表2所示。由表2可以看出, 筆者所提方法的識別準確率要高于其他幾個對比的方法, 這說明筆者所提出的DCSN網絡更加適合手繪草圖的識別。另外, HOG-SVM和LeNet的識別準確率較低, 因為HOG-SVM是手工提取特征, 提取的特征相對較簡單, 提取不到更高層次更抽象的特征, LeNet在手寫數字識別中性能較好, 但由于其網絡結構簡單, 在手繪草圖的識別中性能卻很差。FV-SP和深度AlexNet網絡的識別性能差不多, 但略好于AlexNet。筆者的DCSN網絡是在原有的AlexNet網絡的基礎上進行改進, 改進后的識別準確率比原網絡提高了4.3%。
表2 與已有手繪圖像識別方法的對比結果
筆者為了更好的改善網絡的過擬合問題, 提高識別準確率, 提出了兩種數據增強策略, 小圖形縮減策略和尾部移除策略。為了驗證擴充數據集的作用, 分別進行了幾組對比實驗, 對比結果如表3所示。表3表明, 擴充數據集可以幫助提高識別的準確率, 且小圖形縮減策略好于尾部移除策略, 并且同時使用兩種策略可以達到最好的識別性能。
表3 數據集擴充對識別準確度的影響
筆者針對手繪草圖的特點提出了一個新的CNN網絡結構—DCSN。提出兩種數據增強策略, 防止網絡過擬合問題的產生, 最后使用擴充的數據集訓練DCSN網絡。實驗證明, 筆者提出的網絡模型在TU-Berlin數據集上有較高的識別準確率, 且進行數據擴充后可以減少網絡的過擬合問題, 進一步提高網絡的識別準確率。最后, 筆者的研究還有很多未解決的問題, 例如目前筆者進行的是類級即粗粒度的分類, 如何進行實例級即細粒度的分類等, 是未來的努力方向。另外, 訓練一個網絡需要大量的時間, 這種時間消耗是訓練網絡的一個關鍵瓶頸, 隨著近幾年加速硬件的發(fā)展和并行技術的廣泛運用, 如何將并行計算加入到卷積神經網絡的訓練中以減少網絡訓練時間也是我們需要進一步研究的方向。