谷歌大腦團隊:重新思考計算機視覺預訓練和自我訓練的

在計算機視覺領域,預訓練對下游分類和目標檢測等任務效果都有很大的提升。近期,谷歌大腦團隊(Google Brain)通過實驗證實,自我訓練對分類和目標檢測等下游任務,效果有很大提升。本文是AI前線第111篇論文導讀,我們將對這項研究工作進行詳細解讀。

概覽

預訓練是計算機視覺領域的一種主流範式。由於許多視覺任務都是相關的,因此需要在一個數據集上預先訓練一個模型,以幫助另一個數據集。現在普遍的做法是在ImageNet分類上預先訓練目標檢測和分割模型的骨幹。這種做法最近受到了何愷明等人的質疑(Rethinking ImageNet Pre-training)。他們給出了一個令人驚訝的結果,即這樣的ImageNet預訓練並沒有提高COCO數據集的準確性。

與預訓練形成鮮明對比的是自我訓練。假設我們想使用ImageNet來幫助COCO目標檢測,在自我訓練下,我們將首先丟棄ImageNet上的標籤,然後在COCO上訓練一個目標檢測模型,並用它在ImageNet上生成僞標籤。再將僞標記的ImageNet和標記的COCO數據結合起來訓練一個新的模型。最近自我訓練的成功提出了一個問題:自我訓練在多大程度上比預先訓練更有效。在預訓練失敗的情況下,使用ImageNet改進COCO,自我訓練能否在準確的設置下有效?

我們的工作是研究自我訓練(我們的方法基於噪音的學生訓練),並回答上述問題。我們定義了一組控制實驗,其中我們使用ImageNet作爲附加數據,目的是改善COCO。我們改變COCO中標記數據的數量和作爲控制因素的數據增強的強度。我們的實驗表明,當我們增加數據擴充的強度或增加標記數據的數量時,預訓練的價值就會降低。事實上,隨着我們最強大的數據增強,預訓練顯著地降低了-1.0AP的準確度,這是一個令人驚訝的結果。

我們的實驗表明,自我訓練與數據擴充有很好的相互作用:更強的數據擴充不僅不會損害自我訓練,而且有助於自我訓練。在相同的數據擴充下,使用相同的ImageNet數據集,自訓練可以獲得正的+1.3AP改進。這是另一個顯著的結果,因爲它表明自我訓練在預先訓練失敗的情況下是有效的。這兩個結果爲上述問題提供了一個肯定的答案。

一種越來越流行的預訓練方法是自監督學習。自監督學習方法在不使用標籤的情況下對數據集進行預訓練,以期構建更通用的表示形式,用於更廣泛的任務和數據集。我們研究了使用最先進的自監督學習技術對ImageNet模型進行預訓練,並與基於COCO的標準監督ImageNet預訓練進行了比較。我們發現,使用SimCLR的自監督預訓練模型具有與有監督ImageNet預訓練相似的性能。當自我訓練有幫助時,這兩種方法都會在高數據/強增強環境下損害COCO的性能。我們的結果表明,監督和自我監督的預訓練方法都不能隨着標記數據集大小的增長而擴展,而自訓練仍然是有用的。

然而,我們的工作並不排斥計算機視覺的預訓練。在我們的實驗中,微調預訓練的模型比從頭開始訓練和自我訓練要快。加速比從1.3倍到8倍不等,這取決於預先訓練的模型質量、數據擴充的強度和數據集大小。在難以收集足夠的標記數據的應用程序中,預訓練也可以受益。在這種情況下,預訓練效果很好;但自我訓練也有利於有或無預訓練的模型。例如,我們對PASCAL分割數據集的實驗表明ImageNet預訓練提高了準確性,但是自訓練在預訓練的基礎上提供了額外的+1.3%的mIOU提升。事實上,即使使用相同的數據集,預訓練的好處也不會抵消自我訓練的收益,這表明了自我訓練的普遍性。

進一步,我們探討了在COCO和PASCAL數據集上自我訓練的侷限性,從而證明了該方法的靈活性。我們對COCO數據集進行自訓練,以開放圖像數據集作爲未標記數據源,RetinaNet和Spinnet作爲目標檢測器。這種組合在COCO測試集上達到54.3AP,比最強的Spinnet模型好+1.5AP。在分割方面,我們使用PASCAL-aug集作爲未標記數據的來源,使用NAS-FPN和EfficientNet-L2作爲分割模型。這種組合在PASCAL VOC 2012測試集上達到90.5AP,超過了89.0AP的最新精度,後者還使用了額外的300M標記圖像。這些結果證實了自我訓練的另一個好處:它對未標記的數據源、模型體系結構和計算機視覺任務非常靈活。

相關工作

在整個深度學習的歷史中,預訓練一直備受關注。21世紀初,深度學習的復甦也始於無監督的預訓練。NLP中無監督預訓練的成功重新激起了人們對計算機視覺無監督預訓練的興趣,尤其是對比訓練。在實踐中,有監督的預訓練在計算機視覺領域是非常成功的。例如,許多研究表明,在ImageNet、Instagram和JFT上預先訓練的ConvNets可以爲許多下游任務提供強大的改進。

有監督的ImageNet預訓練是用於目標檢測和分割的最廣泛的初始化方法。然而,如果我們考慮一個非常不同的任務,比如COCO目標檢測,ImageNet的預訓練效果並不好。

何愷明等人相比,我們的工作更進一步,更詳細地研究了預訓練在計算機視覺中的作用,包括更強的數據擴充,不同的預訓練方法(監督和自監督),以及不同的預訓練檢查點質量。

本文沒有深入研究有針對性的預訓練,例如使用一個目標檢測數據集來改進另一個目標檢測數據集,原因有二。首先,有針對性的預訓練費用高昂,而且不可擴展。第二,有證據表明,在與目標任務相同的數據集上進行預訓練仍然無法產生改進。例如,Shao等人發現開放圖像對象檢測數據集上的預訓練實際上會損害COCO的性能。更多有針對性的預訓練分析見[42]。

我們的工作證明了自我訓練的可擴展性和普遍性。最近,自我訓練在深度學習(如圖像分類[9,10]、機器翻譯[11]和語音識別[12,43])方面取得了顯著進展。與我們的工作關係最密切的是Xie等人的工作。他們在自我訓練中也使用了強大的數據擴充,但用於圖像分類。更接近應用的是用於檢測和分割的半監督學習,他們只研究孤立的自我訓練,或者沒有與ImageNet預訓練進行比較。他們也不考慮這些訓練方法和數據擴充之間的相互作用。

方法論

3.1方法和控制因素

數據增強:我們使用了四種不同的增強策略來增強檢測和分割。這允許在我們的分析中改變數據增強的強度。我們根據文獻、AutoAugment和RanAugment中的標準翻轉和scale jittering來設計我們的增強策略。標準翻轉和裁剪策略包括水平翻轉和縮放抖動。隨機抖動操作將圖像大小調整爲目標圖像大小的(0.8,1.2),然後對其進行裁剪。AutoAugment和RandAugment最初是用標準的抖動設計的。我們在AutoAugment和RandAugment中增加了尺度抖動(0.5,2.0),發現性能得到了顯著改善。我們得出了四個數據我們用於實驗的增強策略:FlipCrop、AutoAugment、具有更高比例抖動的AutoAugment、使用更高比例抖動的RandAugment。在全文中,我們將它們分別稱爲:Augment-S1、Augment-S2、Augment-S3和Augment-S4。最後三種增強策略比何愷明等人提出的策略更爲強大。他使用基於FlipCrop的策略。

預訓練:爲了評估預訓練的有效性,我們研究了不同質量的ImageNet預訓練檢查點。爲了控制模型容量,所有檢查點使用相同的模型體系結構,但在ImageNet上具有不同的精確度(因爲它們的訓練方式不同)。我們使用EfficientNet-B7架構[51]作爲預培訓的強大基線。對於EfficientNet-B7架構,有兩個可用的檢查點:1)使用AutoAugment訓練的EfficientNet-B7檢查點,在ImageNet上達到84.5%的top-1準確率;2)使用噪聲學生方法訓練的EfficientNet-B7檢查點,利用額外的300M未標記圖像,達到86.9%的top-1精度。我們將這兩個檢查點分別表示爲ImageNet和ImageNet++。隨機初始化的訓練用Rand Init表示。因此,我們所有的基線都比何愷明等人都強。他只將ResNet用於他們的實驗(EfficientNetB7檢查點比ResNet-50檢查點具有大約8%的準確性)。表1總結了數據增強和預先訓練的檢查點的符號。

自我訓練:我們的自我訓練實現基於噪音的學生訓練,有三個步驟。首先,教師模型是根據標記的數據(例如COCO數據集)進行訓練的。然後教師模型在未標記的數據(例如ImageNet數據集)上生成僞標籤。最後,學生模型訓練是聯合優化人類打的標籤與僞標籤上的損失。學生的主要噪聲源是通過數據增強和先前在相關模型中使用的其他噪聲方法。我們對各種超參數和數據增強的實驗表明,用這種標準損失函數進行自我訓練是不穩定的。爲了解決這個問題,我們實現了一種標準化損失的技術。

3.2附加實驗設置

目標檢測:我們使用COCO數據集(118k個images)進行監督學習。在自我訓練中,我們將ImageNet(1.2M images)和OpenImages(1.7M images)作爲未標記的數據集進行實驗。在實驗中,我們在EfficientNet-B7骨幹網絡上採用RetinaNet檢測器和特徵金字塔網絡。我們使用圖像大小爲640×640,從P3到P7的金字塔級別,每像素9個錨,如[14]所述。訓練批大小爲256,帶權重衰減爲1e-4。該模型的學習率爲0.32 和餘弦學習率衰減策略。對於所有使用不同增強強度和數據集大小的實驗,我們允許每個模型進行訓練,直到它收斂爲止(當訓練時間較長時,停止有助於甚至損害在一個有效數據集上的性能)。例如,當兩個模型隨機初始化時,使用Augment-S1進行45k次迭代,使用Augment-S4進行120k次迭代。對於使用SpineNet的結果,我們使用文[15]中報告的模型結構和超參數。當我們使用SpineNet時,由於內存限制,我們將批處理大小從256個減少到128個,並將學習率提高一半。除批處理大小和學習速率外,超參數遵循SpineNet開源存儲庫中的默認實現。所有SpineNet模型也使用sigma爲0.3的Soft-NMS。在自我訓練中,我們使用硬分數閾值0.5來生成僞框標籤。我們使用總共512個批處理大小,COCO的256個,僞數據集的256個。其他訓練超參數與監督訓練相同。

語義分割:我們使用PASCAL VOC 2012分割數據集的訓練集(1.5k images)進行監督學習。在自我訓練中,我們使用增強PASCAL數據集(9k images)、COCO(240k images,結合標記和未標記的數據集)和ImageNet(1.2M圖像)進行實驗。在EfficientNet-B7和EfficientNet-L2主幹模型,我們採用NAS-FPN模型架構。我們的NAS-FPN模型,使用重複7次的深度卷積網絡。我們使用P3到P7的金字塔級別,並將所有的特徵級別上採樣到P2,然後通過求和運算將它們合併。我們在合併後的特徵後應用3層3×3卷積,然後附加1×1卷積進行21類預測。對於批量大小爲256、權重衰減爲1e-5的EfficientNet-B7和EfficientNet-L2,學習率設置爲0.08。該模型採用餘弦學習率衰減策略進行訓練。EfficientNet-B7 經過40k次迭代訓練,EfficientNet-L2經過20k次迭代訓練。對於自我訓練,我們對EfficientNet-B7使用512的批處理大小,對於EfficientNet-L2使用256的批處理大小。批處理的一半由監督數據和另一半僞數據組成。其他超參數遵循監督訓練中的參數。此外,我們使用硬評分閾值0.5來生成分割掩碼,分數較小的像素被設置爲忽略標籤。最後,我們應用多尺度推理增強算法(0.5,0.75,1,1.25,1.5,1.75)來計算僞標記的分割掩碼。

實驗

4.1增強和標記數據集大小對預訓練的影響

這一節擴展了何愷明等人的發現。他研究了COCO數據集的預訓練的弱點,因爲他們改變了標記數據集的大小。與他們的研究類似,我們使用ImageNet進行監督前訓練,並改變COCO標記的數據集大小。與他們的研究不同,我們還改變了其他因素:數據增強能力和預先訓練的模型質量(更多細節見第3.1節)。如前所述,我們使用以EfficientNet-B7架構爲主幹的RetinaNet對象檢測器。以下是我們的主要發現:

  • 當使用更強的數據增強時,預訓練會影響性能

我們分析了當我們改變增強力量時,訓練前的影響。在圖1-Left中,當我們使用標準數據擴充(Augment-S1)時,預訓練會有所幫助。但是,隨着數據增強強度的增加,預訓練的價值就降低了。

此外,在強擴充機制下,我們觀察到,預訓練實際上會對成績造成很大的傷害(-1.0AP)。何愷明等人沒有觀察到這一結果。因爲預訓練只會輕微地影響他們的表現(-0.4AP)或者在實驗中是中性的。

  • 更多的標記數據會降低預訓練的價值

接下來,我們分析了改變標記數據集大小時預訓練的影響。圖1-右圖顯示,預訓練在低數據區(20%)是有幫助的,在高數據區是中性或有害的。這一結果與何愷明等人的觀察結果基本一致。這裏的一個新發現是,檢查點質量確實與低數據狀態下的最終性能相關(ImageNet++ 在20%COCO上的性能最好)。

4.2擴增和標記數據集大小對自我訓練的影響

在這一部分,我們分析了自我訓練,並與上述結果進行了對比。爲了保持一致性,我們將繼續使用COCO對象檢測作爲感興趣的任務,ImageNet作爲自訓練數據源。與預訓練不同,自我訓練只將ImageNet視爲未標記的數據。再次,我們使用RetinaNet 目標檢測器作爲EfficientNet-B7網絡的主幹,以與先前的實驗兼容。

以下是我們的主要發現:

  • 自我訓練在高數據/強增強系統中有幫助,即使在訓練前受傷的情況下也是如此

與上一節類似,我們首先分析了當我們改變數據增強強度時目標檢測器的性能。表2顯示了四種數據擴充方法的自訓練性能,並將它們與監督學習(Rand Init)和預訓練(ImageNet Init)進行了比較。在這裏,我們還展示了自我訓練和預訓練到基線的收益/損失。結果證實,在預訓練受損的情況下(強數據擴充:Augment-S2,Augment-S3,Augment-S4),自我訓練有顯著的幫助。當預訓練的損害爲-1.0AP時,它在基線之上提供了超過+1.3AP的提升。在ResNet-101上也得到了類似的結果。

  • 自我訓練適用於不同的數據集大小,是對預訓練的補充

接下來,我們分析自我訓練在改變COCO標記的數據集大小時的性能。從表3中可以看出,不管預訓練方法如何,自訓練對數據集大小(從小到大)的對象檢測器都有好處。最重要的是,在100%標記集大小的高數據狀態下,自我訓練顯著改善了所有模型,而預訓練卻很受損。

在20%的低數據範圍內,自訓練在Rand Init的基礎上獲得了最大的+3.4AP增益。這個增益大於ImageNet Init(+2.6AP)獲得的增益。雖然自訓練增益小於ImageNet++Init的增益,但ImageNet++Init使用了額外的300M未標記圖像。

即使在使用相同的數據源時,自我訓練與預訓練相比也是相當重要的。例如,在數據量爲20%的情況下,使用ImageNet預訓練過的檢查點可以提高+2.6AP。使用ImageNet進行預訓練和自我訓練可獲得額外的+2.7AP增益。在所有的數據集大小中,可以觀察到結合預訓練和自訓練的額外的收益。

4.3當自我訓練在高數據/強增強系統中有幫助時,自我監督的預訓練也會造成傷害

先前的實驗表明,ImageNet預訓練會損害準確性,尤其是在高數據、增強能力最強的情況下。在這種情況下,我們研究了另一種流行的預訓練方法:自我監督學習。

自我監督學習的主要目標是建立可轉移到更廣泛的任務和數據集的通用表示。由於有監督的ImageNet預訓練會損害COCO的性能,所以不使用標籤信息的潛在的自我監督學習技術可能會有所幫助。在本節中,我們重點討論高數據(100%COCO數據集)和最強增強(Augment-S4)設置中的COCO。我們的目標是將隨機初始化與使用最先進的自監督算法預先訓練的模型進行比較。爲此,我們選擇一個在ImageNet上使用SimCLR框架預訓練的檢查點。我們在對ImageNet標籤進行微調之前使用檢查點。所有主幹模型都使用ResNet-50,在工作中,SimCLR只使用ResNet。

表4中的結果表明,自我監督的預訓練檢查點對性能的影響與在COCO數據集上的監督預訓練一樣大。兩個預訓練的模型比使用隨機初始化的模型性能降低了-0.7AP。我們再次看到自我訓練提高了0.8AP性能,當兩個預訓練的模型都損害了性能。儘管自我監督學習和自我訓練都忽略了這些標籤,但是自我訓練似乎在使用未標記的ImageNet數據來幫助COCO時更爲有效。

4.4探索自我訓練和預訓練的侷限性

在本節中,我們將結合我們關於數據擴充、自我訓練和預訓練的相互作用的知識,以改進最先進的技術。以下是我們的主要成果:

COCO 目標檢測

在本實驗中,我們使用自訓練和Augment-S3作爲增強方法。之前對完整COCO的實驗表明ImageNet預訓練會損害性能,所以我們不使用它。雖然對照實驗使用了EfficientNet和ResNet主幹,但是我們在這個實驗中使用了SpineNet,因爲它更接近最先進的技術。對於自我訓練,我們使用開放圖像數據集(OID)作爲自我訓練的未標記數據,我們發現它比ImageNet更好(有關數據源對自我訓練的影響的更多信息,請參閱附錄E)。請注意,通過[41]中的預訓練發現OID對COCO沒有幫助。

表5顯示了我們在兩個最大的SpineNet模型上的結果,並將它們與之前在此數據集上的最佳單一模型、single-crop性能進行了比較。對於最大的SpineNet模型,我們將最好的52.8AP SpineNet模型改進+1.5AP,以達到54.3AP。在所有模型變體中,我們至少獲得+1.5AP增益。

PASCAL-VOC語義分割

在這個實驗中,我們使用NAS-FPN架構,EfficientNet-B7和EfficientNet-L2作爲主幹架構。由於PASCAL的數據集很小,所以在這裏,預訓練仍然很重要。因此,本實驗採用預訓練、自我訓練和強數據擴充相結合的方法。對於預訓練,我們使用ImageNet++來訓練EfficientNet主幹。對於增強,我們使用Augment-S4。我們使用PASCAL的aug集作爲自訓練的附加數據源,我們發現它比ImageNet更有效。

表6顯示,我們的方法在很大程度上改進了現有的技術。我們在PASCAL VOC 2012測試集上使用單尺度推理實現了90.5%的mIOU,超過了舊的最先進水平89%mIOU利用多尺度推理。對於PASCAL,我們發現有一個良好的檢查點的預訓練是至關重要的,沒有它,我們可以達到41.5%的mIOU。有趣的是,我們的模型比以前的技術進步了1.5% mIOU甚至在訓練中使用更少的人類標籤。我們的方法使用ImageNet(1.2M images)和PASCAL序列分割(1.5k images)中的標記數據。相比之下,以前最先進的模型使用了額外的標記數據:JFT(300M images)、COCO(120k images)和PASCAL-aug(9k images)。關於僞標記圖像的可視化。

討論

重新思考預訓練和通用特徵表徵

計算機視覺最宏偉的目標之一是開發能夠解決許多任務的通用特徵表示。我們的實驗顯示了在分類任務和自監督任務中學習普遍表徵的侷限性,這表現在自訓練和預訓練的表現差異上。我們對預訓練表現不佳的直覺是,預訓練沒有意識到感興趣的任務,可能無法適應。在切換任務時通常需要這樣的適應,因爲,例如ImageNet的良好特徵可能會丟棄COCO所需的位置信息。我們認爲,與監督學習相結合的自我訓練目標更能適應感興趣的任務。我們懷疑這會導致自我訓練更普遍地有益。

聯合訓練的好處

自我訓練範式的一個優點是它聯合訓練監督目標和自我訓練目標,從而解決兩者之間的不匹配問題。但也許我們可以聯合訓練ImageNet和COCO來解決這個不匹配的問題?表7顯示了聯合訓練的結果,其中ImageNet分類與COCO目標檢測聯合訓練(我們在本實驗中使用精確的設置作爲自訓練)。我們的結果表明,ImageNet預訓練可以提高+2.6AP,但是使用隨機初始化和聯合訓練可以獲得更大的+2.9AP增益。這種改進是通過在ImageNet數據集上訓練19個epoch來實現的。大多數用於微調的ImageNet模型需要更長時間的訓練。例如,ImageNet Init(監督預訓練模型)需要在ImageNet數據集中訓練350個epochs。

此外,使用相同的ImageNet數據源(表的最後一列),預訓練、聯合訓練和自我訓練都是相加的。ImageNet預訓練獲得+2.6AP改善,預訓練+聯合訓練獲得+0.7AP改善,進行預訓練+聯合訓練+自我訓練獲得+3.3AP改善。

任務協調的重要性

在我們的實驗中,一個有趣的結果是ImageNet的預訓練,即使有附加的人類標籤,其表現也比自我訓練差。同樣,我們在PASCAL數據集上驗證了同樣的現象。在PASCAL數據集上,aug集通常用作附加數據集,其標籤比訓練集噪聲大得多。我們的實驗表明,在強數據增強(Augment-S4)的情況下,使用train+aug進行訓練實際上會損害準確性。同時,在同一個aug數據集上通過自訓練生成的僞標籤顯著提高了準確性。這兩個結果都表明噪聲(PASCAL)或非靶向(ImageNet)標記比靶向僞標記更差。

值得一提的是,Shao等人。[41]報告開放圖像的預訓練損害了COCO的性能,儘管它們都用邊界框進行了註釋。這意味着我們不僅希望任務是相同的,而且註釋也是相同的,這對於預訓練是非常有益的。另一方面,自我訓練是非常普遍的,可以成功地使用開放圖像來提高COCO的表現,這一結果表明自我訓練可以很好地與感興趣的任務保持一致。

侷限性

目前的自我訓練技術仍然存在侷限性。特別是,自我訓練需要更多的計算,而不是對預訓練的模型進行微調。由於預訓練,加速從1.3倍到8倍不等,這取決於預訓練的模型質量、數據擴充的強度和數據集的大小。對於低數據應用,如PASCAL分割,也需要良好的預訓練模型。

自我訓練的可擴展性、通用性和靈活性

我們的實驗結果突出了自我訓練的重要優勢。首先,就靈活性而言,自我訓練在我們嘗試過的每種設置中都很有效:低數據區、高數據區、弱數據區和強數據區。對於不同的體系結構(ResNet、EfficientNet、SpineNet、FPN、NAS-FPN)、數據源(ImageNet、OID、PASCAL、COCO)和任務(對象檢測、分割)來說,自我訓練也是有效的。第二,就一般性而言,自我訓練即使在訓練失敗時也能很好地發揮作用,但當訓練成功時也是如此。在可伸縮性方面,自我訓練被證明表現良好,因爲我們有更多的標記數據和更好的模型。機器學習的一個慘痛教訓是,當我們有更多的標記數據、更多的計算或更好的監督訓練配方時,大多數方法都會失敗,但這似乎並不適用於自我訓練。

論文原文鏈接:

https://arxiv.org/pdf/2006.06882.pdf

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