寫在前面:這是一篇只有思路、沒有具體實驗的文章,也就是常說的opinion paper。我希望透過這篇文章,傳達自己對視覺識別這個問題的思考。誠然人微言輕,我也希望將這些初步的思考分享給這個community,或許有人能夠受到啟發,探索出新的方向來。

水平有限,掛一漏萬。如果有不同見解,或者發現我這個想法已經被前人提出過,請以任何一種方式告訴我,非常感謝!

初稿的連結:

https://

arxiv。org/abs/2105。1397

8

怎樣的視覺識別演算法才是完整的?

0。 鋪墊部分

視覺識別,是計算機視覺領域最重要的任務。雖然深度學習技術給這個領域帶來了深遠的影響,許多工的SOTA相比於十年前也已經是突飛猛進,但就目前來看,還沒有任何一套方法能夠在一般意義上解決識別問題。當前演算法的不足之處有很多,而學界較為公認的未來發展方向主要分為

資料、模型、知識

三大方面。其中,知識是一個相對模糊的概念,迄今學界還沒有準確清晰的定義。而資料和模型,則構成了當前大部分視覺演算法的主要困難。

回顧過去一年,在視覺識別領域,有兩類方法得到了廣泛的重視。一個是自監督學習,嘗試從資料的角度來提升演算法的泛化效能;一個是Transformer,嘗試引入新型模型設計,提升神經網路的擬合能力和泛化能力。這兩類方法確實為視覺識別提供了種種新線索,但是它們也很快展現出了各自的侷限性。

在拼命內卷、忙於重新整理各種指標的間隙,我時常會問自己一個問題:計算機視覺領域,有沒有一些被忽視,卻十分重要的問題?在一段時間的思考以後,我在資料和模型層面都有了一些不成熟的idea。今天寫寫資料方面的想法,未來有機會,再寫寫模型方面(更不成熟)的想法。

下面進入正題。

1。 研究動機

開門見山,我研究的主要動機是在標題中提出的問題:

怎樣的視覺識別演算法才是完整的?

這裡我對“完整”的定義是:識別出所有人類無需專門記憶就能夠識別的內容。

怎樣的視覺識別演算法才是完整的?

圖1 現有資料集(如MS-COCO)距離完整地識別所有語義資訊,還相差甚遠。其中下劃線和紅色字型標出的部分,都是未在資料集中呈現,而人類能夠輕易識別或描述的語義內容。

我們以上述圖片為例。這是一張來自MS-COCO資料集的圖片,主要包含“人”這一類別。雖然MS-COCO已經提供了畫素級標註——幾乎是當前能夠獲取的最精細級別,然而還是有大量的語義資訊無法被標註出來。

更加重要的事實是:即使提供足夠的人力成本,我們也很難定義出一套規範的標準,完成“所有語義資訊”的標註。

舉個例子:當我們標註出“人”以後,還可以進一步標註“手臂”,進而標註“手”、“手指”、“指節”、“指紋”,甚至是“指紋上的缺口”。即使某些語義資訊已經到達“子畫素級”,

只要人類願意

,就可以透過語言、刻畫等某種方式,將它從影象中識別出來。

透過上述例子,我們可以得出以下兩個結論:

我們難以定義人類識別能力的極限——雖然對大多數人而言,這個極限應當是差不太多的

當前計算機視覺能夠透過標註獲取的監督訊號,遠遠低於這個極限——即使投入大量人力,也很難逼近這個極限

於是我認為:要想得到完整的識別結果,就不能依靠人工標註來學習。那靠什麼呢?我認為應該靠資料壓縮。認知科學的實驗提供了一條重要的線索:人類在識別影象時,往往傾向於最省事的做法:也就是說,人類會尋找一種最容易記憶的形式,而識別只是為了方便壓縮而做的一種量化。

沿著這條思路,我設計出了下面的預訓練任務。

2。 透過壓縮來學習(learning-by-compression)

這個概念是相對於“透過標註來學習”(learning-by-compression)而言的。當然實現要說明的是,這個概念並不新:早年的autoencoder就是建立在類似的思想上的。如果想看related work,可以參考原文。這裡想要強調的是,我們重新提出這個概念,是基於“標籤學習”無法解決上述gap的判斷。而我們的提議和autoencoder類方法最大的不同,恰恰在於我們把重心從網路結構的設計轉到對影象恢復質量的評估上。

怎樣的視覺識別演算法才是完整的?

圖2 設想的學習框架,由編碼器、解碼器和評估器組成,其中評估器是最難設計的模組

如上圖所示,我們的設想很簡單:一張影象透過編碼器壓縮成維度儘可能低的向量,再透過解碼器恢復成與原圖差距儘可能小的影象。其中編碼器和解碼器都可以是標準的神經網路(不限定於CNN或者Transformer),而評估器既可以是自主學習的神經網路,也可以是預先定義的函式,甚至可以透過human-in-the-loop的方式來設計。後面我們會說到,評估器是整個框架中最難設計的模組,也是當前阻止我們把這個idea變成現實的最大障礙。

用幾個小點,來解釋這樣做的目的:

我們的假設是:如果能夠設計出一對編碼器和解碼器,使得輸入影象能夠被壓縮成儘可能短的向量,同時這個低維向量能夠用於生成高質量的輸出,那麼我們就認為編碼器和解碼器只有一條路可走——學習高效的語義特徵,並以此對影象進行編解碼。

如果壓縮率足夠高,那麼演算法一定無法準確地恢復原圖的所有細節。這看似與“完整的視覺識別結果”相矛盾,但我們可以透過調節壓縮率(比如在編碼器和解碼器之間插入一些線性對映層,詳見原文)來控制恢復的質量。於是,只要有一個合理的評估器,我們就可以在任何一對編碼器和解碼器上,得到一組壓縮率和恢復質量的tradeoff,如下圖所示。

順便要指出:天下沒有免費的午餐。追求更高的壓縮率和恢復質量的tradeoff,就意味著編碼器和解碼器儲存了更多視覺特徵(可以理解為更大的視覺詞典),以供演算法調取。這也就為當前盛行的視覺預訓練大模型提供了另一種視角。

怎樣的視覺識別演算法才是完整的?

圖3 左圖:我們設想的,壓縮率和恢復質量的tradeoff;右圖:當前流行的,模型引數量和識別精度的tradeoff;如果我們的倡議成為現實,那麼業界或許會將注意力轉向追求左圖這樣的tradeoff

最後,如果我的設想成真,那麼業界的注意力會更多地轉向追求上圖左邊的tradeoff而不是右邊。雖然右邊也很重要,但我認為左邊或許更接近本質一些。

3。 評估演算法的困難

上述自監督學習演算法,都建立在一個合理的評估函式上。然而我們不難想象,這個評估函式是很難設計的。我們知道,人類的對影象的理解是層次化的。在能夠儲存的資訊很少(即壓縮率很高)的情況下,人類往往傾向於關注影象的全域性資訊,而忽略影象的細節。僅就滿足這一特性而言,要設計出合理的評估函式,就十分困難。

我大膽地猜測:設計這個評估函式的難度,甚至不亞於視覺識別問題本身。

也就是說,某種意義上看,設計評估函式能夠提供視覺識別問題的另一種視角,或者啟發些新的思路。

怎樣的視覺識別演算法才是完整的?

圖4 評估演算法是實現這一框架的最大障礙。左圖:原圖和恢復影象的大部分紋理都不一樣,但是應該認為恢復質量較高;右圖:大部分割槽域相同,只有前景物體不一致,此時應該認為恢復質量較低

這裡順帶說明,以autoencoder為代表的演算法,大多建立在無差別地恢復影象畫素的基礎上,而這並不是我們想要達到的效果。換句話說,既然已經決定壓縮資料,就不應指望能夠恢復出所有細節來。於是,我設想了幾種評估演算法的可能性:

語義弱監督:如果在龐大的預訓練資料集中,部分影象被賦予了語義標籤,那麼這些影象就可以用語義層面的監督來度量相似度。舉例說,如果恢復前後的影象在某個檢測演算法上的結果一致,那麼就可以粗略地認為,恢復演算法保留了一定的語義資訊。原文中,我還根據這個思路設想了一個迭代演算法,此處不再展開。

利用human-in-the-loop的思路:即將人類的反饋機制引入訓練過程,在需要評估恢復影象的時候,讓受試者指出幾張影象中恢復較好的或者恢復較差的圖,或者指出一張影象上恢復較好的或者恢復較差的區域。這些反饋可以作為弱監督資訊,讓演算法不斷迭代。

當然我們要強調,上述兩個方案都不是完美的。語義監督方面,從我們的研究動機就知道,所有語義資訊都只能提供有偏的弱監督,因而不可能從頭到尾訓練一個高效模型;而利用人類反饋,則需要大量的人力勞動,同時隨著訓練的進行,受試者將越來越難以客觀地區分恢復效果的好壞,因而導致預訓練過程出現瓶頸。

4。 下游任務的應用

如果上述演算法得以實現,那麼我們將得到一個通用的視覺預訓練模型。由於這一模型不偏向任何特定的識別演算法,且它同時包含編碼器和解碼器,我們就可以用它來完成各種下游任務。

如果要做分類或者檢測,直接繼承編碼器,加上輕量級的head做微調即可

如果要做分割,同時繼承編碼器和解碼器,並且對解碼器做微調即可——在高壓縮率的驅動下,編碼器和解碼器將更擅長將不同物體區分開來,否則難以生成出高質量的圖片

如果要做底層視覺任務(如影象超分),同時繼承編碼器和解碼器,並且在合理的位置插入一些shortcut連線,微調解碼器即可

如果要做影象生成任務,直接繼承解碼器的分佈和解碼器的權重,取樣生成即可;如果是有條件的生成任務,可以事先將編碼器進行微調,以適應給定的分佈

最有趣的應用是影片識別

:影片資料比影象資料的維度更高,也更難學習;為此可以設計兩階段的特徵學習方法:利用上述的編碼器逐幀抽取特徵,再將序列特徵送入時序模型(如seq2seq或Transformer)進行進一步壓縮,以期得到適合影片識別的預訓練模型

……

當然,在現階段,這些還都無法成為現實。

5。 總結和展望

我們首先指出,當前所有視覺識別任務,距離完整識別還有相當大的距離,而且這一鴻溝難以透過增加標註量和標註粒度來跨越。基於這一判斷,我們提出了一個新的視覺預訓練任務,即透過壓縮來學習(learning by compression)。這個任務的難度主要體現在評估函式上,而我們甚至認為,這也許是視覺本質問題的另一種表現形式,或許能夠提供新穎的思路。

面向未來,我們認為大規模預訓練模型是計算機視覺乃至整個人工智慧領域的大勢所趨。然而當前的預訓練模型還比較笨重,除了用於抽取強有力特徵外,並沒有一個完整的pipeline去釋放它們的能力。

更重要的是,大模型預訓練和小樣本微調,似乎有著天然的衝突:大模型希望看到更general的資料分佈,在均攤意義上追求最優解;而小樣本則往往針對一個特定的領域,在單點上追求最優解。

於是,模型規模越大,微調的難度就越大——現在的大模型更多地是說服下游應用無需微調,而對於下游domain相差較大的場景,往往就難以取得良好的效果。這一點,也是AI部署演算法需要著力解決的問題。

時間所限,介紹就到此為止。如果希望看到更多細節,歡迎參考原文。我也期待與大家進一步討論這些有趣的問題!