安鶴男, 楊佳洲, 鄧武才, 管 聰, 馬 超
1(深圳大學(xué) 微納光電子學(xué)研究院, 深圳 518054)
2(深圳大學(xué) 電子與信息工程學(xué)院, 深圳 518060)
隨著計算機(jī)硬件設(shè)備以及各種深度學(xué)習(xí)框架的發(fā)展, 深度學(xué)習(xí)模型成為了當(dāng)下人工智能領(lǐng)域研究的重要途徑. 屬于人工智能領(lǐng)域熱點之一的計算機(jī)視覺, 其主要任務(wù)包括目標(biāo)分類、目標(biāo)檢測、目標(biāo)分割等, 其中不同時期內(nèi)視覺圖像處理的側(cè)重點也有所不同. 隨著卷積神經(jīng)網(wǎng)絡(luò)(CNN) AlexNet[1]在分類任務(wù)大放異彩, 再到2015年深度殘差網(wǎng)絡(luò)ResNet[2]誕生并一舉刷新當(dāng)時多項視覺任務(wù)的最佳, 標(biāo)志著帶有殘差塊的更深的卷積神經(jīng)網(wǎng)絡(luò)時代的到來, 隨后計算機(jī)視覺任務(wù)的重點也從分類轉(zhuǎn)到了檢測和分割.
目標(biāo)檢測任務(wù)是目前計算機(jī)領(lǐng)域的一大熱點, 主要就是找出圖像中所有我們感興趣的目標(biāo), 并確定他們的類別和位置大小, 即解決物體是什么和在哪里這兩個問題. 如今, 憑借著大量可用數(shù)據(jù)集、快速先進(jìn)的GPU 以及更好的算法框架, 我們可以輕松用深度學(xué)習(xí)模型訓(xùn)練計算機(jī)以高精度檢測出圖像里的諸多目標(biāo).目前主流的CNN目標(biāo)檢測算法主要分為兩大類: 一種是以RCNN[3]和Faster-RCNN[4]等為主要代表的兩階段檢測算法(two-stage), 另一種是以SSD[5]及YOLO[6]系列等為代表的單階段檢測算法(one-stage). Twostage算法多是先生成大量的候選瞄框(anchors), 再進(jìn)行分類和定位, 盡管在Faster R-CNN中, 生成瞄框網(wǎng)絡(luò)RPN (region proposal network)和CNN分類定位網(wǎng)絡(luò)融合在一起, 無論在速度上還是精度上都得到了不錯的提高, 然而Faster-RCNN還是達(dá)不到實時的目標(biāo)檢測, 其中預(yù)先獲取候選框, 然后再對每個候選框分類定位的計算量還是比較大. 而one-stage算法使用端到端的網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測, 只用一個CNN網(wǎng)絡(luò)便可實現(xiàn)目標(biāo)的分類和定位, 在檢測速度上更勝一籌, 其中的YOLOv3[7]系列算法兼具了速度和不錯的精度, 因此在工業(yè)界都有廣泛應(yīng)用[8]. YOLOx-Darknet53[9]則是在YOLOv3的骨干網(wǎng)絡(luò)(backbone)基礎(chǔ)上使用大量先進(jìn)技巧(trick), 因此比原網(wǎng)絡(luò)有更高的檢測精度, 更加兼具了工業(yè)應(yīng)用中的精度和速度要求.
隨著注意力機(jī)制[10]在計算機(jī)視覺領(lǐng)域的廣泛應(yīng)用, 以及考慮到Y(jié)OLOx-Darknet53骨干網(wǎng)絡(luò)的特征提取能力仍有不足的問題, 本文結(jié)合CoTNet[11]的思想,重新設(shè)計了CoA (contextual attention)模塊, 并將其融合在Darknet53中的殘差塊, 這加強(qiáng)了骨干網(wǎng)絡(luò)的特征提取能力; 并依據(jù)注意力模塊SimAM[12]對檢測頭前的特征層加強(qiáng)空間和通道(spatial and channel)的關(guān)注, 即實現(xiàn)3D Attention. 綜上, 本文設(shè)計了一個全新的YOLOx檢測網(wǎng)絡(luò), 改進(jìn)后的網(wǎng)絡(luò)具有更強(qiáng)的特征提取能力和目標(biāo)檢測能力, 對小中大的目標(biāo)檢測精度都有提升, 更加能滿足工業(yè)界對不同大小物體檢測精度的要求.
YOLOx-Darknet53算法[9]就是在YOLOv3骨干網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行消融實驗, 嘗試各種優(yōu)化trick最終改進(jìn)得到的優(yōu)化算法. 主要的優(yōu)化點有輸入端的數(shù)據(jù)增強(qiáng)、檢測端的解耦頭(decoupled head), 以及預(yù)測框的檢測方式從Anchor-based變?yōu)锳nchor-free等.
輸入端通過Mosaic加上MixUp[13]的數(shù)據(jù)增強(qiáng)方式, 對訓(xùn)練集中隨機(jī)抽取的圖片進(jìn)行隨機(jī)裁剪、隨機(jī)縮放、隨機(jī)排布等方式進(jìn)行拼接, 生成新融合的圖片.由于融合圖片的復(fù)雜性和多目標(biāo)性, 且一定程度上相當(dāng)于擴(kuò)大了batch size, 因此網(wǎng)絡(luò)模型可以不通過ImageNet[14]數(shù)據(jù)集預(yù)訓(xùn)練和遷移學(xué)習(xí), 僅根據(jù)自有數(shù)據(jù)集從頭開始訓(xùn)練便能達(dá)到很好的檢測效果, 這在提升網(wǎng)絡(luò)檢測精度的同時也增強(qiáng)了網(wǎng)絡(luò)的魯棒性和泛化能力.
YOLOx-Darknet53還將原來的YOLO-head改為decoupled head (YOLOx-Head), 將原來由單個卷積統(tǒng)一得到的檢測信息改為3個分支輸出, 實現(xiàn)了將置信度(conf)、瞄框偏移量(x,y,w,h)、類別(class)信息解耦, 讓分類和回歸更加精確. 作者在權(quán)衡精度和速度后改進(jìn)解耦頭如圖1, 在僅增加一點參數(shù)的同時使得網(wǎng)絡(luò)收斂速度更快, 精度也更高一些. YOLOx-Darknet53網(wǎng)絡(luò)的損失值也由3部分組成, 分別是目標(biāo)置信度損失(loss_obj)、目標(biāo)定位損失(loss_iou)以及目標(biāo)類別損失(loss_cls). 網(wǎng)絡(luò)的總損失Loss組成關(guān)系如下:
圖1 改進(jìn)后的Yolox-Head
其中,α1、α2、α3為平衡系數(shù) (即可自己調(diào)節(jié)的超參數(shù),原網(wǎng)絡(luò)采用的是5, 1, 1, 改進(jìn)網(wǎng)絡(luò)與原網(wǎng)絡(luò)保持一致,未對損失函數(shù)進(jìn)行修改). 定位損失采用的是IOU損失函數(shù), 目標(biāo)損失和置信度損失均采用二值交叉熵?fù)p失函數(shù)(binary cross entropy, BCE).
除此之外, 預(yù)測框的檢測方式從Anchor-based變成了Anchor-free, 大大減少了生成預(yù)測框數(shù)量及所需參數(shù), 并結(jié)合標(biāo)簽分配中的初步篩選、SimOTA方法[15]將預(yù)測框和目標(biāo)框關(guān)聯(lián)起來, 篩選出更加合適的正樣本進(jìn)行訓(xùn)練, 不斷的預(yù)測迭代更新參數(shù), 讓網(wǎng)絡(luò)的檢測結(jié)果更加準(zhǔn)確. 但這些tricks大多是對輸入端和檢測端進(jìn)行改進(jìn), 并沒有改變網(wǎng)絡(luò)本身的骨干, 沒有加強(qiáng)骨干網(wǎng)絡(luò)的特征提取能力, 因此本文將從這一方面做主要改進(jìn), 進(jìn)一步提升網(wǎng)絡(luò)對不同大小目標(biāo)的檢測效果.
隨著Transformer[16]開啟注意力機(jī)制以來, 越來越多研究者將注意力結(jié)構(gòu)遷移應(yīng)用在計算機(jī)視覺任務(wù)中,但大多還是通過Self-Attention中的查詢(query)和鍵值(key)的交互來獲得注意力矩陣, 并未考慮相鄰key之間的豐富信息, 其大致結(jié)構(gòu)如圖2所示. 而CoTNet(contextual transformer network)[11]設(shè)計了新的注意力塊,充分利用輸入鍵之間的上下文信息來生成動態(tài)注意力矩陣, 從而增強(qiáng)視覺表示能力. 本文的CoA (contextual attention)正是基于CoTNet改進(jìn)的注意力模塊, 其在Darknet53殘差塊中的結(jié)構(gòu)如圖3所示.
圖2 傳統(tǒng)的Self-Attention模塊
圖3 改進(jìn)后的CoA模塊
在CNN中常用的Self-Attention模塊中keys, query,value都是由上一層的input通過1×1卷積映射而來的.由于Self-Attention對輸入特征的位置信息并不敏感,所以也會在query層增加一個位置(position)信息, 然后與query和keys交叉生成的信息相互融合, 再經(jīng)過歸一化(Softmax)操作得到概率分布, 最后和value矩陣相乘得到注意力矩陣. 其中主要的注意力權(quán)重來自于query-key pair之間的交互, 而特征層keys由1×1卷積生成, 并沒有包含input中豐富的相鄰鍵特征, 沒能充分利用keys之間的上下文信息.
在CoA模塊中, input經(jīng)過3個不同的卷積塊抽取出keys, query和value.先采用3×3的卷積先對input的相鄰鍵進(jìn)行上下文編碼獲得的靜態(tài)上下文特征keys, 再用不同的1×1卷積提取特征層query和value.不同于CoT模塊, 其中特征層query采用1×1卷積進(jìn)行特征提取, 接著將有上下文特征的keys和加強(qiáng)特征層query拼接(concat), 再通過兩個連續(xù)的1×1卷積塊并利用Softmax操作將結(jié)果歸一化為概率分布, 得到注意力權(quán)重矩陣A, 此時的A中每個空間位置都考慮了query和keys的全局特征. 權(quán)重矩陣A與value進(jìn)行矩陣相乘后可以得到擁有更強(qiáng)注意力機(jī)制的全局動態(tài)特征層, 最后還要和靜態(tài)上下文特征層keys進(jìn)行融合, 融合之后再進(jìn)行1×1卷積達(dá)到跨通道信息交融和升維目的, 最終得到了對突出點著重關(guān)注、同時不缺失對普通點關(guān)注的注意力輸出特征層(output). 公式如下:
CoA中的每個卷積(Conv)都包含普通卷積Conv2d、批量歸一化BN、激活函數(shù)Mish[17].Mish是2019年提出用來代替ReLU函數(shù)的新型激活函數(shù), 其函數(shù)表達(dá)式如下:
其中,X是前面歸一化層傳過來的參數(shù)值.Mish激活函數(shù)的圖像如圖4所示.
圖4 Mish激活函數(shù)圖像
結(jié)合圖像可以得知,Mish激活函數(shù)在X為負(fù)值的情況下, 并沒有完全截斷信息流, 而是允許存在輕微的梯度流, 保留更多信息流入神經(jīng)網(wǎng)絡(luò); 當(dāng)X為正值時,函數(shù)梯度逐漸趨近于1, 相對ReLU更加平滑, 梯度下降效果更好, 從而得到更好的準(zhǔn)確性和魯棒性. 鑒于以上優(yōu)點, CoA模塊采用Mish激活函數(shù)替代CoT中采用的ReLU激活函數(shù).
CoA模塊能夠根據(jù)骨干網(wǎng)絡(luò)殘差塊中前后通道的不同進(jìn)行適配, 彌補(bǔ)了CoT模塊通道不變性的缺點, 同時改進(jìn)特征層query和keys的獲取, 相較于Self-Attention模塊, 加強(qiáng)了對輸入特征提取, 進(jìn)而生成更強(qiáng)的注意力矩陣權(quán)重, 再結(jié)合value和keys獲得更強(qiáng)的、擁有動靜態(tài)結(jié)合的注意力矩陣, 最后通過1×1卷積實現(xiàn)跨通道信息交融和升維目的. 綜上, 改進(jìn)后的CoA模塊既可以加深通道特征又能保留了原有的空間特征, 強(qiáng)化了網(wǎng)絡(luò)對輸入的特征提取能力.
注意力機(jī)制本身是模仿人的神經(jīng)系統(tǒng)提出的概念.中大課題組的SimAM[12]也受此啟發(fā), 其基于一些著名的神經(jīng)科學(xué)理論, 構(gòu)建了一個簡單又非常有效的注意力模塊, 無須其他參數(shù)便可通過十行代碼計算解析解為特征圖推導(dǎo)出3D注意力權(quán)值, 兼顧了對空間和通道特征的關(guān)注. SimAM是一個輕量化又可以非常靈活地嵌入到卷積網(wǎng)絡(luò)的視覺任務(wù)中, 在本文檢測網(wǎng)絡(luò)中, 將其加在輸入YOLOx-Head之前的一層特征層上, 這能夠簡單地對特征層加強(qiáng)一些特征提取, 提升網(wǎng)絡(luò)的檢測效果.
本文最終改進(jìn)的YOLOx網(wǎng)絡(luò)如圖5, 將CoA模塊替代普通的3×3卷積, 形成新的殘差塊融合到骨干網(wǎng)絡(luò)中以及在檢測頭YOLOx-Head前增加3D注意力模塊.
圖5 改進(jìn)后的YOLOx檢測網(wǎng)絡(luò)
為了較好的評估改進(jìn)注意力模塊的效果, 原網(wǎng)絡(luò)與改進(jìn)的網(wǎng)絡(luò)均是在Pascal VOC2007公開數(shù)據(jù)集上訓(xùn)練和預(yù)測的, 該數(shù)據(jù)集主要包含人、狗、車等常見的20個類別, 共9 963張圖片, 其中用于訓(xùn)練的圖片為5 011張(trainval data), 測試集(test data)圖片為4 952張.訓(xùn)練網(wǎng)絡(luò)所使用的服務(wù)器環(huán)境配置如表1.
表1 服務(wù)器環(huán)境和參數(shù)
實驗采用COCO目標(biāo)檢測評價指標(biāo), 能夠更加全面的展示網(wǎng)絡(luò)對不同尺寸物體的檢測精度. 本文主要考慮的評價標(biāo)準(zhǔn)是平均精度均值(mean average precision)AP@[.5:.95]和AP@0.5. 該精度值由P-R曲線積分求和獲得, 其中P為查準(zhǔn)率, 表示網(wǎng)絡(luò)預(yù)測出的檢測框中檢測正確的比例;R為查全率, 表示網(wǎng)絡(luò)預(yù)測正確的框在所有標(biāo)注框中的比例, 具體公式如下:
其中,TP(true positive)為將正樣本預(yù)測為正確的個數(shù);FP(false positive)為將負(fù)樣本預(yù)測為正確的個數(shù);FN(false negative)為將正樣本預(yù)測為錯誤的個數(shù)(漏框).P-R曲線是由R為橫軸,P為縱軸組成的曲線, AP值則是曲線和坐標(biāo)軸所圍成的面積, 而mAP則是多類物體求得AP后再求和平均的精度值. 其中AP@0.5是指判斷正負(fù)樣本的IOU閾值設(shè)為0.5時求得的mAP; AP@[.5:.95]是IOU閾值從0.5以0.05為步進(jìn)增加到0.95的10個閾值求得的mAP的均值, 相比AP@0.5更為嚴(yán)格, 更能作為檢測網(wǎng)絡(luò)精確度的評價指標(biāo). 往往AP@[.5:.95]越高, 越能代表網(wǎng)絡(luò)具有更好的檢測精度.
為了保證實驗的公平性, 改進(jìn)的YOLOx網(wǎng)絡(luò)與原網(wǎng)絡(luò)YOLOx-Darknet53采用相同的訓(xùn)練策略[9]. 在VOC數(shù)據(jù)集上從頭開始訓(xùn)練300 個epochs, 所有超參數(shù)設(shè)置相同: 輸入圖片大小為(640, 640), batch size設(shè)置為8, 初始學(xué)習(xí)率設(shè)為0.01且采用余弦退火(cosine annealing)方法來衰減學(xué)習(xí)率, 權(quán)重衰減系數(shù)為5E–4,以及最后在訓(xùn)練結(jié)束前15 epochs自動關(guān)掉數(shù)據(jù)增強(qiáng)繼續(xù)訓(xùn)練至完成, 目的是讓檢測網(wǎng)絡(luò)避開數(shù)據(jù)增強(qiáng)導(dǎo)致的不準(zhǔn)確標(biāo)注框的影響, 從而在自然圖片的數(shù)據(jù)分布下完成最終的收斂.
圖6和圖7分別展示了原網(wǎng)絡(luò)和改進(jìn)網(wǎng)絡(luò)訓(xùn)練過程中損失Loss和檢測精度AP@[.5:.95]的變化. 從圖中可以看出, 改進(jìn)后的網(wǎng)絡(luò)曲線相對而言都比較平滑,訓(xùn)練過程損失波動較小, 收斂效果更好, 精度更高, 網(wǎng)絡(luò)更加穩(wěn)定. 正如上面所說, 在訓(xùn)練過程的最后15 epoch中去掉數(shù)據(jù)增強(qiáng), 網(wǎng)絡(luò)損失得以進(jìn)一步下降, 收斂到更小的損失值, 使得網(wǎng)絡(luò)檢測精度進(jìn)一步提升并最終收斂到一個穩(wěn)定的峰值.
圖6 原網(wǎng)絡(luò)與改進(jìn)網(wǎng)絡(luò)的損失值曲線
圖7 原網(wǎng)絡(luò)與改進(jìn)網(wǎng)絡(luò)的檢測精度曲線
使用VOC2007數(shù)據(jù)集對不同網(wǎng)絡(luò)的訓(xùn)練所得到的具體檢測結(jié)果如表2所示. 通過表2 的實驗結(jié)果可以看出, 將CoA模塊與Backbone中的殘差塊融合后,會增加大概10M的參數(shù)量, 但AP@[.5:.95]和AP@0.5都比原網(wǎng)絡(luò)提升了1.4個百分點, 其中對大目標(biāo)的檢測提升1.5個百分點, 對較難檢測的小目標(biāo)也有0.4個百分點的提升. 由于小目標(biāo)本身容易因為過深的網(wǎng)絡(luò)深度從而丟失邊緣信息導(dǎo)致檢測精度下降, 且CoA模塊本身一定程度加深了網(wǎng)絡(luò)深度, 但融合后的Backbone對小目標(biāo)的精度仍有小幅提升, 這正好說明了CoA模塊確實加強(qiáng)了Backbone的特征提取能力. 在融合了CoA模塊的Backbone后的YOLOx-Head檢測頭前加入了SimAM模塊, 對即將輸入檢測頭前的不同尺寸特征層再進(jìn)行一次簡單地3D注意力關(guān)注, 形成了最終改進(jìn)的YOLOx檢測網(wǎng)絡(luò), 在不增加參數(shù)的同時, AP@[.5:.95]比只改進(jìn)Backbone的網(wǎng)絡(luò)提升0.2個百分點, 除此之外的指標(biāo)也都有0.2左右的提升. 最終改進(jìn)的YOLOx檢測網(wǎng)絡(luò)比原網(wǎng)絡(luò)YOLOx-Darknet53的精度提升大多在1.5以上, 其中最主要的指標(biāo)AP@[.5:.95]和AP@0.5的提升分別為1.6和1.5個百分點. 上述實驗結(jié)果也表明改進(jìn)后的YOLOx網(wǎng)絡(luò)不僅對大物體的特征關(guān)注明顯, 也對小物體的邊緣信息有所加強(qiáng), 能夠?qū)Σ煌笮〉奈矬w有更準(zhǔn)確地檢測.
表2 不同網(wǎng)絡(luò)在VOC2007測試集的實驗結(jié)果
SSD-ResNet50檢測網(wǎng)絡(luò)同樣是Backbone采用殘差結(jié)構(gòu)性能優(yōu)異的改進(jìn)版one-stage SSD網(wǎng)絡(luò). 由表2可知, SSD的AP@0.5較高, 是因為其采用Anchorbased的多尺度大量瞄框方式, 當(dāng)IOU=0.5時, 獲取到的正樣本預(yù)測框較多, 即TP多, 因此檢測精度較高, 但當(dāng)評價指標(biāo)為更加嚴(yán)格的AP@[.5:.95]時, 獲取到的大量預(yù)測框是負(fù)樣本, 即FP多, 檢測精度明顯下降. 本文最終改進(jìn)版的YOLOx 對比改進(jìn)版SSD, 除AP@0.5和APs外的指標(biāo)基本都大幅超越, 其中最重要的指標(biāo)AP@[.5:.95]超過3個百分點, 說明改進(jìn)后的YOLOx網(wǎng)絡(luò)達(dá)到了高精度的檢測水平.
圖8是SSD-ResNet50網(wǎng)絡(luò)與YOLOx-Darknet53原網(wǎng)絡(luò)、最終改進(jìn)的YOLOx網(wǎng)絡(luò)的檢測效果對比圖,其中置信度閾值設(shè)置為0.4, 非極大值抑制(NMS)閾值設(shè)置為0.45. 通過第2張對比圖可以看出SSD網(wǎng)絡(luò)的檢測框較多, 雖然能找出正確檢測目標(biāo), 但同時錯檢率較高, 檢測準(zhǔn)度有限. 綜合測試圖片的檢測效果來看,本文改進(jìn)網(wǎng)絡(luò)的檢測效果比原網(wǎng)絡(luò)和SSD網(wǎng)絡(luò)都更加精準(zhǔn), 能夠很好地改善漏檢、錯檢的情況, 更加適合實際工業(yè)應(yīng)用中高檢測準(zhǔn)度的要求.
圖8 檢測效果對比圖
本文根據(jù)注意力機(jī)制和CoTNet的優(yōu)缺點, 基于YOLOx-Darknet53中殘差塊的特性改進(jìn)得到CoA模塊, 并將其融入于Darknet53中, 從而獲得具有更強(qiáng)特征提取能力的骨干網(wǎng)絡(luò), 并結(jié)合最近的SimAM模塊設(shè)計了一個全新的YOLOx檢測網(wǎng)絡(luò), 檢測精度比原網(wǎng)絡(luò)大多提高了1.5個百分點, 比改進(jìn)版SSD網(wǎng)絡(luò)也有大幅提升, 總體檢測效果有很大的提升, 更加符合工業(yè)界對不同大小物體檢測準(zhǔn)度的要求. 但由于CoA模塊的引入, 改進(jìn)后的網(wǎng)絡(luò)也帶來了參數(shù)量和計算量增加, 因此后續(xù)研究會基于此考慮嘗試優(yōu)化主干網(wǎng)絡(luò)結(jié)構(gòu), 降低網(wǎng)絡(luò)深度, 爭取在減少參數(shù)量、計算量的同時進(jìn)一步提升檢測精度.