李騰飛秦永彬
(貴州大學計算機科學與技術學院貴陽550025)
基于迭代深度學習的缺陷檢測
李騰飛秦永彬
(貴州大學計算機科學與技術學院貴陽550025)
隨著深度學習的發展,越來越多基于深度學習的應用被推出,深度學習在目標檢測,物體識別,語音語義識別等領域都取得了飛躍發展。其中,由于卷積神經網絡在圖像分類中的廣泛應用,現如今的圖像識別與傳統的圖像識別方法已經有了明顯的區別。論文使用卷積神經網絡對工件缺陷進行檢測,針對深度學習在實際應用中出現的小數據集過擬合問題,提出了一種可迭代的深度學習方法來提高識別率并且降低數據的過擬合。
深度學習;卷積神經網絡;過擬合;缺陷檢測
Class NumberTP391
隨著神經網絡中反向傳播算法[1]梯度彌散問題的解決,神經網絡短短數年間得到了迅猛的發展,其中以多層次神經網絡的深度學習最為突出。針對圖像分類和目標識別問題,我們通常的做法是對原始圖像進行特征提取,形成特征數據集合,之后將數據集合通過分類器訓練,進而利用這些特征集實現圖像分類或目標識別。卷積神經網絡[2]實現了一種端到端的學習,即將特征提取的過濾器參數學習與針對分類的分類參數學習作為一個整體,并相互制約,從而達到較好的訓練學習效果。目前的卷積神經網絡主要是使用Imagenet[3]等較大的數據集,其分類效果可以與人類相媲美甚至高于人類,但在實際的工業生產當中,卷積神經網絡的使用往往伴隨著初始數據量不大,數據集中的正負樣本分布極不均勻等情況,在本文利用深度學習進行工件缺陷檢測的應用中,就會遇到上述情況。針對這一問題,我們使用擴大數據集和減少網絡參數來減少網絡配置參數,并在應用過程中使用一種參數更新的迭代深度學習模型,使得深度學習在實際應用中發揮有效作用。
目前,普遍使用的卷積神經網絡是由Roska等[4]提出的,經過一系列更新,加入了Hinton等[5]提出的dropout層來提升網絡泛化能力的一種演變結構,如圖1所示。

圖1 卷積神經網絡結構
卷積神經網絡的結構包括如下部分,input代表輸入層,一般是指訓練集圖像,C1表示卷積層,對圖像進行掃描卷積操作,在此過程中使用多個卷積核對輸入圖像進行卷積操作,形成一張卷積后的圖像,以此獲取圖像的初始特征。之后F(x)指的是激活函數,一般的網絡通常把它融合到卷積層當中,激活函數主要是用來增加非線性化,同時增加網絡的表達力。S1表示下采樣層,主要是為了減少參數而進行的對之前提取的特征圖像進行下采樣,其本質還是一種卷積操作,作用是降低圖像的維度。Normal1層是正則化層,這一層主要對形成的特征圖進行規則化處理,然后是對前面的過程不斷重復,從而達到深度提取特征圖。經過幾個過程后進入到FC層,即全連接層,該層將之前得到的所有特征圖連接起來,類似于神經網絡的全連接,之后的Loss層就是一般的分類器,該層對得到的整個特征圖進行分類訓練。如此,就構成了一個基本的卷積神經網絡框架。卷積神經網絡的層次是可以進行改進的,如調換層的位置,丟棄一些層或者調整參數等,具體情況根據實際場景來調整。整個卷積神經網絡結構的優化,可以使用不同的數學模型進行改進,如利用GPU等硬件環境,或者pre-training,fine-tuning等策略來加快網絡訓練等。
卷積神經網絡的使用主要是針對一些數據集較大的用例,在實際的應用場景中,通常一開始很難得到巨大規模的數據集,這時便通過對卷積神經網絡進行修改,加入一些約束條件來增強網絡的泛化能力,或者從數據的角度出發,利用現有的數據集進行數據擴展。下面將分別介紹針對網絡結構和數據集的一些修改方法。
在神經網絡層,為防止過擬合以及提高網絡泛化能力而經常使用的策略是增加驗證數據集[6],驗證數據集用來衡量訓練集訓練后的網絡是否可以持續使損失函數的損失減少并且保證在驗證集上準確率也能得到提高。當驗證集出現準確度下降時,隨后的訓練就被視為無效訓練,然后停止對網絡的繼續迭代,從而達到減少過擬合,增強網絡泛華能力的目的。這種方法是將數據集分成訓練集,驗證集和測試集。在訓練階段使用訓練集和驗證集得到網絡的過濾器參數和連接參數,然后用測試集來測試整個網絡達到的效果。

圖2 過擬合時的關系圖
其中λJ(?)是正則項,或者稱為懲罰項,一般在損失函數的計算時加入此項,網絡的正則項使用LRN(Local Response Normalization)層模仿生物神經系統的側抑制機制,對局部神經元的活動創建競爭機制,使得響應較大的值相對更大,從而提高模型的泛化能力。

如圖2所示,該圖表示的就是一種過擬合狀態,在訓練卷積神經網絡的過程中,通過驗證數據損失函數的波動來判斷是否處于過擬合的狀態,以此來決定整個網絡是否提前停止,從而減少不必要的迭代。
在卷積神經網絡中使用L1和L2正則化[7]的連接權重約束也可以約束權重的變化,從而避免由于網絡的連接浮動過大而導致的數據過擬合現象,同時對整個卷積神經網絡也起到一定的泛化作用。具體的過程是在卷積神經網絡進行權重下降時,加入正則化的范式使權重變小,權重的減少使得網絡的復雜度變小,避免網絡出現大幅度變化,進而達到穩定的狀態。類似于機機器學習中的結構風險最小化。
其中α表示縮放因子,β表示指數項,這個公式用來進行通道間的歸一化,或是通道內部的歸一化。
卷積神經網絡中引入dropout層,在dropout層中可以設置dropout隨機無效節點的連接比例,即將網絡當前的連接參數保存為上一次的參數值,并將此次的輸入值置為零,這些參數可能在下一次就恢復正常狀態,但又有一些連接點按照隨機比率處于失效的狀態,這樣不停的訓練便可以得到一種泛化較好的網絡,這樣就將原有的一些強關聯依賴弱化成一些弱關聯依賴。dropout消除了神經元節點之間的適應性,一定程度上增強了網絡的泛化能力。Dropout的原理如圖3所示。

圖3 dropout的原理
圖中所示為同一個神經元,在訓練的時候此神經元進行dropout配置,其中dropout[8]的概率p在0~1之間,根據是否產生過擬合,p一般在0.4~0.8之間;如果此時數據量比較大,p可以設置為0.4;如果數據量較小,p可以設置為0.8,其他情況則在這個范圍內上下調動。以p的概率失活即不參與連接,但在測試階段該神經元是活躍的,即存在連接的操作策略可以減少神經元間的過度依賴。
除了從算法的角度去修改或是添加一些約束來減少網絡的過擬合問題,還可以從數據的角度來適當的增加一些數據集[9],比如對現有的數據通過一些聚類算法來生產一些數據,或是在原有數據集中增加一些噪聲數據等。
在對圖像的數據集進行擴展時,可以利用圖像的信息對圖片進行鏡像處理,或是將圖像旋轉一定的角度來增加數據量。Alex的文章在解決小數據集問題時提出了兩種數據增大的方法。
在此介紹一種通過對圖像進行仿射變換[10],生成不同的圖像的方法。一般是將圖像進行旋轉,左右變換,來增加數據量。其中仿射變換的公式如下:

其中主要是通過T矩陣來進行圖像變換,經常使用的變換是旋轉操作,在此使用矩陣來進行角度旋轉。
此外就是通過網絡來訓練一些公共的大數據集來得到整個網絡的參數及權重,將這些參數及權重用作網絡的初始化參數。然后,將網絡最后的全連接和分類器改成自己所需要的,使用自己的訓練集進行訓練,這樣的訓練可以加速網絡的收斂,同時又可以利用其他數據集初始化的參數,這樣就在一定程度上增加了數據的多樣性,一定程度上防止數據的過擬合。
以上的這些方法無論是從機器學習的角度,深度學習的角度又或是數據的角度,都可以對網絡的過擬合起到一定的抑制作用。
為了改進起初數據量小的情況,本文使用迭代的深度學習來提高機器的識別率。本文結合深度學習和增強學習,主要是基于深度學習,提出一種應對初始數據集不能達到高水準識別的策略即在少量數據集的訓練之后,通過多階段的學習來提升識別的準確度,以此來優化生產中的使用。以下是針對這一問題所提出的具體操作:
1)在得到數據集之后,確定所要的分類標注,將數據集分成訓練集和測試集。(根據實驗將一個大的數據分成幾部分數據,使用這些數據來構建下面的迭代過程)。
2)根據第一類數據集的一些特征、數量來選擇一個深度學習框架(一般可以修改)。
3)將得到的數據集放入框架進行訓練并查看結果,通常情況下網絡的層數及網絡每層都需要修改,可以結合之前的pre-training和fine-tuning來得到一個比較合適的網絡。
4)加入一些約束規則,來限制網絡對哪些識別是嚴格的。
5)經上述的訓練選出合適的網絡,作為當前的使用網絡。
6)將新的數據集放入之前訓練好的網絡,進行分類識別,給每一個樣本按照網絡的輸出標注上網絡的識別標注,并統計網絡的當前實際識別率。
7)進行新的學習,將第一階段的數據與第二階段的數據融合之后,作為整個的訓練集與測試集,在現有的網絡結構上進行訓練,并調整網絡的參數。
8)對比新訓練的網絡的識別率與原來的網絡的識別率,如果高的話更新全網的的參數及權重,低則保持原網絡的配置狀態。
9)如果有新的數據集加入,在達到新的訓練閾值時,重復上述的6)、7)、8)三個過程直至網絡穩定。
上述是迭代深度學習的整個流程,針對起始數據量少的情況可以使用前面提到的一些正則化。dropout,pre-training,fine-tuning等方法用來減少網絡的過擬合,增強網絡的泛化能力。如果是對某一類別的識別要求比較嚴格,可以在訓練中增加對此類別的一些限制等。如圖4。

圖4 迭代的深度網絡
針對上述的一個工作圖,將此過程分成兩個大的部分進行處理,train表示整個訓練過程,一開始以小的數據集進行CNN網絡學習,在學習中,主要使用dropout和正則化方法來防止網絡過擬合,等到整個網絡達到穩定狀態后將該時刻的識別準確度與網絡參數以及權重存儲在param中,如果這個識別率與目標差距不大,可以選擇將這個網絡的參數配置到work中,work部分被看作是實際的使用場景,經過work的實際使用可以得到新的數據和經過此網絡判斷的標簽數據,將這些數據保存至Data中,使用Data來判斷數據的增長,待到新的數據級別時,再將初始時用來訓練的數據集融合進來,準備進行第二次的訓練參數調整,然后進入第一個train的過程中開始訓練,將得到的訓練參數存放至parma中,進行準確率的比較,看是否可以將此時訓練的參數更新到整個網絡中,這個方法只是針對一開始數據集不足,通過深度學習已經達到了某個識別瓶頸,想再有所提升,需要借助一些新的數據集的情況。但是對于一些自身樣本很大的網絡效果不佳。
實際work時所獲取數據的標簽標定,一是可以隨機地取出當前的機器標定樣本查看正確率,如果正確率可以接受就隨機抽取部分來作為新數據集的組成部分,二是可以使用k-means聚類算法,使用訓練集作為基礎,進行聚類來對新的數據集進行標注,三是人工對新學到的數據集進行標注。針對以上三種可供選擇的方法,本文采取結合第一種和第二種方法的比對策略,使用網絡提取出圖像特征,然后根據標簽的數據與新增數據集,使用聚類(k-means)的方法進行特征的重新分類,找到特征近似度高的標簽進行判定。實驗中允許少量的錯誤標注,這樣能起到一定的泛化作用。在進行迭代實驗時,要對網絡的dropout的p概率做一定修改。下面是一些對實際操作進行的處理,實驗時為了模擬這個過程將數據分成幾個部分進行迭代實驗測試。開始時從大數據集中取出一部分來進行訓練集及與測試集的分配,所使用的數據可以看作是小數據集,針對這種情況,使用數據擴展的方式將數據集擴大,在此使用的是將數據集進行仿射變化。在深度學習網絡的選取上還主要是根據現有的成熟的網絡進行修改,這個過程比較耗時,而參數的確定策略需要參看具體的情況。
實驗數據是一家合作公司提供的工件圖像數據集,主要是實際的生產線中使用CCD攝錄機采集的數據圖像,可以正常使用的數據圖像總的為1712張,其中正常的工件數936張,含有缺陷的工件數776張,實際使用時訓練集與測試集隨機分配,訓練集與測試集不交叉,這便是最初的數據集。相對于大數據分類來說,本實驗仍屬于小樣本的訓練,在此基礎上使用仿射變換和對抗訓練對數據進行擴大,此時只對訓練集進行擴展,而不對測試集進行擴展。針對小的數據集,使用一個含有5個卷積層和2個全連接層及一個softmax損失層的8層網絡來訓練,其中加入了一些dropout層,LRN層來進行防止過擬合。
表1給出了數據集每次訓練的數據量,在此使用的是累加的數據集,使用的增量值是400個數據,其中測試集采用初始的測試集,在以后的實驗中不再做修改,以此作為衡量的標準。

表1 訓練集與測試集的數據分布
實驗中使用的圖像的大小統一預處理為100× 100×3的彩色圖像,其他的暫且不做處理,因為深度學習可以忽略不同的背景、姿勢、光照和周圍的物體等,因此省去了過多的圖像處理環節。
對基于迭代的深度學習實驗進行三次迭代操作,記錄每一次訓練之后在測試集上的識別率,實驗結果如表2所示。

表2 通過增加數據集的迭代訓練次數與識別率
從實驗中可以看到,在數據量小的情況下識別率只能達到89%,即便調整網絡之后也很難有所提升,但是加入第二次數據后再進行訓練時,可以將性能提升到91%,進行第三次迭代后實驗結果達到了93%。在實驗中注意對dropout的調整,和網絡權重的衰減策略,該實驗中,逐漸減小dropout的值,對于權重的修改,參考了現有的caffe[12]的參數調整策略。
在實際的應用中,數據是一個動態增長的過程,學習是一個前后照應的過程,增強網絡的學習能力,有時候便可以使用補充數據集來提升網絡的表達。本文介紹的可迭代的深度學習網絡只是從另一個角度適當的解決這一動態變化的過程,是從解決問題的角度出發從而進行的改進。
本文介紹的迭代網絡框架根據網絡進行調參,并沒有修改網絡的結構,當數據量達到一定程度時,參數調整對于識別準確率的提高將變為次要因素,所以,對網絡參數進行自動修改將在一定程度上彌補這方面的不利影響,但是怎么將網絡調整工作交給機器還存在一些需要研究和解決的問題,這也將是下一步研究的方向。
[1]Jiang Z,Wang Y,Davis L,et al.Learning Discriminative Features via Label Consistent Neural Network[J].arXiv preprint arXiv:1602.01168,2016:1011-1017.
[2]Pascanu R,Mikolov T,Bengio Y.On the difficulty of training recurrent neural networks[J].ICML(3),2013,28:1310-1318.
[3]Krizhevsky A,Sutskever I,Hinton G E.Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems.2012:1097-1105.
[4]Lin Z,Courbariaux M,Memisevic R,et al.Neural networks with few multiplications[J].arXiv preprint arXiv:1510.03009,2015:1036-1037.
[5]Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:A simple way to prevent neural networks from overfitting[J]. The Journal of Machine Learning Research,2014,15(1):1929-1958.
[6]李航.統計學習方法[M].北京:清華大學出版社,2012:38-41.
LI Hang.Statistical learning method[M].Beijing:Tsinghua University Press,2012:38-41.
[7]Jiang Z,Wang Y,Davis L,et al.Learning Discriminative Features via Label Consistent Neural Network[J].arXiv preprint arXiv:1602.01168,2016:561-563.
[8]Yao L,Miller J.Tiny ImageNet Classification with Convolutional Neural Networks[J].CS 231N,2015:1091-1093.
[9]Andonie R.Extreme data mining:Inference from small datasets[J].International Journal Of Computers Communications and Control,2010,5(3):280-291.
[10]岡薩雷斯,伍茲.數字圖像處理[M].西安:西安電子工業出版社,2008:112-115.
Gonzales,Woods.Digital image processing[M].Xi'an:Xi'an Publishing House of electronics industry,2008:112-115.
[11]Parr R,Russell S.Reinforcement learning with hierarchies of machines[J].Advances in neural information processing systems,1998:1043-1049.
[12]Kishore A,Jindal S,Singh S.Designing Deep Learning Neural Networks using Caffe[J].2015:312-323.
Feature Detection Base on Iterative Deep Learning
LI TengfeiQIN Yongbin
(College of Computer Science and Technology,Guizhou University,Guiyang550025)
With the development of deep learning,more and more applications based on deep learning are launched.Deep learning has achieved qualitative development in so many fileds such as object detection,object recognition,speech recognition,semantic field.With the widespread use of convolutional neural network in image classification,a marked distinction has occured between the current image recognition and the traditional method of identifying.When we try to find the workpiece defect with the method of t neural network convolution,small data usually result in over-fitting problem.To solve it,we propose a deep learning method can be iterative to improve the recognition rate and reduce data over-fitting.
deep learning,convolutional neural networks,overfitting,defect detection
TP391
10.3969/j.issn.1672-9722.2017.06.025
2016年12月7日,
2017年1月31日
國家自然科學基金項目(編號:61262006,61540050);貴州省重大應用基礎研究項目(編號:黔科合JZ字[2014]2001);貴州省科技廳聯合基金(編號:黔科合LH字[2014]7636號);貴州大學引進人才科研項目(編號:201114)資助。
李騰飛,男,碩士研究生,研究方向:機器學習。秦永彬,男,博士,副教授,碩士生導師,研究方向:智慧計算與智能計算、大數據管理與應用、移動互聯網研究與應用。