京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

機器之心發表於2019-03-13

不久之前,CVPR 2019 接收論文公佈:在超過 5100 篇投稿中,共有 1300 篇被接收,接收率達 25.2%。本文介紹了京東AI研究院被接受的一篇 Oral 論文,作者從最佳化的角度出發,透過實驗解釋了梯度穩定手段之一的 BatchNorm 是如何幫助隨機初始化訓練一階段檢測器 SSD,進而結合了 ResNet 與 VGGNet 來加強對小物體的檢測。值得一提的是,本文第一作者朱睿還是一位大四學生,就讀於中山大學資料科學與計算機學院,現於京東 AI 研究院視覺與多媒體實驗室實習。

使用 ImageNet 預訓練的網路模型能夠幫助目標任務(物體檢測、語義分割、細粒度識別等)快速收斂,然而使用預訓練模型會帶來諸多限制,其中一個問題就是改動特徵提取網路的結構成本相對較高,需要耗時巨大的重新預訓練來適應不同需求的任務。那麼,如果不使用預訓練模型,進行隨機初始化訓練,達到較高準確率的某些必要條件是什麼?

本文介紹了我們今年的 CVPR Oral 工作《ScratchDet: Exploring to Train Single-Shot Object Detectors from Scratch》,作者從最佳化的角度出發,透過實驗解釋了梯度穩定手段之一的 BatchNorm 是如何幫助隨機初始化訓練一階段檢測器 SSD,進而結合了 ResNet 與 VGGNet 來加強對小物體的檢測。

文章的程式碼後續會公佈到 https://github.com/KimSoybean/ScratchDet,並且 contribute 到 mmdetection 中。

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

論文地址:https://arxiv.org/abs/1810.08425v3

動機

現有的檢測訓練任務存在三個限制:

  • 分類任務與檢測任務的 Learning bias: 一方面是兩者損失函式的不同,一方面是兩者對平移不變性的敏感度不同,還有另外一方面是資料集的差異:ImageNet 資料集是單圖單物體,COCO & PASCAL VOC 資料集是單圖多物體。

  • 如果想要改動檢測模型中的特徵提取網路的結構,需要對網路重新預訓練再進行檢測任務的 finetune,而 ImageNet 預訓練實驗的代價比較大。這個問題在移動端、CPU 實時檢測器等設計中尤為突出,比如:Pelee,Tiny-SSDYOLO-LITE,Fire-SSD,Tiny-YOLO,Tiny-DSOD,MobileNetV2 等等。常用的 VGG-16、ResNet 的計算量以及引數量對於移動端的負載較大,而設計小網路的每次修改都需要重新在 ImageNet 上重新預訓練,時間代價與計算資源消耗都比較大。再比如像 DetNet,想要設計一種專用於檢測的網路,用在 ImageNet 預訓練的實驗就要花很多的時間。

  • Domain Transfer 問題,比如從 ImageNet 自然與生活場景影像遷移到醫療影像中(X 光圖,核磁共振圖)的癌症檢測(S4ND)、衛星影像檢測(You Only Look Twice)是否有用,不同域之間的遷移是否仍然能發揮作用?

分析

早期討論隨機初始化訓練的工作 DSOD 將必要條件歸結到一階段檢測器和 DenseNet 的 dense layer wise connection 上,但是這樣做很大程度限制了網路結構的設計。我們想找到隨機初始化訓練檢測器的某些本質的原因。受到 NeurIPS2018《How Does Batch Normalization Help Optimization?》這篇文章的啟發,透過理論和實驗說明 BN 在最佳化過程中發揮的作用:

  • 梯度更加穩定,更加可預測。

  • 計算梯度時可採用更大的步長,即更大的學習率來加速訓練。

  • 防止 loss 函式解空間突變,既不會掉入梯度消失的平坦區域,也不會掉入梯度爆炸的區域性最小。

沿著這個思路我們在 SSD300 檢測框架上給 VGG 網路與檢測子網路分別加上了 BN 來進行隨機初始化訓練(PASCAL VOC 07+12 訓練,07 測試),調整學習率之後,得到的最好結果 78.7mAP,比直接隨機初始化訓練 SSD 的結果(67.6)高 11.6,比原 SSD300(77.2)高 1.5,比使用預訓練模型 VGG-16-BN(78.2)高 0.6。實驗細節在論文的實驗部分有描述。

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

從左到右的 3 幅圖分別是訓練 loss,梯度的 L2 Norm,梯度的波動程度。透過這三幅圖能夠從最佳化角度分析,為什麼 BN 能夠幫助隨機初始化訓練檢測器,藍色曲線代表直接對 SSD 使用 0.001 的學習率做隨機初始化訓練,紅色曲線在藍色曲線的基礎上在 VGG 網路上加了 BN,綠色曲線在紅色曲線的基礎上使用了 10 倍的學習率。可以看到:從藍色到紅色,給特徵提取網路新增了 BN 之後,梯度的波動程度大幅下降,梯度趨於穩定,最佳化空間更加平滑,訓練 loss 下降,mAP 從 67.6 升高到 72.8。而從紅色到綠色,平滑的最佳化空間允許使用更大的學習率,loss 進一步下降,mAP 也從 72.8 升高到 77.8。我們在檢測子網路(detection head)也做了一樣設定的實驗,得出了相似的結論與梯度分析圖,具體請參考論文。

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

我們在 SSD300 上做了儘可能詳細的對比實驗,包括在 3 個不同學習率(0.001, 0.01, 0.05)下給特徵提取子網路(VGG)新增 BN,給檢測子網路(detection head)新增 BN,給全部網路新增 BN,給全部網路不新增 BN,以上四者的隨機初始化訓練以及對比預訓練 fine-tune 實驗。可以看到,在為整個檢測網路的不同部分新增 BN 之後會有不同程度的提升,而提升最高的是為整個網路新增 BN,在 VOC2007 測試集上(使用 VOC07+12 trainval 訓練)可以達到 78.7mAP。

藉著隨機初始化訓練帶來的優勢,可以對特徵提取網路進行任意改動。之後我們借鑑了 VGGNet 和 ResNet 的優點,最大程度保留原圖資訊,來提升對小物體檢測的效能(論文中輸入影像大小是 300X300,小物體較多)。

分析 ResNet 和 VGGNet 的優缺點

SSD 的升級版論文 DSSD 中,我們將 SSD 的特徵提取網路從 VGG-16 替換成了 ResNet-101,所得實驗結果彙總如下表:

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

ResNet-101 在 ImageNet 的 top-5 error 上比 VGG-16 低了 2.69%,但是在 SSD300-VOC 的結果卻低於 VGG-16,為什麼?跟 VGG-16 相比,ResNet-101 的優點是分類能力強,缺點是對小物體識別能力較差,因為第一個卷積層的 stride=2,在初始輸入的圖片上就進行下采樣,會損失某些原圖資訊,尤其是小物體的資訊。

1) 在 VOC_300 時,ResNet-101 的缺點>優點,輸入圖片較小,圖片中小物體數目變多,缺點被放大;且類別只有 20 類,不能發揮 ResNet 強大的分類能力,在 SSD 上結果低於 VGG-16。

2) 在 VOC_512 時,ResNet-101 的缺點<優點,輸入圖片變大,圖片中小物體數目變少,缺點被縮小,在 SSD 上結果高於 VGG-16。

3) 在 COCO 上時,ResNet-101 的缺點<優點,任務類別有 80 類,是 VOC 的 4 倍,ResNet-101 能充分發揮分類能力,所以無論輸入 300x300 或者 512x512,在 SSD 上結果均高於 VGG-16。

當然這裡的結論需要進一步結合資料集本身的特性來驗證,比如資料集規模 vs 模型引數量,資料集每張圖片平均的 instance 數目,資料集小物體數量等等因素。

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

因此我們借鑑了 ResNet 與 VGGNet 的優點,首先把 ResNet 的第一個卷積層的 stride 從 2 改成 1,也就是取消第一個下采樣操作,並且參照了 DSOD 的方法,替換第一個卷積層為 3 個 3x3 卷積層:這樣做的目的是,儘可能保持原圖資訊不損失,並且充分利用。注意:在將新網路替換到 SSD 框架上時,仍然最大程度保證實驗的公平性。首先,用於檢測的特徵圖在論文中保持 38×38, 19×19, 10×10, 5×5, 3×3, 1×1 的大小,並沒有使用大的特徵圖;其次,保證每個用於檢測的特徵圖的 channel 數目相同。

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

  • (a) 原 ResNet-18: 結果為 73.1 mAP。

  • (b) ResNet-18-A: 去掉了 ResNet-18 的 max-pooling 層,即取消第二個下采樣操作,結果為 75.3 mAP。

  • (c) ResNet-18-B: 將 ResNet-18 的第一個卷積層的 stride=2 改為 1,即取消第一個下采樣操作,結果為 77.6 mAP。

  • (d) Root-ResNet-18: 將 ResNet-18-B 的第一個 7x7 卷積核替換成 3 個 3x3 卷積,結果為 78.5mAP。

分析:在 300x300 大小的輸入影像上(小物體較多):

  • 對比 (a) 與 (c): 取消第一個下采樣操作,提升了 4.5mAP。

  • 對比 (a) 與 (b): 取消第二個,保留第一個下采樣操作 , 提升 2.2mAP。

  • 對比 (b) 與 (c): 是否對原圖進行下采樣,會有 2.3mAP 的影響。

  • 對比 (c) 與 (d): 替換 7x7 為 3 個 3x3 卷積核,使用更加冗餘的特徵會提升效能。

之後,我們將 SSD 在特徵提取網路後面新增的多個卷積層替換為殘差模組,減少了引數量,並且提升了 FPS(SSD300-Root-Res34: 20FPS->25FPS,Tesla P40 測試), 而且檢測準確率沒有下降(在 VOC07 上測試,80.4mAP):

京東AI研究院提出 ScratchDet:隨機初始化訓練SSD目標檢測器

最後,我們使用了 Root-ResNet-34 來做隨機初始化訓練,得到較好的檢測結果:

  • (07+12 訓練,07 測試):80.4 mAP ;

  • (07++12 訓練,12 測試):78.5 mAP;

  • (COCOtrainval35k,COCO 測試):32.7 AP;

值得注意的是,在 COCO 測試集上 AP@S 13.0,對比其他相似輸入大小的檢測器,在小物體檢測結果相對較好。

我們還對比了訓練時間,使用 mmdetection 檢測框架(使用了 repeat dataset 加速訓練 trick),在輸入為 300x300 的時候,隨機初始化訓練大約需要 84.6 小時,而使用預訓練模型 fine-tune 需要 29.7 小時。但是相比起 ImageNet 數以百萬計的圖片數目與幾周的訓練時間來說,隨機初始化訓練檢測器使用的時間相對更少的,可以被人們所接受。

小結

目前,在我們 JD AI Research 已經有幾個小夥伴成功把隨機初始化訓練用在其他任務上,比如:

  1. 目前 JD AI Reserach 在 WIDER FACE 人臉檢測競賽排名第一的 ISRN,使用 GN 與兩倍 epoch 隨機初始化訓練來重新設計用於檢測小人臉並且相對節省視訊記憶體的網路。

  2. 對文字檢測中的演算法 EAST 成功隨機初始化訓練。

ImageNet 資料集深深地影響了計算機視覺的發展,相信未來會有許多好的工作解釋清楚深度學習遷移學習中的奧秘,提出更加高效的訓練策略,開啟深度學習的黑箱。

注:除了本文內容,作者還寫了一篇番外,對比了Kaiming He 以及其他一些有做隨機初始化訓練的論文,並且總結分享了一些相關經驗,感興趣的讀者可參閱《番外篇:關於隨機初始化訓練檢測器的一些想法》。

參考論文:

  • ISRN: https://arxiv.org/abs/1901.06651

  • DSOD:https://arxiv.org/abs/1708.01241

  • ScratchDet:https://arxiv.org/abs/1810.08425v3

  • EAST:https://arxiv.org/abs/1704.03155v2

  • Pelee: https://arxiv.org/abs/1804.06882

  • Tiny-SSD: https://arxiv.org/abs/1802.06488

  • YOLO-LITE: https://arxiv.org/abs/1811.05588

  • Fire-SSD: https://arxiv.org/abs/1806.05363 

  • Tiny-YOLO: https://arxiv.org/abs/1506.02640

  • Tiny-DSOD: https://arxiv.org/abs/1807.11013

  • MobileNetV2: https://arxiv.org/abs/1801.04381

  • S4ND: https://arxiv.org/abs/1805.02279

  • DSSD: https://arxiv.org/abs/1701.06659

  • You Only Look Twice: https://arxiv.org/abs/1805.09512

  • Understanding Batch Normalization: 

  • https://arxiv.org/abs/1806.02375

  • How Does Batch Normalization Help Optimization: 

  • https://arxiv.org/abs/1805.11604

  • mmdetection: https://github.com/open-mmlab/mmdetection

作者簡介:

  • 朱睿,中山大學資料科學與計算機學院大四學生,現於京東 AI 研究院視覺與多媒體實驗室實習。https://kimsoybean.github.io/

  • 張士峰,中科院自動化所 2015 級直博生,導師李子青研究員,研究方向為基於深度學習的物體檢測,主要包括通用物體檢測、人臉檢測、行人檢測。目前已發表論文 16 篇,其中第一作者論文 11 篇,包括 3 篇 CVPR、IJCV、ICCV、ECCV、IJCAI、AAAI 等,獲 CCF-CV 學術新銳獎、百度獎學金等榮譽。http://www.cbsr.ia.ac.cn/users/sfzhang/

  • 王曉波,京東第 2 屆博士技術管培生(DMT),現任京東 AI 研究院 CV 演算法工程師。博士畢業於中科院自動化研究所,發表論文 20 餘篇,包括 CVPR,ICCV,AAAI,IJCAI 等國際會議。目前主要研究方向為 人臉識別目標檢測和模型壓縮。http://www.cbsr.ia.ac.cn/users/xiaobowang/

  • 石海林,現任京東 AI 研究院資深研究員,博士畢業於中科院自動化所,專注於人臉計算、物體檢測、元學習等方向研究。http://hailin-ai.xyz/

相關文章