發布時間:2022-12-30 08:17:47發布者:網站發布
互聯網巨頭看重深度學習當然不是為了學術,主要是它能帶來巨大的市場。那為什么在深度學習出來之前,傳統算法為什么沒有達到深度學習的精度?
在深度學習算法出來之前,對于視覺算法來說,大致可以分為以下5個步驟:特征感知,圖像預處理,特征提取,特征篩選,推理預測與識別。早期的機器學習中,占優勢的統計機器學習群體中,對特征是不大關心的。
我認為,計算機視覺可以說是機器學習在視覺領域的應用,所以計算機視覺在采用這些機器學習方法的時候,不得不自己設計前面4個部分。
但對任何人來說這都是一個比較難的任務。傳統的計算機識別方法把特征提取和分類器設計分開來做,然后在應用時再合在一起,比如如果輸入是一個摩托車圖像的話,首先要有一個特征表達或者特征提取的過程,然后把表達出來的特征放到學習算法中進行分類的學習。
過去20年中出現了不少優秀的特征算子,比如最著名的SIFT算子,即所謂的對尺度旋轉保持不變的算子。它被廣泛地應用在圖像比對,特別是所謂的
structure from motion這些應用中,有一些成功的應用例子。另一個是HoG算子,它可以提取物體,比較魯棒的物體邊緣,在物體檢測中扮演著重要的角色。
這些算子還包括Textons,Spin image,RIFT和GLOH,都是在深度學習誕生之前或者深度學習真正的流行起來之前,占領視覺算法的主流。
這些特征和一些特定的分類器組合取得了一些成功或半成功的例子,基本達到了商業化的要求但還沒有完全商業化。
一是八九十年代的指紋識別算法,它已經非常成熟,一般是在指紋的圖案上面去尋找一些關鍵點,尋找具有特殊幾何特征的點,然后把兩個指紋的關鍵點進行比對,判斷是否匹配。
第三個是基于HoG特征的物體檢測,它和所對應的SVM分類器組合起來的就是著名的DPM算法。DPM算法在物體檢測上超過了所有的算法,取得了比較不錯的成績。
但這種成功例子太少了,因為手工設計特征需要大量的經驗,需要你對這個領域和數據特別了解,然后設計出來特征還需要大量的調試工作。說白了就是需要一點運氣。
另一個難點在于,你不只需要手工設計特征,還要在此基礎上有一個比較合適的分類器算法。同時設計特征然后選擇一個分類器,這兩者合并達到最優的效果,幾乎是不可能完成的任務。
如果不手動設計特征,不挑選分類器,有沒有別的方案呢?能不能同時學習特征和分類器?即輸入某一個模型的時候,輸入只是圖片,輸出就是它自己的標簽。比如輸入一個明星的頭像,出來的標簽就是一個50維的向量(如果要在50個人里識別的話),其中對應明星的向量是1,其他的位置是0。
這種設定符合人類腦科學的研究成果。
1981年諾貝爾醫學生理學獎頒發給了David Hubel,一位神經生物學家。他的主要研究成果是發現了視覺系統信息處理機制,證明大腦的可視皮層是分級的。他的貢獻主要有兩個,一是他認為人的視覺功能一個是抽象,一個是迭代。抽象就是把非常具體的形象的元素,即原始的光線像素等信息,抽象出來形成有意義的概念。這些有意義的概念又會往上迭代,變成更加抽象,人可以感知到的抽象概念。
像素是沒有抽象意義的,但人腦可以把這些像素連接成邊緣,邊緣相對像素來說就變成了比較抽象的概念;邊緣進而形成球形,球形然后到氣球,又是一個抽象的過程,大腦最終就知道看到的是一個氣球。
模擬人腦識別人臉,也是抽象迭代的過程,從最開始的像素到第二層的邊緣,再到人臉的部分,然后到整張人臉,是一個抽象迭代的過程。
再比如看到圖片中的摩托車,我們可能在腦子里就幾微秒的時間,但是經過了大量的神經元抽象迭代。對計算機來說最開始看到的根本也不是摩托車,而是RGB圖像三個通道上不同的數字。
所謂的特征或者視覺特征,就是把這些數值給綜合起來用統計或非統計的形式,把摩托車的部件或者整輛摩托車表現出來。深度學習的流行之前,大部分的設計圖像特征就是基于此,即把一個區域內的像素級別的信息綜合表現出來,利于后面的分類學習。
如果要完全模擬人腦,我們也要模擬抽象和遞歸迭代的過程,把信息從最細瑣的像素級別,抽象到“種類”的概念,讓人能夠接受。
計算機視覺里經常使卷積神經網絡,即CNN,是一種對人腦比較精準的模擬。
什么是卷積?卷積就是兩個函數之間的相互關系,然后得出一個新的值,他是在連續空間做積分計算,然后在離散空間內求和的過程。實際上在計算機視覺里面,可以把卷積當做一個抽象的過程,就是把小區域內的信息統計抽象出來。
比如,對于一張愛因斯坦的照片,我可以學習n個不同的卷積和函數,然后對這個區域進行統計。可以用不同的方法統計,比如著重統計中央,也可以著重統計周圍,這就導致統計的和函數的種類多種多樣,為了達到可以同時學習多個統計的累積和。
上圖中是,如何從輸入圖像怎么到最后的卷積,生成的響應map。首先用學習好的卷積和對圖像進行掃描,然后每一個卷積和會生成一個掃描的響應圖,我們叫response map,或者叫feature map。如果有多個卷積和,就有多個feature map。也就說從一個最開始的輸入圖像(RGB三個通道)可以得到256個通道的feature map,因為有256個卷積和,每個卷積和代表一種統計抽象的方式。
帶來的結果是,如果之前我輸入有兩個通道的,或者256通道的卷積的響應feature map,每一個feature map都經過一個求最大的一個池化層,會得到一個比原來feature map更小的256的feature map。
在上面這個例子里,池化層對每一個2X2的區域求最大值,然后把最大值賦給生成的feature map的對應位置。如果輸入圖像是100×100的話,那輸出圖像就會變成50×50,feature map變成了一半。同時保留的信息是原來2X2區域里面最大的信息。
Le顧名思義就是指人工智能領域的大牛Lecun。這個網絡是深度學習網絡的最初原型,因為之前的網絡都比較淺,它較深的。LeNet在98年就發明出來了,當時Lecun在AT&T的實驗室,他用這一網絡進行字母識別,達到了非常好的效果。
怎么構成呢?輸入圖像是32×32的灰度圖,第一層經過了一組卷積和,生成了6個28X28的feature map,然后經過一個池化層,得到得到6個14X14的feature map,然后再經過一個卷積層,生成了16個10X10的卷積層,再經過池化層生成16個5×5的feature map。
從最后16個5X5的feature map開始,經過了3個全連接層,達到最后的輸出,輸出就是標簽空間的輸出。由于設計的是只要對0到9進行識別,所以輸出空間是10,如果要對10個數字再加上26個大小字母進行識別的話,輸出空間就是62。62維向量里,如果某一個維度上的值最大,它對應的那個字母和數字就是就是預測結果。
電話咨詢
企業微信
企業郵箱
在線留言