計算機視覺領域新標杆:Facebook開源ResNext101模型,全面刷新ImageNet記錄

在訓練神經網絡解決圖像分類問題時,數據增強是獲得卓越效果的一個關鍵手段。針對目前主流的數據增強手段,當訓練與測試時使用的圖像分辨率差異較大時,分類器模型會出現性能差異。針對這一問題,Facebook人工智能研究院(FAIR)在論文“Fixing the Train-test Resolution Discrepancy”中提出了一種新的策略來優化分類器,這一策略可以減小訓練與測試時的分辨率不同引起的性能差異。目前,此方法已在Github開源,鏈接附在本文文末。

FAIR首席科學家Yann LeCun表示,通過在Instagram圖片標籤上預訓練並在ImageNet上微調(finetune),論文提出的全新ResNext101模型再次刷新了ImageNet數據集圖像分類競賽的準確度,在圖像分類、目標檢測等計算機視覺技術領域立下了新標杆。諸如目標檢測、圖像分割等等計算機視覺基礎任務都可以將其骨幹網絡替換爲這一新模型,藉助其強大的特徵提取能力,有望取得更好的效果。換言之,整個計算機視覺業界都有機會因之受益。本文是AI前線第90篇論文導讀,我們將對該數據增強方法及其技術實現進行具體介紹。

1 背景介紹

CNN被廣泛的用於諸多計算機視覺任務,如圖像分類、目標檢測、圖像恢復、風格轉換以及圖像壓縮等。爲了儘可能的提升CNN模型的性能,訓練數據與測試數據的分佈需要儘可能的接近。在圖像識別任務中,普遍會使用一種隨機裁剪的數據增強方法。被裁剪出來的區域也被稱爲類別區域(Region of Classification,RoC),這部分內容會被變形成神經網絡輸入所要求的固定大小(即固定分辨率,如ResNet的輸入爲224224,AlexNet的輸入爲227*227)然後加載到網絡中。在測試階段,RoC會被設置爲包含圖像中央部分內容的一個矩形區域。當測試和訓練階段的RoC不同時,網絡看到的數據之間的分佈會存在一個較大的差異,這會影響到網絡模型的性能表現。如圖1所示,使用標準數據增強方法時,在測試和訓練階段用來表示白馬的像素數量是不同的。調整測試和訓練時輸入網絡的圖像區域大小,可以保證用來表示白馬的像素數量一致。

圖1:訓練與測試時輸入網絡的目標大小差異。前兩列表示使用標準數據增強方法導致的訓練與測試時目標大小的差異,後兩列是使用本文作者新提出的數據增強手段在測試和訓練階段對圖像進行調整後輸入模型的目標大小對比。

隨着近些年深度學習的發展,訓練和測試時的數據預處理方法被廣泛應用於提升CNN模型的性能。但目前爲止這兩類數據預處理方法通常都是獨立優化的。在這篇論文中,作者首先展示了獨立優化存在的問題——導致顯著的分佈偏移。隨後作者證明了上述問題可以通過在尺度和分辨率層面上同時對訓練及測試數據進行優化來改善。本文提出的策略只需要微調(fine-tune)兩個網絡層即可彌補對圖片裁剪時區域大小改變而引起的統計學偏差。同時,該策略並不會影響已有的預處理方法的使用。通過本文提出的方法,CNN模型僅需在小尺寸(分辨率)的圖像上訓練即可在大尺寸的測試圖像上獲得比使用大尺寸訓練的模型更好的性能。這使得CNN在訓練階段的模型大小可以有效地被壓縮,同時也意味着可以使用更大的批大小在GPU設備上進行訓練。

論文中,作者通過使用128128大小的圖像進行訓練,ResNet-50可以在ImageNet上獲得77.1%的top-1精度。使用224224的圖像進行訓練時,可以得到79.8%的精度。此外,如果使用額外的訓練數據,在圖像大小爲224224時,ResNet-50可以達到82.5%的精度。相反,當使用弱監督方法訓練ResNext-101 32x48d模型時,使用224224大小的圖像進行訓練,使用320*320大小的圖像進行測試時,模型取得了86.4%的top-1精度以及98.0%的top-5精度,這是在ImageNet數據庫上目前最好的模型。

2 相關工作

圖像分類一直是計算機視覺中的一個關鍵問題,它被廣泛的用於模型的基準測試。在圖像分類任務上預訓練的模型(通常是ImageNet)會被遷移到其他任務中使用。此外,在圖像分類任務上的改進也會相應的用於提升其他任務的效果。在這篇文章中,作者使用的先進的圖像分類模型包括ResNeXt-101 32x48d、PNASNet-5-Large、ResNet-50以及EfficientNet-B7。其中主要研究工作是針對ResNet-50進行研究的,因爲這個模型在性能和成本之間有良好的權衡。

數據增強通常用在訓練階段,以提高模型的泛化能力、減少過擬合。具有代表性的數據增強手段有:隨機裁剪、水平翻轉以及色彩抖動。在這篇論文中,作者使用Pytorch提供的數據增強方法對通用的數據增強手段進行了測試。在測試階段,使用數據增強手段處理同樣可以提高模型的性能,儘管這意味的前向網絡需要更多的計算消耗。此外,如特徵金字塔這種多尺度策略會直接在網絡整合不同分辨率的信息,可以同時用於訓練和測試階段,這種方法在類型級別的檢測上體現出了顯著的優越性。

特徵池化一些近期的工作提出使用p-池化而不是平均池化使得網絡在測試階段可以處理比訓練時候分辨率更高的圖像。類似的池化技巧在圖像檢索領域已經使用了一段時間,這些池化技巧使用更高分辨率的圖像獲得更好的模型性能。

3 問題分析

在數據預處理時,對RoC區域的兩個處理方法會影響到CNN模型的性能:

  1. 一是縮放操作會改變圖像中目標的表觀形狀,由於CNN不能對尺度變化做出可預測的響應,這一點會嚴重影響CNN的性能。

  2. 其次,不同的裁剪尺寸會影響到網絡激活值的統計數據,尤其是經過全局池化後的數據。

作者使用了兩部分章節來簡要說明這兩點對模型的影響,在下文中,“輸入圖像”指原始的訓練或測試圖像,RoC指輸入圖像中的矩形區域,“裁剪塊”指RoC中的像素點。作者使用雙線性插值法將裁剪塊的分辨率調節到固定大小,然後輸入CNN網絡中。

3.1 目標的表觀尺寸與實際尺寸間的關係

考慮下面這種圖像建模過程:照相機將3D世界投影到2D圖像上,所以目標的表觀尺寸與其距照相機的距離是成反比的。假設一個3D目標(物體)是一個尺寸爲RR(高乘寬)的立方體(與其深度無關),它與相機間的距離爲Z,同時假設有R*R這個面與相機成像平面平行,如下圖所示。

通過投影,該目標被投影成一個rr尺寸的矩形,其表觀尺寸r可以由r =fR/Z計算得到。上面這個公式可以改寫爲r = f · r_1,其中國r_1 = R/Z,其中r_1的概率分佈p(r_1)是與相機無關的。相機的焦距f是一個變量,大多數相機的可視角度是[40,60]。因此對於一個HW的圖像,其焦距可以由下面這個公式計算:f=k·sqrt(H*W),其中sqrt表示平方根運算。

通過這樣的定義,物體的表觀尺寸可以由其像素表示。

如果一個物體在圖像上佔據rr大小的像素區域,s是輸入圖像與裁剪區域的縮放比,當圖像被輸入網絡時,目標的實際輸入大小會變成srsr,s的值由預處理程序決定。以Pytroch中的RandomResizeCrop爲例,對於一個輸入爲H*W的圖像,預處理程序會對其進行隨機裁剪和縮放,輸出一個如下圖所示的裁剪區域。

RoC的範圍由尺度參數σ和方向比例α共同決定,其中


輸入圖像是一個正方形(即H=W),縮放係數可以由下面這個公式計算得到:

其中H_RoC和W_RoC可以是在得到最終的裁剪圖像前的輸入圖像中矩形區域的長寬,H_RoC=!

W_RoC=!

通過上面的計算,目標的表觀大小可表示爲:

其中(kK_train)是常量,與r不同,r_train不依賴於輸入圖像的尺寸H*W。在測試階段,使用中心裁剪的方式進行預處理,則有如下公式:

比較訓練圖片和測試圖片表觀尺寸的計算公式,可以發現,對於包含了目標尺寸爲r_1的一張圖像,經過兩種不同的預處理手段後,兩種表觀尺寸的關係爲:

通常,對於標準的CNN網絡,例如AlexNet,K^iamge_test與K_train的比值爲1.15,放縮因子sigma的採樣範圍爲[0.28,1]。因此,對於圖片中具有相同大小的物體,在輸入網絡時其表觀大小在測試階段可能是訓練階段大小的三分之一。假設預處理階段的參數都使用了標準值,這個尺寸關係的期望則爲:

3.2 尺度與激活統計

預處理程序除了會影響目標的表觀大小外,還會影響到CNN的激活值的統計值。尤其是網絡框架允許不同大小的裁剪區域輸入時。論文的作者統計了ResNet-50在均值池化層後的激活值,結果如下圖所示:

圖2:不同尺寸圖像輸入對ResNet-50池化層輸出的分佈影響曲線。

由於經過了ReLU函數,所有激活值都是非負的。在標準裁剪尺寸的設置條件下(K_test = K_train = 224),激活圖是2048通道的77相應圖。當K_test=64時,激活圖大小僅爲22,此時的網絡的響應變得更爲稀疏(0所佔的比例從0.5增加到了29.8%),並且其分佈更加分散。當K_test=448時,激活圖大小爲14*14,輸出的稀疏性明顯減小,且分佈更密集。

3.3 更大的測試裁剪尺寸可以得到更高的精度

儘管增加裁剪區域的大小會影響到激活值的統計值,但這一操作通常對於精度的提高是有利的,因爲它可以有效地減少訓練和測試時目標的尺寸不匹配問題。作者使用ResNet-50在ImageNet數據庫上驗證了K_test的改變對於模型精度的影響:

當K_test=228時模型的精度爲78.4%,這比訓練時使用的K_train=224的效果要好。下圖中有更全面的實驗結可以說明在測試階段使用比訓練階段更高的分辨率可以獲得更好的模型精度。

4 算法介紹

基於第三部分的分析,作者針對標準數據預處理方法提出了兩個改進。首先,測試與訓練階段目標尺寸的差異可以通過增加測試階段的裁剪尺寸來減少(根據3.3部分的實驗觀察結果)。其次,作者微調了網絡在全局均值池化層前的結構,從而對測試階段裁剪區域尺寸增加引起的激活值分佈的變化進行補償。

4.1 通過調節裁剪尺寸校準目標尺寸

3.1部分介紹了測試與訓練階段目標尺寸的變化關係。如果在測試階段,通過調整alpha增加了K^image_test的尺寸,目標的表觀尺寸也會以相同的alpha值增加。但是在K_test固定的時候增加K^image_test意味着網絡僅能看到目標比較小的一部分。這種情況並不理想:因爲拍攝者在拍攝目標時往往都有比較合理的構圖,因此這種裁剪方式會導致目標的細節部分丟失。因此,除了增加K^image_test外,作者也增加了裁剪尺寸K_test從而保持(如下圖所示)是一個常數。

然而,這就意味着(如下圖所示),因此網絡輸出的統計值就會改變。

4.2 在空間池化前調整統計量

通過4.1中的步驟,在測試和訓練階段的目標尺寸得到了校準,但是這會導致網絡的激活值的統計學特徵發生變化,因此作者同時介紹了一個調整統計量的方法。

  • 參數適應 作者使用含參的弗雷切特分佈在完成上述目標尺寸校準後對均值池化層的輸出進行了調整。然後,作者通過標量轉換定義從新分佈到舊分佈的均衡映射,並將其應用爲池層之後的激活函數)。這種補償方法在精度方面提供了可衡量但有限的改進,可能是因爲模型過於簡單,並且該方法不能區分通過池運算符的不同組件的分佈。

  • 微調適應 在測試時提高裁剪分辨率實際上是一種域轉移策略,補償這種轉變的一種常見方法是微調模型。在實驗中,當輸入分辨率從K_train切換到K_test之後,作者在同一組訓練集上進行了微調。 微調階段,作者僅對網絡最後幾層的參數進行了調整。

下圖爲ResNet-50均值池化層輸出的累積分佈函數(Cumulative Distribution Function,CDF),它顯示了優化前後池運算符的激活值的統計信息。微調後,激活統計信息與訓練時的統計信息非常相似,這表明統計信息適應是成功的。

圖4:優化前後均值池化層輸出的激活值統計信息

實驗

基準數據集 作者在ImageNet-2012數據集上對提出的數據增強手段進行了驗證。作者分別展示了Top-1精確度和Top-5精確度,前者對模型的改進更爲敏感,而後者則是一個更魯棒的評價指標。爲了對結果的顯著性進行評估,作者使用留一法計算了Top-1精度的標準偏差。對於所有設置,精確度的標準差爲 0.03%。因此,作者在實驗結果中爲精確度百分比保留了 1 位有效數字。

網絡結構 作者使用了目前最好的標準CNN框架,尤其是ResNet-50網絡。同時作者也在PNASNet-5-Large進行了驗證,PNASNet-5-Large的參數量爲86.1M,Top-1精確度達到了82.9%。此外,作者還使用了ResNeXt-101 32x48d進行驗證,它的準確率爲85.4%,模型參數達到了829M。

訓練方案 作者在訓練過程中使用SGD對模型進行優化,同時使用了學習率衰減策略。所有的實驗都是在8塊TeslaV100GPU和80個CPU核心上運行的。更多訓練細節可參考原文Training protocol部分。

微調數據增強 作者對三種數據增強手段進行了微調實驗:第一個是縮放後進行中心裁剪(testDA),第二個是縮放後對中心裁剪區域進行隨機水平偏移、水平翻轉與色彩抖動(testDA2),最後一個是上文中提到的訓練-測試數據增強(trainDA)。實驗過程中ResNet-50和PNASNet-5-Large使用了testDA,而ResNeXt-101 32x48d則使用了testDA2。

基線結果 基線實驗使用上面提出的數據增強方法提高了圖像的分辨率。重複的增強手段已經將基於PyTorch實現的ResNet-50的Top-1精確度從76.2%提升到了77.0%。上文中的圖3展示了隨着分辨率的增加,網絡精確度會逐漸增加。例如,使用224分辨率訓練的ResNet-50的精確度從77.0上升到了78.4。

實驗結果

作者給出了在PNASNet-5-Large以及ResNet-101 32x48d的實驗結果,如表1所示,表一中數據均爲single-crop的測試結果。對於PNASNet-5-Large,作者發現除了對分類器和Batch-norm層進行微調外,對網絡的最後三個單元進行微調同樣有益處。在測試分辨率從331升到480的過程中,分類精確度提升了一個百分點。將該策略應用到10-crops的測試方法進行測試時,分類精確度達到了83.9%。對於ResNeXt-101 32x48d網絡,當分辨率增加到320,模型的精確度提升了一個百分點,達到了86.4%。

表2展示了文中提到的方法與目前最好的方法的對比試驗結果。“Our ResNet-50” 比 ResNet50-D 和 MultiGrain 稍差一些,但這是因爲不同的ResNet-50的結構並不完全一樣。另一方面,“Our ResNet-50 CutMix” 擁有經典的 ResNet-50 架構,優於其他 ResNet-50,包括稍加修改的版本。經過作者微調的 PNASNet-5 優於MultiGrain版本的PNASNet-5。目前,本文實驗中的ResNeXt-101 32x48d超過了文獻中所有其他模型的性能。

同時,作者還使用了遷移學習方法驗證了模型在其他數據庫上的效果,詳見表3。從表3可以卡出,在所有情況下,本文的數據增強方法都提能夠基線模型的性能。此外,我們注意到圖像分辨率越高,本文提出的數據增強方法的提升效果就越明顯。隨着數據集中圖像質量的逐年提高,這點在如今顯得更爲重要。

論文原文鏈接:

https://arxiv.org/pdf/1906.06423v2.pdf

Github鏈接:

https://github.com/facebookresearch/FixRes

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章