蔡 騰,陳慈發,董方敏
1.三峽大學計算機與信息學院,湖北 宜昌 443002
2.三峽大學湖北省建筑質量檢測裝備工程技術研究中心,湖北 宜昌 443002
目標檢測作為計算機視覺領域的基礎任務,在近年來取得了長足的進展,并廣泛應用于自動駕駛、智能監控等多個領域。在實際應用中,目標檢測面臨著多種困難,如復雜背景、遮擋和光照變化等,特別是在低照度條件下,會出現目標與環境邊界不明顯、局部過曝與模糊等問題,這使得檢測算法的性能下降。因此,設計一種針對低照度場景下的目標檢測算法具有重要意義。
目標檢測算法分為多階段和單階段兩種類型。多階段方法通常包括候選區域提取和特征提取兩個階段,包括Fast R-CNN[1]、Faster R-CNN[2]和Cascade R-CNN[3]等。單階段方法直接預測目標的位置和類別,具有較快的速度和較低的計算量,如YOLO[4]、SSD[5]和RetinaNet[6]等。其中,YOLO系列算法在速度和準確率方面均有優異的表現,是目前單階段目標檢測算法中的代表。目前,YOLO 系列已經發展到了YOLOv8[7],YOLO 系列算法在COCO數據集上已經取得了令人矚目的進展,但是針對低光照條件下的目標檢測仍存在挑戰。
為了解決低照度下目標檢測識別率低的問題,國內外學者開展了廣泛研究。張蕊等人[8]通過引入深度可分離卷積、多種注意力機制和空洞卷積,提高了無人駕駛車輛在夜間場景下的檢測精度和速度。Kalwar等人[9]提出GDIP和MGDIP,通過學習多種圖像預處理操作的權重和并發處理,顯著提高了低照度下目標檢測性能。Qin等人[10]提出了一種包含DENet和YOLOv3的聯合增強-檢測框架DE-YOLO,其中DENet負責自適應地增強低光圖像,然后將增強后的圖像輸入到YOLOv3[11]進行目標檢測。麥錦文等人[12]提出了一種基于特征交互結構(FIS)的方法,通過全局注意和局部卷積抽取弱光圖像特征,能有效解析、利用和結合局部與全局信息。舒子婷等人[13]提出了YOLOv5_DC模型,使用雙通道輸入、特征增強和定位模塊來提高低光照條件下的檢測精度。為了解決低能見度場景下的目標檢測效果,陳永麟等人[14]使用紅外成像技術并提出ITB-YOLO,通過改變多尺度融合關系提高檢測精度。Hu等人[15]提出了PE-YOLO算法,使用金字塔增強網絡并將其與YOLOv3模型相結合,在低照度場景中取得優秀的檢測效果。Sasagawa等人[16]提出了一種域自適應方法,融合低照度圖像增強模型和目標檢測模型實現夜間目標檢測。Yin等人[17]基于離散余弦變換(discrete cosine transform,DCT)提出了一種DCT 驅動的低照度增強Transformer(DEFormer),將DCT 信息作為線索嵌入到網絡中,然后與YOLOv3算法結合,增加了識別準確率。雖然上述方法在檢測準確度方面表現良好,但計算量較大,夜間監控、無人機夜間飛行等場景無法提供足夠的算力支持。為了降低計算復雜度并且提高低照度目標檢測準確率,Ali 等人[18]融合脈沖神經網絡和卷積神經網絡用于低照度目標檢測,雖然該方法計算量降低了計算量,但是識別準確率相對較低。為了在保持模型輕量化的同時提高其在低照度場景下的目標檢測識別率,本文提出一種基于YOLOv8 的輕量化夜間目標檢測模型DarkYOLOv8,該模型具有計算量小和高準確率的特點,主要改進有:(1)使用MobileNet v2[19]替換YOLOv8的主干網絡,增加特征提取能力以提高模型識別精度。(2)在MobileNet v2中融入Transformer全局注意力[20],并提出一種可以監督訓練Transformer 參數的方法,使得Transformer 能夠更加準確地找出低照度環境下難辨認的目標。(3)在頸部結構中提出并使用DFFA 模塊,融合淺層和深層特征,同時使用YOLOv8X 對DFFA 模塊進行監督訓練,增強DFFA模塊的特征提取能力。
目前YOLOv8是YOLO系列最新的目標檢測算法,其具有更快的檢測速度和簡單的網絡結構。根據不同的大小,YOLOv8可分為YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x 五個版本。整體網絡結構如圖1所示,主要包括四個部分,即Input 輸入端、Backbone 主干網絡、Neck頸部網絡和Head輸出端。

圖1 YOLOv8結構Fig.1 YOLOv8 structure
在YOLOv8的主干網絡中,C2f作為特征提取模塊,由Conv、Split、n個DarkBottleneck 以及Concat 組成。其中,Concat接收Split和n個DarkBottleneck的輸出,將其拼接在一起,并使用Conv 進行特征融合。YOLOv8的Neck在YOLOv5的基礎上進行了改進,將C3模塊替換為C2f模塊。Head采用了當前主流的解耦頭結構,將分類和檢測頭分離,并且將Anchor-Based方式轉變成了Anchor-Free方式。
MobileNet v2 采用了深度可分離卷積、線性瓶頸、倒殘差設計策略。其在640×640 輸入分辨率下的主干網絡的結構如表1所示。t表示第一層1×1卷積層中卷積核的擴展倍率,c表示輸出特征矩陣的深度(通道數),n是Bottleneck(瓶頸)塊的重復次數,s表示步距。

表1 MobileNet v2主干網絡結構參數Table 1 MobileNet v2 backbone structure parameters
Bottleneck 塊是MobileNet v2 的核心結構,由倒置殘差塊和線性瓶頸層組成。如圖2 所示倒置殘差塊首先通過1×1 卷積擴展輸入通道,以增加特征的表征能力,然后使用3×3 深度可分離卷積提取特征,最后通過1×1逐點卷積壓縮通道數量。倒殘差結構在1×1壓縮卷積后使用線性操作替代激活函數,從而解決了使用倒置殘差塊之后再使用ReLU6 而失去低緯度信息的問題。當s=1 時,使用殘差連接;當s=2 時,不使用殘差連接。

圖2 MobileNet v2 bottleneck結構Fig.2 MobileNet v2 bottleneck structure
Transformer 是一種基于自注意力機制的深度學習模型,在自然語言處理(NLP)領域取得了顯著的成果。Dosovitskiy等人[21]將Transformer引入到計算機視覺中,提出了Vision Transformer 算法,并在計算機視覺領域展現出了出色的性能。Transformer 編碼器通過學習圖像塊之間的關系,生成全局的圖像表示,從而有效地捕捉圖像的全局上下文信息。Transformer編碼器由L個標準的Transformer 模塊組成,其中Transformer 由層歸一化(LN)、多頭自注意力模塊(MSA)、多層感知機(MLP)和殘差連接組成,F表示輸入,計算過程如下:
在低照度條件下,可以通過周圍的物體判斷環境中可能存在的物體,Transformer的全局信息建模能力可以從圖片的全局特征推斷出環境中可能存在目標的位置,從而對其重點關注。然而Transformer 的計算量較大,因此本文對其輸入輸出進行了修改,結構如圖3灰色區域所示,首先將輸入F使用MaxPool 進行降采樣,采樣至原始尺寸的1/8,再使用Flatten和Transpose 得到輸出F1,以降低Transformer的計算量,然后經過Transformer編碼器的計算得到輸出F2=TransformerEncoder(F1),經過Transpose、Reshape 和上采樣操作后,將F2轉化為與F相同尺寸的輸出F?,將F?和原始輸入F相加得到最終的輸出Fout,公式如下所示:

圖3 TransformerLayer結構與訓練流程Fig.3 TransformerLayer structure and training workflow
為了增加Transformer 的特征提取能力,本文提出來一種基于目標標記信息的監督學習的方法,如圖3淺綠色區域內所示,首先基于目標標記信息獲取mask 標簽,目標范圍區域內標記為1,其他位置標記為0,然后對F?使用輸入和輸出通道一致的三個3×3卷積得到F3,再對F3使用3×3 卷積將其通道降至1 并使用Sigmoid激活函數得到輸出F4,使用MSE 損失函數計算F4與mask之間的損失LossTF,具體公式如下:
低照度場景下物體由于模糊、遮擋等問題,容易被漏檢,淺層的細節特征信息對于幫助模型粗略定位物體位置至關重要,有助于發現那些不易被檢測到的目標。為此本文提出了一個動態融合淺層特征和深層特征的模塊DFFA。
如圖4 所示,首先對Neck 的第i個輸入特征NIi(Neck Inputi) 和第i個輸出特征NOi(Neck Outputi)使用Concat 和一個卷積獲取可變形卷積的偏移量offset,然后將offset和NIi作為可變形卷積的輸入得到,可變形卷積利用偏移量offset動態地將輸入特征調整到與NOi對齊,然后將和NOi拼接后使用CBS(Conv+Batch Norm+SiLU)得到,對使用CBAM注意力機制得到最終的輸出DOi(DFFA Outputi),公式如下所示:

圖4 DFFA結構與訓練方法Fig.4 DFFA structure and training method
為了增加DFFA對淺層特征的信息提取能力,本文使用YOLOv8X,并對YOLOv8X 中NOi使用CBAM注意力機制,將其權重矩陣Label1、Label2、Label3輸出作為DFFA 中CBAM 空間注意力權重wi的標簽,對DarkYOLOv8的DFFA模塊參數進行監督訓練,MSE損失函數作為損失函數,公式如式(14)所示:
DarkYOLOv8整體結構如圖5所示,使用MobileNet v2主干網絡替換YOLOv8主干網絡,在MobileNet v2的第二個Bottleneck層后加入TransformerLayer,對頸部網絡的每一層的輸入和輸出均使用DFFA模塊。

圖5 DarkYOLOv8整體結構Fig.5 Overall architecture of DarkYOLOv8
原始YOLOv8損失函數由三部分組成,分別是分類損失Losscls、DFL 損失LossDFL以及邊界框回歸損失Lossbbox,與YOLOv8不同的是,本文額外添加了Transformer的監督學習損失LossTF和CBAM監督學習損失Losscbam,本文損失函數如式(15)所示:
ExDark 數據集由Loh 等人[22]于2019 年提出,旨在為低光照條件下目標檢測算法的評估和比較提供一個具有挑戰性的基準,其檢測類別分別為自行車、船、瓶子、公共汽車、轎車、貓、椅子、杯子、狗、摩托車、人、桌子。ExDark 數據集共有7 363 張圖片,按照8∶1∶1 的比例劃分訓練集、驗證集和測試集,訓練集、驗證集和測試集分別有5 890、736和737張圖片。
實驗在Ubuntu22.04 LST操作系統下,搭配NVIDIA RTX3090顯卡,Pytorch1.13深度學習框架以及Python3.8編程語言進行,未使用預訓練權重。超參數設置如表2所示。

表2 實驗參數Table 2 Experimental parameters
本文采用mAP評價指標、GFLOPs和FPS來衡量模型效果。
平均精度(mean average precision,mAP)是一種常用于評價目標檢測算法性能的指標,檢測算法計算在不同類別目標上指定IoU的準確性和召回率,計算不同類別的AP值,并計算各個類別AP的平均值則得到在指定IoU 下的mAPIoU。本文使用mAP0.5:0.95 和mAP50兩種評價指標,mAP50表示IoU閾值為50%時的mAP;mAP0.5:0.95表示在不同的IoU閾值(從0.5到0.95,步長0.05)下的平均mAP。
FLOPs(floating point operations)是一種衡量深度學習模型計算復雜度的指標。它表示在模型推理過程中進行的浮點運算的總數量,包括加法、乘法和其他浮點操作。
FPS(frames per second)表示目標檢測模型在一秒鐘的時間內能檢測圖片的數量,高FPS對實時目標檢測系統至關重要。
為驗證本文所提算法在低照度場景下檢測性能的優越性,在ExDark數據集下,將DarkYOLOv8與目前主流的目標檢測算法、針對低照度場景下的目標檢測算法IA-YOLO、ZeroDCE+YOLOv5_DC、FISNet 以及低光照增強算法+YOLOv8n 進行對比,結果如表3 所示,其中mAP表示mAP0.5:0.95。

表3 對比實驗Table 3 Comparative experiments
可以看出,DarkYOLOv8在低照度條件下表現出明顯的優勢,它在計算量保持較低水平的同時,在mAP和mAP50指標上均領先。與專門設計用于低照度條件的目標檢測算法ZeroDCE+YOLOv5_DC、IA-YOLO 以及FISNet 和相比,DarkYOLOv8 的mAP 分別領先了2.4、3.6 和3.3 個百分點。這些結果表明DarkYOLOv8 在低照度條件下具有出色的性能。
為了驗證不同的改進方法對模型的影響,本次研究采用了逐步添加改進方法的消融實驗,并在ExDark 測試集上進行了性能比較,其中BASE 表示YOLOv8n 算法,M1表示使用MobileNet v2作為主干網絡,M2表示使用Transformer 注意力機制,M3表示使用DFFA 模塊,實驗結果如表4 所示。結果表明,YOLOv8n 算法mAP50為66.2%,GFLOPs 為8.2。將MobileNet v2 替換原始YOLOv8 的主干網絡后,增加了提取圖片特征的能力,mAP50提高了1.6 個百分點,GFLOPs 僅增加了0.19。使用Transformer 全局注意力后,模型能夠在淺層獲取圖片的全局特征信息,mAP50增加了0.6 個百分點,由于使用了下采樣操作,因此計算量僅增加了0.01。引入DFFA模塊后,模型通過利用淺層特征細節信息獲取更加細膩的特征信息,mAP50增加了1.1個百分點。對Transformer和DFFA 模塊使用監督學習后mAP50增加了0.6 個百分點,由于損失計算僅在訓練過程中進行,因此沒引入推理時的計算量。相對于YOLOv8n 算法,DarkYOLOv8算法在增加了僅0.33GFLOPs 的情況下,mAP50指標提高了3.9個百分點,同時推理時間僅略微增加,表明其適用于實時場景。

表4 消融實驗Table 4 Ablation experiments 單位:%
為了展示Transformer 的全局建模能力,本文將主干網絡輸出的特征圖使用熱力圖可視化技術進行可視化展示,以便于觀察模型關注的區域,結果如圖6所示,圖6(a)是原始圖片,圖6(b)顯示采用YOLOv8n進行可視化處理的結果,圖6(c)展示了使用DarkYOLOv8進行可視化處理的效果。圖中顏色越紅的區域表示對檢測結果的貢獻越大。YOLOv8n更加注重目標位置的特征信息,而DarkYOLOv8會同時利用環境特征和目標所在位置的特征捕捉目標的信息。這表明Transformer能夠更充分地利用圖片中的上下文信息,從而提升對物體的檢測和理解能力。
為了直觀呈現改進后算法的檢測效果,本研究針對測試集中的檢測難度較大情景進行了檢測結果可視化分析。如圖7所示,分別給出了YOLOv8和DarkYOLOv8的檢測結果,在目標與環境界限不清晰、模糊和明暗差異較大等挑戰性場景YOLOv8n均表現出較差的檢測效果,每張圖均存在漏檢情況,在明暗差異較大的場景下無法檢測出圖中的兩只黑貓,而DarkYOLOv8在目標與環境界限不清晰和明暗差異較大的場景中均能正確地檢測出所有目標。在模糊場景中,DarkYOLOv8也展現出更優異的檢測效果,減少了漏檢情況。由此可以得出結論,DarkYOLOv8 具有更加優異的檢測效果,即使是面對極端場景也具備優異的檢測效果。

圖7 YOLOv8n與DarkYOLOv8在低照度情況下目標檢測效果Fig.7 YOLOv8n and DarkYOLOv8 target detection effect under low illumination
本文提出一種基于YOLOv8的輕量化的DarkYOLOv8低照度目標檢測算法,針對低光條件下目標容易被漏檢且目前主流低照度目標檢測算法計算量較大的情況,首先引入MobileNet v2主干網絡,替換原始YOLOv8主干網絡,MobileNet v2能夠獲取到低照度環境下的目標的更多的特征信息,提升檢測準確率,然后將Transformer-Layer 放置在主干網絡的第二個和第三個Bottleneck 層之間,使模型在早期就能獲取到圖片的全局特征信息,同時使用監督學習更加準確地增強目標范圍內特征的權重,進一步提升了檢測性能,提高低照度下目標與環境間的區分度,最后使用DFFA模塊融合頸部網絡淺層特征和深層特征,使用特征細節信息增加低照度場景下目標檢測準確率。實驗結果表明,在FPS為153仍能應用于實時場景的情況下,本文所提出的DarkYOLOv8算法在ExDark數據集上mAP50達到了70.1%,與YOLOv8n以及其他低照度場景下的算法相比,DarkYOLOv8算法在滿足實時應用場景的同時有效改善了目標檢測精度。