摘要:
隨著深度學(xué)習(xí)的發(fā)展,目前已經(jīng)出現(xiàn)了很多算法(或者訓(xùn)練技巧,tricks)來(lái)提升神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確率。在實(shí)際測(cè)試中評(píng)價(jià)一個(gè)算法的好壞優(yōu)劣主要看兩點(diǎn),一是能否在大規(guī)模的數(shù)據(jù)集中起作用(work),二是是否有理論依據(jù)。一些算法僅能在某些特定的模型上或者某類特定的問(wèn)題上運(yùn)行,亦或是適用于一些小規(guī)模的數(shù)據(jù)集。然而,還有一些算法,例如batch normalization(BN)或者殘差連接(residual-connections)已經(jīng)被用在了不同的模型,任務(wù)以及不同的數(shù)據(jù)集中,已經(jīng)被充分的證明了這些算法的普適性,是一個(gè)general的算法。我們假設(shè)這樣的general(or universal)的算法包括Weighted-residual-connection(WRC),cross-stage-partial-connections(SCP),cross mini-batch Normalization(CmBN),self-adversarial-training(SAT)以及mish-activation。此外,我們還加了一些其余的tricks,包括Mosaic data augmentation,DropBlock regularization,CIoU loss,設(shè)計(jì)了一個(gè)YOLO-V4,并且在MS coco數(shù)據(jù)集中取得了新的state-of-the-art的結(jié)果:在Tesla V100顯卡能達(dá)到43.5% AP(65.7% AP)的精度,且達(dá)到~65FPS的速度。目前代碼已經(jīng)開(kāi)源:
Introduction
Yolo-V4的主要目的在于設(shè)計(jì)一個(gè)能夠應(yīng)用于實(shí)際工作環(huán)境中的快速目標(biāo)檢測(cè)系統(tǒng),且能夠被并行優(yōu)化,并沒(méi)有很刻意的去追求理論上的低計(jì)算量(BFLOP)。同時(shí),Yolo-V4的作者希望算法能夠很輕易的被訓(xùn)練,也就是說(shuō)擁有一塊常規(guī)了GTX-2080ti或者Titan-XP GPU就能夠訓(xùn)練Yolo-V4, 同時(shí)能夠得到一個(gè)較好的結(jié)果(Yolo-V4 結(jié)果如上圖)。整個(gè)introduction可以總結(jié)為以下幾點(diǎn):
研究設(shè)計(jì)了一個(gè)簡(jiǎn)單且高效的目標(biāo)檢測(cè)算法,該算法降低了訓(xùn)練門檻,使得普通人員在擁有一塊1080TI或者2080TI的情況下就能夠訓(xùn)練一個(gè)super fast and accurate 的目標(biāo)檢測(cè)器
在訓(xùn)練過(guò)程中,驗(yàn)證了最新的Bag-of-Freebies和Bag-of-Specials對(duì)Yolo-V4的影響
簡(jiǎn)化以及優(yōu)化了一些最新提出的算法,包括(CBN,PAN,SAM),從而使Yolo-V4能夠在一塊GPU上就可以訓(xùn)練起來(lái)。
Related work
首先解釋一下相關(guān)的名詞:
Input:算法的輸入,包括整個(gè)圖像,一個(gè)patch,或者是image pyramid
Backbone:可以理解為是提取圖像特征的部分,由于圖像中的淺層特征(low-level)是比較類似的,例如提取邊緣,顏色,紋理這些。因此這部分可以很好的借鑒一些設(shè)計(jì)好并且已經(jīng)訓(xùn)練好的網(wǎng)絡(luò),例如(VGG16,19,ResNet-50, ResNeXt-101, Darknet53), 同時(shí)還有一些輕量級(jí)的backbone(MobilenetV1,2,3 ShuffleNet1,2)。
Neck:這部分我的理解是特征增強(qiáng)模塊,前面的backbone已經(jīng)提取到了一些相關(guān)的淺層特征,由這部分對(duì)backbone提取到的淺層特征(low-level feature)進(jìn)行加工,增強(qiáng),從而使得模型學(xué)到的特征是我想要的特征。這部分典型的有(SPP,ASPP in deeplabV3+,RFB,SAM),還有一些(FPN, PAN, NAS-FPN, BiFPN, ASFF, SFAM)。
Head:檢測(cè)頭。這部分就到了算法最關(guān)鍵的部分,就是來(lái)輸出你想要的結(jié)果,例如想得到一個(gè)heatmap,(如在centernet中),那就增加一些反卷積層來(lái)一層一層反卷積回去。如果想直接得到bbox,那就可以接conv來(lái)輸出結(jié)果,例如Yolo,ssd這些。亦或是想輸出多任務(wù)(mask-RCNN)那就輸出三個(gè)head:classification,regression,segmentation(就是mask那部分)。
因此,一個(gè)檢測(cè)算法可以理解為:
Object Detection = Backbone + Neck + Head
2.1. Bag of freebies
什么叫Bag of freebies?字面上的意思就是免費(fèi)贈(zèng)品。在目標(biāo)檢測(cè)中是指:用一些比較有用的訓(xùn)練技巧來(lái)訓(xùn)練模型,從而使得模型取得更好的準(zhǔn)確率但是不增加模型的復(fù)雜度,也就不增加推理(inference)是的計(jì)算量(cost)。在目標(biāo)檢測(cè)中,提到bag of freebies,首先會(huì)想到的 就是Data augmentation。
2.1.1 : Data augmentation 的目的在于增加訓(xùn)練樣本的多樣性,使得檢測(cè)模型具有高的魯棒性。常見(jiàn)的不能再常見(jiàn)的數(shù)據(jù)增強(qiáng)方式包括兩個(gè)方面:幾何增強(qiáng)以及色彩增強(qiáng)。
幾何增強(qiáng)包括:隨機(jī)翻轉(zhuǎn)(水平翻轉(zhuǎn)較多,垂直翻轉(zhuǎn)較少),隨機(jī)裁剪(crop),拉伸,以及旋轉(zhuǎn)。
色彩增強(qiáng)包括:對(duì)比度增強(qiáng),亮度增強(qiáng),以及較為關(guān)鍵的HSV空間增強(qiáng)。
上述說(shuō)的色彩以及幾何增強(qiáng)都是pixel-wise 的調(diào)整。此外還有一些數(shù)據(jù)增強(qiáng)方法被用來(lái)解決目標(biāo)遮擋及不足的問(wèn)題。
在圖像中隨機(jī)裁剪矩形區(qū)域,并用0來(lái)填充(random erase和CutOut算法)
隨機(jī)裁剪多個(gè)矩形區(qū)域(hide-and-seek, grid mask)
上述算法是在圖像中裁剪矩形區(qū)域并填充0,那么算法在heatmap上裁剪并填充的叫做(DropOut,DropConnect, DropBlock)
此外還有一個(gè)重要的data augmentation算法叫做MIX-UP。Mix-up在分類任務(wù)中,將兩個(gè)圖像按照不同的比例相加,例如A*0.1+B*0.9=C,那么C的label就是[0.1A, 0.9B]。在目標(biāo)檢測(cè)中的做法就是將一些框相加,這些label中就多了一些不同置信度的框。
還有一類是style-transfer GAN做數(shù)據(jù)增強(qiáng),例如在做街景分割和目標(biāo)檢測(cè)的時(shí)候,將GTA-5的數(shù)據(jù)做一個(gè)style-transfer,擴(kuò)充一些數(shù)據(jù)集。不過(guò)更多的是用在了Domain Adaptation上。
2.1.2 : 不同于上述說(shuō)的data augmentation,第二類方法是要解決數(shù)據(jù)不均衡問(wèn)題(imbalance problems in object detection),數(shù)據(jù)不均衡問(wèn)題在目標(biāo)檢測(cè)中是一個(gè)特別難的問(wèn)題,Yolo-V4中沒(méi)有細(xì)說(shuō),但是最近的一篇PAMI綜述論文,用了30幾頁(yè)詳細(xì)介紹了這個(gè)問(wèn)題,論文可以見(jiàn)我專欄的第一篇文章。下面我簡(jiǎn)單說(shuō)一下:數(shù)據(jù)不均衡包括了兩種一種是訓(xùn)練的背景和我要識(shí)別的物體之間的不均衡,例如在two-stage的方法中,首先在RPN階段會(huì)生成了很多個(gè)ROI,這里面有太多的背景了,有用的框會(huì)很少。還有一類不均衡是類別之間的不均衡,例如在COCO數(shù)據(jù)集中一些常見(jiàn)的物體例如人就會(huì)很多,不常見(jiàn)的就會(huì)比較少,這樣類別之間還有不平衡,這就涉及到另外一個(gè)問(wèn)題了,叫做長(zhǎng)尾分布(long-tailed Data),也是比較棘手的問(wèn)題。這里面比較經(jīng)典的算法就是在two-stage 中使用hard negative example mining or online head example mining (OHEM)。還有一個(gè)比較經(jīng)典的算法就是Focal-loss,來(lái)處理數(shù)據(jù)不均衡的問(wèn)題。還有一個(gè)trick就是關(guān)于One-hot編碼之后label沒(méi)有關(guān)聯(lián),針對(duì)這個(gè)問(wèn)題進(jìn)行l(wèi)abel-smooth。
2.1.3: 第三個(gè)bag of freebies就是在loss function上進(jìn)行改動(dòng),之前常用的計(jì)算bbox的loss 使用MSE,現(xiàn)在改為了計(jì)算IOU之間的loss,還有一個(gè)叫做GIoU loss。這里面有一個(gè)比較經(jīng)典的算法就是在Mask-RCNN上改動(dòng)的MASK SCoring RCNN中,這部分的邏輯是這樣的:在選擇ROI時(shí),如果按照每個(gè)ROI的score來(lái)排序篩選ROI,會(huì)出現(xiàn)一個(gè)問(wèn)題就是,置信度高的ROI并不一定BBOX的位置就準(zhǔn),后來(lái)作者嘗試了使用IoU來(lái)篩選ROI,發(fā)現(xiàn)效果要好。
2.2. Bag of specials
什么叫做bag of specials:就是指一些plugin modules(例如特征增強(qiáng)模型,或者一些后處理),這部分增加的計(jì)算量(cost)很少,但是能有效地增加物體檢測(cè)的準(zhǔn)確率,我們將這部分稱之為Bag of specials。這部分插件模塊能夠增強(qiáng)網(wǎng)絡(luò)模型的一些屬性,例如增大感受域(ASFF,ASPP,RFB這些模塊),引入注意力機(jī)制(有兩種一種是spatial attention,另外一種是channel attention),增加特征集成能力(FPN,ASFF,BiFPN)。后處理算法是指用一些算法來(lái)篩選模型預(yù)測(cè)出來(lái)的結(jié)果
2.2.1 增大感受域
SPP:He提出了一個(gè)比較經(jīng)典的算法,當(dāng)時(shí)解決了一個(gè)問(wèn)題就是我在測(cè)試的時(shí)候,輸入尺寸可以與訓(xùn)練的時(shí)候 不一樣。但是當(dāng)網(wǎng)絡(luò)中有FC的時(shí)候,尺寸必須是固定的,這時(shí)候,SPP作用就體現(xiàn)出來(lái)了,按照比例劃分pooling,最后輸出的結(jié)果就是一致的了。
ASPP:我記得是用在了DeepLabV3系列中,與SPP不同前面加了Atrous or dilated ,在Pooling中加入了dilated ratio。
RFB:就是說(shuō)是在同一個(gè)featuremap下引入不同dilated ration的空洞卷積,這樣提取到了不同感受野的特征,最后進(jìn)行融合。
2.2.2 引入注意力機(jī)制
Channel Attention:最經(jīng)典的就是SEnet(Squeeze-and-Excitation),這個(gè)算法一開(kāi)始獲得了imagenet分類任務(wù)中的冠軍,他的原理是這樣的,在featuremap層中同時(shí)引入一個(gè)1X1XC的weights,這樣對(duì)每個(gè)channel上的特征加入不同的權(quán)重,這樣提高特征學(xué)習(xí)能力,注意:SE module是在channel 這個(gè)維度上進(jìn)行加入權(quán)重。后來(lái)又有一篇CVPR用SE module做了分割任務(wù),從側(cè)面證明了SE module很好用。
Spatial Attention Module:從字面意思上來(lái)理解,就是在HW維度上加入attention,上述是在Channel維度上加入Attention。
Channel+Spatial:一個(gè)featuremap的維度:NCHW,N:batch size,C:channel,H:height,W:weight。Channel attention 和spatial attention 是從兩個(gè)不同的方法對(duì)feature進(jìn)行增強(qiáng),接著又有一篇paper對(duì)二者進(jìn)行融合,channel attention+spatial attention
2.2.3 特征融合or特征集成
Skip connection:用在encoder-decoder中比較多,例如最經(jīng)典的Unet,融入了low-level和high-level的信息,在目標(biāo)檢測(cè)中主要用在了類似于pose這一類的檢測(cè)任務(wù)中,例如DLA,Hourglass,以及最近的CenterNet
hyper-column:最經(jīng)典的就要屬于InceptionV1-4結(jié)構(gòu)了,使用不同的kernel-size的convolution來(lái)集成特征。
FPN,ASFF,BiFPN:在我看來(lái)都屬于一類,屬于將不同stage下不同scale的特征進(jìn)行融合,只是連接融合的方式不一樣,F(xiàn)PN是最經(jīng)典的,efficientdet中的BiFPN連接的最密集。
2.2.4 激活函數(shù)
一個(gè)好的激活函數(shù)能夠使得梯度傳播的更高效,并且不會(huì)占用額外的計(jì)算資源。常見(jiàn)的激活函數(shù)有以下:(由于我對(duì)激活函數(shù)沒(méi)有研究過(guò),所以這邊就不畫(huà)蛇添足了,直接把論文中的摘錄下來(lái))
ReLU
LRelu, PReLU, SELU,ReLu6, Swish, hard-Swish Mish
2.2.5 后處理
經(jīng)典的后處理包含了NMS,soft NMS,DIoU NMS
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4776瀏覽量
100950 -
gpu
+關(guān)注
關(guān)注
28文章
4760瀏覽量
129132 -
算法
+關(guān)注
關(guān)注
23文章
4623瀏覽量
93105
原文標(biāo)題:YOLO-V4解讀:速度與精度的完美結(jié)合[已開(kāi)源]
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論