田楓,白欣宇,劉芳,姜文文
(東北石油大學 計算機與信息技術學院,黑龍江 大慶 163318)
隨著深度學習等大量智能算法的出現以及計算機性能的不斷提升,使用智能算法對監控視頻進行快速分析成為可能。在我國各大油田由建設數字化油田轉變建設智慧油田的背景下,油田危險區域入侵智能綜合識別技術徹底取代了基于人力監控油田的高成本低準確率的方式,為油田安全提供了有力保障,但油田作業區設備算力有限,攝像頭數量達上百路,如何在保證模型精度的基礎上,減少模型的參數量,盡可能地提高模型的運算速度是目前亟待解決的問題。
目前基于深度學習的目標檢測算法根據預測的流程可以分為兩類[1]:第1 類為基于回歸的深度卷積的目標檢測算法,代表性的算法有YOLO(you only look once)系列的YOLOv3[2],其使用深層的特征提取網絡Darknet-53[2]以及3 個尺度的特征圖進行邊界框的預測,同時增加了anchor的數量,YOLOv4[3]提出使用CSPDarknet53[3]來替換主干網絡并采用多種訓練策略,YOLOv5[4]設計了兩種CSP 結構來適應不同的任務,并加入Focus 做切片操作提高速度。YOLO 系列算法在不同比例的目標尺度上泛化性能不好,需要多次下采樣來獲取標準特征。SSD (single shot multibox detector)目標檢測算法是基于前饋卷積網絡,其特征提取基礎網絡中每個特征層用于檢測的卷積核大小是不同的,卷積后可以得到多個尺度檢測的預測值,以實現圖像的多尺度檢測,它使用非極大抑制(non maximal suppression,NMS)算法對預測結果進行處理后獲得最終檢測結果。Fu 等[5]在SSD 算法的基礎上提出了反卷積單階段多框探測器DSSD 算法,在分類回歸之前引入了殘差模塊,加深了網絡層數。該算法有效地聯系上下文,將各類語義信息進行融合,提高了檢測精度。Jeong 等[6]研究提出了一種RSSD 融合算法,該算法通過特征圖池化加反卷積的操作方式進一步融合不同層的網絡特征,池化與特征圖加反卷積[7]的步驟同步進行,有效地解決了原始SSD 特征圖中存在重復框的問題,同時提升了小目標物體檢測的成功率。Li 等[8]提出FSSD,該算法將網絡中部分特征調整為同一尺寸再進行連接,得到一個像素層,并以此層為基礎層來生成特征金字塔。第2 類是基于候選區域的深層卷積神經網絡目標檢測算法,代表算法有R-CNN[9]、R-FCN[10]、Fast R-CNN[11]和Faster R-CNN[12],將目標檢測分為兩步,先通過區域建議算法生成可能包含目標的候選區域,再通過CNN 對候選區域進行分類和位置回歸,得到最終的檢測框。這類算法需要逐個處理產生的候選框[13],檢測速度受到限制。
經篩選,YOLOv5 是目前目標檢測中平衡速度與精度最好的算法,本文針對YOLOv5 參數量多,計算量大的問題進行改進,提出結合深度可分離卷積的跨階段卷積模塊與改進的SE[14](squeeze-and-excitation)通道注意力模塊的算法模型,并使用DIOU-NMS[15](distance intersection over union-non maximum suppression)中心歸一化非極大值抑制算法進行特征推理;提出OilPerson 數據集(油田現場工人數據集),最后使用TensorRT 加速與射線法共同完成區域入侵的判定。本文算法在油田作業現場應用良好,有效保障油田施工人員的生命財產安全。
YOLOv5 的網絡結構如圖1 所示,YOLOv5在Backbone(特征提取網絡部分)中使用Focus 結構減少計算量。使用CSPNet[3]的CSP 模塊,增加CNN 的學習能力,降低計算瓶頸并節約內存成本。使用SPPNet[16]的特征金字塔模塊,將卷積神經網絡的輸入轉化為任意尺寸。

圖1 YOLOv5 檢測網絡結構Fig.1 YOLOv5 detection network structure
在Neck(特征融合部分),采用FPN 和PAN[17]結構,使用自上而下的路徑和橫向連接以及自底向上的路徑增強,對語義信息與定位信息進行特征融合,用以提高多尺度檢測的準確性。
在Prediction(特征預測部分),在特征圖上應用錨定框生成帶有類概率、對象得分和包圍框的3 種不同大小的特征圖向量。使用NMS[2]檢測算法對同一目標產生多次檢測的結果進行推理,保證每個目標只檢測一次,找到檢測效果最好的框。
普通卷積模塊在進行卷積操作時,同時在空間和通道兩個維度進行,而深度可分離卷積[18]在空間和通道兩個維度分開進行卷積操作,形成了空間維度的逐層卷積和通道維度的逐點卷積兩個部分。具體來說,它將標準卷積分成了2 步,即3×3的逐層卷積和1×1 逐點卷積,如圖2 所示。

圖2 深度可分離卷積Fig.2 Depth separable convolution
這種分解方式明顯地減少了計算量。Mobile-Netv2[19]則在此基礎上,為了改進3×3 的逐層卷積在低維空間提取特征效果較差的缺點,在逐層卷積前多加入了一個逐點卷積,如圖3 所示,進而完成對卷積神經網絡中的特征圖升維。

圖3 Inverted residuals 模塊Fig.3 Inverted residuals bottleneck
在逐點卷積的末尾去掉了激活函數,此結構即線性瓶頸模塊。MobileNetv2 由多個瓶頸模塊堆疊成,其速度與準確率均得到了提升。
本文提出的網絡結構如圖4 所示,相對于原YOLOv5 模型,在Backbone 特征提取部分由多個深度可分離卷積與線性瓶頸模塊堆疊而成,使用Inver 在圖中進行表示。將線性瓶頸模塊與跨階段局部殘差網絡結合形成跨階段線性殘差模塊,大幅減少了模型的運算量,在每個特征金字塔采樣前使用改進的SE 模塊提高模型定位精度,使用SE-h-sigmoid 來表示,最后在Prediction 特征推理部分使用DIOU-NMS[15]替換NMS,使得其避免重疊度較高的同類目標出現漏檢的問題。此模型在YOLOv5 的基礎上降低了模型參數量。

圖4 網絡結構Fig.4 Network structure
2.1.1 本文卷積模塊
DConv逐層卷積與PConv逐點卷積的計算成本如式(1)所示:

式中:CM代表輸入通道的數量;CN代表輸出通道的數量;DK代表卷積核大小;DF為特征映射圖。深度可分離卷積與標準卷積的計算成本的比例如式(2)所示:

使用3×3 的深度可分離卷積時,在少量降低精度的前提下,計算量相對于標準卷積減少8 倍以上。
Inverted Resblock 結構在輕量化網絡方面有較好的性能表現,但Sandler 等[19]解釋線性瓶頸模塊存在梯度混淆的情況,同時1×1 的卷積減少了空間信息,本文根據線性瓶頸模塊中存在的問題將CSPNet 的跨階段局部模塊與MobileNetv2的線性瓶頸模塊進行融合,形成跨階段線性瓶頸卷積模塊。輸入的特征映射分為兩個分支,分別進行特征提取,其中一支后接Inver 卷積模塊,進行進一步特征提取,然后將兩分支通過級聯操作進行合并。
如圖5 所示,本文使用的CSP-Inver 卷積塊由兩條分支組成,上面的分支首先經過3×3 卷積,然后經過Inver 卷積,與下面的3×3 卷積的分支進行concat 操作。因兩個分支的梯度信息不同,不會出現重復的梯度信息情況,利于學習到更優的梯度信息。此外,級聯操作是對卷積結果的拼接,不含矩陣計算,因此不會增加過多的計算量。

圖5 CSP-Inver:跨階段線性瓶頸模塊Fig.5 CSP-Inver:Cross phase linear bottleneck module
從計算量的角度分析,若線性瓶頸卷積模塊中共x個卷積模塊,則卷積層的輸入輸出的內存流量可記為xcout+,再引入CSP 后可記為(xcout+(x2+x))/2,通過式(3)可計算出使用CSP 后減少的計算量比例。融合后線性瓶頸卷積模塊的輸入輸出的內存流量減少近一半。

因此將重新構成的跨階段線性瓶頸模塊與通道注意力模塊融入YOLOv5 網絡結構中,因使用CSP-Inver 卷積塊的Inver 部分先進行1×1 逐點卷積,然后進行3×3 的逐層卷積與1×1 的逐點卷積取代普通卷積,因此大大減少了網絡模型的復雜度。
跨階段線性瓶頸模塊大幅降低了計算量,減少了模型參數量,但也存在著局限性,當檢測小目標物體或目標物體被遮擋時檢測精度并不高,出現此問題的原因分析如下:
對于一幀輸入圖像而言,其多尺度特征圖在YOLOv5 網絡模型中的數學定義如式(4)、(5):

式(4)中:函數sn代表第n層特征圖與第n?1層特征圖之間的非線性映射函數,其中函數主要操作有3 個,分別為池化、卷積和非線性激活函數操作;Fn表示第n層的特征圖;s1(t)中的t表示輸入圖像,1 表示第1 層特征;sn(t)表示輸入圖像和第n層的特征圖之間的非線性函數。再用非線性函數對特征圖進行卷積操作,并獲得最終的檢測結果對應的非線性函數,在式(5)中用f(·)表示;采用非線性映射的方法對第n層特征圖進行處理,進而可以獲得位于某一范圍內的檢測結果,這個結果用rn(·)表示。
由式(4)、(5)得,因不同的特征層對應多種不同尺度大小的目標結果,為保證所獲得的檢測結果更加準確,通常需要應用各種非線性函數,需要保證網絡結構中的每一層特征圖包含更多的有效信息。因此以跨階段非線性紡錘形模塊構建特征提取網絡,更加需要全局信息進行特征篩選,對重要特征強調并對非重要特征進行抑制,所以本文在多尺度特征金字塔的每個尺度中,需要添加改進的通道注意力機制,增強整個網絡的表示能力,進而對小目標物體或被其他物體遮擋的目標物體進行較為準確的檢測。
2.1.2 改進的SE 通道注意力機制
特征金字塔網絡結構雖然可以通過提取不同尺寸的特征信息來增加感受野,但是金字塔網絡在將具有很強代表性和區分性的高層語義信息通過上采樣操作傳遞到其他層時,高層語義信息將會被逐漸淡化[20],但高層語義信息因其區分性與強代表性能夠更好地識別物體類別。為解決這個問題,通過在特征金字塔中加入通道注意力層,如圖6 所示,該模塊建立在自底向上路徑的末端,通過通道注意力層,對重要的語義信息給予更多的關注,這些包含有效語義信息的多尺度特征經過通道注意力層的處理后,在自頂向下的過程中連接在一起,補充自上而下的高級語義信息。

圖6 通道注意力特征金字塔Fig.6 Pyramid of channel attention characteristics
在每個特征金字塔的不同尺度模塊采樣前加入SENet 網絡模塊作為注意力機制,通過增強建模通道之間的相互依賴關系,自適應地調整通道的特征響應,但通道注意力機制結合特征金字塔帶來了部分計算參數與模型參數,降低了模型的運算速度,增加了模型的運行內存。因此對SE通道注意力機制進行改進,少量增加計算量的同時對重要特征進行強調。
改進前的SE 通道注意力機制主要步驟:對輸入的特征圖進行全局平均池化,得到長度等于通道數M的實數列Zgap。在壓縮率r=16 的情況下對特征圖X=[x1x2···xn]進行全局平均池化,得到Fgap,計算過程如式(6)、(7)所示:

式中:F1為進行降維的全連接層,F1∈;F2為升維的全連接層,F2∈;C為特征圖的索引。
原始的SE 卷積注意力模塊的最后一層使用sigmoid函數激活,在反向傳播更新梯度時,求導做除法運算更加消耗資源。因為 sigmoid激活函數其指數運算具有以上缺點,如式(7)所示:

所以使用由 Relu[20]激活函數表示的分段線性函數hsigmoid[21]降低部分計算成本,改進SE 通道注意力機制,R代表 Relu6[20]激活函數,如式(8)所示:

生成每個通道對應的權重信息S=[s1s2···sc],h代表hsigmoid 函數,如式(9)所示:

根據權值對輸入的特征圖加權更新,得到更新后的通道特征Y=[y1y2···yc],如式(10)所示:

更換hsigmoid 激活函數的SE 通道注意力,如圖7 所示。

圖7 更換激活函數后的通道注意力Fig.7 Channel attention after changing the active function
因YOLOv5 是由自頂向下的特征提取網絡和自底向上的多尺度目標檢測網絡兩部分組成,前者負責提取的是輸入圖像的低層細節特征,后者從前者的低層特征中提取高級的語義特征,然后將不同尺度的高級特征與相對應尺度的低層特征通過特征金字塔進行結合,實現了多尺度的目標檢測。
因此在特征提取網絡中的特征金字塔的采樣模塊前使用改進的SE 注意力模塊,能夠更好地利用全局信息進行特征篩選,對重要特征強調并對非重要特征進行抑制,增強了整個網絡的表示能力。
2.1.3 DIOU-NMS
本文使用DIOU-NMS 替換YOLOv5 的NMS,提升檢出率。YOLOv5 使用的NMS 其IOU 指標常用于抑制冗余框,遮擋時重疊區域經常導致NMS 產生錯誤抑制。IOU 如式(11)所示:

式中:Bgt=(xgt,ygt,wgt,hgt)代表真實的邊界框;B=(x,y,w,h)為預測框。
DIOU 在IOU 的基礎上增加了一個懲罰項,該懲罰項用于最小化兩個box 的中心點距離,如式(12)所示:

式中:ρ是歐幾里得距離;c是覆蓋兩個框的對角線長度;b、bgt分別是B、Bgt的中心點。
對于預測分數較高的box,DIOU-NMS 除考慮重疊區域外,還將兩個檢測輸出的box 的中心點距離作為考慮因素,DIOU-NMS 如式(13)所示:

式中:si代表分類得分;ε為NMS 閾值;M為得分最高的box。因為考慮中心距離,DIOU-NMS 不抑制兩個中心點較遠、得分較高的box,并將其識別為兩個目標對象。通過這個方式可提升檢出率。
考慮不同視角下的攝像頭位置含有景深信息,而非僅有俯視的二維表面,在傾角較小或者近似平行的攝像頭位置中,僅根據檢測目標與區域判斷是否發生重合來判定是否發生區域入侵并不準確。
人物是否走入危險區域內,通過人物落腳點的位置進行判斷。因此考慮人物的落腳點是否在危險區域內,如圖8 所示,先通過目標檢測獲取目標位置,然后將人物踏入危險區域的區域入侵問題抽象成為落腳點與危險區域多邊形是否相交的問題,即判斷落腳點是否在不規則多邊形內。

圖8 射線法Fig.8 Ray method
計算油田工人落腳點Px,如式(14)所示:

式中:b為獲取到的檢測框坐標函數,x1、y1為中心點的坐標,h為輸出的定位框的高。
對于平面內任意閉合曲線,曲線都把平面分割成了內、外兩部分。在平面內對于任意一條直線,在穿越多邊形邊界時,僅有兩種情況:進入或穿出多邊形。因此本文設計射線法進行區域入侵的判斷。
如圖9 所示,因在不同視角下的攝像頭位置含有景深信息,例如:90°、60°、30°攝像頭位置懸掛下,同一危險區域映射到攝像頭圖像的位置不同,若僅憑借目標檢測框與危險區域的面積計算交并比這一方式判斷目標發生危險區域入侵不可取,本文以射線法判別目標是否處于危險區域中,即判別目標的落腳點是否位于不規則的危險區域對邊形中,進行區域入侵判斷,這樣可以有效解決不同視角下的攝像頭是否發生危險區域入侵問題。

圖9 不同角度的危險區域Fig.9 Dangerous areas from different angles
根據式(15)判斷是否發生多邊形區域入侵:

式中:q為點Px向任意方向做射線;s表示求和;x為自定義危險區域;R表示發生區域入侵;%2 表示與2 相除后取余數。當目標在畫面中出現時,如圖10 所示,從目標的落腳點對任意方向做射線,當射線的交點個數為奇數時發生區域入侵。

圖10 判斷點是否在多邊形內Fig.10 Determine whether the point is in the polygon
實驗硬件環境:硬件平臺為聯想工作站,i7-6 700 3.4 GHz CPU、NVIDIA CTX 3 080 GPU,操作系統為Ubuntu 18.04。軟件環境:程序編寫語言為Python3.7。
使用Mosaic[22](馬賽克)數據增強策略隨機改變訓練樣本,隨機讀取4 張訓練圖像,進行反轉和旋轉操作,組合成為一張訓練圖片,提高模型的泛化能力。batch-size(每批訓練的圖片量)設置為32,momentum(動量值)設置為0.9,學習率(learningrate)初始值為0.000 1,通過余弦退火策略[23]調整學習率,權重衰減參數為0.005,epoch 設置為300。
本文選用PASCAL VOC2007[24]和PASCAL VOC 2012 數據集聯合訓練模型,圖片數量為16 551張,在測試過程中選擇的是PASCAL VOC 2007 測試集,圖片數量為4 952 張。本文選用的評價指標為:檢測精度(mean average precision,mAP)、運行速度(frames per second,f/s)、模型大小(model size)。
表1 實驗結果顯示,網絡結構復雜的模型檢測準確率高,但檢測速度較慢。輕量級檢測網絡優點是檢測速度較快,缺點是檢測的準確率低。在模型體積類似的YOLOv3-tiny 和YOLOv4-tiny 中,mAP 分別提高了17.8%和9.6%,其主要原因是本文的級聯基于深度可分離卷積的線性瓶頸模塊與改進的SE 通道注意力模塊在特征金字塔上的使用,彌補了特征提取能力不足的問題,增強了模型對特征的利用率,提高了準確率。使用DIOU-NMS 替換YOLOv5 的NMS 增強了模型的推理能力,避免了在目標距離較近情況下的錯誤抑制,提升了準確率。對訓練集使用Mosaic 處理豐富了物體的背景,提高了模型的泛化能力。

表1 不同網絡在VOC 數據集的評價值Table 1 Evaluation value of different models in VOC dataset
在VOC 數據集上的消融實驗如表2 所示,用√表示使用當前模塊,在僅使用CSP-Inver 卷積代替CSP 卷積減少了模型的參數量,但模型精度有所下降。在基準網絡中加入FPN-SE 模塊(即在特征金字塔進行特征融合前的卷積模塊使用通道注意力機制),mAP 提高了2.3%,說明本文使用的FPN-SE 模塊能增強特征提取能力,但也帶來了2.7 MB 的模型參數量;使用FPN-SE-h-sigmoid 模塊替換FPN-SE 模塊,在保證檢測精度的同時,減少了0.5 MB 的模型參數量。加入DIOU-NMS 進行特征推理后,在不增加網絡參數的前提下,mAP 提高了0.5%。實驗證明:CSP-Inver 卷積大大減少了模型的參數量,FPN-SE-h-sigmoid 與DIOU-NMS 模塊在提升模型精度的同時少量增加模型參數,保證了模型的運行速度。

表2 本文消融實驗Table 2 Ablation experiments
油田場景中,背景復雜,因油田工人著裝為紅色所以易與紅色集裝箱、抽油機等設備混淆,且油田作業中,工人作業姿態復雜,例如在擰天然氣或石油閥門時側擰、下蹲等作業姿態。因此對油田中典型的復雜場景(輸油泵房、輸氣泵房、石油閥門、H2S 鉆井口、天然氣閥門、抽油機、油水分類器、鉆井平臺、電力高壓間、露臺/密閉泥漿池、原油倉庫)進行視頻采樣(約30 000 張)。針對工人在遠景攝像頭中目標較小、數量密集、作業姿勢復雜等問題,人工制作油田作業現場工人數據集20 000 張,覆蓋油田大部分復雜場景。
本文劃分訓練集、測試集、驗證集的標準為:覆蓋本油田下全部復雜場景、多種攝像頭傾角、多種人員作業姿態。Oilperson 數據集按照60%、20%、20%的比例進行劃分。
Oilperson 實驗結果如表3 所示,本文算法模型較其他模型,在大幅減少模型參數的情況下保證了檢測精度,證明了其對油田場景的有效性。實驗結果顯示,在Oilperson 油田工人數據集中,因標注的數據集覆蓋所有場景、多種作業人員姿態以及不同傾角和不同尺度的目標,所以各個檢測算法在本數據集上的檢測結果均有提升,驗證了本文Oilperson 對油田工人檢測的有效性。本文檢測算法mAP 為89.9%,模型大小為7.65 MB,運行速度為140 f/s,與表3 中其他輕量化模型算法相比,速度、模型參數量達到最優。

表3 不同網絡在Oilperson 數據集上的評價值Table 3 Evaluation value of different networks on Oilperson dataset
圖11 的檢測結果顯示,各個場景的作業人員都有較高的檢測準確率。針對遠景小目標,對比其他輕量化算法具有較好的檢出率,驗證了本文數據集的有效性以及本文算法的魯棒性。

圖11 油田不同場景的檢測效果Fig.11 Detection effect of different scenes in Oilfield
將生成的模型經過TensorRT 進行int8 類型的量化。經過對500 張圖片進行測試,模型平均處理一張圖片的時間為1.34 ms。
TensorRT[24]加速后的模型與射線法進行結合,共同進行區域入侵的判定,不同場景的入侵結果如圖12 所示。
在河北唐山冀東油田進行危險區域入侵算法的部署與測試:在不同攝像頭傾角、不同的目標大小、不同的危險場景下,結果圖12 所示。其中,圖(a)攝像機為俯角,劃定油罐車上方為危險區域,當工人進入此區域時本算法判定為發生區域入侵;圖(b)攝像機為俯角,閥門的正前方區域設置為危險區域,當工人停留時間達到5 s 時,算法判定為發生區域入侵(工人可能在正擰閥門,而正擰閥門是一種錯誤的操作行為,當閥門壓力過大時,易導致閥門噴出致人受傷死亡);圖(c)攝像機為平角,加熱爐下方危險區域禁止進入,發生入侵;圖(d)攝像機為俯角,在近海區域發生翻墻行為,油田工人抄近路易造成危險,本算法判定發生區域入侵并顯示工人的行蹤軌跡。

圖12 區域入侵效果Fig.12 Regional intrusion effect
本文使用基于深度可分離卷積的線性瓶頸模塊與CSP 跨階段局部特征模塊級聯形成CSP-Inver(跨階段線性瓶頸模塊),大幅減少了模型參數,提高了運算速度。每個特征金字塔的特征融合層添加改進的通道注意力模塊,提高了模型的特征提取能力。特征推理部分使用DIOU-NMS 減少了誤檢次數。經過TensorRT 加速后,本文模型與射線法結合,在多種角度、不同景深信息的攝像頭下進行部署應用。部署結果顯示,本文算法在冀東油田作業現場應用良好,有效地保障了油田施工人員的生命財產安全。