計算機視覺:一種直觀的解釋

人類歷史和大腦研究中的一個主要問題是:我們如何以我們的方式感知世界?

計算機視覺:一種直觀的解釋

當談到我們的眼睛時,這些只是傳感器,幫助我們建立一個可理解的表現我們周圍的場景!例如,諸如顏色之類的屬性不是物理世界中的物體所固有的,而是代表我們對不同波長的光的感知反射的心理抽象。儘管聽起來令人沮喪,但在我們的物理現實中,一切都是“黑暗的”。當此物體反映我們在心理上與紅色相關聯的特定波長時,物體顯示為紅色,並吸收所有其餘物體。

這種視覺感知能力遠遠超出了識別不同波長的能力。最有趣的方面來自於我們從這些光子在空間中相互感知的方式構建概念現實的能力。

例如,我們理解椅子的概念,我們內心或者大腦希望它具有某些幾何特性,所以在我們的眼睛中,從椅子反射的光必須保持椅子的空間關係,進而把我們對這些空間的概念化為椅子的形狀。

計算機最近也變得能夠進行視覺識別,學習如何看。由於人工智能的進步,特別是卷積神經網絡(CNN)的應用,這已成為可能。關於這個主題有很多文章,但很少有人解釋統計和線性代數之外的方法的直覺。

構建卷積神經網絡的模塊

要了解如何將CNN用於執行任何視覺任務,我們必須首先了解其組件。所涉及的概念列表可能是非常繁複的,但它們都可以縮小到方法中已經存在的詞語:卷積、深度神經網絡(DNN)以及這兩者的融合

什麼是卷積?

卷積是一種將兩個函數組合成第三個函數的數學運算

例如,假設我們有兩個給定的函數f(t)g(t),我們有興趣在另一個函數之上應用一個函數並計算交集區域:f(t)* g(t )=(f * g)(t)

計算機視覺:一種直觀的解釋

在這種情況下,我們在f(t)上應用g(t)(稱為內核),並根據兩個函數區域的交點改變響應(f * g)(t)。這種卷積概念是信號處理中最常用的技術,應用於計算機視覺,可以看作是處理多個RGB傳感器的信號。

卷積有效性背後的直覺是它們能夠將給定的輸入信號過濾成組合的、更有用的結果。

在圖像的特定情況下,根據矩陣而不是波形更好地理解信號。因此,我們的函數f(t)g(t)現在分別成為圖像(矩陣)內核(矩陣)

。再一次,我們可以通過在另一個矩陣之上滑動其中一個矩陣來應用卷積

計算機視覺:一種直觀的解釋

你在上面看到的只是圖像中滑動窗口與內核的矩陣乘法,然後加上總和。計算機視覺環境中卷積的強大之處在於它們是RGB傳感器領域的強大特徵提取器。單獨拍攝時,每個像素(RGB傳感器)對於理解圖像包含的內容毫無意義。是空間中像素彼此的關係,才賦予圖像真正的意義。它適用於您在計算機上閱讀本文的方式,其中像素表示字符,大腦在空間中匹配黑色像素,形成字符的概念。

通過在圖像上滑動不同的卷積核,可以執行圖像處理。這是在Photoshop或Gimp等圖像編輯軟件中可以找到的工具:

計算機視覺:一種直觀的解釋

什麼是深度神經網絡?

在機器學習中學習的概念可以被視為試圖從給定數據預測未知函數。假設您有興趣預測輸入x

的標籤y。在這種特殊情況下,您希望模型最小化預測與基本事實之間的誤差。我們修改網絡中的權重和偏差,使得我們儘可能地將輸入x映射到輸出y

為了更好地理解這一點,我們來看一個簡單的線性迴歸問題。線的方程可以描述為y = mx + b,其中m是斜率,b是與y平面的交點(通常稱為偏差)。如果只有兩個點,可以直接用公式求解斜率和偏差,但是當我們有多個點n> 2並且沒有完全符合這些點的線性問題就變得更難了。在這種情況下,我們會感興趣的是近似一條最小化每個數據點距離的線。為此,我們可以按照以下步驟操作:

  1. 給m和b賦予隨機值。
  2. 計算誤差,可以將其描述為均方誤差(MSE),計算我們距離最佳線的距離。
  3. 使用此誤差函數的導數,計算梯度以瞭解移動兩個值的方向,以減少誤差。
  4. 重複步驟2和3,直到誤差停止減少。
計算機視覺:一種直觀的解釋

在圖的左側,您可以看到錯誤空間,它由應用於我們特定數據點的MSE給出。在右側,我們可以看到我們的數據點的表示,以及由mb定義的行。在開始時,線完全關閉,並且它反映在高誤差值中。然而,當我們計算導數並向函數減少的位置移動時,我們最終得到mb的值,這些值類似於數據點的屬性。

在深度神經網絡(DNN)中,這是每個神經元上實際運行的核心思想。鑑於我們的問題解決方法比僅僅近似一條線更復雜,我們需要更多的神經元,通常是層次結構。深度學習通過使用梯度下降來最小化誤差函數,並且由於學習是以層為單位構建的,因此DNN最終學習數據中的層次結構。

神經網絡的主要構建塊是人工神經元。這些有不同類型,最簡單的是感知器。人們可以看到感知器作為一個單元,它接受幾個二進制輸入

x1,x2,...,xn,並生成一個二進制輸出y

計算機視覺:一種直觀的解釋

每個輸入都有一個權重w1,w2,...,wn,表示它們對輸出的重要性。最後,使用輸入和給定閾值的加權和計算輸出。如果此總和大於此閾值,感知器將輸出

1,否則為0。這可以更容易地用代數術語來表達:

計算機視覺:一種直觀的解釋

網絡的人工神經元通過層彼此連接。連接到輸入的第一組神經元形成輸入層。提供預測的網絡的最後一層稱為輸出層。中間可以有任意數量的層,它們被認為是隱藏層

深度學習的名稱來自這樣一個事實,即該架構中涉及超過2層神經元。超過兩層在過去是不切實際的,結果很差。大量訓練數據和加速計算的可用性克服了這些限制。正是在這個時刻,開始添加更多層,從而產生了所謂的深度神經網絡。通過層的通信能夠描述數據的分層表示,其中每層神經元代表抽象級別。

通過卷積神經網絡學習視覺表徵

結合卷積的力量來提取空間特徵和從深度神經網絡進行層次學習的能力,產生所謂的卷積神經網絡。通過用卷積層代替DNN中存在的經典神經元層,將這兩種技術合併為單一解決方案。

因此,權重和偏差在內核中被編碼,並且是學習的參數,其優化從原始輸入(圖像)到預期預測(例如圖像的類)的表示。初始層將抽取諸如邊緣之類的特徵並編碼,而後來的邊緣將進行越來越高的抽象並編碼,例如形狀和紋理。

計算機視覺:一種直觀的解釋

在上圖中,每個神經元表示對從輸入層或先前層饋送的圖像的卷積運算。我們可以有多個卷積接收相同的輸入,以便提取不同類型的特徵。通過這些層,卷積操作將繼續將來自先前層的給定矩陣變換為用於手頭任務的越來越多的壓縮/有用表示。例如,如果我們的網絡正在執行人臉識別,初始圖層將從臉部提取邊緣,這些邊緣將被捲入形狀,這些形狀將被捲入某些面部特徵,這些特徵對於區分不同的個體,一直到輸出,其中我們有給定面的標識符。

結論

CNN可以應用於數據中存在某種空間屬性的任何域。這通常會轉化為將圖像作為輸入的問題。

好處

  • 與傳統的計算機視覺技術相比,從發展的角度來看,CNN更容易應用。有大量的教程和開源軟件可以處理最常見的任務,例如圖像分類或對象檢測,只需在已有的模型中提供數據;
  • 當有足夠的數據時,CNN優於其他淺層模型。

缺陷

  • 任何任務所需的數據量都可能非常龐大,因為深度學習技術通常始於有限先驗知識的手頭任務。在傳統計算機視覺算法中,有許多技術使用該先驗知識來實現​​算法如何工作以減少必要數據量。
  • 與任何深度學習方法一樣,CNN是黑盒方法,無法正式解釋。這意味著如果您的模型存在一些問題,您將開始猜測可能出錯的遊戲。


分享到:


相關文章: