翁玉尚,肖金球,夏 禹
1.蘇州科技大學(xué) 電子與信息工程學(xué)院,江蘇 蘇州 215009
2.蘇州市智能測(cè)控工程技術(shù)研究中心,江蘇 蘇州 215009
帶鋼的生產(chǎn)過(guò)程中由于現(xiàn)代生產(chǎn)工藝的限制,帶鋼表面可能會(huì)產(chǎn)生麻點(diǎn)、夾雜、劃痕等缺陷。這些缺陷輕則減少帶鋼的使用壽命和用途,重則可能會(huì)影響建筑物的建設(shè)安全導(dǎo)致建筑事故。所以在帶鋼的生產(chǎn)過(guò)程中要對(duì)已生產(chǎn)的帶鋼進(jìn)行缺陷檢測(cè),以確保帶鋼的質(zhì)量。在帶鋼生產(chǎn)過(guò)程中傳統(tǒng)的檢測(cè)方法是人工檢測(cè),這也是目前許多企業(yè)所采用的方法。這種檢測(cè)方法檢測(cè)速度慢,準(zhǔn)確度低,且極為容易受人為因素的干擾。
隨著計(jì)算機(jī)和深度學(xué)習(xí)的發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的模型,在缺陷檢測(cè)中實(shí)現(xiàn)了高準(zhǔn)確度和高效率的優(yōu)勢(shì),逐漸成為缺陷檢測(cè)的主要研究方向。目前的目標(biāo)檢測(cè)算法主要分為兩類,一類是以R-CNN算法[1]、Fast R-CNN算法[2]、Faster R-CNN算法[3]、Mask R-CNN算法[4]為代表的兩階段算法;另一類是以O(shè)ver Feat 算法[5]、YOLO 算 法[6]、YOLOv2 算 法[7]、YOLOv3 算 法[8]、SSD算法[9]為代表的一階段算法。兩階段算法先基于區(qū)域建議框產(chǎn)生候選區(qū)域,然后再使用檢測(cè)網(wǎng)絡(luò)檢測(cè)候選區(qū)域的類別和位置;一階段算法利用整張圖作為網(wǎng)絡(luò)輸入,直接在輸出層回歸邊界框的位置及其類別[10]。這兩類算法中前者有更高的檢測(cè)精度,但檢測(cè)速度較慢;后者的檢測(cè)速度快,但檢測(cè)精度沒(méi)有前一類高。這兩類算法在目前的研究中應(yīng)用的都比較多。2018 年,Cha 等人[11]最早通過(guò)將Faster R-CNN 的backbone 網(wǎng)絡(luò)替換為ZF-net網(wǎng)絡(luò),并將其應(yīng)用到橋梁表面的缺陷檢測(cè)中,檢測(cè)結(jié)果的mAP值達(dá)到了0.878。馬曉云等人[12]為了實(shí)現(xiàn)子彈外觀的缺陷檢測(cè),在Faster R-CNN中使用k-means++算法生成滑動(dòng)窗口anchor。裴偉等人[13]將SSD 算法的基準(zhǔn)網(wǎng)絡(luò)更換為表征能力更強(qiáng)的殘差網(wǎng)絡(luò),并提出心的融合算法來(lái)提高航拍目標(biāo)的檢測(cè)率。王俊強(qiáng)等人[14]通過(guò)利用基于候選框方式和一體化檢測(cè)方式提升了SSD算法對(duì)遙感影像小目標(biāo)的檢測(cè)能力。
目前,帶鋼表面缺陷檢測(cè)普遍使用卷積神經(jīng)網(wǎng)絡(luò)提取特征并進(jìn)行分類。Fu 等人[15]提出了一種端到端的卷積神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)了帶鋼表面缺陷的高精度分類;He等人[16]使用對(duì)抗神經(jīng)網(wǎng)絡(luò)生成大量的未標(biāo)注數(shù)據(jù)后再進(jìn)行缺陷分類,解決了缺陷樣本不足難以訓(xùn)練的問(wèn)題。但以上檢測(cè)模型只解決了帶鋼表面缺陷分類問(wèn)題,并沒(méi)有解決難度更大的缺陷定位問(wèn)題。He等人[17]等提出的基于Faster R-CNN 的帶鋼表面缺陷檢測(cè)網(wǎng)絡(luò),該網(wǎng)絡(luò)改進(jìn)在于將backbone 中多級(jí)特征圖組合為一個(gè)多尺度特征圖,在缺陷檢測(cè)數(shù)據(jù)集NEU-DET上,提出的方法在采用ResNet50的backbone下實(shí)現(xiàn)了82.3%的mAP。
為了提高帶鋼表面缺陷檢測(cè)的準(zhǔn)確率,在實(shí)驗(yàn)中將Mask R-CNN 算法應(yīng)用到帶鋼表面缺陷檢測(cè)。在RCNN算法提出以后,人們不斷對(duì)其進(jìn)行改進(jìn)創(chuàng)新,先后提出了Fast R-CNN、Faster R-CNN 和Mask R-CNN 算法。Mask R-CNN 算法大體框架與Faster R-CNN 算法類似,Mask R-CNN 算法利用ResNet-101 和FPN(特征金字塔網(wǎng)絡(luò))作為特征提取網(wǎng)絡(luò),可以提高對(duì)小目表檢測(cè)時(shí)的精度,同時(shí)也解決了多尺度檢測(cè)的問(wèn)題。在基礎(chǔ)特征網(wǎng)絡(luò)之后又加入了全連接的分割子網(wǎng),添加了一個(gè)預(yù)測(cè)分割掩碼分支,可以同時(shí)處理分類、邊界框回歸和掩碼層3 個(gè)任務(wù),在提高檢測(cè)精度和速度的基礎(chǔ)上,還完成了缺陷的分割。為了使Mask R-CNN 算法更適用于帶鋼表面缺陷檢測(cè),對(duì)算法結(jié)構(gòu)進(jìn)行了改進(jìn)。采用聚類的算法來(lái)確定anchor 方案,提高區(qū)域建議質(zhì)量,并去掉掩膜分支以提高檢測(cè)速度。使用NEU-DET數(shù)據(jù)集的圖片來(lái)訓(xùn)練模型,進(jìn)行缺陷檢測(cè)實(shí)驗(yàn),驗(yàn)證該方案的可行性和有效性。
Mask R-CNN算法的框架非常靈活,可以通過(guò)添加不同的分支來(lái)完成不同的任務(wù),比如目標(biāo)分類、目標(biāo)檢測(cè)、語(yǔ)義分割、實(shí)例分割等多種任務(wù)。
Mask R-CNN 算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。Mask R-CNN 是一個(gè)兩階段算法:第一階段是對(duì)圖像進(jìn)行掃描然后生成提議(proposals,即可能包含一個(gè)目標(biāo)的區(qū)域);第二階段在預(yù)測(cè)種類和邊界框回歸的同時(shí)還預(yù)測(cè)了對(duì)應(yīng)的掩碼。Mask R-CNN的總體流程如下:先將整張圖片輸入CNN,使用ResNet-101網(wǎng)絡(luò)進(jìn)行特征提取,獲得對(duì)應(yīng)的特征圖,接著對(duì)特征圖中的每一點(diǎn)設(shè)定預(yù)定個(gè)RoI,從而獲得多個(gè)候選RoI;然后將候選的RoI 送入到RPN 進(jìn)行二值分類和邊界框回歸,過(guò)濾掉一部分候選的RoI;對(duì)剩下的RoI 進(jìn)行RoI Align 池化操作(即將原圖和特征圖的像素對(duì)應(yīng)起來(lái));最后,對(duì)這些RoI進(jìn)行分類、邊界框回歸和掩碼生成。
圖1 Mask R-CNN算法網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Mask R-CNN algorithm network structure
輸入到RPN網(wǎng)絡(luò)的特征圖經(jīng)過(guò)RPN網(wǎng)絡(luò)得到區(qū)域建議和區(qū)域得分[18]。可以利用卷積層,在最后一個(gè)共享的卷積層生成的卷積特征圖上用一個(gè)小窗口進(jìn)行滑動(dòng),從而生成區(qū)域建議框。RPN的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 RPN網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 RPN network structure
該網(wǎng)絡(luò)將卷積層生成的卷積特征圖的d個(gè)n×n空間窗口作為輸入,映射到一個(gè)d維向量上。這個(gè)d維向量同時(shí)輸出給兩個(gè)同級(jí)的全連接層:框回歸層和框分類層。在每個(gè)滑動(dòng)窗口的位置,同時(shí)預(yù)測(cè)k個(gè)區(qū)域建議框,所以回歸層有4k個(gè)輸出,用于編碼k個(gè)區(qū)域建議框的坐標(biāo),分類層輸出2k個(gè)得分,用于估算每個(gè)區(qū)域建議框是目標(biāo)的概率。
RPN的總體損失函數(shù)為:
式中,Lcls為分類損失;Lreg為回歸損失;λ為權(quán)重平衡參數(shù);i表示一個(gè)mini-batch 中anchor 的索引;pi為anchor 中含有目標(biāo)的概率。當(dāng)目標(biāo)在anchor 中時(shí),pi=1,否則pi=0。為對(duì)應(yīng)的真實(shí)背景的預(yù)測(cè)概率;ti為預(yù)測(cè)的邊界框的4個(gè)參數(shù)化坐標(biāo);為包含目標(biāo)的anchor對(duì)應(yīng)的真實(shí)邊界框的坐標(biāo)。其中分類損失為:
其中,R為魯棒函數(shù)smooth(L1)。式(1)中的reg表示只有包含目標(biāo)的anchor 才有回歸損失。{pi} 為分類層損失,{ti} 為回歸層損失。利用Ncls和Nreg以及平衡權(quán)重λ進(jìn)行歸一化操作。
邊界框的回歸運(yùn)算算法為:
式中,x、y是預(yù)測(cè)的邊界框的中心坐標(biāo),w是邊界框的寬,h是邊界框的高;xa、ya是anchor 的中心坐標(biāo);wa、ha為anchor 的寬和高;x*、y*為真實(shí)邊界框的中心坐標(biāo);w*、h*為真實(shí)邊界框的寬和高。
RoI Align作用是根據(jù)預(yù)測(cè)邊界框的位置坐標(biāo)在特征圖中將相應(yīng)的區(qū)域池化為固定尺寸的特征圖,以便后續(xù)的分類,邊框和掩碼的回歸操作。在常見(jiàn)的兩階段檢測(cè)框架(比如:Fast R-CNN、Faster R-CNN)中使用的是RoI Pooling進(jìn)行池化操作[3],但由于預(yù)選框的位置通常是由模型回歸得到,一般是浮點(diǎn)數(shù),而池化后的特征圖要求尺寸固定。所以RoI Pooling操作存在兩次量化過(guò)程:一是將候選框邊界量化為整數(shù)點(diǎn)坐標(biāo)值。從RoI proposal 到特征圖(feature map)的映射時(shí)去[x/16],這里x是原始RoI的坐標(biāo)值,方框代表四舍五入。二是將量化后的邊界區(qū)域平均分割成k×k個(gè)單元,對(duì)每個(gè)單元進(jìn)行量化。然而經(jīng)過(guò)兩次量化處理,此時(shí)的候選框和最開(kāi)始回歸出來(lái)的位置有一定偏差,這個(gè)偏差會(huì)影響檢測(cè)或者分割的準(zhǔn)確度。
Mask R-CNN 為了將整個(gè)特征聚集的過(guò)程轉(zhuǎn)化為一個(gè)連續(xù)操作,采用RoI Align進(jìn)行池化,使用雙線性內(nèi)插法取消了量化操作,從而獲得坐標(biāo)為浮點(diǎn)數(shù)的像素點(diǎn)上圖像數(shù)值。
RoI Align 的結(jié)構(gòu)如圖3 所示。為了得到固定大?。?×7)的feature map,RoI Align沒(méi)有采用量化操作。比如665/32=20.78,就直接采用20.78;20.78/7=2.97,就直接采用2.97。使用“雙線性插值”算法處理這些浮數(shù),雙線性插值算法直接利用原圖中虛擬點(diǎn)(比如20.56 這個(gè)浮點(diǎn)數(shù),像素位置都是整數(shù)值,沒(méi)有浮點(diǎn)值)四周的4個(gè)真實(shí)存在的像素值來(lái)共同決定目標(biāo)圖中的一個(gè)像素值,即可將20.56 這個(gè)虛擬的位置對(duì)應(yīng)的像素值估計(jì)出來(lái)。如圖4 所示,黑色的虛線框表示卷積后獲得的feature map,黑色實(shí)線表示RoI feature,最后需要輸出的大小是2×2,那么就利用雙線性插值來(lái)估計(jì)這些黑點(diǎn)(虛擬坐標(biāo)點(diǎn),又稱為雙線性插值的網(wǎng)格點(diǎn))處所對(duì)應(yīng)的像素值,最后得到相應(yīng)的輸出。這些黑點(diǎn)是2×2 區(qū)域中的隨機(jī)采樣的普通點(diǎn),這些采樣點(diǎn)的個(gè)數(shù)和位置不會(huì)對(duì)性能產(chǎn)生很大的影響,也可以用其他的方法獲得。然后在RoI池化層和全連接層里面進(jìn)行最大池化或者平均池化操作,獲得最終2×2 的輸出結(jié)果。整個(gè)過(guò)程中沒(méi)有用到量化操作,沒(méi)有引入誤差,即原圖中的像素和特征圖中的像素是完全對(duì)齊的,沒(méi)有偏差。這樣做不僅會(huì)提高檢測(cè)的精度,同時(shí)也有利于實(shí)例分割。
圖3 RoI Align結(jié)構(gòu)Fig.3 RoI Align structure
圖4 雙線性插值Fig 4 Bilinear interpolation
由于增加了掩碼分支,每個(gè)RoI的損失函數(shù)為
式中,Lcls為分類損失;Lbox為檢測(cè)損失;Lmask為新增的分割損失。Lcls如式(2)所示;Lbox、Lmask分別為:
Lmask為Mask R-CNN 新增的掩膜層的分割損失。式(7)中yij為坐標(biāo)點(diǎn)(i,j)的標(biāo)簽值,為該點(diǎn)第k類的預(yù)測(cè)值。
對(duì)于每一個(gè)RoI,mask 分支有k×m×m維度的輸出,其對(duì)k個(gè)大小為m×m的mask 進(jìn)行編碼,每一個(gè)mask 有k個(gè)類別。將Lmask定義為平均值交叉熵?fù)p失。對(duì)應(yīng)一個(gè)屬于真實(shí)背景中的第k類的RoI,Lmask僅僅在第k個(gè)mask上面有定義(其他的k-1 個(gè)mask輸出對(duì)整個(gè)損失沒(méi)有貢獻(xiàn))。Lmask允許網(wǎng)絡(luò)為每一類生成一個(gè)mask,而不用和其他類競(jìng)爭(zhēng);采用分類分支所預(yù)測(cè)的類別標(biāo)簽來(lái)選擇輸出的mask.這樣將分類和mask 生成分解開(kāi)來(lái),不同的mask之間不存在競(jìng)爭(zhēng)關(guān)系,可以提高實(shí)例分割的效果。
Mask R-CNN 為了使預(yù)測(cè)的掩碼更加準(zhǔn)確,在RoI Align 之后增加“head”部分,從而將RoI Align 的輸出維度擴(kuò)大,達(dá)到預(yù)測(cè)的掩碼輸出更加準(zhǔn)確的目的,如圖1所示。在掩碼分支(mask branch)的訓(xùn)練環(huán)節(jié)輸出了k個(gè)掩碼預(yù)測(cè)圖(為每一個(gè)類都輸出一張),并采用平均二進(jìn)制交叉熵?fù)p失(average binary cross-entropy loss)訓(xùn)練。在訓(xùn)練掩碼分支時(shí),在輸出的k個(gè)特征圖中,對(duì)掩碼損失有影響的特征圖是對(duì)應(yīng)真實(shí)背景類別的那一個(gè)特征圖。
原始的Mask R-CNN 算法中anchor 是一組由RPN生成的矩形框,采用3 種尺度和3 種長(zhǎng)寬比(1∶1,1∶2,2∶1),在每個(gè)滑動(dòng)窗口的中心生成k=9 個(gè)anchor,如圖5 所示。原始的Mask R-CNN 算法的anchor 生成方案是對(duì)COCO數(shù)據(jù)集根據(jù)經(jīng)驗(yàn)設(shè)定的尺寸,對(duì)于本文中需要檢測(cè)的5 種帶鋼表面缺陷原始的anchor 無(wú)法與所檢測(cè)缺陷的尺寸相對(duì)應(yīng),使得RPN 中在生成區(qū)域建議時(shí)需要進(jìn)行大量的回歸操作,影響了算法的檢測(cè)效率。因此,在RPN 中應(yīng)該使anchor 方案與所檢測(cè)缺陷的尺寸相對(duì)應(yīng),使得RPN在進(jìn)行邊界框回歸時(shí),可以減少回歸工作,提升計(jì)算效率和減少網(wǎng)絡(luò)訓(xùn)練時(shí)間,以便于得到更好的區(qū)域建議提高檢測(cè)精度。
圖5 錨框示意圖Fig.5 Diagram of anchor
所以為了解決Mask R-CNN算法中anchor方案對(duì)本文的檢測(cè)對(duì)象的缺陷尺寸不對(duì)應(yīng)問(wèn)題并且進(jìn)一步提高檢測(cè)的效率和準(zhǔn)確率,針對(duì)5種不同類型的帶鋼表面缺陷,本文提出采用k-meansⅡ聚類算法[19]生成anchor方案。使用k-meansⅡ聚類方法通過(guò)對(duì)數(shù)據(jù)集中標(biāo)注框的寬和高進(jìn)行聚類得到的聚類中心設(shè)為初始的anchor方案,這樣生成的anchor對(duì)需要檢測(cè)的5種缺陷更具有代表性。
k-meansⅡ算法克服了初始聚類中心隨機(jī)性以及遍歷整個(gè)數(shù)據(jù)集的復(fù)雜性問(wèn)題,在選定初始的聚類中心過(guò)程中,其在遍歷數(shù)據(jù)集時(shí)每次選取多個(gè)樣本。該算法把輸入的包含N個(gè)點(diǎn)的數(shù)據(jù)集分類為k個(gè)聚類,使數(shù)據(jù)集中所有點(diǎn)都劃分到距離其最近的聚類中心所在的類中,并使用歐氏距離作為分類時(shí)衡量距離的標(biāo)準(zhǔn)。kmeansⅡ算法的具體步驟如下:
(1)輸入包含k個(gè)點(diǎn)的數(shù)據(jù)集。
(2)隨機(jī)在數(shù)據(jù)集中去k個(gè)點(diǎn)作為聚類中心點(diǎn),然后重復(fù)此取樣過(guò)程5次得到5k個(gè)數(shù)據(jù)點(diǎn)。再對(duì)這些數(shù)據(jù)點(diǎn)進(jìn)行聚類,得到k個(gè)初始的聚類中心。
(3)將數(shù)據(jù)集中各個(gè)點(diǎn)按歐氏距離劃分到離它最近的聚類中心所在的類中。歐氏距離公式為:
這不僅透露其三十年代香港人的身份,同時(shí)在與現(xiàn)代香港人的對(duì)話中產(chǎn)生不一樣的化學(xué)反應(yīng)。此外,李碧華在文本書寫上也帶有明顯的傳統(tǒng)色彩:
(4)重新計(jì)算各個(gè)類的聚類中心,計(jì)算方法為:
式中 |ci|為該類樣本的數(shù)量。
(5)設(shè)置一個(gè)閾值,假設(shè)由式(8)得到的新中心與原來(lái)的中心距離小于該閾值,則聚類結(jié)束,否則轉(zhuǎn)步驟(3)。
(6)輸出k個(gè)聚類和k個(gè)聚類中心。
對(duì)于帶鋼表面缺陷檢測(cè)任務(wù),在生產(chǎn)線上進(jìn)行檢測(cè)時(shí)需要快速準(zhǔn)確的完成,而不需要對(duì)缺陷進(jìn)行像素級(jí)的分割。所以可以在缺陷檢測(cè)中去掉掩碼分支,從而使網(wǎng)絡(luò)算法集中于特征圖上進(jìn)行缺陷的定位和分類任務(wù),節(jié)約神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和檢測(cè)時(shí)間。由1.3 小節(jié)可知,掩碼分支和分類預(yù)測(cè)分支之間是分開(kāi)預(yù)測(cè)的,不會(huì)相互影響,去掉掩碼分支后的網(wǎng)絡(luò)輸出如圖6所示。
圖6 去掉掩碼分支后的網(wǎng)絡(luò)輸出Fig.6 Network output with the mask branch removed
為了驗(yàn)證本文提出的改進(jìn)的Mask R-CNN 算法在帶鋼表面缺陷檢測(cè)中的有效性,本章將進(jìn)行系統(tǒng)的實(shí)驗(yàn)對(duì)比。實(shí)驗(yàn)環(huán)境為Windows 10 操作系統(tǒng),AMD RYZEN 7-4800H 處理器,Nvidia Geforce RTX 2060顯卡。
本文主要采用東北大學(xué)發(fā)布的NEU-DET數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),數(shù)據(jù)集收集了6類帶鋼表面缺陷圖片各300張,但其中裂紋類的缺陷圖片并不明顯,缺陷模糊不利于實(shí)驗(yàn),所以刪去裂紋類缺陷。最終,本文進(jìn)行實(shí)驗(yàn)的缺陷圖片有夾雜(Inclusion)、斑塊(Patches)、麻點(diǎn)(Pitted Surface)、壓入氧化皮(Rolled-in Scale)和劃痕(Scratches)。這樣數(shù)據(jù)集總共有1 500張圖片。為進(jìn)一步豐富訓(xùn)練樣本數(shù)據(jù),提高所得到模型的魯棒性,對(duì)原數(shù)據(jù)集的圖片進(jìn)行擴(kuò)充操作。先對(duì)圖片進(jìn)行旋轉(zhuǎn)放大處理后,再進(jìn)行直方圖等處理,最終得到2 000 張圖片,每種缺陷各400張。隨機(jī)抽取分配訓(xùn)練集和測(cè)試集,其中訓(xùn)練集圖片為1 500張,測(cè)試集圖片為500張。數(shù)據(jù)集缺陷圖片樣例如圖7所示。
圖7 數(shù)據(jù)集圖片示例Fig.7 Graphic example of data set
通過(guò)使用k-meansⅡ聚類算法來(lái)生成anchor 框,代替Mask R-CNN中anchor生成方式,使得anchor對(duì)帶鋼表面斑塊、壓入氧化皮、夾雜、麻點(diǎn)和劃痕5種表面缺陷更具有代表性,提高了檢測(cè)精度。
在原Mask R-CNN 算法中anchor 框數(shù)目為9,所以在進(jìn)行聚類時(shí)令聚。類中心k=9,從而得到9個(gè)聚類中心,使聚類中心和anchor 框數(shù)目相等,并將這9 個(gè)聚類中心作為9 個(gè)anchor 初始的寬和高,使得只用改變anchor 的初始的寬高不改變數(shù)目,不用改變RPN 中對(duì)anchor的回歸運(yùn)算。對(duì)于斑塊、壓入氧化皮、夾雜、麻點(diǎn)和劃痕5 種帶鋼表面缺陷,聚類結(jié)果如圖8 所示。在進(jìn)行聚類操作時(shí),5種缺陷總耗時(shí)63 s。
圖8 5種缺陷的聚類結(jié)果Fig.8 Clustering results of five defects
在實(shí)驗(yàn)中采用mAP值作為評(píng)價(jià)指標(biāo)。mAP是所有類別的平均精度的均值,其計(jì)算公式為:
其中,Nc為類別檢測(cè)數(shù),AP能夠綜合考慮準(zhǔn)確率和召回率2個(gè)方面的影響。以準(zhǔn)確率為縱軸,召回率為橫軸可以得到PR曲線,對(duì)于連續(xù)PR曲線,式(10)中的AP為:
式中,TP為正確分類的正樣本,F(xiàn)P為錯(cuò)誤分類的正樣本,F(xiàn)N為錯(cuò)誤分類的負(fù)樣本。
在訓(xùn)練模型時(shí),首先將NEU-DET 數(shù)據(jù)集轉(zhuǎn)化為COCO 數(shù)據(jù)集格式。訓(xùn)練時(shí)首先采用遷移學(xué)習(xí)的方法加載官方的“mask_rcnn_coo”預(yù)權(quán)重文件來(lái)訓(xùn)練NEUDET 數(shù)據(jù)集,從而生成自己模型的權(quán)重文件。訓(xùn)練“head層”和“所有層”設(shè)置epochs為10,steps_per_epoch為1 000,batch_size為1。設(shè)置“head”層學(xué)習(xí)率為0.001,“所有層”學(xué)習(xí)率為0.000 1,權(quán)重衰減系數(shù)為0.000 1,共迭代20 000次
將采用聚類算法的anchor生成方案與Mask R-CNN的原始生成方案在帶鋼表面的5 種缺陷中進(jìn)行對(duì)比實(shí)驗(yàn)。并在實(shí)驗(yàn)中加入Faster R-CNN 和YOLO v3 算法作為對(duì)比。實(shí)驗(yàn)結(jié)果如表1所示。
通過(guò)表1 對(duì)比發(fā)現(xiàn),k-meansⅡ算法生成anchor 的方案相對(duì)于原Mask R-CNN的anchor生成方案mAP值提升了14.94 個(gè)百分點(diǎn),檢測(cè)速度達(dá)到4.5 frame/s,在提升檢測(cè)精度的同時(shí)也提升了檢測(cè)速度。
表1 兩種anchor生成方案檢測(cè)結(jié)果Table 1 Detection results of two anchor generation schemes
為了測(cè)試將掩碼分支去掉后Mask R-CNN 算法的性能,將其與原Mask R-CNN 算法進(jìn)行對(duì)比實(shí)驗(yàn),在實(shí)驗(yàn)中只改變掩膜分支的有無(wú),不改變其他網(wǎng)絡(luò)結(jié)構(gòu)。實(shí)驗(yàn)結(jié)果如表2所示。
由表2 可知,將掩碼分支去掉后,Mask R-CNN 算法的檢測(cè)精度并未下降,但檢測(cè)速度提升了1.3 frame/s。
表2 兩種網(wǎng)絡(luò)結(jié)構(gòu)實(shí)驗(yàn)結(jié)果Table 2 Experimental results of two network structures
在進(jìn)行了一系列的控制變量實(shí)驗(yàn),驗(yàn)證了聚類算法生成anchor方案和去掉掩膜分支均可提升Mask R-CNN的檢測(cè)速度。因此,將兩種改進(jìn)方案同時(shí)運(yùn)用到Mask R-CNN 中,將改進(jìn)的Mask R-CNN 與原Mask R-CNN算法進(jìn)行對(duì)比實(shí)驗(yàn),觀察改進(jìn)的Mask R-CNN的檢測(cè)精度和效率。在實(shí)驗(yàn)時(shí),加入Faster R-CNN、DDN[17]、SSD和YOLO V3算法進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果如表3所示。表3中算法1 為原Faster R-CNN;算法2 為用k-means 聚類算法生成anchor 的Faster R-CNN;算法3 為原MaskR-CNN 算法;算法4 為改進(jìn)的Mask R-CNN 算法;算法5為使用ResNet網(wǎng)絡(luò)的DDN算法;算法6為YOLOv3算法;算法7為SSD算法。
表3 不同算法的檢測(cè)結(jié)果Table 4 Detection results of different algorithms
表3的綜合對(duì)比發(fā)現(xiàn),使用改進(jìn)的Mask R-CNN算法進(jìn)行帶鋼表面缺陷檢測(cè)時(shí),其檢測(cè)精度和速度相對(duì)比于其他幾種算法均實(shí)現(xiàn)了最優(yōu)。圖9 為改進(jìn)的Mask R-CNN 的檢測(cè)結(jié)果。圖10 為YOLOv3 算法的檢測(cè)結(jié)果。通過(guò)圖9和圖10的對(duì)比可以發(fā)現(xiàn),YOLOv3作為一階段算法,其檢測(cè)速度快,但其對(duì)于尺寸較小的缺陷的檢測(cè)效果較差。
圖9 改進(jìn)的Mask R-CNN的檢測(cè)結(jié)果Fig.9 Detection results of improved Mask R-CNN
圖10 YOLOv3算法檢測(cè)結(jié)果Fig.10 Detection results of YOLOv3
針對(duì)帶鋼表面缺陷,本文提出了基于k-meansⅡ聚類算法和改進(jìn)“head”部分神經(jīng)元的改進(jìn)的Mask R-CNN算法來(lái)進(jìn)行帶鋼表面的5 種缺陷檢測(cè),提升了Mask R-CNN算法的檢測(cè)精度和效率。在實(shí)驗(yàn)中將原算法的mAP值從0.810 2提升到了0.960 2,檢測(cè)速度從2.3 frame/s提升到5.9 frame/s。實(shí)驗(yàn)結(jié)果表明改進(jìn)的Mask R-CNN算法可以提升在帶鋼生產(chǎn)中的檢測(cè)效率,提升了生產(chǎn)檢測(cè)工藝。雖然本文改進(jìn)的Mask R-CNN 算法能夠滿足帶鋼表面缺陷檢測(cè),但在未來(lái)的研究中可以進(jìn)一步的提升檢測(cè)效率。下一步的研究?jī)?nèi)容主要有:當(dāng)前訓(xùn)練階段的數(shù)據(jù)集仍存在圖片少,不清晰的問(wèn)題,可以通過(guò)擴(kuò)大豐富帶鋼表面缺陷數(shù)據(jù)集來(lái)解決此問(wèn)題,提升算法檢測(cè)的精確度;改進(jìn)后的Mask R-CNN算法雖然檢測(cè)速度有了很大提升,但仍為兩階段算法,后面的工作中可以改進(jìn)其網(wǎng)絡(luò)結(jié)構(gòu)來(lái)進(jìn)一步提升檢測(cè)速度。