深度學習檢測小目標經常使用方法

點擊上方機器學習與生成對抗網絡」,關注"星標"git

獲取有趣、好玩的前沿乾貨!github

轉自:極市平臺算法

引言

在深度學習目標檢測中,特別是人臉檢測中,小目標、小人臉的檢測因爲分辨率低,圖片模糊,信息少,噪音多,因此一直是一個實際且常見的困難問題。不過在這幾年的發展中,也涌現了一些提升小目標檢測性能的解決手段,本文對這些手段作一個分析、整理和總結。
微信

歡迎探討,本文持續維護。網絡

實驗平臺

N/Aapp

傳統的圖像金字塔和多尺度滑動窗口檢測

最開始在深度學習方法流行以前,對於不一樣尺度的目標,你們廣泛使用將原圖build出不一樣分辨率的圖像金字塔,再對每層金字塔用固定輸入分辨率的分類器在該層滑動來檢測目標,以求在金字塔底部檢測出小目標;或者只用一個原圖,在原圖上,用不一樣分辨率的分類器來檢測目標,以求在比較小的窗口分類器中檢測到小目標。
less

在著名的人臉檢測器MTCNN(https://arxiv.org/abs/1604.02878)中,就使用了圖像金字塔的方法來檢測不一樣分辨率的人臉目標。機器學習

不過這種方式速度慢(雖然一般build圖像金字塔可使用卷積核分離加速或者直接簡單粗暴地resize,可是仍是須要作屢次的特徵提取呀),後面有人借鑑它的思想搞出了特徵金字塔網絡FPN,它在不一樣層取特徵進行融合,只須要一次前向計算,不須要縮放圖片,也在小目標檢測中獲得了應用,在本文後面會講到。
編輯器

簡單粗暴又可靠的Data Augmentation

深度學習的效果在某種意義上是靠大量數據喂出來的,小目標檢測的性能一樣也能夠經過增長訓練集中小目標樣本的種類和數量來提高。在《深度學習中不平衡樣本的處理》[2]一文中已經介紹了許多數據加強的方案,這些方案雖然主要是解決不一樣類別樣本之間數量不均衡的問題的,可是有時候小目標檢測之難其中也有數據集中小樣本相對於大樣原本說數量不多的因素,因此其中不少方案均可以用在小樣本數據的加強上,這裏不贅述。另外,在19年的論文Augmentation for small object detection(https://arxiv.org/abs/1902.07296)中,也提出了兩個簡單粗暴的方法:性能

1. 針對COCO數據集中包含小目標的圖片數量少的問題,使用過採樣OverSampling策略;

2. 針對同一張圖片裏面包含小目標數量少的問題,在圖片內用分割的Mask摳出小目標圖片再使用複製粘貼的方法(固然,也加上了一些旋轉和縮放,另外要注意不要遮擋到別的目標)。

在同一張圖中有更多的小目標,在Anchor策略的方法中就會匹配出更多的正樣本。

特徵融合的FPN

不一樣階段的特徵圖對應的感覺野不一樣,它們表達的信息抽象程度也不同。淺層的特徵圖感覺野小,比較適合檢測小目標(要檢測大目標,則其只「看」到了大目標的一部分,有效信息不夠);深層的特徵圖感覺野大,適合檢測大目標(要檢測小目標,則其」看「到了太多的背景噪音,冗餘噪音太多)。因此,有人就提出了將不一樣階段的特徵圖,都融合起來,來提高目標檢測的性能,這就是特徵金字塔網絡FPN(https://arxiv.org/abs/1612.03144)

在人臉領域,基本上性能好一點的方法都是用了FPN的思想,其中比較有表明性的有RetinaFace: Single-stage Dense Face Localisation in the Wild(https://arxiv.org/pdf/1905.00641.pdf)

另一個思路:既然能夠在不一樣分辨率特徵圖作融合來提高特徵的豐富度和信息含量來檢測不一樣大小的目標,那麼天然也有人會進一步地猜測,若是隻用高分辨率的特徵圖(淺層特徵)去檢測小臉;用中間分辨率的特徵圖(中層特徵)去檢測大臉;最後用地分辨率的特徵圖(深層特徵)去檢測小臉。好比人臉檢測中的SSH(https://arxiv.org/pdf/1708.03979.pdf)

合適的訓練方法SNIP,SNIPER,SAN

機器學習裏面有個重要的觀點,模型預訓練的分佈要儘量地接近測試輸入的分佈。因此,在大分辨率(好比常見的224 x 224)下訓練出來的模型,不適合檢測自己是小分辨率再經放大送入模型的圖片。若是是小分辨率的圖片作輸入,應該在小分辨率的圖片上訓練模型;再不行,應該用大分辨率的圖片訓練的模型上用小分辨率的圖片來微調fine-tune;最差的就是直接用大分辨率的圖片來預測小分辨率的圖(經過上採樣放大)。可是這是在理想的狀況下的(訓練樣本數量、豐富程度都同樣的前提下,但實際上,不少數據集都是小樣本嚴重缺少的),因此放大輸入圖像+使用高分率圖像預訓練再在小圖上微調,在實踐中要優於專門針對小目標訓練一個分類器

在下圖中示意的是SNIP訓練方法,訓練時只訓練合適尺寸的目標樣本,只有真值的尺度和Anchor的尺度接近時來用來訓練檢測器,過小太大的都不要,預測時輸入圖像多尺度,總有一個尺寸的Anchor是合適的,選擇那個最合適的尺度來預測。對R-FCN(https://arxiv.org/abs/1605.06409)提出的改進主要有兩個地方,一是多尺寸圖像輸入,針對不一樣大小的輸入,在通過RPN網絡時須要判斷valid GT和invalid GT,以及valid anchor和invalid anchor,經過這一分類,使得獲得的預選框更加的準確;二是在RCN階段,根據預選框的大小,只選取在必定範圍內的預選框,最後使用NMS來獲得最終結果。

SNIPER是SNIP的實用升級版本,這裏不作詳細介紹了。

更稠密的Anchor採樣和匹配策略S3FD,FaceBoxes

在前面Data Augmentation部分已經講了,複製小目標到一張圖的多個地方能夠增長小目標匹配的Anchor框的個數,增長小目標的訓練權重,減小網絡對大目標的bias。一樣,反過來想,若是在數據集已經肯定的狀況下,咱們也能夠增長負責小目標的Anchor的設置策略來讓訓練時對小目標的學習更加充分。例如人臉檢測中的FaceBoxes(https://arxiv.org/abs/1708.05234)其中一個Contribution就是Anchor densification strategy,Inception3的anchors有三個scales(32,64,128),而32 scales是稀疏的,因此須要密集化4倍,而64 scales則須要密集化2倍。在S3FD(http://openaccess.thecvf.com/content_ICCV_2017/papers/Zhang_S3FD_Single_Shot_ICCV_2017_paper.pdf)人臉檢測方法中,則用了Equal-proportion interval principle來保證不一樣大小的Anchor在圖中的密度大體相等,這樣大臉和小臉匹配到的Anchor的數量也大體相等了。

另外,對小目標的Anchor使用比較寬鬆的匹配策略(好比IoU > 0.4)也是一個比較經常使用的手段。

先生成放大特徵再檢測的GAN

Perceptual GAN使用了GAN對小目標生成一個和大目標很類似的Super-resolved Feature(以下圖所示),而後把這個Super-resolved Feature疊加在原來的小目標的特徵圖(以下下圖所示)上,以此加強對小目標特徵表達來提高小目標(在論文中是指交通燈)的檢測性能。

利用Context信息的Relation Network和PyramidBox

小目標,特別是像人臉這樣的目標,不會單獨地出如今圖片中(想一想單獨一個臉出如今圖片中,而沒有頭、肩膀和身體也是很恐怖的)。像PyramidBox(https://arxiv.org/abs/1803.07737)方法,加上一些頭、肩膀這樣的上下文Context信息,那麼目標就至關於變大了一些,上下文信息加上檢測也就更容易了。

這裏順便再提一下通用目標檢測中另一種加入Context信息的思路,Relation Networks(https://arxiv.org/abs/1711.11575)雖然主要是解決提高識別性能和過濾重複檢測而不是專門針對小目標檢測的,可是也和上面的PyramidBox思想很像的,都是利用上下文信息來提高檢測性能,能夠歸類爲Context一類。

總結

本文比較詳細地總結了一些在通用目標檢測和專門人臉檢測領域常見的小目標檢測的解決方案,後面有時間會再寫一些專門在人臉領域的困難點(好比ROP的側臉,RIP的360度人臉)及如今學術界的解決方案。

參考資料

1. Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks,https://arxiv.org/abs/1604.02878
2. 《深度學習中不平衡樣本的處理》,https://github.com/Captain1986/CaptainBlackboard/blob/master/D%230016-深度學習中不平衡樣本的處理/D%230016.md
3. Augmentation for small object detection, https://arxiv.org/pdf/1902.07296.pdf
4. Feature Pyramid Networks for Object Detection,https://arxiv.org/abs/1612.03144
5. RetinaFace: Single-stage Dense Face Localisation in the Wild, https://arxiv.org/pdf/1905.00641.pdf
6. SSH: Single Stage Headless Face Detector, https://arxiv.org/pdf/1708.03979.pdf
7. An Analysis of Scale Invariance in Object Detection - SNIP,https://arxiv.org/abs/1711.08189
8. R-FCN: Object Detection via Region-based Fully Convolutional Networks,https://arxiv.org/abs/1605.06409
9. SNIPER: Efficient Multi-Scale Training, https://arxiv.org/pdf/1805.09300.pdf
10. SAN: Learning Relationship between Convolutional Features for Multi-Scale Object Detection, https://arxiv.org/pdf/1808.04974.pdf
11. ScratchDet: Training Single-Shot Object Detectors from Scratch, https://arxiv.org/pdf/1810.08425.pdf
12. FaceBoxes: A CPU Real-time Face Detector with High Accuracy, FaceBoxes: A CPU Real-time Face Detector with High Accuracy
13. S3FD: Single Shot Scale-Invariant Face Detector, http://openaccess.thecvf.com/content_ICCV_2017/papers/Zhang_S3FD_Single_Shot_ICCV_2017_paper.pdf
14. Perceptual Generative Adversarial Networks for Small Object Detection,https://arxiv.org/abs/1706.05274
15. PyramidBox: A Context-assisted Single Shot Face Detector,https://arxiv.org/abs/1803.07737
16.Relation Networks for Object Detection,https://arxiv.org/abs/1711.11575


 End 


聲明:部份內容來源於網絡,僅供讀者學術交流之目的。文章版權歸原做者全部。若有不妥,請聯繫刪除。


猜您喜歡:

附下載 | 《Python進階》中文版

附下載 | 經典《Think Python》中文版

附下載 | 《Pytorch模型訓練實用教程》

附下載 | 最新2020李沐《動手學深度學習》

附下載 | 《可解釋的機器學習》中文版

附下載 |《TensorFlow 2.0 深度學習算法實戰》

附下載 | 超100篇!CVPR 2020最全GAN論文梳理彙總!

附下載 |《計算機視覺中的數學方法》分享


本文分享自微信公衆號 - 機器學習與生成對抗網絡(AI_bryant8)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索