點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
來(lái)自 | 知乎? ? 作者 |?roger
鏈接?|?https://zhuanlan.zhihu.com/p/138855612
編輯 | 深度學(xué)習(xí)這件小事
本文僅供交流,如有侵權(quán),請(qǐng)后臺(tái)聯(lián)系刪除
深度學(xué)習(xí)可以說(shuō)是一門實(shí)驗(yàn)科學(xué),業(yè)界要落地一個(gè)算法必然要嘗試各種tricks,本文介紹目標(biāo)檢測(cè)領(lǐng)域的常用tricks,當(dāng)然其中涉及到的一些tricks也可使用于其他任務(wù),如mixup,label smooth等。YOLO-V4[1]將目標(biāo)檢測(cè)中的tricks分為以下兩類,本文以此展開介紹:Bag-of-Freebies,在inference階段不引入額外計(jì)算復(fù)雜度
Bag-of-Specials,在inference階段引入的計(jì)算復(fù)雜度相比精度增加可忽略,這些tricks可認(rèn)為增強(qiáng)了模型的某種屬性,如增大了感受野、引入了attention機(jī)制、更好的信息融合等。
像素級(jí)別Data augmentation:最常用的bag-of-freebies,包含亮度、對(duì)比度、飽和度、噪聲、旋轉(zhuǎn)、flip,crop等。
模擬物體遮擋:下圖是幾種常用方法可視對(duì)比。在網(wǎng)絡(luò)訓(xùn)練階段,采用模擬遮擋的方式一方面可提升模型抗遮擋能力,同時(shí)這種方式相當(dāng)于數(shù)據(jù)集層面的一種正則,幫助模型更好的學(xué)習(xí)全局信息。random erase/cutout:隨機(jī)選擇圖片中一塊矩形區(qū)域,將其像素值置為隨機(jī)值或者0,模擬物體遮擋情況,這種數(shù)據(jù)增強(qiáng)方式在多個(gè)任務(wù)中均可提升模型精度;
grid mask:隨機(jī)在圖片中選擇多個(gè)矩形區(qū)域,將像素值置為0;
HS(hide-and-seek):主要為解決弱監(jiān)督檢測(cè)問(wèn)題中網(wǎng)絡(luò)attention只集中在物體局部,導(dǎo)致檢測(cè)框不準(zhǔn),HS訓(xùn)練中隨機(jī)隱藏輸入圖像一部分區(qū)域,迫使網(wǎng)絡(luò)學(xué)習(xí)到物體全局信息;
dropout系列,包括dropout,dropconnect和dropblock,這三種方式都是提升模型抗過(guò)擬合能力,具體如下:dropout,用于全連接層,以一定概率隨機(jī)將輸出神經(jīng)元置0,BP階段不更新對(duì)應(yīng)神經(jīng)元;
dropconnect,用于全連接層,以一定概率隨機(jī)將神經(jīng)元輸入權(quán)重以一定概率置0;
dropblock,如下圖所示,隨機(jī)將特征圖某一個(gè)部分置為0,(b)作用于每一個(gè)像素,(c)作用于每一個(gè)block,對(duì)(b)來(lái)說(shuō),drop掉的像素的信息可以通過(guò)相鄰像素學(xué)習(xí)得到,而(c)drop掉一塊區(qū)域,會(huì)迫使網(wǎng)絡(luò)學(xué)習(xí)其他區(qū)域信息,更有利于提取全局特征,效果更好,所以本方法稱為dropblock??梢钥吹絛ropblock和random erase等有類似之處,不同在于random erase作用于輸入圖像,而dropblock作用于網(wǎng)絡(luò)中間層特征圖。
多圖融合的數(shù)據(jù)增強(qiáng),主要包括mixup和cutmix,前面提到的像素級(jí)別數(shù)據(jù)增強(qiáng)作用于單個(gè)圖像,mixup和cutmix作用于兩個(gè)樣本間,兩者區(qū)別如下圖,mixup依據(jù)一定的比例融合了兩者圖像,cutmix就是cut掉一張圖片的部分區(qū)域,使用另一張圖片部分區(qū)域進(jìn)行填充。下圖是mixup和cutmix的示例效果。
mixup,下圖是mixup計(jì)算方法,可以看到加權(quán)融合同時(shí)作用在圖片和label兩個(gè)維度。原作者在這里給出了mixup的解釋。
yolo-v4提出了Mosaic數(shù)據(jù)增強(qiáng),融合了四張圖片,如下圖所示,而cutmix只融合了兩張圖片。作者采用這種數(shù)據(jù)擴(kuò)增方式主要是為實(shí)現(xiàn)單卡訓(xùn)練模型,每一張圖片相當(dāng)于融合了四張圖的紋理信息。
數(shù)據(jù)分布不均衡:目標(biāo)檢測(cè)的子任務(wù)之一是分類,對(duì)one-stage detector來(lái)說(shuō),負(fù)樣本遠(yuǎn)多于正樣本,若不做處理直接訓(xùn)練,模型偏向于將輸入預(yù)測(cè)為負(fù)樣本。SSD采取了基于分類置信度的難例樣本挖掘策略,具體來(lái)說(shuō),選擇分類置信度高的負(fù)樣本(更容易分錯(cuò))作為難例樣本,最終保證正負(fù)樣本比例為1:3進(jìn)行訓(xùn)練,另一種難例樣本挖掘策略基于分類loss,選擇loss大的樣本作為難例樣本。前面提到的兩種策略本質(zhì)是在訓(xùn)練中均衡正負(fù)樣本數(shù)量,但未考慮樣本的分類難易程度,focal loss主要解決這一問(wèn)題,在訓(xùn)練中減小易分類樣本權(quán)重,增加難分類樣本權(quán)重,如下圖所示,?
?表示cross-entropy損失,?
?表示focal loss損失,?
?表示正確分類的概率,越大,表示越容易分對(duì),對(duì)應(yīng)權(quán)重越小,?
?時(shí),focal loss退化為普通的cross-entropy損失,?
?越大,對(duì)易分類樣本施加的權(quán)重越小。
標(biāo)簽平滑(Label smooth):深度模型訓(xùn)練中一般伴隨著過(guò)擬合問(wèn)題,常用的預(yù)防過(guò)擬合的方法包括l1/l2 正則,dropout等,這些方式作用于網(wǎng)絡(luò)隱層權(quán)重,而label smooth作用于網(wǎng)絡(luò)輸出。分類網(wǎng)絡(luò)一般采用one-hot編碼,圖片所屬類別編碼為1,其余類別位置編碼為0,這種方式存在over-confident的問(wèn)題,比如對(duì)一張標(biāo)注為BMW的圖片,其和標(biāo)注為Audi的圖片是存在一定的相似性,兩者在分類label層面不應(yīng)該是0/1關(guān)系,所以label smooth對(duì)標(biāo)簽做了軟化,如下所示,對(duì)非標(biāo)注類別制定一個(gè)很小的分類概率?
???梢钥吹絣abel smooth和knowledge distillation存在類似之處,只是KD中的軟標(biāo)簽含有更豐富的不同類別間的建模信息。Bounding box regression:在目標(biāo)檢測(cè)中,預(yù)測(cè)框回歸一般采用l2或者smooth_l1損失,這種方式存在兩個(gè)問(wèn)題:1、對(duì)框的尺度不具有不變性,即使YOLO-V1中對(duì)框的寬高取了根號(hào)進(jìn)行回歸,但仍然存在loss對(duì)不同尺度物體不一致的問(wèn)題;2、物體檢測(cè)采用mAP作為評(píng)判指標(biāo),其中判斷預(yù)測(cè)框和GT是否match采用IoU,而相同l2損失的預(yù)測(cè)框和GT的IoU可能不一致,如下圖所示,兩者之間存在的這種gap表明了l2并不是在mAP這種評(píng)判機(jī)制下的最佳loss選擇,一種好的損失函數(shù)應(yīng)該和IoU一一對(duì)應(yīng)關(guān)系。
所以有文獻(xiàn)提出IoU損失,具體如下圖所示。
IoU損失的不足在于當(dāng)兩個(gè)框不相交時(shí),不能反映兩個(gè)框的距離遠(yuǎn)近,同時(shí)也不可導(dǎo),GIoU解決了這一問(wèn)題,計(jì)算方式如下圖。GIoU損失=1-GIoU,可以看到當(dāng)兩個(gè)框不相交時(shí),GIoU小于0,對(duì)這種情況懲罰更大。
GIoU的不足如下圖所示,當(dāng)兩個(gè)框處于包含關(guān)系時(shí),紅色框在綠色框內(nèi)不同位置時(shí)GIoU損失相等,但顯而最右邊的框位置最優(yōu),因?yàn)榧t色框和綠色框中心點(diǎn)位置最近,所以DIoU損失在IoU損失的基礎(chǔ)上引入了中心點(diǎn)的距離,解決了這個(gè)問(wèn)題,當(dāng)然兩個(gè)框不相交的問(wèn)題通過(guò)這個(gè)約束也不存在了。DIoU損失如下式所示,其中?
?表示兩個(gè)框中心點(diǎn)距離,?
?表示兩個(gè)框最小外接矩形對(duì)角線距離。DIoU優(yōu)化函數(shù)中包含兩個(gè)點(diǎn)距離,模型收斂更快。
CIoU全稱complete-IoU,在DIoU的基礎(chǔ)上添加了兩個(gè)框?qū)捀咭恢滦约s束。由以上可以看出,bounding box回歸要求檢測(cè)框和GT更加貼合,其中有三個(gè)關(guān)鍵點(diǎn):1、重疊面積大;2、中心點(diǎn)距離近;3、寬高一致,CIoU就是按照這個(gè)要求來(lái)設(shè)計(jì)的。不過(guò)就本質(zhì)來(lái)說(shuō),當(dāng)兩個(gè)框的重疊面積大時(shí),那么2和3一定是滿足的,這里額外約束2和3,其實(shí)是將其從1中解耦出來(lái)進(jìn)行學(xué)習(xí),添加了人為先驗(yàn),降低了模型的學(xué)習(xí)難度,相當(dāng)于告訴了模型按這個(gè)約束走下去會(huì)更好。增加感受野:SPP(spatial pyramid pooling)提出之初是為解決模型輸入分辨率不一致的問(wèn)題,它將輸入特征圖采用分塊+pooling的方式,實(shí)現(xiàn)了對(duì)不同分辨率輸入保持輸出維度不變,如下圖所示。
考慮到SPP最終輸出的是一維向量,不適用于全卷積網(wǎng)絡(luò),所以yolo-v3作者對(duì)此改進(jìn),使用多個(gè)不同kernel size(如1、5、9和13)的卷積作用于輸入特征圖,最終輸出通過(guò)concat各分支結(jié)果得到,這種方式通過(guò)使用大卷積核增加了感受野??梢钥吹?,這種方式和GoogleNet中采用的inception module類似,都是在同一層使用了不同大小的卷積核,更進(jìn)一步,MixNet中的MixConv采用了一種更簡(jiǎn)便的方式,將卷積通道分組,不同組使用不同大小的卷積核,以達(dá)到相似效果。ASPP和改進(jìn)版的SPP類似,只是不同分支使用相同大小卷積核&不同的dilation rate,在不增加計(jì)算復(fù)雜度的情況下,提升模型感受野。attention機(jī)制:attention機(jī)制廣泛應(yīng)用于分類和目標(biāo)檢測(cè)領(lǐng)域,分為channel-wise attention和spatial attention,這兩種方法的代表性工作為SE(squeeze-and-excitation)和SAM(spatial attention module)。SE是分類任務(wù)的標(biāo)配,一般添加后都可帶來(lái)1個(gè)點(diǎn)的提升。SAM在CBAM(convolutional block attention module)中提出,包含CAM和SAM兩個(gè)模塊,如下圖所示,本質(zhì)也是學(xué)習(xí)channel或者spatial維度的重要性,加權(quán)融合特征。attention機(jī)制有效的一種解釋是為網(wǎng)絡(luò)認(rèn)為重要的信息提供了更流暢的信息通路。
特征融合:自從FPN成為檢測(cè)任務(wù)的標(biāo)配后,如何融合不同層次的特征成為一個(gè)新的問(wèn)題,這一方向的工作包含SFAM,ASFF和BiFPN。SFAM使用SE模塊re-weight融合后的特征圖,ASFF使用softmax re-weight融合后的特征圖。這些方法的本質(zhì)是自適應(yīng)的融合不同level的特征,而不是手工采用concat或者sum的方式。激活函數(shù):一個(gè)好的激活函數(shù)在不增加計(jì)算復(fù)雜度的情況下,可以讓梯度傳遞通路更流暢。ReLU是現(xiàn)在最廣泛使用的激活函數(shù),相比sigmoid和tanh緩解了梯度彌散現(xiàn)象。LReLU和PReLU主要是解決ReLU在輸出小于0時(shí)梯度為0的情況,ReLU6和Hard-swish主要應(yīng)用于需要量化的模型,不過(guò)RegNet作者指出在輕量級(jí)模型中使用hard-swish效果相比relu好,對(duì)depthwise卷積更是如此,這也是為什么mobilenetv3中大量使用了hard-swish激活函數(shù)的原因。后處理:目標(biāo)檢測(cè)領(lǐng)域的后處理主要是NMS,當(dāng)一個(gè)物體預(yù)測(cè)出多個(gè)框時(shí),保留置信度最高的,去除其他的候選框,這種方式可能產(chǎn)生以下問(wèn)題,紅色框置信度相比綠色框置信度高,所以NMS選擇保留紅色框,但當(dāng)兩者IoU大于設(shè)定threshold時(shí),綠色框會(huì)被移除,這樣會(huì)產(chǎn)生漏檢,Soft-NMS對(duì)這一問(wèn)題進(jìn)行改進(jìn),當(dāng)兩個(gè)IoU大于設(shè)定threshold時(shí),降低綠框的置信度,而不是暴力的移除。anchor-free是目前目標(biāo)檢測(cè)的另一個(gè)研究方向,其中某些方法(如CenterNet)不需要NMS后處理。
參考文獻(xiàn)
https://arxiv.org/pdf/2004.10934.pdf下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~