計算機視覺研究新方向:自監(jiān)督表示學(xué)習(xí)總結(jié)(建議收藏)
作者&編輯:李中梁為什么需要自監(jiān)督學(xué)習(xí)
隨著深度模型的興起,基于監(jiān)督的圖像特征提取方式已經(jīng)成為主流。然而這種方法需要大量的有標(biāo)簽數(shù)據(jù),標(biāo)注成本過高,在小樣本數(shù)據(jù)集上面臨著過擬合等問題。如何減少算法對高質(zhì)量標(biāo)簽數(shù)據(jù)集的需求?如何利用大量的無標(biāo)簽圖像數(shù)據(jù)進行特征提?。咳绾巫屇P吞崛〉奶卣骶哂懈臃夯谋磉_能力?
自監(jiān)督表示學(xué)習(xí)算法應(yīng)運而生。公眾號上一篇自監(jiān)督學(xué)習(xí)在計算機視覺中的應(yīng)用為大家介紹了自監(jiān)督學(xué)習(xí)的基本概念和一些應(yīng)用,本篇文章參考Lilian Weng在其博客(lilianweng.github.io)中總結(jié)的自監(jiān)督表示學(xué)習(xí)在圖像,視頻和控制領(lǐng)域的進展,將摘選其中圖像和視頻部分的內(nèi)容進行分享。內(nèi)容較多,建議先收藏~
Distortion(扭曲,變形)
Exemplar-CNN(Dosovitskiy et al., 2015)《Discriminative Unsupervised Feature Learning with Exemplar Convolutional Neural Networks》用圖像中的patch創(chuàng)建數(shù)據(jù)集:
1.從包含大量梯度的位置選取“exemplary” patch
2.每個補丁都通過應(yīng)用各種隨機轉(zhuǎn)換(即、平移、旋轉(zhuǎn)、縮放等)所有產(chǎn)生的失真補丁都被認(rèn)為屬于同一個代理類
3.pretext任務(wù)是區(qū)分一組代理類(每一個patch就是一個代理類)。
Rotation《Unsupervised Representation Learning by Predicting Image Rotations》提出了一種簡單的圖像旋轉(zhuǎn)分類的代理任務(wù)。為了用不同的旋轉(zhuǎn)來識別相同的圖像,模型必須學(xué)會識別高層次的物體部分,如頭、鼻子和眼睛,以及這些部分的相對位置,而不是局部模式。這個接口任務(wù)驅(qū)動模型以這種方式學(xué)習(xí)對象的語義概念。
Patches
一幅圖像中提取多個patch,并要求模型預(yù)測這些patch之間的關(guān)系
relative position《Unsupervised Visual Representation Learning by Context Prediction》讓模型預(yù)測patch的相對位置
1.隨機采樣patch
2.考慮到第一個patch被放置在一個3x3的網(wǎng)格的中間,第二個patch被采樣于它周圍的8個相鄰的位置
3.引入一些噪音
4.該模型被訓(xùn)練來預(yù)測第二個patch是從8個相鄰位置中的哪一個中選擇出來的,這是一個超過8類的分類問題(就是說看第二個patch的相對于第一個patch 的位置是1,還是2,3….8)
在《Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles》是將9個patch打亂然后讓模型將其放回,實際實現(xiàn)時讓模型預(yù)測其屬于每個位置的概率,當(dāng)然可以用GCN來加速訓(xùn)練。
另一種想法是在論文《Representation Learning by Learning to Count》中提出的,將“feature”或“visual primitives”看作一個標(biāo)量值屬性,它可以在多個patch上求和,并在不同的patch之間進行比較。然后通過計數(shù)特征和簡單的算法來定義patch之間的關(guān)系。
具體操作如下:

簡單來說,就是對原始圖像進行上采樣和分塊操作(2*2分塊,得到4塊),希望上采樣后計算出的數(shù)目和原圖計算出的數(shù)目一致,希望地磚分塊操作后計算出的數(shù)目是原圖計算出的數(shù)目的4倍。
Colorization
《Colorful Image Colorization》這篇論文為灰度圖著色為彩色(在CIE LAB color space)思想也很簡單。Momentum Contrast
《Momentum Contrast for Unsupervised Visual Representation Learning》提出一種新的無監(jiān)督學(xué)習(xí)框架:動態(tài)字典查找。
對quuery(x_q)通過encoder有一個對應(yīng)的表達q,對于key(x_k)通過momentum encoder有一個對應(yīng)的表達k,這些k構(gòu)成一個list字典。假設(shè)字典中有一個k和q匹配。在論文中k是通過x的數(shù)據(jù)增強得來的。使用了InfoNEC contrastive loss 學(xué)習(xí) 1個positive和K個negative樣本:

訓(xùn)練偽代碼:
同樣《A Simple Framework for Contrastive Learning of Visual Representations》中也提出了一個簡單的框架用于對比學(xué)習(xí)。它通過潛在空間的對比損失,最大限度地提高相同樣本的不同增強視圖之間的一致性,從而學(xué)習(xí)視覺輸入的表示。
訓(xùn)練偽代碼:
《CURL: Contrastive Unsupervised Representations for Reinforcement Learning》借鑒了SimCLR的想法用于強化學(xué)習(xí)。
Video-Based
視頻中包含連續(xù)的,語義相近的幀,且框架的順序描述了一定的推理規(guī)則和物理邏輯;例如,物體的運動應(yīng)該是平穩(wěn)的,重力是向下的。
一個常見的工作流程是,用無標(biāo)簽的視頻對一個模型進行一個或多個pretext任務(wù)的訓(xùn)練,然后將該模型的一個中間特征層輸入對動作分類、分割或目標(biāo)跟蹤等下游任務(wù)進行finetune。Tracking
物體的運動由一系列視頻幀來跟蹤。在近距離的畫面中,同一個物體在屏幕上被捕捉的方式通常差別不大,通常是由物體或相機的微小運動觸發(fā)的。因此,對同一物體學(xué)習(xí)的任何跨越近幀的視覺表征都應(yīng)該在潛在特征空間中是接近的。在這個想法的啟發(fā)下,Wang & Gupta, 201《Unsupervised Learning of Visual Representations using Videos》)提出了一種通過跟蹤視頻中移動的物體來實現(xiàn)視覺表征的無監(jiān)督學(xué)習(xí)的方法。
具體做法:在一個小的window中(30幀)追蹤一個patchX,有個和X接近的patchX+,還有一個隨機選取的patchX-。這個loss像triple loss

patch的獲?。?br />
Frame Sequence(幀序列)
視頻幀是按時間順序自然放置的。研究人員提出了幾個自我監(jiān)督的任務(wù),他們期望良好的表現(xiàn)應(yīng)該學(xué)習(xí)幀的正確順序?!禨huffle and Learn: Unsupervised Learning using Temporal Order Verification》中提出的pretext任務(wù)為:判斷一段視頻序列的順序是否正確,這樣模型可以獲得追蹤物體和推理的能力。
具體做法為:

類似的,《Self-Supervised Video Representation Learning With Odd-One-Out Networks》中也提出了一種基于視頻序列的無監(jiān)督學(xué)習(xí)方法“odd-one-out learning”。要從N+1個序列幀中挑選出某一個古怪的幀。
還有研究給模型播放正序或者倒序的視頻,讓其預(yù)測時間的方向 arrow of time(正或負(fù))為了預(yù)測時間箭頭,分類器應(yīng)該同時捕獲低級物理和高級語義。提出的T- cam(時間類激活映射)網(wǎng)絡(luò)接受T組,每個T組包含若干個光流幀。每個組的conv層輸出被連接起來并輸入到二元邏輯回歸中以預(yù)測時間箭頭。這個pretext任務(wù)可以提高動作分類下游任務(wù)的性能。
Video Colorization
《Tracking Emerges by Colorizing Videos》提出視頻著色可以作為一個自監(jiān)督問題,在此基礎(chǔ)上得到豐富的特征表達且對視頻分割和無標(biāo)簽的區(qū)域追蹤很有效果。
和圖片的照射著色的自監(jiān)督問題不同,視頻著色是將基于一張已知的幀對另外一張幀著色。由于幀相近,具有時間相干性,因此他們之間的像素距離也相近,模型被設(shè)計用來跟蹤不同幀中相關(guān)的像素。

- https://lilianweng.github.io/lil-log/2019/11/10/self-supervised-learning.html#video-based
與我交流github:?https://github.com/keloli
blog:https://www.jianshu.com/u/d055ee434e59
往期回顧之作者李中梁
【1】? 【TPAMI重磅綜述】 SIFT與CNN的碰撞:萬字長文回顧圖像檢索任務(wù)十年探索歷程(上篇)
【2】? 【TPAMI重磅綜述】 SIFT與CNN的碰撞:萬字長文回顧圖像檢索任務(wù)十年探索歷程(下篇)
【3】? 超快速!10分鐘入門Keras指南
【5】? Dropout VS BN: 別在你的網(wǎng)絡(luò)中使用Dropout
【6】? 理解Batch Normalization(含實現(xiàn)代碼)
【7】? Keras使用進階(Ⅰ)
【8】? Python編程神器Jupyter Notebook使用的28個秘訣
【10】?是時候了解下無監(jiān)督學(xué)習(xí)了!
【11】 自監(jiān)督學(xué)習(xí)在計算機視覺中的應(yīng)用
機器學(xué)習(xí)算法工程師? ??? ? ? ? ? ? ? ? ? ? ? ??????????????????一個用心的公眾號
?

