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