魏 龍,王 羿,姚克明
(江蘇理工學院電氣信息工程學院,江蘇常州 213001)
隨著機器視覺和深度學習的發(fā)展,目標檢測算法應用越來越廣泛,可進行工件檢測[1]、布匹瑕疵檢測、行人檢測[2],車輛檢測[3]以及醫(yī)學影像分析[4]等。
目前常用的深度學習目標檢測算法主要有:two stage方法,如Faster R-CNN[5]、Mask R-CNN[6]等通過對樣本圖像生成一系列預測框,利用卷積神經(jīng)網(wǎng)絡進行分類和回歸實現(xiàn)預測;one stage 方法,如SSD[7]、YOLO[8]等直接對圖像進行檢測生成預測框,通過回歸輸出預測結果。后者在檢測速度上有很大優(yōu)勢,對一些需要實時檢測的場景十分有效。
一般目標檢測通過多層卷積神經(jīng)網(wǎng)絡進行特征提取可以獲取豐富的語義信息,進而實現(xiàn)對目標的檢測。對于小尺寸目標,由于在圖片中占有的像素點較少導致有效特征不足,檢測往往比較困難并出現(xiàn)漏檢情況。針對小目標檢測精度不高的問題,Liu 等[9]提出圖像金字塔和逐層預測方法對小目標特征層進行定位。但該方法對計算機硬件和計算能力要求非常高,因此使用較少;Bell 等[10]參考RNN 算法中的長短期記憶,記錄多層的特征信息對小目標進行預測,但由于該方法固有速率比較慢而實用性不高。
本文基于YOLO v4 網(wǎng)絡,對原網(wǎng)絡的目標檢測層和卷積結構進行改進,提出一種多尺度目標檢測和深度可分離卷積的特征提取算法,對高分辨率大圖片的檢測進行優(yōu)化,增加了一種自適應先驗框,在保證檢測速率的精度前提下,提升對高分辨率圖片里的小目標和低分辨率圖像檢測效果。
YOLO 算法本質是一種目標回歸問題,其檢測過程是將輸入圖像劃分為一定的網(wǎng)格,對整個圖片進行一次遍歷,當每個網(wǎng)格中檢測到目標時就根據(jù)當前網(wǎng)格的先驗框繪制出預測框,進而直接預測出目標結果。
YOLO v1 算法將圖像劃分為7×7 的網(wǎng)格,每個網(wǎng)格有兩個預測框,根據(jù)預測框的IOU 直接給出結果;YOLO v2[11]是將圖像劃分為13×13 的網(wǎng)格,每個網(wǎng)格有5 個先驗框(an?chor box),根據(jù)先驗框的結果進行邊框回歸最后繪制出預測框(bounding box);YOLO v3[12]和YOLO v4[13]在之前的基礎上增加3 個不同尺度的預測網(wǎng)絡,分別對應13×13、26×26、52×52 的網(wǎng)格,用來檢測大目標中的中等目標和小目標,每個預測網(wǎng)絡分別有3 個預設好的先驗框。當檢測到目標后在不同的預測網(wǎng)絡上進行邊框回歸,最后輸出預測框結果。
YOLO v4 的檢測網(wǎng)絡主要由CSPDarknet53 網(wǎng)絡、SPP[14]和PANet[15]組成。CSPDarknet53為主干特征提取網(wǎng)絡,主要由CBM 卷積網(wǎng)絡模塊、CBL 卷積網(wǎng)絡模塊和CSP[16]殘差網(wǎng)絡模塊構成。SPP 為特征金字塔網(wǎng)絡,將輸入的任意圖像大小最終統(tǒng)一到寬高大小由CBL 卷積網(wǎng)絡模塊和Max?pool 組成。PANet 為特征增強網(wǎng)絡,主要采用上采樣和下采樣對不同的特征層進行特征融合,輸出更高語義信息。
CBM 卷積網(wǎng)絡模塊由卷積網(wǎng)絡、標準化和Mish[17]激活函數(shù)組成,如圖1 所示。
Fig.1 CBM convolution network module圖1 CBM 卷積網(wǎng)絡模塊
CBL 卷積網(wǎng)絡模塊由卷積網(wǎng)絡、標準化和Leaky Re?lu[18]激活函數(shù)組成,構成如圖2 所示。
Fig.2 CBL convolution network module圖2 CBL 卷積網(wǎng)絡模塊
CSP 殘差網(wǎng)絡由殘差網(wǎng)絡塊(Res unit)、CBM 卷積塊和大殘差邊組成,構成如圖3 所示。
伴隨企業(yè)的運行及發(fā)展,在企業(yè)集團運行中,戰(zhàn)略性成本管理作為較為重要的內容,是企業(yè)經(jīng)濟發(fā)展的保障。在企業(yè)運行中,若只是依靠短期成本降低是無法滿足企業(yè)發(fā)展需求的。在成本管理中,應該結合成本管理的理念,轉變以往的成本核算以及成本經(jīng)營控制機制,結合企業(yè)成本管理工作的特點,進行成本管理策略的完善,逐漸提高企業(yè)的經(jīng)濟性,為企業(yè)成本功能、成本質量以及成本管理的制度完善提供參考。
Fig.3 CSP residual network圖3 CSP 殘差網(wǎng)絡
其中Res unit 為進行n 次殘差網(wǎng)絡的殘差結構,構成如圖4 所示。
Fig.4 Res unit圖4 Res unit
YOLO v4 主干特征提取網(wǎng)絡中,CBM 卷積模塊通過多次下采樣獲取較高的特征信息。在特征融合網(wǎng)絡中具有較高語義信息的特征層進行上采樣融合時,CBM 卷積模塊會有一定的信息丟失,因此對于小目標的檢測準確度會降低,所以考慮在特征提取和特征融合網(wǎng)絡中采用一種深度可分離卷積塊替換原YOLO 網(wǎng)絡中的普通卷積塊,盡可能多地保留較高的特征信息。
深度可分離卷積[19]模塊實現(xiàn)過程:對特征層所有的通道先進行1×1 的卷積升維,再進行一定大小的卷積得到所需要的特征大小。與普通卷積相比,深度可分解卷積在深層次網(wǎng)絡中可以大大減少網(wǎng)絡參數(shù)量,加快計算過程,并且可以同時考慮通道數(shù)和特征區(qū)域大小的改變,實現(xiàn)了通道和區(qū)域的分離。經(jīng)過深度可分離卷積后進行標準化和Swish 激活函數(shù)過程,深度可分離卷積模塊構成如圖5 所示。
Fig.5 Depth separable convolution module圖5 深度可分離卷積模塊
在深度可分離卷積塊完成后引入注意力機制(Atten?tion Mechanism)[20],對深度可分離卷積后的特征層實行通道注意力機制,同時在深度可分離卷積后引入殘差邊。
注意力機制過程:對輸入的特征層進行全局池化操作,Reshap 后先進行1×1 的卷積對通道數(shù)降維,接著進行1×1 的卷積,使注意力機制的通道數(shù)與輸入的特征層通道數(shù)相同。將兩個通道數(shù)相乘即可成功加入注意力機制,對相乘的結果通過Sigmod 函數(shù)將輸出值固定在0~1 的范圍內。
對加入注意力機制的特征層進行1×1 卷積并進行標準化,同時判別是否滿足殘差條件,判別輸入的特征層進行卷積時的步長是否一致。卷積的步長不同會改變特征層的長寬,造成特征層維度不同;另一個條件是特征層通道數(shù)必須相同,只有特征層的維度和通道數(shù)都相同時,將該殘差邊進行特征層相加,完成殘差結構輸出。
在YOLO v4 網(wǎng)絡中對小目標進行預測的特征層為52×52,當輸入圖片為416×416 時可以檢測到的最小像素值為8×8,若輸入的圖片尺寸過小,YOLO 網(wǎng)絡會將圖像自動放大,圖像中的小目標會產(chǎn)生失真導致無法準確檢測。本文考慮在原預測網(wǎng)絡中增加104×104 的特征層,將在主干特征提取網(wǎng)絡進行兩次下采樣后得到的特征層,與其余特征層通過CBL 卷積塊上采樣特征匹配后進行向量融合,得到更豐富的語義信息。再將該特征層進行下采樣傳遞,輸出104×104 的特征層進行預測,這樣可以使特征預測網(wǎng)絡更加細致,檢測范圍更廣泛。改進后的YOLO 網(wǎng)絡結構如圖6所示。
Fig.6 Improved YOLO v4 network圖6 改進的YOLO v4 網(wǎng)絡
在YOLO v3 的預測網(wǎng)絡中,每個預測特征層都有3 個預先設定好的先驗框,在訓練過程時根據(jù)訓練圖片中目標尺寸的大小選擇合適的先驗框進行邊框回歸輸出預測框。YOLO V4 網(wǎng)絡中加入了K-means 聚類方法,對所有預先標定好真實框的訓練數(shù)據(jù)通過聚類到合適的先驗框,再根據(jù)聚類后的先驗框進行數(shù)據(jù)訓練,使預測框的結果更接近標注的真實框。由于實際數(shù)據(jù)中小目標的標注在所有數(shù)據(jù)中占比不大,通過固定的先驗框和聚類得到的先驗框在預測時會忽略小目標標注框,所以預測框結果對小目標效果不佳。
YOLO 檢測過程:將輸入的圖像大小固定到一定尺寸然后進行目標檢測,當YOLO 網(wǎng)絡的輸入為416×416 時進行采樣。負責檢測小目標的大特征層為52×52,每個特征網(wǎng)格對應圖像的感受野為416/52=8,8×8 大小。當輸入圖像大小為1 920×1 080 時,通過YOLO 網(wǎng)絡壓縮對應長邊為1 920/416×8=37,即當目標特征大小小于37 像素點時將無法學習特征信息。
對火災進行遠距離拍攝或者使用遙感圖像時,為了獲得更豐富的圖像信息往往會采用高分辨率的大圖片,而檢測目標常常在大圖像中存在的位置偏小,直接使用大圖像進行YOLO 檢測會將圖像壓縮從而使得小目標特性丟失,因此需要對大圖像進行處理后再檢測。
考慮到YOLO 網(wǎng)絡是將圖像固定到一定尺寸進行檢測的,因此可將高分辨率的大圖片進行分割,使用分割后的小圖片進行檢測。為了避免特征信息的遺漏以及檢測目標被圖像分割所截斷,在圖像分割時要設置一定的重疊區(qū)域。當分割后的圖像大小為416×416 時,可以將重疊區(qū)域設置為416×25%=104 像素。對分割后的每張小圖片分別進行檢測,檢測完成后對所有圖像進行還原,再對原圖進行非極大值抑制,剔除同一目標的重復檢測框。這樣小目標的特征就可全部學習,一定程度上提高了檢測準確性,也可以避免小目標漏檢,檢測結果有很大提升。
本文的實驗環(huán)境為:處理器Inter? Core?i7-10875H CPU @2.3GHz,顯卡NVIDIA GeForce RTX 2060,內 存16GB,Windows10 64 位系統(tǒng)。GPU 加速庫為CUDA10.0 和CUDNN7.4.15;深度學習框架為PyTorch,版本:torch 1.2,torchvision:0.4.0;開發(fā)環(huán)境為Pycharm,編程語言Py?thon3.6。
使用YOLO v4 算法進行目標檢測時需使用大量數(shù)據(jù)集進行訓練。利用訓練好的權重進行檢測,本文使用布匹瑕疵檢測和火災檢測驗證改進后的算法對小目標檢測的效果。
布匹瑕疵檢測數(shù)據(jù)集選擇公開的天池數(shù)據(jù)集,包含5 000 余張有瑕疵的圖像,使用COCO 數(shù)據(jù)集進行整理歸類后分為20個類別,將所有圖片與標注好的XML 文件相對應,使用Python 文件生成包含標注信息的txt 文件進行讀取。
為了加快YOLO 模型訓練引入遷移學習思想。遷移學習是將在已知源域進行訓練學習后的模型遷移到具有相似特點的目標領域,使用遷移學習可以使網(wǎng)絡模型快速在新的特征領域獲取特征信息,減少數(shù)據(jù)集的網(wǎng)絡初始化和訓練時間,加快模型收斂過程。
使用YOLO v4 預訓練好的權重進行遷移學習訓練。整個訓練過程分為50 輪,前25 個輪訓練學習率設置為1×10-3,每次讀取圖片數(shù)量為4,同時凍結一部分網(wǎng)絡參數(shù),加快網(wǎng)絡的初步學習;后25 輪訓練學習率設置為1× 10-4,每次讀取圖片數(shù)量為2,并解凍所有網(wǎng)絡參數(shù)使網(wǎng)絡優(yōu)化。將數(shù)據(jù)的90%進行訓練,10%進行驗證,訓練過程具有反向梯度,驗證過程無反向梯度。保存每一輪訓練完成的權重并計算loss 值,訓練集和驗證集的loss 值變化情況如圖7、圖8 所示。
Fig.7 Changes of training loss value圖7 訓練集loss 值變化情況
Fig.8 Change of loss of verification set圖8 驗證集loss 值變化情況
由loss 曲線圖可以看出,在訓練了2 500 步后loss 值趨于穩(wěn)定,在迭代了48 輪后驗證集的loss 值具有較好的特征信息。將訓練完成后loss 值較優(yōu)的權重載入到YOLO 檢測網(wǎng)絡中即可使用YOLO v4 進行實時檢測。
對布匹瑕疵的識別中,由于布匹瑕疵種類繁多,背景比較單一,因此對檢測圖像亮度和清晰度有一定要求。本文方法在對布匹扎洞瑕疵識別中,識別準確率acc 可達89%,mAP 值為73.56%。在對視頻圖像的連續(xù)識別中,640×480 大小的視頻識別幀率為20fps,可以達到實時檢測效果。布匹瑕疵識別效果如圖9 所示。
Fig.9 Recognition effect of cloth defects圖9 布匹瑕疵識別效果
對火災識別中,由于火焰圖像特征信息豐富,本文方法對背景明顯圖像的識別準確率acc 可達95%,其mAP 值為88%。通過本文的改進,一些小特征和低分辨率圖像也有很好的識別效果,如圖10 所示。
Fig.10 Fire identification effect圖10 火災識別效果
針對目前檢測算法對小目標檢測的不足,本文基于YOLOv4 網(wǎng)絡通過對主干特征提取網(wǎng)絡使用可分離卷積模塊和增加多尺度檢測網(wǎng)絡的方法,提升對小目標的檢測效率。同時改進自適應先驗框,通過對高分辨率大圖片的分割識別,使大圖片里的小目標可以有效監(jiān)測。通過本文的改進,在使用YOLO 算法進行檢測時可有效檢測出小瑕疵和目標。
由于在YOLO 網(wǎng)絡中增加了多尺度計算,導致在訓練過程中訓練時間會略有增加,但對檢測效率影響不大,可以達到實時檢測效果。后續(xù)工作中要對網(wǎng)絡進一步優(yōu)化,使其可以搭載到移動設備或簡易終端中,進一步提升檢測精度和速度。