資料來源:安健僑
一、人工智慧之智
這個圖非常有意思,這是按照時間線排布的不同畫師畫的朱元璋。如果瞭解歷史,都知道他長得巨醜無比。他醜到什麼程度呢?據說他的下巴可以當武器來用。而且他對自己的容貌還非常自信,經常喜歡找一些人給他畫畫。一開始他找了一個畫師,畫了第一個圖。可能是因為太還原真實相貌了,第一個畫師被斬了。然後朱元璋就換了一個畫師,畫成第二個圖,明顯可以看出面板光滑了一些。按照現在的技術來說,這是做了一個磨皮或者叫濾波器。一種濾波方法是把影象當中的每一個畫素點,都用它周圍的一圈值得平均值替換。這樣一些區域性的噪聲點就可以被磨掉了,其實這就起到了磨皮的作用。這種方法明顯是一個傳統影象處理的演算法,並不涉及到深度學習。也就是因為他不涉及到深度學習,改進太小了,朱元璋看完後,第二畫家也被斬了。第三個畫家,畫完之後臉更光滑了,眼睛變大了一些,皺紋也變少了,但是下巴和耳朵都沒有改進。結果第三個畫家也被斬了。第四個畫師,可以稱他為智慧畫師,他的畫明顯已經脫離朱元璋原來的樣貌,眉毛、鬍鬚等都畫得非常立體,而且別的畫師都是畫側檢視,而他畫了正檢視,這樣就看不出下巴的突出。因此,他最終也沒有被斬下來。前三個畫師只是影象處理層面的改進,而沒有深入到改變語義,所以說其實可以近似地認為前三個畫師都處在影象處理級別,而最後一個畫師則處在深度學習級別。
透過這個例子,其實是想說,計算機視覺在深度學習誕生之前,都是沿著傳統的視覺演算法方向發展的。傳統視覺中有很多演算法,《計算機視覺》書中超過一半都是介紹傳統演算法的,因為這個書出版時間比較早,它其中的演算法都是上世紀四五十年代就被提出來的,到現在已經發展了幾十年。所以,在深度學習誕生之前,傳統演算法其實已經有很完整的理論了。
比如剛才提到的均值濾波。但是為什麼均值濾波要用周圍一圈的均值來代替中心值,而不是別的位置的均值呢?因為宇宙是漸變的,宇、宙分別代表了時間和空間,所以時間和空間都是漸變的。在影象當中也是如此,影象當中很少有突變,大多數都是漸變。即使感覺某個顏色確實是突變,但如果把它無限放大,中間一定也是漸變的。有人做過這樣一個實驗,在一張影象上隨機撒十分之一的點,這些點的顏色是已知的,而其他點的顏色是未知的。透過這十分之一個點的顏色可以復原出一個和原來影象非常接近的一個圖。為什麼呢?因為已知顏色的這些點,它們帶有周圍一圈顏色的性質,所以影象中每一個點一定是和它周圍的一圈點是高度相關的。通常認為是有一個相關性存在的,離某一點越近的相關性越強,離得越遠的相關性越低。這是計算機視覺的一個根本理論。
傅立葉變換和小波變換也是傳統演算法中的重要演算法,它們都可以用來提取影象中深層次的特徵。
超畫素分割也是傳統影象處理中一個重要方向同時也是很有前景的研究方向。這個方向其實早在 10 年 20 年前就有人在做了,但現在依然每年都會有幾篇相關論文發表。超畫素分割定義是把影象分成儘量少的超畫素塊,使得每一個超畫素塊不會跨越影象的語義邊界。比如規定 300 個超畫素塊,就要把原圖裂變成 300 個小區域,每一個小區域只能屬於一個語義資訊,不能屬於多個語義資訊。
如何驗證分割得好不好呢?有一種很直觀的驗證,比如把影象分割成多塊之後,假設影象就是一個剛剛畫完的水粉畫,然後把每一個小方塊內的顏色抹勻,也就是上圖中的左圖到右圖的過程。如果在抹勻後的圖中(右圖)還能看出原影象當中的一些資訊,就說明分割的效果很好。因為如果能夠保留原來影象的資訊,就說明只用 300 個超畫素塊表達了原始影象中可能幾百萬個畫素表達的資訊量。所以原理和均值濾波有相似之處,就是前面提到的漸變。一幅影象當中,真正有用的資訊有限,但是一個影象當中可能需要上百萬個畫素去表達,這其實是很浪費的。每一個畫素點都是一個數據,當程式處理資料都是代價。超畫素分割就是解決資料過多,用 300 個所謂的超畫素來代替原來影象當中上百萬個畫素,並且使得它的資訊儘量的不損失。
基於深度模型的視覺演算法在一年以前大部分都是基於 CNN 結構。而最近兩年,Transformer 成為了熱點。最開始它是 Google 提出的在自然語言處理領域的一個非常好用的演算法,它一直處理的都是自然語言方面的資料。也有人嘗試把它應用到計算機視覺中,但是兩三年之前效果都不好。直到去年,Facebook 的 FAIR 組(目前何凱明就在這這 FAIR 組),提出來了一個非常厲害的結構 —— DETR,第一次把 Transformer 從自然語言處理領域,成功的遷到了視覺領域,效果非常好的完成了 Detection 任務。從那之後,Transformer 席捲了視覺領域所有方向。今年出現了一個創新的模式 —— Swin-Transformor,目前在學術圈中的影響非常大,論文引用量呈幾何式增長。
計算機視覺中有一些常見的任務,比如 Detection、Generation。以 Detection 為例,一幅影象中有車和人,想要透過演算法找出車和人在哪,這就是 Detection。Detection 是非常有用的,攝像頭可以拍攝世界,但是現在透過Detection,攝像頭不僅可以拍攝,還能理解一些事情,理解人和車在哪裡,人和車的位置可以框出來,甚至能夠預測人的一個行徑軌跡,然後追蹤一個人的行動軌跡,這就非常智慧化了。所以如果照相機是模擬了人類的眼睛,但是人的眼睛其實只是一個器官,人類能夠“看到”這個世界更大的貢獻是人的大腦,如果沒有大腦,也只能看見卻無法理解,所以是需要大腦的處理的。因此雖然一百多年前,清朝的時候,慈禧也在拍照片。但是一百多年之後,現在才進入到所謂的智慧攝像的熱潮當中。
二、對抗生成網路 —— GAN
通常演算法的思路都是用模型去理解影象,再考慮如何去檢測、追蹤、分類。但是有沒有可能讓模型像一個畫家一樣畫出一個東西,讓模型獲得創造力呢?這是非常了不起的工作,早在很多年之前就有人在思考如何完成,但是一直沒有人真正的完成,直到現在現在 2014 年 GAN 橫空出世。
關於 GAN 有一個非常有意思的故事。GAN 的提出者 Goodfellow,某一天他和他幾個朋友在一塊喝酒之後,討論起了哲學問題,大家就開始爭吵,“對抗”起來了。Goodfellow 發現透過爭執,他對一件事情的理解變得非常深刻,或者在爭執過程當中,在對抗的過程當中,能夠誕生一些新的想法。有了這個啟發之後,他就想那能不能把這個思想應用到 Generation 領域上呢?
當天晚上他就做了這樣的工作。Training set 是真實的訓練資料,Generator 就是一個“造假的人”,他負責看了“真跡”之後開始模仿,並且將模仿後的圖片和真實圖片混在一起,輸入給 Discriminator。Discriminator 就是辨別器,負責鑑別真和假,在辨別過程中,他也會訓練自己,不斷地提高判別真假的能力。同時,Discriminator 會反過來告訴 Generator 哪一部分太假不像真的,需要修改。“作假大師”就做得更加逼真,和真跡越來越像。最後鑑別師不斷提高他的鑑別能力,成為了一個非常頂尖的“鑑寶專家”,而 Generator 也隨著不斷的迭代,不斷的訓練成了一個非常非常頂尖的“造假專家”。一般保留 Generator 而不使用 Discriminator,因為模型的目的就是生成一些“假圖”。
這裡會有一個問題。如果直接把真實的圖 copy 一份,一模一樣,那麼鑑寶專家就分辨不出來了。所以說這裡邊要增加一個 Random 模組,所以說一開始必須要有 Random noise,就是隨機的擾動,不允許 Generator 產生的圖片和真實圖片一模一樣。在不允許一模一樣的情況下,還必須和真實圖片很接近,這才學到了這個真正的精髓。比如下圖中這些人都不是真實世界中存在的,而是 GAN 生成的。
擴充套件一下對抗的思想,其實還有一個領域為 Domain Adaptation。現在自動駕駛很盛行,但是因為天氣的陰晴不定,自動駕駛系統通常在晴天的時候效果很好,但是到了陰雨天檢測結果就會變差。為什麼會這樣呢?因為其中“域”發生了變化。
左邊的圖代表晴天的圖,對於晴天的圖是有標籤的。右圖是霧天的圖,如果將所有天氣全採集一遍,人工消耗太大,所以霧天只有圖沒有標籤。這樣改如何訓練呢?這就需要在提取特徵時,提取到域不變特徵。比如無論晴天還是霧天,車的外形是不變的。雖然它上面蒙了一層霧,但是車的某些特徵是不變的。如果特徵提取器能夠提到不變的特徵,不同天氣下的問題就解決了。變的是天氣的特徵,不變的是車的特徵,而想要的也是這個不變的特徵。
想要提取到不變特徵,其實可以借鑑 GAN 的思想,給網路加“對抗”,訓練域分類器,對 feature 進行域分類,其實就是二分類,分出 feature 屬於晴天還是霧天,並不斷提高辨別能力。同時,綠色部分形成對抗,不斷提取的特徵讓後面的域分類器無法區分出晴天和霧天。這樣,經過幾輪的迭代,綠色部分所提取的特徵就越來越接近不變特徵。
三、“天網”背後的CV技術
“天網”主要使用的 CV 技術有人臉識別的關鍵點檢測以及檢測和追蹤。追蹤如何實現呢?追蹤是有很多幀畫面的,這又要用到“漸變”的想法了。追蹤,本質上就是把每一幀裡都捕獲某個人並打方塊,再把每一個方塊連起來就是追蹤。所以最直接的辦法就是把每一個幀的影象都做檢測,然後再把它們連起來。但是這樣做並不好,因為有很多資訊沒有用到。以某一幀為例,因為“漸變”,它一定是和它的前一幀和後一幀相關性最強。並且從第一幀開始就能捕獲所要跟蹤的物體,所以第一幀也很重要。
所以其實需要做的就兩件事,首先透過第一幀 First Frame 提取特徵,之後找到這 Proposal 然後進行 ROI,之後合併到一起。再做一個 Regression,找到較好的框。最後再透過和上一幀進行匹配,選取得分高的框。而在最後幾個得分高的框中該如何選擇最好的呢?這就涉及到最佳化問題,線性規劃、動態規劃、圖論網路流等等。這些都是面試中經常會遇到的問題。如果可以將傳統演算法和深度學習演算法融合,將會是很好的創新點以及亮點,這也是未來研究非常好的方向。
有關計算機視覺的影片學習資料可以私信備註【05】新增領取
另外整理了一份200G的AI資料包,希望對大家的學習有所幫助:
①人工智慧課程及專案【含課件原始碼】
②超詳解人工智慧學習路線圖
③人工智慧必看優質書籍電子書彙總
④國內外知名精華資源
⑤優質人工智慧資源網站整理(找前輩、找程式碼、找論文都有)
⑥人工智慧行業報告
⑦人工智慧論文合集
