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