圖解自監督學習(CV)
譯自:https://amitness.com/2020/02/illustrated-self-supervised-learning/
作者:Amit Chaudhary
注:譯者在某些地方對原文的表述做了調整,使其適合漢語的閱讀習慣,并在某幾處有譯者自己的理解。大家有能力的話可以看一下英文原文。
在 Yann Lecun 的一次演講中,作者首次了解到了自監督學習,他在那里介紹了“蛋糕類比”來說明自監督學習的重要性。 在談話中,他說:
“If intelligence is a cake, the bulk of the cake is self-supervised learning, the icing on the cake is supervised learning, and the cherry on the cake is reinforcement learning (RL).”
“如果人工智能是一塊蛋糕,那么大部分蛋糕是自監督學習,監督學習是蛋糕上的冰激凌,而強化學習則是蛋糕上的櫻桃。”
盡管這個類比存在爭議,但我們已經看到了自監督學習在自然語言處理領域的影響,其中最近的(Word2Vec、Glove、ELMO、BERT)已經取得了SOTA的結果。
為了了解計算機視覺領域自監督學習的現狀,作者通過 Jing 等人最近的一篇綜述論文了解了現有的關于將自監督學習應用于計算機視覺的工作。
本文將解釋什么是自監督學習,總結并通過圖示的方式直觀地展示自監督學習中的一些問題的建模方式。
自監督學習簡介
為什么要自監督學習
要在深度神經網絡中進行有監督學習,我們需要足夠的標注數據。 但是人工標注數據是一個既耗時又昂貴的過程。 還有一些領域,例如醫療領域,獲取足夠的數據本身就很困難。 因此,當前有監督學習范式的一個主要瓶頸是如何獲得大量的標注數據。
什么是自監督學習
自監督學習是通過下面這種方式,將無監督學習問題轉化為有監督問題的方法:
我們能否以這樣一種方式設計任務:即我們可以從現有圖像中生成幾乎無限的標簽,并使用它來學習特征表示?
在自監督學習中,我們通過創造性地利用數據的某些屬性來設置偽監督任務來替換人工注釋的部分。 例如,這里不是將圖像標記為貓/狗,而是將它們旋轉 0/90/180/2700/90/180/2700/90/180/270 度并訓練模型來預測旋轉。不同于標注貓 / 狗,對圖像進行旋轉并記錄旋轉標簽可以有機器自動完成,因此,我們可以從互聯網上的數百萬張圖像中生成幾乎無限的訓練數據。下圖展示了整個端到端自監督訓練的工作流。
在我們從數以百萬計的圖像中學習好特征表示后,我們可以利用遷移學習在一些有監督的任務(如僅有少量樣本的貓狗分類任務)上進行微調。
自監督學習方法綜述
現在讓我們了解一下研究人員提出的各種方法來,利用圖像和視頻特性并將自監督學習應用于表征學習。
至于自監督學習任務如何設計,Yann LeCun 在 AAAI 2020 上的演講也提到過:
- 根據所有待預測部分之外的信息預測任意一部分信息。
- 根據過去預測未來。
- 根據過去最近的情況預測未來。
- 根據現在預測過去。
- 根據底層信息預測頂層信息。
- 根據可見的信息預測不可見的信息。
- 假設有一部分輸入數據未知,并且對其進行預測。
對該演講有興趣的讀者,可參考:https://www.bilibili.com/video/BV1V7411573v?from=search&seid=12729545036652967460
A 基于圖像的自監督學習
Pattern 1 重構
1 圖像著色
如果我們通過將灰度應用于數百萬免費提供的圖像來構建訓練樣本對對(灰度、彩色)圖像會怎樣?
我們可以使用基于全卷積神經網絡的編碼器-解碼器架構(自編碼器),來計算預測和實際彩色圖像之間的 L2 損失。
為了完成著色任務,模型必須了解圖像中存在的不同對象和相關部分,如此它才可以用相同的顏色繪制這些部分。 這樣,學習到的表征對于下游任務會很有用。
可參考的相關工作:
- Colorful Image Colorization
- Real-Time User-Guided Image Colorization with Learned Deep Priors
- Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification
2 圖像超分辨
如果我們通過對數百萬圖像進行下采樣來構造訓練樣本對(小圖像放大)圖像會怎樣?
基于 GAN 的模型(例如 SRGAN)在此任務中很常見。 生成器使用全卷積網絡獲取低分辨率圖像并輸出高分辨率圖像。 使用均方誤差和內容損失來比較實際和生成的圖像,以模仿人類的圖像感知質量比較。 二分類鑒別器獲取圖像并對其進行分類,它是實際的高分辨率圖像 (1) 還是假生成的超分辨率圖像 (0)。 兩個模型之間的這種相互對抗作用會使得生成器學習能夠生成具有精細細節的圖像。
學習到語義特征的生成器和鑒別器都可以用于下游任務階段。
可參考的相關工作:
- Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
3 圖像修復
如果我們通過隨機刪除部分圖像來構建訓練樣本對(損壞的、固定的)圖像會怎樣?
與超分辨率類似,我們可以利用基于 GAN 的架構,其中生成器可以學習如何重構圖像,而鑒別器學習將真實圖像和生成的圖像分開。
對于其在下游任務的表現,Pathak 等人。 已經表明,這樣的生成器學習的語義特征在 PASCAL VOC 2012 語義分割比賽上比隨機初始化的模型提高了 10.2%,同時對分類和對象檢測有< 4% 的提升。
可參考的相關工作:
- Context encoders: Feature learning by inpainting
4 Cross-Channel 預測
如果我們從圖像的一個通道預測另一個通道并將它們組合起來重構原始圖像會怎樣?
Zhang 等人在他們名為 Split-Brain Autoencoder 的工作中應用了這個想法。 為了理解論文的idea,讓我們以番茄的彩色圖像為例。
對于這張彩色圖像,我們可以將其拆分為灰度和顏色通道。 然后,對于灰度通道,我們預測顏色通道,對于顏色通道部分,我們預測灰度通道。 將兩個預測通道 X1X_1X1? 和 X2X_2X2? 組合起來以完成對原始圖像的重構。 我們可以將此重構與原始彩色圖像進行比較,以計算損失并更新模型。
同樣的想法也可以應用于具有深度的圖像,我們使用來自 RGB-HHA 圖像的顏色通道和深度通道來相互預測并比較輸出圖像和原始圖像。
可參考的相關工作:
- Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction
Pattern 2 常識任務
1 拼圖任務
如果我們通過隨機打亂圖像塊來構建訓練樣本對(打亂、有序)拼圖會怎樣?
即使只有 9 個圖像塊,也可以有 362880 個可能的 puzzles。 為了解決這個問題,僅使用所有可能排列的一個小子集,例如具有最高漢明距離的 64 個排列。
假設我們使用一個排列來打亂圖像,如下所示。 讓我們使用總共 64 個可用排列中的排列數 64。
現在,為了復原出原始圖像塊關系,Noroozi 等人 提出了一種稱為上下文無關網絡(CFN)的神經網絡,如下所示。 在這里,單個圖像塊通過具有共享權重的相同孿生卷積層。 然后,將這些特征組合,并送入一個全連接層中。 在輸出中,模型必須從 64 個可能的類中預測使用了哪種排列。
為了完成拼圖任務,模型需要學習識別物體中組件的組裝方式、物體不同部分的相對位置以及物體的形狀。 因此,這些表示對于分類和檢測中的下游任務很有用。
可參考的相關工作:
- Unsupervised learning of visual representations by solving jigsaw puzzles
2 上下文預測
如果我們通過從大型未標記的圖像集合中隨機獲取一個圖像塊及其周圍的一個相鄰塊來構建訓練樣本對(圖像塊,相鄰圖像塊)會怎樣?
為了完成這個輔助任務,Doersch 等人 使用了類似于拼圖任務的結構。圖像塊通過兩個孿生卷積網絡來提取特征,拼接特征并在 8 個類別上進行分類,表示 8 個可能的鄰塊位置。
可參考的相關工作:
Unsupervised Visual Representation Learning by Context Prediction
3 幾何變換識別
如果我們通過從大型未標記圖像集合中隨機旋轉圖像(0、90、180、270)來構建訓練樣本對(旋轉圖像、旋轉角度)會怎樣?
為了解決這個前置任務,Gidaris 等人 提出一種架構,其中旋轉圖像通過卷積網絡,網絡需要將輸入圖像分類為 4 類(0/90/270/3600/90/270/3600/90/270/360 度)。
雖然看起來是一個非常簡單的任務,但該模型必須了解圖像中對象的位置、類型和姿勢才能完成此任務,因此,學習到的表示對于下游任務會很有用。
可參考的相關工作:
Unsupervised Representation Learning by Predicting Image Rotations
Pattern 3 自動生成標簽
1 圖像聚類
如果我們通過對大型未標記圖像集合執行聚類來構建訓練樣本對(圖像,簇數)會怎樣?
為了解決這個前置任務,Caron 等人 提出一種稱為深度聚類的架構。 在這里,首先對圖像進行聚類,并將聚類用作類。 模型的任務是預測輸入圖像的集群標簽。
可參考的相關工作:
- Deep clustering for unsupervised learning of visual features
- Self-labelling via simultaneous clustering and representation learning
- CliqueCNN: Deep Unsupervised Exemplar Learning
2 影像合成
如果我們通過使用游戲引擎生成合成圖像并使其適應真實圖像來構建訓練樣本對(圖像、屬性)會怎樣?
為了解決這個輔助任務,Ren 等人 提出了一種架構,其中權重共享的卷積網絡在合成圖像和真實圖像上進行訓練,然后將合成圖像和真實圖像送入鑒別器,鑒別器學習分類輸入是合成圖像還是真實圖像。 由于對抗性作用,真實圖像和合成圖像之間的共享表征將會變得更好。
B 基于視頻的自監督學習
如果我們通過從運動物體的視頻中混洗幀來構建訓練樣本對(視頻幀,正確/不正確的順序)會怎樣?
為了完成這個輔助任務,Misra 等人 提出了一種架構,其中視頻幀通過權重共享的卷積網絡,模型必須確定幀的順序是否正確。 這樣做時,模型不僅需要學習空間特征,還需要考慮時間特征。
可參考的相關工作:
- Shuffle and Learn: Unsupervised Learning using Temporal Order Verification
- Self-Supervised Video Representation Learning With Odd-One-Out Networks
Citation Info (BibTex)
如果讀者覺得本文對你的研究工作有幫助的話,可以引用原作者的博客:
@misc{chaudhary2020selfsupervised,title = {The Illustrated Self-Supervised Learning},author = {Amit Chaudhary},year = 2020,note = {\url{https://amitness.com/2020/02/illustrated-self-supervised-learning}}
}