范峰 曹文馨 向征



摘要:在計算視覺領域中,訓練卷積神經網絡往往需要大量的數據,網上公開的數據集,少說也有幾十萬張,但是在現實中我們能擁有的數據集資源往往沒有那么多,數據量少,這是一方面。在學術研究與教學中,很多算法都有一個基本假設,那就是數據分布是均勻的,當我們把這些算法直接應用于實際數據時,大多數情況下都無法取得理想的效果。因為實際數據往往分布得很不均勻,都會存在“長尾現象”。數據分布不均勻,數據量少,往往會造成過擬合等問題,數據量少可以通過擴充訓練數據的方法來解決,現在有基本的對圖像的裁剪、翻轉、縮放、平移、尺度變換、對比度變換、噪聲擾動、顏色變化等數據增強的方法,但是這些方法都是基于原有的數據集,雖然能一定程度上解決數據集過少的問題,但是對數據分布不均勻并沒有多大的幫助,文章對此提出一種易于實現且對數據分布不均勻具有一定作用的解決方案。
關鍵詞:3D建模;數據增強;卷積神經網絡;計算機視覺
傳統的數據增強方法是基于原有的圖像數據進行各種變換,從這里引出了一個問題,嚴格地講,任何數據集樣本都有分布不均勻的情況,比如說貓與狗的正面圖片比較多,而背面或者上方的圖片比較少,那么經過傳統的數據增強方法數據集的分布一樣沒有產生變化,訓練出來的模型對正面的特征識別的準確率就比較高,但是背面特征識別的準確率就比較低[1]。在文本處理以及其他非圖像數據處理領域針對這一個問題的解決方法目前有采樣、加權,但是這兩種方法在圖像識別中是比較難操作的,還有數據合成,數據合成方法是利用已有樣本生成更多的樣本,這類方法在小數據場景下有很多成功的案例,比如醫學圖像分析等,但是這個方法用來生成識別圖像數據集是明顯行不通的,不過可以借鑒其合成訓練數據的思想,如果通過3D建模技術創建相應的3D模型,再對3D模型進行全方位圖像信息的收集,再添加到數據集中進行訓練,那么效果會是怎樣,我們針對這個猜想開始進行試驗[2]。
1 模型選取及實驗設計
創建3D模型的方法有兩種:(1)若數據集的圖像像素較高,我們可以直接通過數據集里的目標的多方位圖片來生成模型,現在有眾多的2D圖像轉3D模型的技術及軟件,比較出名的有google open 3D reconstruction,Autodesk 123D Catch,smart3D等。(2)若數據集像素較低,不足以生成高精度的模型,那么我們就需要在其他地方尋找目標對象的3D模型資源了,這個可比找數據集難度低多了。有了模型之后,我們使用3Ds Max 2018中的動畫渲染,選擇輸出JPG圖片,來合成新的數據集[3]。
在這次實驗中,我們隨機選取了著名的貓狗大戰中部分圖片來進行測試,總樣本數量為25 000張,用相同的卷積神經網絡分別訓練這4 000個數據,以及再加入我們通過對模型制作的數據。
卷積神經網絡模型的搭建。考慮到獲取最優識別準確率不是我們的最終目的,我們搭建了一個并不是很深的網絡,避免在這方面浪費多余的時間,卷積神經網絡的結構為一層輸入層,3層卷積層,并在每層卷積層后加入了dropout(隨機丟棄一部分神經元,降低過擬合),損失函數采用常見的分類用的損失函數對數損失函數,最后輸出預測值,我們將這個算法模型作為控制變量,實驗數據作為自變量W。卷積神經網絡結構如表1所示。
2 實驗概述
為了驗證本文提出的有效性及可行性,實驗主要分為兩個階段:第一階段,實驗A,將從數據集中隨機選取的4 000個數據,3 000個作為訓練數據,1 000個作為測試數據,然后訓練卷積神經網絡,迭代10個epoch,記錄實驗結果。第二階段,實驗B,將從3D模型獲取到的1 000個數據加載到原有的數據中,用同樣結構的卷積神經網絡以同樣的epoch訓練,記錄實驗結果并對比[5]。
2.1 實驗階段
2.1.1 實驗數據選擇與處理
試驗階段一使用的數據集為Kaggle官網上下載的catsva dogs的分類數據集。此數據集一共有25 000個圖像數據,包括各種類型的貓以及各種各種類型的狗在各種環境下的圖片。
我們選取部分數據集,將數據集按1:4比例隨機劃分訓練集以及測試集,訓練集為4 000個圖像數據測試集有1 000個圖像數據,接下來通過opencv讀取并分別為貓與狗的數據打上標簽。
圖1為部分制作數據集的模型,通過3D MAX動畫對模型實現全方位圖像渲染,每個模型渲染百張左右的圖片,最后分別加入分類貓和分類狗的數據集下,并打上標簽,測試數據集并不改變,它用來作為控制變量。
2.1.2 訓練模型
當訓練數據和模型都已經準備好之后,開始試驗,實驗結果如圖2所示。
模型經過10個epoch的訓練損失和準確率的變化情況如圖2所示,loss-A隨著epoch的變化與Loss-B對比,實驗A的loss比實驗B低,這說明實驗B的數據比實驗A的樣本之間的平均差異變大了。
圖3中accuracy-A隨epoch變化的曲線與accuracy-B相比較,實驗A的訓練準確率也比實驗B的準確率高,目前看起來實驗A的效果比實驗B好,但是,實驗A的訓練準確率有85%,測試準確率卻只有73%,這說明模型過擬合比較嚴重了,然而實驗B的表現則好很多,雖然訓練數據準確率只有81%,但是測試集的準確率有78%,這說明后來由模型制作的訓練數據對模型的過擬合問題起到了良好的糾正作用,當然模型還可以繼續調優,可以達到95%或者以上,81%也算不上多好的表現,但是我們的目的已經實現了,3D模型制作確實能一定程度上起到降低過擬合情況的作用。
2.2 實驗結論
通過實驗A的數據與實驗B的數據對比,實驗B的模型表現比實驗A的模型表現準確5個百分點,證明了3D建模技術在數據增強中確實有著良好的表現,它不僅能夠改善數據集中常見的“長尾現象”,降低模型的擬合程度,而且它與傳統的數據增強方法并不沖突,甚至還可以在它合成的數據集上面再進行傳統的數據增強,能夠最大限度地利用原有的數據集的價值。
3 結語
在實驗之前我們就猜想,從人的角度出發,讓一個人能夠在多種情況下識別一個對象,那么全方位認識該對象的特征是必須的,而對于計算機視覺來說,也是同樣的道理,只有全方位的圖片數據信息夠多,那么才能訓練出對對象全方位特征都具有識別能力的模型[6]。
兩個階段的實驗有力地證明了建模技術在提高模型預測精度和降低過擬合程度上有著明顯的效果,而且與原來的數據增強方法并不沖突,可以一起使用,這樣能夠在有限的原始數據集獲得更多有價值的數據,最大限度地提取出數據的價值,從而訓練出精度更高的算法模型[7]。
未來計算機視覺任務發展面臨的挑戰就有來自數據集因素的,有標注的圖像和視頻數據較少,機器在模擬人類智能進行認知或者感知的過程中,需要大量有標注的圖像或者視頻數據指導機器學習其中一般的模式。當前,主要依賴人工標注海量的圖像視頻數據,不僅費時費力而且沒有統一的標準?,F在3D建模技術越來越方便快捷以及成本越來越低,精度也越來越高,我們推測以后用3D建模技術來制作數據集也不是沒有可能,因為通過3D模型來合成數據與傳統的收集圖像數據有兩個比較大的優勢:它能夠迅速制作大量的數據;它的制作是人為控制的,可以保證數據分布得均勻[8]。在深度學習算法的門檻越來越低,搭建模型越來越方便,算法模型的調優越來越簡單的現在,將來獲取優良的數據集將成為一個算法模型提升重要的因素,通過3D建模技術制作優良的數據集將成為一個好的選擇。
[參考文獻]
[1]HINTON G E, SALAKHUTDINOV R R.Reducing the dimensionality of data with neural networks[J].Science, 2006(5786):504-507.
[2]HE K, ZHANG X, REN S, et al.Deep residual learning for image recognition[C].Las Vegas:Computer Vision and PatternRecognition, 2016:770-778.
[3]UGULINO W, CARDADOR D, VEGA K, et al.Wearable computing:accelerometers, data classification of body postures andmovements[C].Curitiba:Brazilian Conference on Advances in Artificial Intelligence, 2012:52-61.
[4]GUYON I.Design of experiments for the NIPS 2003 variable selection benchmark[C].Vancouver:Conference and Workshop on NeuralInformation Processing Systems, 2003.
[5]KINGMA D, BA J. Adam:a method for stochastic optimization[M].San Diego:Computer Science, 2014.
[6]盧宏濤,張秦川.深度卷積神經網絡在計算機視覺中的應用研究綜述[J].數據采集與處理,2016(1):1-17.
[7]倪晨旭.計算機視覺研究綜述[J].電子世界,2018(1):91.
[8]GREGORY R.Cordelia Schmid:MoCap-guided data augmentation for 3D pose estimation in the wild[C].Barcelona:Conference andWorkshop on Neural Information Processing Systems, 2016.