孫光民, 陳佳陽, 李冰, 李煜, 閆冬
(1.北京工業(yè)大學(xué) 信息學(xué)部,北京 100124;2.中國煙草總公司 北京市公司,北京 100020)
隨著我國城市化進(jìn)程的加快,高層甚至超高層樓宇的數(shù)量快速增長。這些建筑的外墻通常為磚混結(jié)構(gòu),利用水泥將緊密排列的磚塊粘附于建筑表面,從而起到保溫、美觀、抗腐蝕的作用。然而經(jīng)過長時間的風(fēng)吹、暴曬和雨水侵蝕,磚塊很可能出現(xiàn)裂縫、松動、甚至脫落等現(xiàn)象。若脫落的磚塊從高空墜下,將會對建筑物周邊的行人和車輛等造成極大的危害。因此,對樓面風(fēng)險的排查越來越受到重視。目前,主要還是采用人工的方式進(jìn)行建筑外墻的缺陷檢測,例如地面巡查或通過蜘蛛人實地勘察。但是這些人工檢測方法既耗費大量的人力和物力,又不能保證在高空作業(yè)的工人的安全。故應(yīng)用計算機視覺和深度學(xué)習(xí)技術(shù)完成對樓面高清圖像中微小缺陷目標(biāo)的自動檢測,可以有效地節(jié)省人力、提高效率。
由于樓面缺陷檢測任務(wù)中待檢測的缺陷面積只有不到總體圖像面積的幾千分之一,故樓面缺陷檢測屬于小目標(biāo)檢測,為目前計算機視覺領(lǐng)域的研究熱點。目前應(yīng)用比較廣泛的基于深度學(xué)習(xí)的目標(biāo)檢測器主要可以分為2類:第1類是兩步(two-stage)目標(biāo)檢測器,如Fast R-CNN[1],F(xiàn)aster R-CNN[2],Mask R-CNN[3]等,這些算法特點都是將目標(biāo)檢測分為2個階段:首先提取候選區(qū)域,然后再將其送入檢測網(wǎng)絡(luò)完成對目標(biāo)的定位與識別。第2類是單步(one-stage)目標(biāo)檢測算法,如單次多盒檢測器(single shot detection,SSD)[4]、你只看一次(you look only once,YOLO)[5],YOLO 9000[6],YOLO V3[7]等,此類算法不需要預(yù)先提取候選框,而是直接通過網(wǎng)絡(luò)中預(yù)設(shè)框來完成目標(biāo)位置的回歸和類別的判斷,是一種端到端的目標(biāo)檢測算法。然而在小目標(biāo)檢測場景下,由于目標(biāo)像素更少、可提取特征更不明顯,傳統(tǒng)的兩步和單步檢測器都難以取得較好的檢測效果。
目前針對小目標(biāo)檢測算法的優(yōu)化主要集中在模型的改進(jìn)上,即在輸入圖像尺寸不變的前提上,通過改進(jìn)模型結(jié)構(gòu)提升檢測器的特征提取能力以及其檢測精度。目前比較有效的改進(jìn)算法是特征金字塔網(wǎng)絡(luò)[8]。該網(wǎng)絡(luò)可嵌入到上述單步或2步檢測器中,其可將主體網(wǎng)絡(luò)生成的低層次特征圖與高層次特征圖以特定方式進(jìn)行融合,完成對特征金字塔的重構(gòu)。這樣操作后低層次的特征圖感受野范圍提升,其語義信息得到增強,最終使得模型對小目標(biāo)檢測的精度有了很大提升。
雖然上述改進(jìn)可以提升模型檢測精度,但是這些模型處理的對象仍然是低分辨率圖像。隨著攝像設(shè)備硬件性能的提升,人們可以獲得更高分辨率的圖像。而與低分辨率圖像相比,小目標(biāo)在高分辨率圖像中可以用更多的像素表征,即可以被更加清晰的刻畫出來。雖然獲得了有效的數(shù)據(jù)支撐,但目前的檢測算法基本都不直接適用于分辨率高達(dá)幾千萬像素的圖像。但如果將高分辨率圖像進(jìn)行下采樣以適應(yīng)檢測模型,又將丟失信息,很難對小目標(biāo)進(jìn)行檢測[9]。目前很多針對高分辨率圖像小目標(biāo)檢測問題的研究和應(yīng)用大多集中在遙感圖像領(lǐng)域[10-11],其中比較具有代表性的是Adam Van Ette提出的基于窗口網(wǎng)絡(luò)衛(wèi)星影像的多尺度快速檢測算法(satellite imagery multiscale rapid detection with windowed networks,SIMRDWN)[12]。該算法利用快速檢測器對通過滑窗獲取的候選區(qū)域進(jìn)行檢測,可以完成對任意尺寸高分辨率圖像的快速檢測任務(wù)。但是與衛(wèi)星遙感圖像不同的是,樓面圖像中缺陷樣式形態(tài)各異,難以統(tǒng)一描述,同時圖像中也存在大量復(fù)雜紋理區(qū)域會干擾檢測,容易引發(fā)虛警。為了提升高清圖像中目標(biāo)的檢測速度和精度,本文提出了一種基于雙尺度建模的檢測框架,旨在基于少量訓(xùn)練樣本完成高精度高效率的墻面缺陷自動檢測。
利用高清晰度單反相機(SONY A7R2)和長焦鏡頭(FE 100-400 mm F4.5-5.6 GM OSS)拍攝得到的墻面高清圖像的分辨率高達(dá)7952×5304像素,而待檢測的墻體缺陷如缺磚、碎磚等一般大小不超過100×100像素。同時,缺、碎磚等缺陷的形狀差異較大,難以對其進(jìn)行統(tǒng)一的特征描述。而且缺陷的辨識特征主要在于其與周圍背景的差異,其內(nèi)部的紋理特征并不明顯。此外,樓面高分辨率圖像中的缺陷只占很小面積,絕大部分區(qū)域都是正常的。原始高分辨率圖像如圖1所示,其中圖1中的左側(cè)紅框內(nèi)是原始圖像的2個含有缺陷的分辨率為640×640像素的子區(qū)域。
圖1 包含缺陷的樓面高分辨率圖像Fig.1 High resolution image with defects
針對樓面圖像的上述特點,本文提出一種基于雙尺度建模的高分辨率樓面圖像缺陷檢測算法。該方法首先將缺陷檢測任務(wù)在一大一小2個尺度上進(jìn)行分解,得到一個雙尺度下的任務(wù)組。在大尺度下,設(shè)置窗戶,空調(diào)、天空等非墻體分割任務(wù),通過結(jié)合傳統(tǒng)圖像處理技術(shù)和實例分割模型Mask R-CNN得到非墻體分割掩模;在小尺度下,設(shè)置缺陷檢測任務(wù),通過重疊式滑窗獲取候選區(qū)并送入SSD檢測器獲取切片缺陷檢測結(jié)果。根據(jù)非墻體與缺陷目標(biāo)的包含關(guān)系,將2個尺度下的分割掩模與檢測框進(jìn)行決策融合和后處理,最終完成對原始樓面高分辨率圖像中微小缺陷的檢測。本文提出的基于高分辨率樓面圖像的缺陷檢測算法的總體流程如圖2所示。
在大尺度下,對面積較大的非墻體目標(biāo)進(jìn)行分割。由于非墻體不包含缺陷,故可以依據(jù)其掩模有效縮減需要缺陷檢測的區(qū)域并減少誤檢的發(fā)生。根據(jù)圖像處理中的高斯金字塔理論[13],圖像在不同尺度下的表征可以通過對原始圖像重復(fù)應(yīng)用高斯濾波及下采樣操作得到。首先應(yīng)用高斯模糊和8倍下采樣,從原始7 952×5 304的樓面高分辨率圖像得到994×663的低分辨率大尺度圖像,并設(shè)置天空、空調(diào)、窗戶作為該尺度下的分割對象。然后對不同的非墻體目標(biāo)分別應(yīng)用傳統(tǒng)圖像處理以及深度學(xué)習(xí)2種不同的算法進(jìn)行分割,得到不同非墻體目標(biāo)的掩模。最終將這些掩膜組合起來,并通過上采樣得到原始尺度下的非墻體掩模。其中,應(yīng)用傳統(tǒng)圖像處理進(jìn)行天空的分割;應(yīng)用實例分割模型Mask R-CNN[3]進(jìn)行空調(diào)、窗戶的分割。大尺度下樓面圖像非墻體區(qū)域分割的算法流程如圖3所示。
圖2 樓面圖像缺陷檢測流程Fig.2 Pipeline of defects detection of building wall surface image
圖3 大尺度下的非墻體區(qū)域分割算法Fig.3 Non-wall region segmentation at large scale
由于天空顏色會隨著天氣、時間,拍攝像機等因素的變化而變化,故傳統(tǒng)顏色閾值分割方法中的閾值不易設(shè)定,算法應(yīng)用的場景受限。而樓面圖像中天空具有另外2個特征:1)其總體區(qū)域較為平坦;2)樓面圖像中的天空基本處于圖像的四周。因而針對這2個特點,本文采用8鄰域區(qū)域生長算法對天空區(qū)域進(jìn)行分割[14]。其中種子點選取為圖像的4個角點,生長準(zhǔn)則為灰度差值小于設(shè)定閾值。
除此,窗戶和空調(diào)通常也會頻繁出現(xiàn)于樓面圖像中,它們雖不包含待測缺陷,卻很容易造成檢測器的誤檢。因此為了提升檢測的效率以及精度,本文也提前對圖像中窗戶進(jìn)行篩選。由于室外拍攝環(huán)境復(fù)雜,窗內(nèi)雜物太多,拍攝角度多變等諸多因素的影響,傳統(tǒng)圖像處理很難對目標(biāo)進(jìn)行的統(tǒng)一的特征描述,故本文采用實例分割Mask R-CNN深度模型對其進(jìn)行處理。
將通過不同方式獲得的不同目標(biāo)的掩模通過相與操作進(jìn)行合并,最終得到非墻體的二值掩模,其中灰度值為255表示非墻體,0表示墻體。為了便于后續(xù)小尺度下的缺陷檢測,需要對該低分辨率掩模進(jìn)行上采樣為原始分辨率。由于掩模生成本身并不精確,故本文選擇最鄰近插值作為掩膜上采樣的方式。
在得到非墻體掩模后,在小尺度下進(jìn)行缺陷檢測。與大尺度圖片生成方式不同,本文直接采用圖像的原始尺度作為小尺度表征。由于目前的檢測器輸入皆為低分辨率圖像,故本文采用重疊式滑窗提取候選區(qū)域并送入檢測器檢測的方式完成小尺度下的缺陷檢測任務(wù)。其中圖像候選區(qū)域是否送入檢測器需要依據(jù)非墻體掩模上對應(yīng)位置的窗口區(qū)域的狀態(tài)進(jìn)行判斷。為了加快檢測速度,本文選擇SSD[4]模型作為缺陷檢測器,并采用Resnet50[15]作為其主干網(wǎng)絡(luò),同時引入了FPN[8]網(wǎng)絡(luò)架構(gòu)來提升其對于小目標(biāo)檢測的效果[16],其輸入的圖像分辨率為640×640。小尺度下缺陷檢測的算法流程如圖4所示,SSD缺陷檢測網(wǎng)絡(luò)的結(jié)構(gòu)如圖5所示。
圖4 小尺度下的缺陷檢測算法Fig.4 Defects detection at small scale
圖5 小尺度下的缺陷檢測器網(wǎng)絡(luò)架構(gòu)Fig.5 The architecture of the defect detector at the small scale
1.2.1 滑窗參數(shù)選擇
為了能夠平衡檢測的精度以及效率,采用重疊式滑窗提取待檢測區(qū)域。設(shè)重疊滑動窗口寬度為W=640,與SSD模型輸入尺寸相同,滑動步長S∈[1,W]。通過分析,發(fā)現(xiàn)窗口的滑動步長S與目標(biāo)檢測任務(wù)有如下幾點關(guān)聯(lián):1)所有大小在(W-S)×(W-S)以下的缺陷將至少完整的出現(xiàn)在1個窗口內(nèi);2)所有像素在窗口中出現(xiàn)的平均次數(shù)為(W-S)×(W-S)次;3)當(dāng)S可以整除W的時候,所有像素在窗口中出現(xiàn)的次數(shù)是一樣的;4)當(dāng)S大于W的一半時,像素出現(xiàn)次數(shù)不平均。由于樣本中所有待檢測缺陷的大小基本都小于(W/2)×(W/2),故根據(jù)上述4個特點,選取滑動步長為窗長的一半,即S=W/2,如此可以保證所有大小在320×320以下的缺陷至少出現(xiàn)在一塊完整的切片中,且所有的像素被窗口選取的次數(shù)均為4次。
1.2.2 區(qū)域篩選算法
當(dāng)滑窗在原圖上獲取子區(qū)域時,也可以同時獲取對應(yīng)的掩膜子區(qū)域,并可以依據(jù)掩模子區(qū)域的狀態(tài)對原圖子區(qū)域進(jìn)行篩選,決定其是否送入檢測器進(jìn)行檢測。如果掩膜子區(qū)域內(nèi)絕大部分都是非墻體區(qū)域,那么就不對該子區(qū)域做后續(xù)檢測,從而加快對子塊集的檢測速度。而由于非墻體掩膜并不精細(xì),且為了進(jìn)一步提升檢測的檢測效率,本文選擇定點采樣方式利用掩膜做近似篩選。該方法需要將窗口按照4×4分格,以網(wǎng)格線的交點作為取樣點,則一個窗口內(nèi)部一共包含9個取樣點。如果9個點內(nèi)存在1個點屬于墻體,則對應(yīng)的原圖子區(qū)域送入檢測;若9個點全部都是非墻體,則其不送入檢測。窗口內(nèi)取樣點的位置如圖6中的圓點所示。
圖6 窗口內(nèi)采樣方式示意(圓點)Fig.6 Sampling mode in window (dots)
1.2.3 檢測結(jié)果后處理
應(yīng)用訓(xùn)練好的缺陷檢測器對篩選后的原圖子區(qū)域進(jìn)行檢測,即可得到每個子區(qū)域上的檢測結(jié)果。然后只需要將每個窗口內(nèi)的檢測框坐標(biāo)依據(jù)所在窗口的位置信息進(jìn)行調(diào)整,即可重新映射為原始高分辨率圖像上的檢測框。設(shè)子塊在原始圖像中的左上角點的位置被記錄為(X,Y),子塊內(nèi)的檢測結(jié)果為(x,y,w,h),那么依據(jù)簡單的坐標(biāo)變換就可以得到目標(biāo)檢測框?qū)?yīng)于原圖像的4個參數(shù)為(X+x,Y+y,w,h)。然而由于窗口重疊式獲取區(qū)域,所以檢測器將對同一目標(biāo)進(jìn)行多次檢測,最終導(dǎo)致圖像中同一個目標(biāo)對應(yīng)出現(xiàn)多個檢測框。為了避免太多相互覆蓋的檢測框的干擾,還需要對它們進(jìn)行非極大值抑制處理。
完成不同尺度上的檢測任務(wù)后,需要對多尺度檢測結(jié)果進(jìn)行融合。盡管已經(jīng)借助過大尺度分割結(jié)果對小目標(biāo)檢測區(qū)域進(jìn)行了篩選,但是實際上由于滑動窗口為矩形、掩模生成不精確、區(qū)域篩選算法設(shè)置寬松等因素的影響,篩選后的窗口內(nèi)不可避免地仍有部分非墻體區(qū)域存在。在這些缺陷目標(biāo)本不該出現(xiàn)的區(qū)域內(nèi)可能會出現(xiàn)虛警。為了提升檢測精度,將大尺度分割掩膜和小目標(biāo)檢測結(jié)果再次進(jìn)行融合,依據(jù)掩膜將非墻體區(qū)域包含的檢測框舍去。然而為了避免非墻體與墻體區(qū)域分界處的真實目標(biāo)不被舍棄,在融合前需要先對非墻體掩模進(jìn)行簡單的形態(tài)學(xué)腐蝕處理。從而使其掩膜邊界處的目標(biāo)缺陷得以保留。
檢測算法中涉及的實例分割網(wǎng)絡(luò)及缺陷檢測網(wǎng)絡(luò)都需要在COCO[20]數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練。對于實例分割模型,利用預(yù)訓(xùn)練的Mask R-CNN在標(biāo)注好窗戶和空調(diào)的大尺度低分辨率數(shù)據(jù)集上進(jìn)行遷移學(xué)習(xí)[18-19]。對于小尺度下的缺陷檢測模型,利用預(yù)訓(xùn)練的SSD模型做遷移學(xué)習(xí)。但是與前者的標(biāo)準(zhǔn)訓(xùn)練方式不同,為了提升對微小缺陷的檢測精度,本文在數(shù)據(jù)集制作以及模型訓(xùn)練方式上都做了改進(jìn),下面將對其流程進(jìn)行介紹。其中所有實驗均基于Tensorflow平臺的Google Object Detection API[17]完成。
初始樣本集的制作需要標(biāo)注樓面圖像中的缺陷的位置及種類,要求標(biāo)注矩形框緊貼檢測目標(biāo)的邊緣,得到初始標(biāo)注框(xi,yi,wi,hi),其中xi和yi分別為初始標(biāo)注框的左上角點的橫縱坐標(biāo),wi和hi分別為初始標(biāo)注框的寬度和高度。然而由于缺陷的特征主要表現(xiàn)在其與周邊環(huán)境的差異性,故對初始標(biāo)注框進(jìn)行修正,為缺陷主動保留背景。設(shè)修正后的標(biāo)注框為(xc,yc,wc,hc):
wc=wi×(1+α)
(1)
hc=hi×(1+α)
(2)
xc=xi-0.5×wc×α
(3)
yc=yi-0.5×hc×α
(4)
式中α∈(0.2,0.8)為擴展參數(shù)。通過實驗分析,當(dāng)α取0.6時,訓(xùn)練出來的模型檢測精度最高。
由于小尺度高分辨率圖像與檢測器輸入不匹配,故需要依據(jù)初始高分辨率數(shù)據(jù)集制作出合適的數(shù)據(jù)集,才能進(jìn)行檢測器的訓(xùn)練。首先將高分辨率圖像分為訓(xùn)練集、驗證集和測試集;然后從各集合中的高分辨率圖像上裁剪包含缺陷的切片,得到對應(yīng)的3個切片集。這些切片要符合檢測器的輸入尺寸,且每一塊至少包含一個目標(biāo);最后利用訓(xùn)練切片集對模型進(jìn)行訓(xùn)練并保存在驗證切片集上表現(xiàn)最優(yōu)的節(jié)點作為初次訓(xùn)練完成后的模型參數(shù)。
如果檢測器的輸入樣本較少,那么深度網(wǎng)絡(luò)一般難以通過直接訓(xùn)練得到很好的模型參數(shù)。通??梢圆捎眠w移學(xué)習(xí)的方式解決小樣本問題。遷移學(xué)習(xí)是指先在開源的大數(shù)據(jù)集上對模型進(jìn)行預(yù)訓(xùn)練,然后再在自己的小樣本集上對模型進(jìn)行微調(diào)。除此還可以應(yīng)用數(shù)據(jù)擴增技術(shù),例如對高分辨率圖像上的每一個目標(biāo)進(jìn)行多次隨機裁剪。由于樓面缺陷樣本較少,故采用遷移學(xué)習(xí)[18-19]的方式進(jìn)行模型的訓(xùn)練。首先讓模型在COCO[20]大數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,然后再在樓面缺陷小樣本集上進(jìn)行微調(diào),最后保存出驗證集上最佳節(jié)點作為初次訓(xùn)練完成的模型參數(shù)。
然而由于算法最終處理對象是原始高分辨率圖像,故檢測算法效果的最終評價應(yīng)該在高分辨率圖像集上獲得。在高分辨率圖像中,除了待檢測缺陷之外,還有大量的會干擾檢測的物體。而由于初次訓(xùn)練使用的切片集只包含了小目標(biāo)附近的區(qū)域,而不包含干擾項,導(dǎo)致訓(xùn)練好的模型無法對他們進(jìn)行區(qū)分,進(jìn)而產(chǎn)生大量虛警。
為了構(gòu)建更加全面的數(shù)據(jù)集,應(yīng)用初次訓(xùn)練模型對訓(xùn)練和驗證的原始高分辨率圖集分別進(jìn)行檢測,并將包含誤檢框的切片作為負(fù)樣本引入,生成新的訓(xùn)練和驗證切片樣本集。這些負(fù)樣本切片的類別標(biāo)簽設(shè)定為“正?!?,其檢測框標(biāo)簽則設(shè)定為整個切片區(qū)域,其數(shù)量與正樣本集數(shù)量的比例設(shè)定為1∶6。然后就可以利用新生成的數(shù)據(jù)集對初次訓(xùn)練模型進(jìn)行二次微調(diào)。由于引入了檢測器易于誤檢的樣本,檢測器將能更加關(guān)注這些樣本,并能更好地學(xué)習(xí)到區(qū)分正負(fù)樣本的特征。這種負(fù)反饋機制能夠?qū)δP陀?xùn)練起到矯正的作用,可以大大降低虛警的發(fā)生。需要注意的是,模型訓(xùn)練完成后并不需要輸出負(fù)樣本類別(正常),即負(fù)樣本類別只在訓(xùn)練時發(fā)揮作用。
實驗所用樓面圖像采用電動云臺對樓面進(jìn)行網(wǎng)格式拍攝,圖像分辨率為7 952×5 304。評價指標(biāo)采用COCO標(biāo)準(zhǔn)的平均精度均值(mean Average Precision,mAP)[20]。mAP理論上為各類別的PR曲線下面積的均值,COCO提供了一種近似計算方法,常用于評估目標(biāo)檢測模型的效果。
3.1.1 分割模型的訓(xùn)練及測試效果
用于訓(xùn)練實例分割模型Mask R-CNN的樣本共31張,圖像分辨率下采樣為994×663,分為訓(xùn)練集(25張)和驗證集(6張),每張圖片中的窗戶和空調(diào)個數(shù)不等。保存出驗證切片集上最高mAP節(jié)點處的模型作為最終分割模型,將其置信度閾值設(shè)定為0.5,得到的檢測效果示意如圖7所示,其中的空調(diào)和窗戶2種非墻體都被很好地分割了出來。
圖7 Mask-RCNN的檢測效果示意Fig.7 The training results of Mask RCNN
3.1.2 檢測模型的初次訓(xùn)練及測試效果
用于訓(xùn)練SSD模型的樣本共107張,圖像分辨率一般為7 952×5 304,分為訓(xùn)練集(88張)、驗證集(9張)和測試集(10張),每張圖片中的缺陷個數(shù)不等。根據(jù)2.1節(jié)的樣本制作方法,得到分辨率為640×640切片圖集,其中訓(xùn)練集、驗證集和測試集對應(yīng)的切片樣本數(shù)量分別為3 180、220和130張(10倍擴增后)。然后利用在COCO數(shù)據(jù)集上預(yù)訓(xùn)練好的SSD模型在樓面缺陷切片樣本集上進(jìn)行遷移學(xué)習(xí),batch size設(shè)為4,學(xué)習(xí)率設(shè)為0.000 05,迭代30 000次。模型在驗證切片集上的mAP隨迭代次數(shù)變化的曲線如圖所示,其中IOU閾值設(shè)定為0.5。在100 000步迭代后,模型在驗證切片集上的mAP可達(dá)到0.7左右,之后趨于穩(wěn)定。保存出驗證切片集上最高mAP節(jié)點處的模型作為初次訓(xùn)練模型,該模型在測試切片集上的mAP為0.714。將初次訓(xùn)練模型的置信度閾值設(shè)定為0.5,其部分檢測結(jié)果如圖8所示,其中模型成功定位出了切片上的缺陷位置,并給出了相應(yīng)的置信度。
圖8 SSD的模型檢測效果示意Fig.8 The training results of SSD
將初次訓(xùn)練模型置于檢測算法框架中,應(yīng)用所提檢測算法對訓(xùn)練和驗證原始高分辨率圖集進(jìn)行檢測并計算出模型在高分辨率圖集上的mAP值。從表1和表2的第1行可以發(fā)現(xiàn),相較于初次訓(xùn)練模型在訓(xùn)練、驗證和測試的切片集上的mAP,算法在對應(yīng)高分辨率圖集上的mAP都發(fā)生了嚴(yán)重的下降。通過觀察與分析檢測結(jié)果,認(rèn)為這一現(xiàn)象主要是由于過多的虛警造成的。為了抑制虛警,將得到檢測結(jié)果中未與真實框相交的檢測框作為誤檢,并以其為中心剪切圖片。接著將得到的切片中的檢測框設(shè)為整張圖像,類別設(shè)為normal(無缺陷),并將其與原始切片樣本混合,得到擴增的訓(xùn)練和驗證切片集分別為3 721和252張。最后在新數(shù)據(jù)集上對初次訓(xùn)練模型進(jìn)行再次微調(diào),得到2次訓(xùn)練模型作為最終檢測模型。通過對比表2中初次訓(xùn)練模型和2次訓(xùn)練模型在原始高分辨率圖像訓(xùn)練、驗證和測試集上的mAP數(shù)值可以發(fā)現(xiàn),該方法可以有效地提升算法的檢測精度。經(jīng)過2次訓(xùn)練后的最終檢測模型在測試集上的mAP為0.480。
表1 不同小尺度檢測器在切片集上的mAP
表2 采用不同小尺度檢測器的所提整體算法在高分辨率圖集上的mAP
分別將初次訓(xùn)練模型和二次訓(xùn)練模型置于總體檢測框架中,并應(yīng)用檢測算法對測試集進(jìn)行檢測,其部分檢測結(jié)果如圖9所示,其中只有周圍標(biāo)有“缺陷”字樣的檢測框才是預(yù)測正確的結(jié)果。由圖可知,所提檢測算法在采用初次訓(xùn)練模型作為小尺度缺陷檢測器時,其檢測結(jié)果中產(chǎn)生了很多誤檢,大部分集中在窗戶中疑似物的干擾。而當(dāng)用二次訓(xùn)練模型替換初次訓(xùn)練模型后,所提算法的檢測結(jié)果中的誤檢數(shù)量明顯變少,證明負(fù)樣本的引入的確抑制了虛警的發(fā)生。但是同時由于負(fù)樣本中有一些與真正缺陷很相近的正常物體,故這些難樣本的引入反而會對待檢測缺陷的特征的學(xué)習(xí)產(chǎn)生抑制作用,使得模型性能提升有所限制。
圖9 二次訓(xùn)練模型在某張驗證集圖像上的檢測結(jié)果Fig.9 The comparison of detections before re-train and after re-train
SIMRDWN[10]算法僅在單一的尺度下進(jìn)行缺陷檢測,該算法直接將原始高分辨率大圖進(jìn)行切分送入小目標(biāo)檢測框架,不生成掩膜,不對窗戶和空調(diào)這些非墻體區(qū)域進(jìn)行切片過濾和檢測框2次篩選。
本次測試結(jié)果對比如圖10所示,其中圖10(a)展示的是SIMRDWN算法結(jié)果,圖10(b)為相應(yīng)的多尺度檢測結(jié)果對照。可以明顯看出單尺度測試結(jié)果中出現(xiàn)了將窗戶內(nèi)部誤認(rèn)為是墻體破損區(qū)域的檢測框,出現(xiàn)誤檢現(xiàn)象。非墻體區(qū)域為本檢測流程帶來了不必要的麻煩,所以針對缺陷目標(biāo)的特殊性,采用多尺度融合檢測的方法是十分必要且有效的。
圖10 單尺度(SIMRDWN)與雙尺度(所提算法)檢測效果對比Fig.10 The comparison of detections of single-scale(SIMRDWN) and multi-scale
本次實驗中模型在高分辨率樓面圖像上的mAP值如表3所示,與多尺度融合算法(所提算法)框架相比,單尺度算法(SIMRDWN)的精度有明顯下降。同時由于在多尺度中待檢測切片經(jīng)過了篩選,檢測次數(shù)少,算法的時間花費也較少,如表3所示。而由于硬件和模型的差別,并未計算掩膜生成時間,隨著硬件性能的提升,這部分時間也將大大縮短。
表3 不同算法在高分辨率圖集上的mAP和檢測時間對比
為了分析在獲取640×640大小的高分辨率圖像切片時采取不同滑動窗口步長對實驗結(jié)果的影響,分別設(shè)置滑動窗口步長為窗長的0.25、0.5和0.75進(jìn)行實驗,3種步長的檢測算法在高分辨率圖集上的檢測時間和mAP如表4所示。
表4 采用不同滑動步長時所提算法的性能比較Table 4 Comparison of the methods of different strides
由表4可知,隨著滑動窗口步長的增大,檢測所需要的時間越來越少。其原因是步長設(shè)置越小,一張高分辨率大圖所剪裁出的小圖片數(shù)量越多,調(diào)用缺陷檢測器的次數(shù)越多,耗時越長。在檢測精度方面,訓(xùn)練集、驗證集上的mAP都隨著滑動步長的增大而減小,其主要原因是候選框的稠密程度下降導(dǎo)致待檢測缺陷不易被檢測到。而與之相反,模型在測試集上的mAP卻呈上升趨勢。通過分析發(fā)現(xiàn),其主要原因是圖片中干擾項太多,減小候選框的稠密程度可以減少誤檢的發(fā)生。因此圖像集上的mAP變化是誤檢與漏檢的相互作用以及博弈的結(jié)果,為了兼顧檢測精度和效率,滑動步長推薦設(shè)置為0.5。
1)在小尺度的缺陷檢測中,以負(fù)反饋的形式利用初次檢測的負(fù)樣本對模型進(jìn)行2次訓(xùn)練可以有效降低檢測器的虛警率。
2)在使用滑窗進(jìn)行檢測時,步長的選擇是對檢測精度和檢測速度的平衡。其取決于小尺度檢測器的精度,也取決于操作人員對系統(tǒng)效率的要求。后續(xù)可以探究自適應(yīng)步長變化的研究,進(jìn)一步加快檢測速度。
3)提出的小目標(biāo)多尺度檢測框架能夠在復(fù)雜背景的高分辨率圖像中實現(xiàn)微小目標(biāo)的精確檢測,且在精度和效率上都要優(yōu)于傳統(tǒng)單一尺度檢測框架。本文提出方法也適用于遙感圖像或醫(yī)學(xué)圖像中的目標(biāo)或病灶檢測。