馬美榮,李東喜
(太原理工大學大數據學院,山西 晉中 030606)
隨著智能手機的快速普及,人們對手機的品質要求越來越高。在手機功能的實現中,手機主板占據著核心地位。手機主板在生產過程中需要經過拋光、噴砂、板測、裝配、功能測試、包裝等加工工序,有時會出現焊點移位、尺寸不合格的現象,而且主板表面還會產生塌陷、破損、撞件、空焊等缺陷。目前檢測手機主板的缺陷主要依靠人工來完成,準確率低、穩(wěn)定性差,嚴重影響手機的裝配質量。因此,必須要研究手機主板缺陷的多目標檢測方法,以提高手機主板的質量和自動化檢測的效率。
傳統檢測方法常需要預處理和后處理步驟,以轉換輸入圖像,增加主板之間的對比度標記[1]。然而,這些方法僅解決了如光照、曲線或顏色強度等引起的問題[2,3],并不適用于所有的目標檢測。目前,為解決主板缺陷檢測中的問題,研究人員已經提出了多個深度學習方法。這些方法在基準測試和實際應用場景中表現出很高的性能。
Figure 1 RetinaNet structure圖1 RetinaNet的結構
深度學習中的兩級檢測器,如更快的區(qū)域卷積神經網絡Faster R-CNN(Faster Regional Convolutional Neural Networks)[4]、單次多盒檢測器SSD(Single Shot multibox Detector)[5],以及一級檢測器如YOLO(You Only Look Once)[6,7]和RetinaNet[8],在檢測精度和速度方面都有較好的表現。與一級檢測器相比,兩級檢測器檢測速度較慢。兩級檢測器使用外部模塊生成候選對象位置,更多地考慮了難以檢測的樣本[8]。一級檢測器RetinaNet和YOLO-v3通過引入焦點損失進一步提升了其檢測精度和速度。因此,可進一步改進深度學習中的目標檢測器用于解決手機主板圖像中的缺陷檢測問題。RetinaNet有2個主要的構建塊:特征金字塔網絡(FPN)[9]和焦點損失。前者提取出多尺度特征,用于主板缺陷的分類和定位;后者用于解決類別不平衡問題,以增加難以檢測的小樣本的權重。在手機主板圖像中,缺陷元件的部位對姿勢和配置敏感[3,10],由于各種分辨率的影響,同一缺陷元件的形狀是多尺度的。因此,有必要考慮缺陷部位的方差。目前,有一些研究可以解決這個問題[11 - 17],除文獻[14]外,文獻[11-13]僅提供單一分辨率的手機玻璃屏數據集進行缺陷檢測。
基于上述分析可知,RetinaNet適用于手機主板缺陷檢測。本文以實驗方式研究了包含4種類別缺陷的圖像,即塌陷、破損、撞件、空焊。為了解決數據集稀疏性的問題,對缺陷圖像進行對比度變換、旋轉、平移、裁剪、翻轉與亮度變換等數據增強技術。將所有已標記的缺陷圖像,按照7∶2∶1的比例分為訓練集、驗證集和測試集。本文的主要貢獻如下所示:
(1)基于本文的數據集可以構建大量多分辨率的缺陷元件的圖像,我們相信這個數據集會促進計算機視覺技術在工業(yè)目標檢測中的應用。
(2)將最先進的目標檢測器,即RetinaNet,與MobileNetV2網絡融合,并應用于檢測多類別的主板缺陷圖像,實現了超過96%的平均精度(mAP),與其他5個模型相比排名第一。
RetinaNet的結構分為3部分,即用于特征提取的骨干網絡和2個子網。其中一個子網用于分類,另一個子網用于邊界回歸[8]。為了應對檢測對象存在不同尺度的問題,RetinaNet使用FPN來表示多尺度對象。RetinaNet使用骨干網絡提取更高層的語義特征映射,然后利用FPN來提取具有各種尺度的相同維度的特征,最后將這些特征送到用于對象分類和定位的2個子網中,如圖1所示[8]。
骨干網絡可以是殘差網絡ResNet[18]、VGG(Visual Geometry Group)[19]或密集連接的卷積神經網絡DenseNet[20]。FPN用來獲得多尺度特征。2個子網包括用于分類的子網1和用于邊界框回歸的子網2。2個邊界框3是由特征金字塔網絡(FPN)提取的金字塔特征。
2.1.1 特征金字塔網絡
選取特征金字塔網絡作為特征提取器,主要是考慮到低級別高分辨率和高水平低分辨率語義含義[8]。 FPN有2條路徑,分別為自下而上的路徑和自上而下的路徑。自下而上的路徑采用卷積網絡從骨干網絡中提取高分辨率的特征作為輸入。自上而下的路徑用于對更抽象、語義更強的高層特征圖進行上采樣,再把此特征橫向連接至前一特征,以此加強高層特征。自下而上的路徑通常包括卷積神經網絡的一部分,如ResNet[18]、VGG16[19]和DenseNet[20]。在自上而下的路徑中,首先采用1×1卷積將特征圖的數量通道減少到256,然后使用橫向連接來組合相應的特征圖,以幫助檢測器更好地預測位置。
Figure 2 ResNet50 structure圖2 ResNet50結構
Figure 3 Downsampling block and residual block at different stage stages圖3 不同stage階段的下采樣塊和殘差塊
ResNet50包括2個基本的構建塊:卷積構建塊(Conv Block)和恒等構建塊(IDentity Block),分別如圖2中的Conv Block和ID Block所示。ResNet50包含了5個不同的卷積階段,如圖2中的stage1~stage5,每個階段都包括1個下采樣塊和2個殘差塊,如圖3所示[21]。其中,區(qū)域1的下采樣塊會設置最初的卷積步長為1,通過該方式對特征圖進行下采樣,使得圖像尺寸得到縮減。而在區(qū)域2及之后對特征圖進行相加處理,可避免深層網絡的梯度消失和退化問題。每個卷積階段中卷積構建塊將圖像特征從低語義層提取到高語義層。
FPN如圖4所示[22]。顯而易見有2條主要的路徑,即自下而上的路徑和自上而下的路徑,如圖4區(qū)域1和區(qū)域2所示。 跳過conv1連接使用1×1卷積濾波器來減小深度convi(i= 2,3,4,5)到256。在自上而下的路徑中,除了特征映射M2,M3,M4和M5之外,首先,把對應的convi(i= 2,3,4)通道數減少到256;然后通過上采樣組合相應層到上一層;最后,使用3×3卷積濾波器來獲得用于對象分類和邊界框回歸的特征圖層Pi(i = 2,3,4,5)。
Figure 4 FPN structure圖4 FPN的體系結構
圖4中虛線框區(qū)域1中為自下而上的路徑,虛線框區(qū)域2中為自上而下的路徑。M2~M5分別表示從conv2~conv5獲得的特征圖,而P2~P5表示用于預測的特征圖。
2.1.2 焦點損失
RetinaNet使用FPN來獲取多尺度特征,用于對象分類和邊界框回歸。在邊界框回歸中,借助候選邊界框與真值框的比較來獲得正面和負面子類。在訓練期間,類不平衡和難易實例的檢測對檢測的準確性會產生一定的影響[8]。為解決這個問題,文獻[8]提出了焦點損失,它更加強調難檢測對象,并側重于在訓練期間對損失貢獻大的難檢測樣本。焦點損失已經應用于改進檢測算法中,如式(1)所示。
L(pt)=-αt(1-pt)γlog(pt)
(1)
(2)
其中,αt和γ是2個超參數,用于調節(jié)難易檢測樣本權重;pt為二分類情況下對應的模型估計概率;p是模型估計的概率,y=1為真實標簽。
Figure 6 Workflow of defect detection圖6 缺陷檢測的工作流程
隨著神經網絡層數的加深,其模型訓練的時間也相應加長,這是模型訓練的最大缺點。本文利用MobileNetV2的思想對ResNet50進行加速和壓縮。MobileNetV2將1個標準的卷積操作分解為1個深度卷積操作和1個點卷積操作。通過卷積核的巧妙分解來加速運算,顯著減少了計算量和網絡參數。本文將ResNet50中標準3×3的卷積層替換為區(qū)域1中的3×3的卷積層和1×1的卷積層,再經過BN和ReLU激活函數來更充分地挖掘缺陷的相關特征,擬合訓練數據。如圖5所示。
Figure 5 MobileNetV2 structure圖5 MobileNetV2結構
圖5中虛線框區(qū)域1表示ResNet50中替換后的標準卷積操作,虛線框區(qū)域2表示MobileNetV2的結構。
缺陷檢測工作流程如圖6所示[8],包括數據處理、模型訓練和實驗測試(Test)3個過程。其中,Training模塊表示模型訓練過程;Validation表示驗證過程,從采集的主板圖像中選擇可能包含缺陷的感興趣區(qū)域(ROI)建立數據集。這些ROI被切割成256×256像素的缺陷圖像,使用LabeImg 標記缺陷元件在主板中的位置,最后得到所需數據集。所有缺陷圖像已標記并按照7∶2∶1的比例分為訓練集、驗證集和測試集。訓練集完成后,測試數據集用于評估模型的性能。
破損、撞件、空焊和塌陷是主板中常見的缺陷類別,這4種缺陷的特征如表1所示。
Table 1 Defect characteristics表1 缺陷特征
我們在手機生產車間搜集的數據集下使用不同的參數設置,對檢測模型進行了訓練和測試。對于實驗,我們從該車間數據集中選擇了3 597幅圖像,篩選出含有4類缺陷的圖像。為了解決深度學習中數據稀疏的問題,選取1 000幅主板缺陷圖像用于構建訓練集,部分缺陷圖像的采集參數如表2所示,其中拍攝角度順時針旋轉;拍攝距離是指相機到主板的拍攝距離;Width是指圖像缺陷區(qū)域的寬度;Height是指圖像缺陷區(qū)域的高度。
對這些數據在拍攝角度、拍攝距離、對比度變換、旋轉、平移、裁剪、翻轉和亮度變換等方面做出多種變換,以形成更多的訓練數據。 每個數據集的示例圖像如圖7和表3所示。
Table 2 Collection parameters of some detective images表2 部分缺陷圖像的采集參數
Figure 7 Defective component圖7 缺陷元件
Table 3 Details of defective components in Figure 7表3 圖7中缺陷元件的數據信息
表3中,damage(xmin、ymin、xmax、ymax)和size(width、height、depth)表示圖7中0000001.jpg圖像中缺陷元件的位置和該圖像的形狀。
本文采集了3 597幅圖像作為訓練集,每一幅圖像分別含有若干不同大小的破損、空焊、撞件和塌陷。每幅缺陷圖像的大小在45×45~250×250,具體組成如表4所示。
Table 4 Composition of training set表4 訓練集構成
首先,將3 597幅缺陷圖像都轉換為灰度圖像。 之后,從候選子圖像中裁剪像素尺寸大于1000×1000的圖像。 然后通過滑動窗口從這些候選子圖像中獲得尺寸為256×256像素的元件圖像。最后,用LabelImg軟件對這些缺陷元件進行標記[23]。 每個元件對應于手機主板位置注釋的可擴展標記語言(XML)文件。該數據集共有4類待檢測元件。所構造的數據集中的缺陷元件的樣本,以及標記的缺陷元件的示例,如圖8所示。
Figure 8 Several types of defective components in the constructed training set圖8 構建的訓練集中的幾類缺陷元件
實驗平臺配備8 GB內存NVIDIA GTX 1070,其能夠應用于深度學習庫Keras[24]Tensorflow[22]。為了更好地利用RetinaNet,對骨干網絡和焦點損失進行不同設置。特別是,從Keras網站下載該模型以初始化骨干網絡,包括用過的VGG和ResNet在內。由于式(1)中αt和γ的設置會影響實驗結果,本文將其設置為不同值,即{(αt= 0.25,γ= 2),(αt= 0.5,γ= 2),(αt= 0.25,γ= 1)},以選擇更好的模型?;谖墨I[8],根據不同高寬比的邊界框,訓練中將錨點比率設置為{1∶2,1∶1,2∶1}。特別地,Adam(Adaptive momentum)作為一種自適應動量的隨機優(yōu)化方法,經常用作深度學習的優(yōu)化,本文將Adam用于模型訓練優(yōu)化[25],學習率為0.000 01,這是一個基于文獻[3]的經驗值。其他參數的設置與文獻[3]中的相同。
3.3.1 RetinaNet各種設置的比較
如上所述,RetinaNet的不同設置可能會對檢測結果產生不同的影響。表5是設置了6種不同骨干網絡的RetinaNet的檢測結果。這6種模型都是基于同一數據集進行訓練的。這6個模型幾乎具有相同的mAP(均超過94%)。 由于RetinaNet_6比其他模型的mAP高,它將被選中進行進一步評估。 與RetinaNet_4相比,RetinaNet_5和RetinaNet_6具有不同的骨干網絡,這可能對它的mAP有所貢獻。 與RetinaNet_4相比,RetinaNet_5通過設置不同焦點損失中的超參數,得到了不同的mAP。
Table 5 Six configurations of RetinaNet and their corresponding mean accuracy in defect detection (mAP)表5 RetinaNet的6種配置及其對應的缺陷檢測的平均值精度
3.3.2 與其他模型的比較
為了更好地評估RetinaNet的性能,本文使用Faster R-CNN、YOLO、SSD和R-FCN 4種模型進行對比實驗。Faster R-CNN是兩級物體檢測器,它使用區(qū)域候選網絡RPN[4]生成候選邊界框。與Faster R-CNN不同,RetinaNet利用FPN,此外焦點損失有助于進一步解決類不平衡問題。在訓練期間,Faster R-CNN的學習策略與文獻[4]中的相同。YOLO是單級物體檢測器,直接應用算法對輸入圖像進行識別和定位。與YOLO不同,RetinaNet利用了損失函數,檢測效果明顯提升。SSD[18]是單次多盒的物體檢測器,首先,作為基礎網絡提取多尺度特征;其次采用多尺度特征對目標進行分類并獲取包含目標的邊界框。RetinaNet融合了像SSD這樣的子采樣層和重構層,以提高檢測準確性。它的學習率為0.000 001,批次大小為18,動量因子momentum設置為0.99。訓練SSD的其他參數與文獻[5,13]中的相同。R-FCN和RetinaNet之間唯一的區(qū)別是損失函數。特別是,RetinaNet使用焦點損失作為損失函數。焦點損失解決了類別不平衡問題并增大了難檢測的樣本的權重,以提高檢測精度[8]。
為了更好地評估RetinaNet的性能,本文使用Faster R-CNN、YOLO、SSD和R-FCN 4種模型進行對比實驗。Faster R-FCN、YOLO和SSD主要用于評估缺陷元件的多尺度特征,以進行分類和邊界框回歸。 6個模型在整個數據集上進行訓練,實驗結果如表6所示。由表6可看出,RetinaNet在mAP方面實現最佳。改進的RetinaNet(MobileNetV2)在檢測精度和速度方面都優(yōu)于Faster R-CNN。RetinaNet(MobileNetV2)檢測速度低于YOLO和SSD,但比RetinaNet(ResNet50)模型的mAP高4.98%,單幅圖像檢測快了0.003 s。綜上所述,RetinaNet(MobileNetV2)是一種有效的主板缺陷檢測模型。
通過比較R-FCN、Faster-RCNN和SSD,很容易得出檢測語義多尺度特征的mAP大大改善的結論。因為與SSD和Faster RCNN相比,R-FCN提取了缺陷特征以對缺陷元件進行分類和邊界框回歸。與R-FCN相比,RetinaNet實現了更高的mAP。由于R-FCN和RetinaNet之間的區(qū)別是焦點損失,可以推斷,局部損失對mAP的貢獻約為1.35%。這可能是焦點損失解決類別不平衡和難易檢測樣本對損失貢獻的關鍵。
3.3.3 2種RetinaNet模型的比較
為驗證加入MobileNetV2的RetinaNet目標檢測模型對訓練的加速和壓縮有一定程度的提高,本文在自制的缺陷數據集上對2種RetinaNet模型RetinaNet_6(RetinaNet(ResNet101))和RetinaNet_7(RetinaNet(MobileNetV2))進行了訓練和測試, 結果如表7所示。表7中,AP(L)、AP(M)、AP(S)分別表示大、中、小目標的檢測精度,AP(50)指IoU設置為0.5時目標的檢測精度,AP指總的檢測精度。
Table 6 mAP comparisions among six defect detection models表6 6種缺陷檢測模型的mAP比較
Table 7 Comparison of detection accuracy and model parameters between two different RetinaNet models表7 2種不同RetinaNet模型參數和檢測精度對比
由表7可知,對比RetinaNet(ResNet101),改進后的RetinaNet(MobileNetV2)在模型檢測率上有所提高。在IoU設置為0.5時,RetinaNet(MobileNetV2)提高了0.9%,平均檢測率提高2.6%。以MobileNetV2作為特征提取網絡的RetinaNet多目標檢測模型大大減少了模型訓練的參數,模型訓練時間降低了22.7%,表現出更大的優(yōu)勢。因此,本文提出以MobileNetV2作為特征提取網絡的RetinaNet檢測模型能在保證檢測精度有一定提高的情況下實現模型的加速和壓縮。
圖9為RetinaNet(MobileNetV2)的損失函數曲線圖。從圖9中可以看出,3條損失曲線隨著迭代次數的增加均呈下降趨勢,最終,在迭代次數為70萬次時,得到最好的結果。圖9中顯示,邊框回歸損失值在總損失值中所占比重較大,因此定位誤差的消除仍是當前目標檢測中需要繼續(xù)研究的方向。
Figure 9 RetinaNet(MobileNet) loss graph圖9 RetinaNet(MobileNet) loss曲線圖
(1)RetinaNet(ResNet101)的缺陷檢測結果。
Figure 10 Test results of RetinaNet (ResNet101)圖10 RetinaNet(ResNet101)的檢測結果
圖10是利用RetinaNet(ResNet101)進行缺陷檢測的部分結果。從圖10中能夠看到,訓練后的模型能對待測圖像進行定位和識別,但檢測準確率不高且缺陷區(qū)域并未能全部檢測到。例如,圖10a破損檢測中只檢測到局部的破損區(qū)域。圖10b空焊檢測中,左下角的邊界框屬于誤檢區(qū)域,實際上該區(qū)域不存在缺陷。圖10c撞件和塌陷檢測中,漏檢了橢圓形區(qū)域的塌陷,同時誤檢了damage 0.742缺陷邊界框所在區(qū)域的撞件。
缺陷檢測的關鍵是要精準定位出目標的邊界回歸框,因此可將IoU作為評價目標邊界回歸框定位是否精準的一個指標。IoU是2個矩形框產生的重疊區(qū)域與這2個矩形框并集的比值。矩形框A、B重疊度的度量值IoU=(A∩B)/(A∪B)。記錄圖10中檢測率較高的缺陷類別的各個邊界回歸框的坐標,計算IoU值,結果如表8所示。
Table 8 IoU values corresponding to various types of defects in Figure 10表8 圖10中各類缺陷對應的IoU值
表8中,打標坐標為手動標注的缺陷邊框坐標,檢測坐標為RetinaNet_6定位出的邊界回歸框坐標。IoU值越大,檢測算法定位出的邊界框與手動標注的缺陷邊框越接近,定位準確度越高。對應誤檢區(qū)域,選取邊界框包圍的缺陷區(qū)域的最大面積的坐標值,沒有檢測到的缺陷區(qū)域坐標取0。由圖10和表8可知,RetinaNet(ResNet101)訓練出的模型定位精度差,只能識別部分缺陷。
113幅待測圖像的各類缺陷的個數和相應的檢測率統計結果如圖11所示。
Figure 11 Statistics of defect detection results using RetinaNet_6圖11 RetinaNet_6缺陷檢測結果統計
從圖11可以看出,該訓練好的模型可以檢測出部分缺陷,但對撞件和空焊的檢測結果較差,誤檢率和漏檢率都很高,整體檢測率不能達到高于95%的要求。待測圖像中缺陷部位的大小普遍在45×45~250×250內,該檢測區(qū)域小,RetinaNet(ResNet101)的識別準確率和定位精度偏低。本文對RetinaNet(ResNet101)的結構做了改進,用MobileNetV2代替ResNet101作為骨干網絡,使訓練出來的模型能夠進一步提升對較小的缺陷部位的識別準確率和定位精度,以滿足實際要求。
(2)RetinaNet(MobileNetV2)的缺陷檢測結果。
圖12為改進后的RetinaNet對待測圖像的檢測結果。
Figure 12 Test results of RetinaNet (MobileNetV2)圖12 RetinaNet(MobileNetV2)的檢測結果
從圖12中可以看到,改進后的網絡模型對待測圖像能正確檢測出4類缺陷。記錄圖12中檢測率較高的缺陷類別的各個邊界回歸框的坐標,計算IoU值,結果如表9所示。
Table 9 IoU values corresponding to various types of defects in Figure 12表9 圖12中各類缺陷對應的IoU值
從表9中可以看出,IoU值提高很多。改進后的網絡模型對4種缺陷都能進行準確的識別和精準定位,同時定位精度也大大提高。利用改進后的網絡模型對113幅待測圖像進行檢測,統計各類缺陷的個數和相應準確率,結果如圖13所示。
Figure 13 Statistics of defect detection results using RetinaNet_7圖13 RetinaNet_7缺陷檢測結果統計
由圖13可知,改進后的網絡模型誤檢率和漏檢率大大降低,大幅提升了對破損、空焊、撞件的識別準確率,缺陷檢測的準確率達到95%以上,且不同類別的缺陷都能進行精準定位,提高了算法的泛化能力。
如前所示,RetinaNet_7在多類別缺陷圖像檢測中實現了最佳mAP(超過95%),這得益于特征金字塔網絡、MobileNetV2和焦點損失的共同作用。但是,還有許多因素會影響缺陷檢測的性能,例如圖像分辨率、拍攝角度、光照、形變、缺陷元件大小和破損位置,本文只探討了RetinaNet的結構改進和參數設置。其他有影響檢測目標的因素,也會影響缺陷部位的檢測結果。另外,我們發(fā)現預處理也會對檢測結果產生一定的影響,如主板圖像被轉換為8字節(jié)的灰度圖像,這可能會降低缺陷部位的檢測性能。
本文采用基于RetinaNet的目標檢測器來解決主板缺陷檢測中的多類別缺陷元件的檢測問題。 RetinaNet使用特征金字塔網絡(FPN)提取缺陷元件的多尺度特征分類和位置,然后引入MobileNetV2以壓縮和加速RetinaNet模型,再使用焦點損失進一步解決類不平衡和訓練期間難以檢測樣本對損失貢獻程度不同的問題。實驗結果表明:(1)即使在多類別缺陷圖像中,RetinaNet也可以獲得mAP>95%的檢測精度;(2)與其他目標檢測器相比,RetinaNet在復雜背景下具有最佳表現。
目前仍在探索更好的獲取缺陷部位的方法,并根據新數據集做進一步評估。下一步我們將繼續(xù)分析其他因素對缺陷元件檢測性能的影響,未來的工作將集中在主板邊緣元件密集部位微小缺陷的檢測。