目前越來越多的中外學者致力于機器視覺的研究, 但卻少有導光板檢測的成熟方法以及學術論文可被參考, 通過借鑒液晶屏缺陷檢測的研究方法進行研究. 在數字圖像算法檢測方法中, 文獻[1]中將圖像作為像素矩陣, 利用奇異值分解(SVD)檢測缺陷, 首先去除圖像背景, 然后利用剩余奇異值重建圖像并顯示缺陷區域. 但是這種方法中沒有提供消除各種缺陷類型時必須的奇異值數, 以獲得良好的實驗結果. 文獻[2]中, 利用奇異值對圖像進行分類, 并將缺陷圖片分為粗缺陷和細缺陷兩類, 采用二維離散小波系數與區域增長相結合的方法提取缺陷區域, 該算法在時間復雜度上表現較為優異, 但是在應對導光板復雜特征時表現欠佳. 文獻[3]中擴展了原霍夫變換的點到線的距離差, 在非平穩灰度梯度的缺陷檢測中得到了有效的應用. 然而不同的距離差值與相同的控制參數組合將會導致得到不同的結果, 文中并未提到此自動檢測方法是否需要人工干預來設置參數. 在神經網絡的檢測算法中, 文獻[4]中作者為Mura缺陷的定量評估設計了一個模糊神經網絡, 然而對于低對比度的Mura缺陷, 如何準確地提取到缺陷特征是一個挑戰. 文獻[5]中作者為預測Gap Mura缺陷使用4種神經網絡, 分別是BP神經網絡、徑向基函數、學習向量量化1和學習向量量化2進行訓練, 但是BP神經網絡本身具有收斂速度慢、權值收斂局部極小化等問題, 并不能提供穩定的解決方案. 文獻[6]中作者針對Mura缺陷采用監督學習網絡, 將觀察到的Mura缺陷標記為特征, 并被輸入到一個卷積神經網絡提取所選擇的特征. 文中所使用的網絡需要提前表及特征, 過程繁雜, 工作量大, 且文中使用網絡結構簡答單一, 捕獲特征較少, 無法應對復雜紋理的圖像分類任務. 文獻[7]中作者使用神經網絡光學模型和遺傳算法等方法優化設計棱鏡型液晶導光板, 以求在現有條件下獲得優異的亮度均勻性. 但是使用的網絡BP神經網絡訓練方面問題多多, 無法保證使用不同的數據集時的檢測效果. 文獻[8]中作者融合STN和DenseNet卷積神經網絡組成新型網絡結構ST-DenseNet用于樹種葉片數據集分類. 文獻[9]中作者通過改進AlexNet完成遮擋獼猴桃目標識別任務. 文獻[10]中作者使用VGG16分類卷積神經網絡對血液細胞進行診斷分類研究. 在理論研究方面, 人們在探索分類卷積神經網絡時注意到了注意力這一概念。
上述分類卷積神經網絡的分類效果雖然表現不錯, 但是由于網絡參數較多, 運行時卷積神經網絡的時間復雜度較大. 因工業產品檢測需要考慮時間成本和資金成本, 無法直接使用上述分類網絡進行分類檢測. 由于目前用于工業檢測的卷積神經網絡案例較少, 查閱相關文獻后, 選擇對現有卷積神經網絡進行改進, 完成導光板分類檢測算法. 針對工業檢測需求, 更改DenseNet網絡中的卷積結構, 結合Bilinear-CNN算法提高卷積神經網絡局部特征注意力. 最終在900張的測試圖片組成的測試數據集上達到了95.53%的準確率, 平均單張圖像檢測時間為40.1 ms.
導光板是一種亞克力材質的塑料板材, 經過花紋燙印后, 被廣泛用于顯示器背光模組核心組件. 對導光板標記線的檢測, 則是驗證當前燙印工藝是否合格的一個重要標準. 使用數字圖像算法檢測導光板標記線雖然可以有效地對圖片進行檢測, 但是面對特征更加復雜的大面積氣泡、嚴重污染和無標記線等情況無法得到滿意的結果. 使用深度學習方法進行工業檢測, 是學術界和工業界共同探索的課題. 使用深度學習的方法對小數據集、低對比、高紋理、高相似的導光板標圖片進行缺陷檢測, 導光板缺陷板材示意圖如圖1所示.
1 相關理論方法
卷積神經網絡(Convolutional Neural Networks, CNN)是一種特殊的人工神經網絡, 其主要的特點是卷積運算操作. 卷積神經網絡在進行分類或者回歸的時候, 大致都分為兩個部分, 他們分別是前饋運算和反饋運算. 前饋運算是產生運算數據的過程, 其主要通過卷積操作、匯合操作和非線性激活函數映射等一系列操作共同完成. 反向傳播主要是計算預測值和真實值之間的誤差或損失, 憑借反向傳播算法將損失逐層向前反饋, 更新每一層的權重和偏置, 通過周而復始的進行前饋運算和反饋運算, 最終得到期望的模型.
2 基于雙線性CNN和DenseBlock的分類檢測框架
本文算法分上下兩步, 第1步, 基本權重訓練: 通過修改DenseNet網絡, 改進DenseBlock中特征計算單元的結構, 減少卷積神經網絡卷積層數量, 避免過擬合, 以及減少卷積神經網絡參數數量. 第2步, 權重模型優化: 使用Bilinear-CNN分類算法組成混合深度模型進行遷移學習, 將使用第1步訓練得到的權重遷移到第2步的Bilinear-CNN分類網絡重新訓練, 通過捕捉特征通道之間的成對相關性, 提高分類準確率, 各步網絡結構如圖4所示. 通過對實驗的卷積神經網絡算法的權重進行分析發現, 本文所設計的卷積神經網絡算法僅需要極少的參數參與運算.
2.1 改進的神經網絡模型介紹
與傳統的為提高識別精度, 通過增加卷積層數量或使用金字塔特征融合的方法不同. 卷積神經網絡在工業檢測應用的場景, 主要運行在工控機或者普通PC機上. 因此設計卷積神經網絡時, 首先考慮減少卷積神經網絡卷積層, 然后再考慮提高卷積神經網絡分類精度.
2.1.1 減少卷積神經網絡參數
減少DenseBlock中的卷積層數, 通過減少卷積操作次數和卷積數量, 提高卷積神經網絡運行速度. 減少卷積層數量可以在減少運行時間的同時減少網絡參數數量. 但是隨之而來的副作用, 則是無法獲得足夠的特征, 使得特征激活映射區域無法正確映射到目標物體上.
減少卷積操作中的通道數量, 隨著卷積操作中通道數量的增加, 網絡參數數量也隨之增加, 使得網絡在運行時需要申請更多的顯存和內存空間. 減少卷積操作中的通道數量, 可以有效的降低卷積神經網絡的空間復雜度.
在特征計算單元中加入DropOut算法, 通過設置忽略特征檢測器的概率, 使某些神經元的激活值以一定的概率停止工作. DropOut的加入可以使當前模型泛化性更強, 減少對某些局部特征的依賴, 從而避免過擬合.
在每個DenseBlock后面加入多層感知器(MLP)[20], 與Caffe中MLP的實現方法不同, 實驗算法中的MLP算子中沒有使用3×3大小的卷積核進行卷積, 僅使用兩層1×1大小的卷積核進行卷積, 這樣做有助于在加深網絡卷積深度與增強網絡容量和復雜度的同時, 減少網絡參數數量[21].
2.1.2 加速損失函數收斂
在實驗中, 發現使用原DenseNet網絡結構中的GAP結構, 無法有效降低損失函數的損失值. 在使用三層全連接層代替Global Average Pooling (GAP)之后, 損失函數的損失值快速下降. 對比前后結果, 三層全連接層作為一個小型網絡, 相比于GAP算法其可以獲取更多的特征. 使用GAP算法對高紋理、低對比的灰度圖分類時, 會造成特征圖上的特征丟失.
GAP對所接收到的每一個特征圖都進行了極端降維, 它將尺寸為h×w×d的張量縮小為1×1×d大小的張量. GAP激活區域與分類結果之間的關系證明如下所示[22]:
使用三層全連接層可以有效地降低損失函數損失值, 加速了梯度下降, 促使網絡可以更加快速的擬合權重參數, 找到當前網絡的局部最優解. 但是隨著三層全連接層的使用, 導致卷積神經網絡的參數數量增加, 所以在下一步的遷移學習過程中通過修改全連接層結構的方法, 降低網絡參數數量.
2.2 雙線性CNN算法
雙線性CNN(如圖5)由兩組CNN特征提取器組成, 它使用兩個卷積神經網絡的輸出在圖像的每個位置進行外積相乘, 并在原圖各個位置進行池化以獲得最終的圖像特征描述符. 通過外積操作捕捉特征通道之間的成對相關性, 對局部特征之間的交互進行建模. 由于雙線性CNN的兩個CNN的輸出是線性的, 所以被叫做雙線性CNN[23]. 在雙線性CNN算法中, 有并行子網絡A、B, 網絡A的作用是對圖像中對象的特征部位進行定位, 而網絡B則是用來對網絡A檢測到的特征區域進行特征提取, 由這兩個網絡共同完成了圖像分類中最重要的兩個任務: 區域檢測和特征提取[24].
雙線性CNN的全局圖像描述符, 表示如下:
目前雙線性CNN有兩種實現方法, 第1種: 使用不同的兩組卷積神經網絡作為特征提取器, 第2種: 使用同一組網絡獲取的最終特征描述符進行運算. 通過對比研究, 因考慮到算法最終的應用環境, 最終選擇第2種實現方式進行實驗.
2.3 損失函數
3 實驗分析
訓練數據集共有4059張圖片, 驗證和測試數據集各有896張圖片. 為應對不同工廠的不同產品, 旨在尋找簡單易用的端到端的神經網絡, 本文分類卷積神經網絡算法在訓練時并未對圖片預處理.
(1) CPU: Intel Core(TM) i5-4590; 四核四線程; 主頻: 3.3 GHz.
(2)實驗訓練用GPU: NVIDIA Titan V; 顯存: 12 GB; 內存: 250 GB.
(3)實驗測試用GPU: NVIDIA GTX 1060; 顯存: 6 GB.
(4)本機內存: DDR3: 1600 MHz; 內存: 16 GB.
實驗軟件環境如下:
(1)操作系統: Windows 10, ubuntu 16.04.
(3)第三方庫: Pillow, numpy, matplotlib, tensor-flow, keras, scikit-image.
3.1 DenseNet實驗參數與結果
在第1步的訓練中, 將訓練集輸入到網絡中進行模型訓練, 訓練過程所涉及的參數有batch_size大小、學習率、激活函數、迭代次數和優化函數(訓練參數設置如表1所示).
使用實驗網絡模型對同一個數據集、在相同的訓練參數下, 進行多次訓練后發現, 每次訓練后得到的準確率在92%左右震蕩. 從側面驗證, 通過改進所得到的卷積神經網絡具有較好的魯棒性(loss變化圖如圖6所示, 本文使用留一法數據進行展示, 用以凸顯卷積神經網絡擬合效果).
3.2 雙線性CNN實驗結果與分析
使用遷移學習技術對雙線性CNN網絡進行訓練, 通過修改第一步中的DenseNet網絡結構, 使用雙線性CNN算法替換三層全連接層, 在減少網絡參數的同時提高了分類準確率. 在第二步訓練雙線性CNN時依然采用交叉熵損失函數作為圖像分類訓練的損失函數(如圖7).
將訓練集輸入到網絡中進行模型訓練, 訓練過程所涉及的參數有batch_size、學習率、激活函數、迭代次數和優化函數等(如表2).
實驗所用訓練數據集(如圖8)由3類缺陷圖片組成, 分別是無線、有線和氣泡, 每類有1353張圖片, 共計4059張訓練圖片, 圖片大小為448×448×1的灰度圖片. 測試數據集和驗證數據集各有896張圖片, 在上述數據集中無線、有線和氣泡的缺陷圖片各有300張測試圖片, 圖片大小為448×448×1的灰度圖片. 使用實驗算法在測試數據集上測試, 最終得到分類準確率為95.53%.
經過對測試數據集圖片內容逐張圖片驗證發現, 誤判主要于有線板材被嚴重污染的情況下出現. 在對氣泡和無線板材進行逐張圖片驗證時發現, 這兩類圖片的檢測準確率為100%. 根據工廠質量品控標準, 可以將合格的檢測為不合格的, 但是不能存在不合格檢測為合格的情況. 所以無線板材的準確檢測是保障導光板質量的最低標準, 實驗算法基本實現了導光板標記線的檢測要求. 實驗網絡分類結果如圖9.
使用VGG-16、V2-ResNet-101、AlexNet與本文網絡相對比, 分類結果如表3所示.
根據表3數據所示, DesneNet-BCNN 與其他主流網絡對比結果如下.
在網絡參數方面, 較V2-ResNet-101卷積神經網絡參數減少了97.2%, 較AlexNet卷積神經網絡參數減少了97.5%.
在準確率方面, 較V2-ResNet-101卷積神經網絡準確率提升了0.44%, 較AlexNet卷積神經網絡準確率提升了3.34%.
在平均單張圖片檢測時間方面, 較V2-ResNet-101卷積神經網絡快了13.3 ms, 較AlexNet卷積神經網絡慢了29.5 ms.
4 結語
本文卷積神經網絡主要分兩步完成, 第1步: 通過修改DenseNet 網絡結構降低參數數量、提高檢測速度、減少圖片檢測所用時間以及避免訓練過擬合. 第2步: 使用遷移學習方法, 將第1步訓練所的權重遷移到雙線性CNN進行進一步訓練, 通過外積操作捕捉特征通道之間的成對相關性, 提高分類準確率. 使用本文算法在低對比、高紋理、高相似的灰度圖片小數據集上進行分類, 最終取得了95.53%的準確率. 相比于V2-ResNet-101 網絡結構, 準確率提升了0.44%, 參數減少了97.2%, 平均單張圖像檢測時間大約減少25%. 因為使用機器視覺的方法對導光板缺陷進行檢測的相關文獻較少, 使用深度學習方法的文獻更加稀少. 因此現有的導光板檢測方面的文獻, 無法提供有價值的參考和對比. 由于工場計件生產規則限制, 無法在工廠生產線上進行長時間的、大負荷的、連續的算法魯棒性和穩定性評測. 但是在與傳統算法搭配進行缺陷檢測的過程中, 就目前的算法檢測結果來看, 已基本滿足工業生產的缺陷檢測需要. 下一步, 在面對減少缺陷檢測時間、提高缺陷檢測準確率、保證算法魯棒性和穩定性等方面, 需要更深入的研究和分析。
責任編輯:YYX
-
神經網絡
+關注
關注
42文章
4771瀏覽量
100720 -
導光板
+關注
關注
0文章
15瀏覽量
10360 -
cnn
+關注
關注
3文章
352瀏覽量
22204
原文標題:基于雙線性CNN與DenseBlock的導光板標記線缺陷檢測
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論