






摘要:提出了一種利用深度學(xué)習(xí)算法結(jié)合工業(yè)相機的煙支激光打孔異常檢測方法。針對該檢測過程中的難點,包括圖像采集困難、檢測響應(yīng)時間要求和抗干擾性等問題,作者選擇了彩色工業(yè)相機進(jìn)行圖像采集,并采用YOLOv3目標(biāo)檢測算法進(jìn)行煙支打孔點位的定位和分類。詳細(xì)介紹了YOLOv3檢測算法的實現(xiàn)流程,包括數(shù)據(jù)標(biāo)記、模型訓(xùn)練、調(diào)整置信度和非極大抑制等步驟。此外,為了提高圖像清晰度和檢測速度,提出了圖像增強和使用圖像金字塔變換的方法。經(jīng)過實際測試,該方法在煙支激光打孔異常檢測中取得了很好的效果,具有高準(zhǔn)確率、強抗干擾性和實時性等優(yōu)點。
關(guān)鍵詞:工業(yè)相機成像;目標(biāo)檢測;YOLOv3;伽馬圖像增強;圖像金字塔
一、前言
目前對煙支激光打孔異常的檢測存在以下難點:取圖,煙支出口輪輸出的煙支在輸送帶上呈層次排列,高低不平,相互遮擋,受光照影響大,且呈移動狀態(tài),采圖困難;檢測響應(yīng)時間,對煙支打孔處檢測有時間要求,需要及時得到檢測結(jié)果用于報警;抗干擾性,卷煙生產(chǎn)現(xiàn)場有粉塵、震動等不利因素干擾相機采集數(shù)據(jù)以及檢測。對于上述難點,本文提出了一種利用深度學(xué)習(xí)算法結(jié)合工業(yè)相機的解決方法。
二、取圖
為了適應(yīng)現(xiàn)場惡劣的環(huán)境(震動、粉塵)以及得到最佳的取圖效果,選擇工業(yè)相機可以達(dá)到最佳的取圖效果。根據(jù)目前煙支激光打孔點的成像范圍,相機應(yīng)選擇500萬像素,為獲得更好的目標(biāo)點位特征應(yīng)選擇彩色相機。
目前的檢測環(huán)境實現(xiàn)清晰取圖主要受兩個因素影響,第一點是檢測對象處于快速運動狀態(tài),成像會有拖影現(xiàn)象。第二點是檢測對象表面高低不平,需要解決成像深度的問題。
(一)非靜止運動速度快的對象
對于非靜止且運動速度較快的對象,拍攝時需要解決的問題是拖影,即在工業(yè)相機曝光時,取圖對象與工業(yè)相機之間存在相對運動。這種運動會使圖像不斷發(fā)生變化,從而使每個像元受到來自對象各個部分的干擾,最終形成一個不斷改變的圖像空間,致使圖像疊加、變得模糊。
為了解決該問題需要給拍攝對象增加光源并調(diào)整相機合適的曝光時間,曝光時間太長會有拖影產(chǎn)生,曝光時間太短則無法對檢測目標(biāo)成像[1]。為達(dá)到最佳的成像效果需對曝光時間進(jìn)行計算,如下公式為最佳曝光時間的計算方法。假設(shè)運動物體速度V=100mm/s,相機分辨率R=1/100(mm/pixel),那么我們得到的最大曝光時間為0.1ms。
如果成像圖片允許5個像素的偏差,那么最大曝光時間T計算公式為:
(二)檢測對象表面高低不平
當(dāng)物體處于對焦點平坦時,感光芯片會捕捉到清晰的影像,而在對焦點平坦前方到后面的區(qū)域內(nèi),能捕捉到清晰圖像的區(qū)域被稱為景深。如果拍攝對象有高低不平的現(xiàn)象,則需要加大取圖景深,從而獲得需要檢測對象的清晰圖像。
如下所示不同的景深成像示意圖。
通過上述方程,能夠得出光圈越小,景深就越深;拍攝距離越遠(yuǎn),景深就越深的結(jié)論。為了獲得更深的景深,需要在取圖對象上加入光源,從而可以調(diào)小光圈,調(diào)大拍攝距離。
三、檢測算法的選擇
本文所述檢測環(huán)境為生產(chǎn)現(xiàn)場,其檢測對象受設(shè)備振動、表面的煙絲影響,且檢測對象高低左右不平,檢測目標(biāo)較小,用傳統(tǒng)的視覺方法難以對檢測點位進(jìn)行定位,因此引入了深度學(xué)習(xí)的算法,利用深度學(xué)習(xí)的算法可對檢測目標(biāo)進(jìn)行實時跟蹤并分類。目前,比較主流的目標(biāo)檢測框架有YOLOv3、Fast R-CNN、SSD。下面將對這三個檢測算法進(jìn)行比較,以便從中選出合適的檢測框架。
SSD,即Single Shot MultiBox Detector,它的速率優(yōu)點突出,也具有一定的檢測準(zhǔn)確度。但是由于該檢測框架使用了低層網(wǎng)絡(luò)特征信息預(yù)測小物體,對小目標(biāo)的識別效果不佳。本文所述煙支的激光打孔檢測點位為小目標(biāo)特征,所以該檢測框架并不適合。
Faster R-CNN由R-CNN和Fast R-CNN發(fā)展而來,F(xiàn)aster R-CNN雖然有一定的檢測精度,但其訓(xùn)練步驟復(fù)雜,檢測模型需要分多個階段訓(xùn)練,對開發(fā)人員技術(shù)要求比較高,占用磁盤空間達(dá)一千張的訓(xùn)練圖片會產(chǎn)生上百GB的特征圖像且預(yù)測延時高。經(jīng)過測試,在使用GPU加速的情況下處理一張1000×1000像素大小的圖片仍然需要3s的響應(yīng)時間,本文所述目標(biāo)檢測為實時檢測,因此該檢測框架并不合適。
YOLOv3,YOLO是“You Only Look Once”的簡稱,它是一種具有目標(biāo)跟蹤識別功能的檢測框架。YOLOv3借鑒了YOLOv1和YOLOv2的思想,既可以實現(xiàn)大目標(biāo)的檢測,也可以檢測小目標(biāo),盡管不是最精確的算法,但它在檢測精度、檢測速度和檢測模型的健壯性方面都表現(xiàn)出色,因此,它可以滿足對檢測時間有要求的場景。
四、YOLOv3目標(biāo)檢測實現(xiàn)流程
YOLOv3實現(xiàn)目標(biāo)檢測的流程需要四個步驟,分別是標(biāo)記數(shù)據(jù)、訓(xùn)練模型、調(diào)用模型進(jìn)行驗證、實現(xiàn)檢測。
(一)數(shù)據(jù)標(biāo)記
為了實現(xiàn)本文所述場景下的檢測,需要對不同的特征點進(jìn)行標(biāo)記,將正常的煙支打孔分為一類。只露出一半的打孔煙支分為一類,打孔不好的分為一類,沒有打上孔的分為一類,有異物的分為一類,通過對以上特征進(jìn)行分類標(biāo)記并對檢測模型進(jìn)行訓(xùn)練后,可實現(xiàn)對煙支正常激光打孔的識別、煙支異常激光打孔的識別、煙支無激光打孔的識別,同時識別出煙絲以及其他非正常現(xiàn)象而產(chǎn)生的誤檢驗。
(二)YOLOv3檢測模型的模型訓(xùn)練
1.影響訓(xùn)練的模型的幾個關(guān)鍵參數(shù)及調(diào)整
一次性的數(shù)據(jù)輸入量,Batch Size 是每一次輸入訓(xùn)練模型的數(shù)據(jù)量。如果不使用Batch Size,則需要一次把訓(xùn)練數(shù)據(jù)全部輸入到訓(xùn)練模型中。該方法會使GPU產(chǎn)生數(shù)據(jù)大爆炸,無法完成訓(xùn)練。使用Batch Size可有效減小輸入模型的數(shù)據(jù)量,減少對訓(xùn)練顯卡的性能要求,但同時Batch Size的大小又對模型的訓(xùn)練效果產(chǎn)生影響,所以在具體實踐中應(yīng)該根據(jù)硬件的性能進(jìn)行設(shè)置。設(shè)置BatchSize要注意以下幾點:Batch Size設(shè)置過小可能會導(dǎo)致檢測模型無法進(jìn)行穩(wěn)定的收斂,達(dá)不到預(yù)期的檢測效果,尤其是當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)較為復(fù)雜時;設(shè)置的Batch Size太小導(dǎo)致GPU無法發(fā)揮最佳性能,影響訓(xùn)練速度;當(dāng)Batch Size過大時,網(wǎng)絡(luò)很容易陷入局部最優(yōu)解,從而降低檢測模型的健壯性。GPU對2的冪次的Batch Size可以發(fā)揮更優(yōu)的性能[2],因此將Batch Size設(shè)置為4、8、16……可以取得更優(yōu)的檢測效果。
2.學(xué)習(xí)率的選擇
學(xué)習(xí)率是模型訓(xùn)練中一個非常關(guān)鍵的技術(shù)參數(shù),它能夠影響loss值的收斂速率,SGD、RMSprop、Adam等優(yōu)化算法都會考慮到學(xué)習(xí)率對模型收斂的影響。如果學(xué)習(xí)率過低,模型收斂會變得緩慢,而如果學(xué)習(xí)率太高[3],則或許會造成模型震蕩區(qū)間太大,錯過最優(yōu)解,從而使模型無法達(dá)到最佳檢測效果。從訓(xùn)練結(jié)果的檢測效果看,學(xué)習(xí)率設(shè)置為0.5、0.1、0.05、0.01、0.005,0.005、0.0001、0.00001幾個數(shù)值訓(xùn)練效果最佳,但具體需結(jié)合模型訓(xùn)練的情況做判斷對比,小的學(xué)習(xí)率收斂慢,但一般能得到好的訓(xùn)練結(jié)果。
3.檢測模型的選擇
如圖1所示,根據(jù)模型的訓(xùn)練結(jié)果,可以得出當(dāng)loss處于A點,模型處于欠擬合狀態(tài),模型處于欠擬合狀態(tài),將無法達(dá)到需要的檢測準(zhǔn)確率。當(dāng)val loss處于B點、train loss處于C點,模型處于過擬合狀態(tài),對訓(xùn)練圖片會有很好的測試效果,但模型的健壯性較差,只會對訓(xùn)練的圖片有較好的檢測效果,將其部署到實際的檢測場景將無法達(dá)到檢測要求。所以,在選擇訓(xùn)練模型的時候要綜合考慮val loss和train loss,以使模型達(dá)到最佳檢測效果。此處的模型可以選擇D1或者D2點作為檢測模型,具體效果需要根據(jù)實際使用情況做調(diào)整。
4.置信度與非極大抑制調(diào)整
如圖2所示,當(dāng)訓(xùn)練完成對目標(biāo)檢測,但置信度跟非極大抑制沒有調(diào)整好,會出現(xiàn)很多重復(fù)的檢測框及錯誤的檢測框,此時需要對置信度跟非極大抑制進(jìn)行調(diào)整。
置信度的調(diào)整:置信度是衡量檢測準(zhǔn)確度的一個指標(biāo),具體體現(xiàn)在檢測框位置的準(zhǔn)確度、檢測類別的準(zhǔn)確度。在實際運用中可將其設(shè)置為一個閾值過濾掉那些低置信度的檢測目標(biāo),以達(dá)到檢測的準(zhǔn)確性,具體設(shè)置為多少需要根據(jù)實際的檢測情況進(jìn)行調(diào)整。
非極大抑制:檢測模型檢測到目標(biāo)后會生成多個檢測框,但只需要一個較準(zhǔn)確的檢測框,此時對檢測框進(jìn)行過濾留下檢測位置較準(zhǔn)確的檢測框,非極大抑制就是尋找局部最優(yōu),過濾掉重復(fù)檢測框,該值設(shè)置越大留下的檢測框越少,具體設(shè)置為多少需根據(jù)實際的檢測情況進(jìn)行調(diào)整。
五、圖像增強
如果要對圖片進(jìn)行準(zhǔn)確地檢測,需要一張清晰的圖片。然而,由于光源、設(shè)備振動和現(xiàn)場環(huán)境的影響,往往無法獲得滿足要求的圖片。此時,圖像增強就顯得尤為重要,常見的圖像增強方法有:
經(jīng)典的銳化算法:如Sobel算子、Laplacian算子等。這些算法都是通過對圖像進(jìn)行微分或二階微分,來提取圖像的邊緣信息,從而達(dá)到增強圖像清晰度的目的。這種方法是比較經(jīng)典和常用的,但是對于噪聲有一定的敏感性。并不適用于本項目場景。
基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的方法:利用CNN可以有效地學(xué)習(xí)和提取圖像中的特征信息,在圖像增強方面也有很好的應(yīng)用前景。比如使用圖像超分辨率方法使得圖像細(xì)節(jié)更加清晰。這種方法能夠?qū)δ:龍D像進(jìn)行有效地處理,但是可能需要耗費較多的計算時間。并不適用于本項目場景。
伽馬圖像增強(Gamma Image Enhancement)是一種基于灰度非線性變換的圖像增強方法。它通過將原始圖像的像素進(jìn)行冪次變換,來提高圖像的對比度和清晰度。該方法是一種既簡單又有效的圖像增強方法,能夠提高圖像的清晰度和對比度,而且處理時間通常很短。對于500萬像素的圖片,使用伽馬增強可以在60ms內(nèi)完成處理。所以,相對于其他提高圖像清晰度的方法,伽馬圖像增強比較適合于本項目場景。
六、檢測速度提升
本文討論的是一種實時檢測方法,對檢測速度有一定的要求,為了在實時檢測中提高檢測速度,通常需要對圖像進(jìn)行縮小操作。然而,直接縮小圖像往往會導(dǎo)致一些問題,例如丟失目標(biāo)特征點、降低檢測準(zhǔn)確度等。為解決這些問題,可以使用圖像金字塔變換來處理圖像。圖像金字塔是一種用于圖像尺度空間分析的方法。它通過對原始圖像進(jìn)行連續(xù)采樣得到一系列不同尺度的子圖,這些子圖的大小不同,但保留了原始圖像的主要特征。具體來說,圖像金字塔一般由多層圖像組成,每層圖像的分辨率比前一層低,但其相對于前一層有2倍的線性比例尺度差異。這樣,在縮小圖像的同時仍然可以有效地保留圖像的主要特征點,避免因圖像變形造成的檢測誤差。
在實時檢測中,使用圖像金字塔變換可以快速地對多尺度圖像進(jìn)行處理,提高圖像處理和目標(biāo)檢測的效率和準(zhǔn)確性。通過使用圖像金字塔,可以有效地解決圖像縮小后丟失特征點的問題,同時保留圖像的主要特征,從而提高檢測準(zhǔn)確度[3]。通過圖像金字塔對圖片的壓縮處理,在檢測精度不變的情況下,檢測速度由原來的0.14s秒提高到0.07s,速度提高了一倍。
七、結(jié)論
將深度神經(jīng)網(wǎng)絡(luò)算法結(jié)合工業(yè)相機應(yīng)用到卷煙的產(chǎn)品外觀缺陷檢測具有很好的檢測效果,具有以下特點:檢測準(zhǔn)確率高,在生產(chǎn)現(xiàn)場的測試對連續(xù)性的煙支激光打孔異常具有99%的檢出率;抗干擾性強可以應(yīng)對復(fù)雜環(huán)境下的檢測需求;具有跟蹤識別功能,不受特征點位置限制;深度學(xué)習(xí)算法具有迭代訓(xùn)練功能,可以通過不斷擴大訓(xùn)練集數(shù)據(jù)對檢測模型進(jìn)行迭代和訓(xùn)練,使其具備更強的檢測功能,提高檢測精度。在實際應(yīng)用中,隨著數(shù)據(jù)量的增大,檢測精度將會進(jìn)一步提升。
本文所述方法不僅可以應(yīng)用于煙支激光打孔的檢測,在煙草行業(yè)的其他復(fù)雜場景,也有很好的應(yīng)用前景。
參考文獻(xiàn)
[1]陶徐.機器視覺在煙盒包裝檢測中的應(yīng)用[D].昆明:昆明理工大學(xué),2017.
[2]Redmon J , Farhadi A .YOLOv3: An Incremental Improvement[J].arXiv e-prints,2018.
[3]李立宗.OpenCV輕松入門面向Python[M].北京:電子工業(yè)出版社,2019:215-225.
作者單位:廣西中煙工業(yè)有限責(zé)任公司柳州卷煙廠
■ 責(zé)任編輯:尚丹