?

基于圖像自適應增強與特征融合的目標檢測方法

2024-04-15 09:03朱海紅李思宇李林峰胡倫庭
測繪工程 2024年1期
關鍵詞:卷積特征模塊

于 璐,朱海紅,李思宇,李 霖,李林峰,胡倫庭,龍 雪

(1.武漢大學 資源與環境科學學院,武漢 430000; 2. 武漢海微科技有限公司, 武漢 430000; 3. 北京強度環境研究所, 北京 100000)

近年來隨著硬件的不斷迭代升級和深度學習技術的發展,目標檢測算法被廣泛應用于自動駕駛、智慧交通、人臉識別等各個領域[1]。目標檢測算法可以根據采集圖像的特征,自動提取感興趣目標的位置并識別出目標類別,不需要過多的人工干預且占用空間小、方便部署,在測繪地理信息領域也有較為成熟的應用[2],如攝影測量、遙感目標檢測以及交通標志和信號燈檢測等。

早期的深度學習神經網絡模型大多應用于圖像分類,通常需要借助其它算法才能同時完成目標定位和分類識別任務。目標檢測算法則將特征提取、目標定位和分類任務都整合在了一個網絡中,省去了繁瑣復雜的特征設計過程,模型訓練更加簡潔方便,在檢測與識別效果方面顯著優于傳統的基于顏色、形狀等簡單特征的算法,檢測準確度與速度也高于常用的手工特征算法。其中,以目標的定位和分類是否同時進行為區分標準,目標檢測算法被分為單階段網絡和兩階段網絡兩種類型。兩階段網絡以Faster R-CNN[3]為代表,先生成目標所在候選區域,再獲取該區域特征圖用于判定目標類別,這種方式的檢測精度較高,但相對于單階段網絡占用空間大、檢測速度慢。單階段網絡沒有用于生成候選框的階段,直接對目標的位置和類別進行回歸,節約計算成本并提高了檢測速度,常用的單階段網絡包括SSD[4](single shot multi-box detector)、YOLO[5](you only look once)系列等。

在目標檢測算法中,網絡的不同層級包含的信息不盡相同,無論是單階段網絡還是兩階段網絡,都依賴于深層的網絡結構來提取高維語義信息。而在實際的目標檢測應用中,不同目標的尺度變化較大,當算法的網絡較深則易丟失淺層的細節特征信息,不利于小目標檢測,因此常用的目標檢測算法都存在對小目標檢測能力不足的問題,從而引起了算法整體的檢測精度下降,對此許多學者對小目標檢測困難的問題做出了不同方向的改進。Yang等[6]在SSD算法中引入了空洞卷積和注意力殘差模塊,將低分辨率高語義特征層和高分辨率低語義特征層進行融合,使得算法更注重底層特征,在應用于微小目標檢測時降低了18.01%的誤檢率和18.36%的漏檢率。Fu等[7]提出了DSSD(deconvolutional single shot detector)算法,在SSD算法的擴展特征層后加入了反卷積模塊,通過自上而下的結構實現了不同層特征的融合,除此之外還優化了用于分類和定位的預測模塊。Li等[8]對YOLOv3算法的3個輸出層的有效感受野進行分析,根據有效感受野分配候選框,并增加了上下文信息,顯著改善了小目標的檢測困難問題。Zhao等[9]為提升航空遙感影像的小目標檢測準確率,構建了并行高分辨率網絡,將多個子網絡并行連接,對不同分辨率的特征層反復融合,增強了小目標特征。

在不同環境下,采集圖像的質量也會產生差異,進而對提取目標特征造成較大影響,因此除了改進網絡結構這一方法外,數據增強也是一種提高算法對各尺度目標檢測能力的有效方法,通過各種圖像增強算法能夠提升圖像質量并豐富監督信息,從而獲取更可靠的特征空間[10]。這種方式不會占用太多內存空間,不需要增加硬件成本,但可以有效提升檢測算法的準確度和泛化能力[11]。Lv等[12]使用基于Retinex理論的圖像增強算法進行原始低照度圖像的增強, 聯合利用原始圖像與增強圖像之間特征差異性,設計了雙分支SSD結構。Huan等[13]構建基于雙邊濾波的高斯金字塔變換Retinex圖像增強算法融入模型,有效解決了在復雜場景下由于光照不均、事務遮擋下檢測精度差、實時性低的問題。

基于以上背景,文中提出了一種自適應圖像增強、引入注意力機制的特征融合的改進SSD算法。首先,根據圖像的全局特征預測圖像預處理算法的超參數,實現檢測圖像的自適應增強,減輕由于檢測環境差異導致的采集圖像質量不一,進而引起的目標特征丟失問題;其次,將特征提取的主干網絡替換為ResNet50,優化特征金字塔結構,使其更適用于小目標圖像的特征提取;最后,將特征金字塔中的淺層特征和深層信息進行特征融合,并引入SENet結構獲取通道間權重,用于抑制融合后的特征對于原有細節特征的干擾,實現了語義信息和細節信息的有效融合,提高了算法對于各尺度目標的檢測性能。

1 算法介紹

1.1 SSD算法

SSD是一種單階段(one-stage)目標檢測網絡,在多尺度特征圖上以回歸的方式同時得到目標的類別和位置。相較于位置回歸與類別預測需要分階段進行的兩階段(two-stage)網絡,SSD的速度更快、占用內存更小。SSD算法框架如圖1所示,主要包含4個部分,即輸入(input)、主干網絡(backbone)、頸部(neck)和頭部(head)[14]。輸入部分用于訓練圖像預處理與增強,如隨機旋轉、裁剪和放大等;主干網絡用于提取圖像特征,SSD算法的主干網絡為修改后的VGG16[15]網絡;頸部為特征金字塔即多尺度特征圖部分,將主干網絡提取出的特征通過一系列的額外卷積層構建不同尺度的特征圖;在頭部對特征金字塔中各個特征圖的不同位置進行密集抽樣,抽樣時采用不同的定位框尺度和長寬比,同時進行物體分類和先驗框(anchor box)的回歸。

圖1 SSD算法框架

文中主要對輸入、主干網絡和頸部3個部分進行了改進。輸入部分,在原有的隨機裁剪、旋轉、放大等操作的基礎上,增加了改善圖像亮度和細節特征的自適應增強模塊。在主干部分,使用ResNet50網絡替換VGG16網絡,提取更深層的信息用于分類。在頸部部分,加入了帶有注意力機制的特征融合模塊,在淺層特征圖中融合了上下文信息和深層的語義信息。

1.2 基于圖像自適應增強的預處理方法

由于采集環境差異會對圖像造成不同程度的影響,因此在目標檢測任務中圖像增強是一項重要環節,可以通過圖像增強有目的的強調局部或整體特征,擴大圖像中不同物體特征的區別,提高圖像質量并豐富信息量[16]。除了對訓練圖像進行隨機裁剪、旋轉和縮放外,根據圖像本身的特征進行針對性的圖像處理可以進一步提高圖像的質量。在本文算法中,選取改善圖像亮度和對比度的圖像增強算法,有助于改善灰度畸變現象,增強圖像細節特征,有利于擁有豐富細節特征的小目標檢測。本文參考IA-YOLO[17]中的圖像自適應增強框架,通過構建一個弱監督的CNN網絡來預測圖像增強模塊的超參數,根據預測的超參數在可微圖像處理模塊對訓練圖像進行自適應增強,并根據檢測的損失值反向傳播來優化這些參數。與常規圖像預處理方法不同的是,該方法并不局限于提高整幅圖像質量,而是對提升模型檢測性能有用的特征進行針對性增強。圖像自適應增強模塊由兩部分組成,一個是CNN參數預測模塊(CNN predict module),一個是可微圖像處理模塊(DIP module),整體結構如圖2所示。

用于預測參數的CNN網絡主要包括5個卷積層和兩個全連接層,每個卷積層包括一個步長為2的3×3卷積層和一個Leaky Relu層,最終全連接層輸出可微圖像處理模塊需要的超參數。CNN參數預測網絡是根據全局的圖像特征,例如色調、亮度等,去預測圖像濾波處理的參數,將原本需要手動調整的超參數,交給CNN網絡預測,并根據檢測的損失函數反向傳播從而不斷進行優化和學習,使得圖像能夠自適應地朝著有利于檢測的方向進行增強。因此,該模塊只需要輸入下采樣后低分辨率的圖像,經過一個簡單的CNN網絡即可得出預測參數,并隨檢測的損失值不斷更新預測參數。

針對不同環境對采集圖像屬性的影響,在圖像增強算法上選取了能夠改善圖像整體亮度、對比度和色調的Gamma校正、對比度變換和白平衡的變換算法,以及增強圖像邊緣和細節特征的USM銳化算法,各個濾波器算法如表1所示。

其中,Pt為圖片的像素值;ri、gi和bi為各通道對應位置的像素值;Gamma用于校正圖像的明暗;參數γ可以通過反向傳播不斷學習,調整圖像的明暗。白平衡用于解決不同的光源條件下,同一個物體反射的光線有所差別的問題,通過三通道各個像素值乘以一個用于學習的參數,來調整圖像的色彩比例。圖像的對比度是一幅圖像中最亮和最暗的像素值之間的反差大小,反差越大代表圖像對比度越大,反差越小代表圖像像素更接近、對比度越小。圖像銳化采用USM算法[18],這種銳化的方法就是對原圖像先做一個高斯模糊,然后用原來的圖像減去一個系數乘以高斯模糊之后的圖像,該方法可以去除一些細小的干擾細節和噪聲,比一般直接使用卷積銳化算子得到的圖像銳化結果更加真實可信。

1.3 特征提取網絡改進

SSD算法采用的VGG16網絡雖然在增加CNN網絡深度方面做出了貢獻,但當網絡深度到達一定限度時,易出現梯度消失和退化現象。隨著網絡深度的不斷增大,用于非線性轉換的激活函數也不斷增多,高維信息更加離散,導致網絡難以實現恒等映射(identity mapping)。VGG16中采用的激活函數為ReLU非線性激活函數,ReLU計算式如式(1)所示。

f(x)=max(0,x).

(1)

當輸入值為負值的情況下輸出值被設置為0,代表當前神經元不會被激活,從而保證網絡中神經元的稀疏激活性,加快網絡的收斂速度。但這種激活方式存在輸入與輸出的不可逆性,然而在網絡的低維空間中信息通常較為集中,ReLU激活函數會造成較多不可逆的信息損失,因此難以實現輸入與輸出的恒等映射,進而導致網絡過深時出現退化現象。ResNet[19](deep residual network, ResNet)網絡通過引入殘差學習的方式,在網絡層間加入了如圖3 (a)所示的殘差模塊,將網絡的不同特征層進行快捷連接(shortcut connection),使網絡深度達到成百上千層時仍然保持良好的分類效果。如圖3所示的殘差模塊,通過在不同層間加入快捷連接,將輸入x傳入輸出層中與之相加,輸出結果可用式(2)表示。

圖3 殘差模塊與BottleNeck結構

H(x)=F(x)+x.

(2)

通過以上算式,可以將網絡轉化為學習殘差的過程,當F(x)=0時,就構成了恒等映射H(x)=x,使得網絡可以自主選擇跳過冗余層,并且減小了計算參數量。為進一步獲取網絡深層信息、提升檢測效果,文中將特征提取網絡由VGG16替換為深度殘差網絡ResNet50,可以有效緩解隨深度增加帶來的退化現象,從而獲取到更深層的有助于分類的信息。ResNet50網絡主要包含4個部分,每部分分別包含3、4、6、3個BottleNeck結構。BottleNeck結構如圖3 (b)所示,遵守尺寸不變通道數不變、尺寸減半通道數翻倍[20]的設計原則,由兩個1×1步長為1的卷積層和一個3×3步長為2的卷積層以及殘差連接構成,1×1的卷積層用于特征降維,3×3的卷積層用于提取深層特征。每個部分輸出的特征層記為{C1,C2,C3,C4},假設輸入的圖像大小為300×300,則每部分輸出的特征層尺寸分別為{75, 38, 19, 10}。

在SSD算法中使用的特征金字塔結構主要用于提取不同尺度的特征,保障了算法對于多尺度目標的檢測能力,但其中用于小目標檢測的淺層特征僅有一層,缺乏足夠的細節特征表達,因此SSD算法存在小目標不敏感的缺陷。由于本文實驗數據集中以中小目標為主,且需要微小細節信息來判定目標類別,因此文中選取ResNet50網絡輸出的淺層特征層C2作為特征金字塔的初始特征圖,并根據以下算式構建特征金字塔。

Pi+1=F(f3×3(F(f1×1(Pi)))),

(3)

F(xi)=ReLU(BN(xi)).

(4)

其中,i∈{0, 1, 2, 3, 4},P0=C2,f3×3和f1×1分別為卷積核大小為3、1的卷積層,f3×3卷積層的步長為2。BN為批標準化處理(batch normalization),批標準化處理用于消除網絡訓練過程中數據分布發生變化導致學習速度降低的問題[21]。ReLU表示ReLU激活函數,可以緩解由于網絡過深產生的梯度消失現象。最終輸出特征圖集合表示為{P0,P1,P2,P3,P4,P5},特征圖尺寸分別為{38, 19, 10, 5, 3, 1}。

1.4 引入SENet的特征融合模塊

在特征金字塔輸出的特征圖中,特征隨網絡加深逐漸抽象[22],深層輸出的特征通常包含更豐富的語義信息,但同時也會丟失部分細節特征信息。因此,將淺層特征與深層特征以特定的方式融合,添加上下文信息,可以有效提高小目標的檢測能力,文中參考FSSD算法[20]和文獻[23]中的特征融合結構,將淺層的特征與深層的語義信息進行融合,使得用于小尺度目標檢測和定位的淺層特征圖能夠同時包含細節和深層語義信息。特征融合結構可以由以下算式表示。

Tf=Concat(f{Xp},f{Up{Xq}}),

(5)

f(xi)=ReLU(L2(xi)),

(6)

Up(xi)=ReLU(BN(f1×1(Bilinear(xi)))).

(7)

其中,Billinear表示雙線性插值法,對于與目標尺寸不同的待融合特征圖,先通過1×1的卷積層降維后,使用雙線性插值法將尺寸較小的深層特征圖上采樣處理。f表示所有待融合特征圖通過L2正則化將數據歸一化至同一范圍內,便于后續的拼接。拼接方式選取串聯(concatenation)操作,將未經上采樣的特征圖Xp和經過插值后的特征圖Xq在通道維度拼接,再通過一個3×3的卷積層消除拼接后的混疊效應。

由于直接融合的方式容易導致原有信息被干擾,可能會造成小尺度目標信息的丟失,本文在特征融合模塊中引入SENet,使網絡在訓練的過程中更專注于融合通道間有效的特征。SENet[24](squeeze and excitation) 結構如圖4所示,是一種能夠對卷積特征的通道間相互依賴關系進行顯式建模的結構,輸入SENet的特征層首先通過一個全局平均池化層得到全局空間信息,再通過兩個全連接層和兩個激活函數對全局信息進行壓縮再升維,最終獲取各個通道的權重并與對應的特征圖相乘,從而獲取各通道間的關聯關系。將SENet插入到L2正則化和ReLU激活函數之后、串聯操作之前,獲取拼接前各通道的權重,以取得更有效的特征融合結果。

圖4 SENet結構

文中采取了如圖5所示的特征融合結構,將特征金字塔輸出的P0與主干網絡輸出的C3融合,替換用于檢測與定位的尺寸為38的特征圖P0,記為T0;將P1與{C3,C4}融合替換尺寸為19的特征圖P1,記為T1。最終,用于定位和檢測的特征圖集合為{T0,T1,P2,P4,P5},特征圖尺寸分別為{38, 19, 10, 5, 3, 1},每層生成的候選框個數分別為{4, 6, 6, 4, 4},將特征圖尺寸與每層生成的候選框個數對應相乘后,共輸出8 732個候選框。并將以上候選框進行NMS篩選,NMS(non-maximum suppression)為非極大值抑制篩選,用于選取得分最高的候選框并抑制多余的候選框。

圖5 改進SSD算法結構

1.5 損失函數

SSD算法的損失函數主要包含兩部分,即置信度損失Lconf和定位損失Lloc,計算式如式(8)所示。

(8)

其中,N表示匹配的候選框個數,當N為0時損失值設置為0;α為權重系數,當交叉驗證時設置為1;c為置信度得分,l表示候選框參數,g為真實標注框參數。

定位損失,是候選框與真實標注框的SmoothL1損失。如式(9)所示:

(9)

(10)

(11)

(12)

(13)

2 實驗結果與分析

2.1 數據集

文中的實驗數據集為以中小目標為主的車載屏幕部件數據集,由部署在工業生產線的工業相機采集。數據集為未經處理的車載屏幕背板圖像,類別包含導電泡棉正常、導熱泡棉正常、排線正常、排線缺失、排線歪斜、排線未扣緊和排線翻轉7個類別,圖6、圖7分別為車載屏幕背板圖像和各類別圖像。

圖6 車載屏幕部件數據集圖像

圖7 各類別圖像

文中提出的算法可以對采集圖像數據進行自適應的圖像增強,為驗證算法對采集圖像質量差異的處理能力,數據集中包含的圖像是未經過圖像增強處理的原始圖像。數據集共包括訓練集數據2 251張,測試集數據214張,驗證集數據563張,圖像分辨率為2 448像素×2 048像素,各類別具體數目如表2所示。

表2 訓練集各檢測類別數目

通常測試集的劃分方式是從已標注圖像中隨機劃分出一定比例數量的圖像作為測試集,但文中研究對象的檢測受環境光照影響較大,因此從已采集圖像中挑選了214張環境光照有差異的圖像來測試模型對光照條件的適應能力。

2.2 模型訓練信息與評價指標

使用在ImageNet數據集[25]上預訓練的ResNet50模型對主干網絡部分進行預訓練,將前50輪訓練的主干網絡權重進行凍結,共迭代300輪。優化器選擇SGD(stochastic gradient descent)優化器,初始學習率定為0.002,學習率衰減采用余弦退火策略進行周期性衰減。實驗的操作系統為Windows,使用Pytorch1.5框架開發,實驗的硬件環境CPU為Intel i7-9700 CPU@3.00 GHz,內存為16G,GPU為NVDIA GTX 1650 super。

評價指標有平均精度和平均精度均值等[26],其中平均精度就是Precision-recall曲線下方的面積,按模型給出的置信度由高到低對候選框進行排序,得到一組包含精度、召回率的有序數組。平均精度由以下算式得出:

(14)

平均精度均值(mAP)指所有類別平均精度(AP)的平均值。

(15)

其中,N為類別的總數;AP(i)為各類別的平均精度。

2.3 消融實驗

為驗證各個模塊對于檢測精度提升的有效性,進行了圖像自適應增強模塊、特征融合模塊和注意力模塊的消融實驗。在表3消融實驗中,Feature_Fusion和Fusion指的是特征融合模塊,Fusion_Layers表示進行特征融合的結構,即圖8中(a)、(b)結構,SE Block表示SENet結構的注意力模塊,IADA指圖像自適應增強模塊。從表3中的結果可以看出,各模塊都對檢測精度有一定的提升。其中特征融合模塊,在未加入注意力模塊前,結構(a)相較于原始SSD算法提高了4.6%,高于結構(b)的2.04%。說明結構(b)的淺層特征加入了更深層的語義特征后,原有的細節特征被干擾。注意力機制可以使模型通過訓練不斷調整特征融合后各通道的權重,選擇有利于模型檢測的信息,因此加入注意力模塊之后,結構(b)提升了4.97%,高于結構(a)。圖像自適應增強模塊對于模型檢測性能也有較大幅度的提升,在主干網絡為VGG16和ResNet50的實驗中,分別提升了4.05%和1.86%。最終,采用圖8(b)的特征融合結構,加入注意力模塊和圖像自適應增強模塊后,模型的檢測精度得到較大幅度提升,相較于原始SSD算法提升了5.2%。

表3 消融實驗

圖8 Fusion Layers 結構

2.4 檢測結果對比與分析

2.4.1 檢測結果

文中算法能夠精準地檢測出實驗數據集中的中小目標部件,并實現了較高的定位精度。在圖9的檢測結果示例中,為了驗證模型在不同光照環境下的檢測性能,挑選了不同環境的檢測圖片,并與原SSD算法的檢測結果作對比。從圖10可以看出,在明暗度不同的環境下,SSD算法出現了漏檢和誤檢的現象,改進后的SSD算法則可以在昏暗和明亮的情況下檢測出正確的類別并精準定位。

圖9 檢測結果示例

圖10 不同光照條件下的檢測結果

2.4.2 改進算法與其他算法對比結果

將不同的目標檢測模型與文中改進SSD算法作對比,實驗結果如表4所示,其中Param代表參數量,即算法的參數所占內存大小;FLOPs(floating point operations)表示浮點運算次數,表示每次檢測時運行浮點操作的次數,用于衡量算法的計算復雜度。文中算法相較于經典目標檢測網絡Faster R-CNN精度提升了7.25%,參數量與浮點運算次數都大幅度降低。相比YOLO系列網絡,文中算法在多尺度缺陷目標的表現更好,在檢測精度上高于經典的YOLO-v3和YOLO-v5網絡。在SSD系列網絡中,文中改進算法較原始SSD算法精度提升了5.2%,同時也高于其他的改進SSD網絡如DSSD、FSSD等,且參數量和計算量較小,適合在移動端進行部署。

3 結 論

文中通過引入圖像自適應增強和融入注意力機制的特征融合,提升了SSD算法的檢測能力,實現了對中小目標準確、有效的定位。改進算法通過在圖像預處理階段加入自適應圖像增強模塊,提升了在不同光照條件下算法的檢測性能,對于真實場景下的各種檢測環境具有良好的適應性;通過引入SENet結構的特征融合模塊有效提升了對小尺度目標的檢測能力,從而實現對多種尺度目標的精準檢測?;谲囕d屏幕背板數據集的對比實驗以及消融實驗證明了改進算法對中小目標的檢測總體精度高于經典的目標檢測算法和部分常用的SSD改進算法,且具有較低的內存占用和計算復雜度,對于不同環境的適應能力更強,為解決目標檢測算法的實際應用中的難題提供了可行的改進方式。

猜你喜歡
卷積特征模塊
28通道收發處理模塊設計
“選修3—3”模塊的復習備考
基于3D-Winograd的快速卷積算法設計及FPGA實現
如何表達“特征”
從濾波器理解卷積
不忠誠的四個特征
基于傅里葉域卷積表示的目標跟蹤算法
抓住特征巧觀察
一種基于卷積神經網絡的性別識別方法
線性代數的應用特征
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合