卷積神經網絡(CNN):如何高效的識別圖像?

1 評論 5661 瀏覽 20 收藏 9 分鐘

在神經網絡的基礎上,卷積神經網絡(CNN)是如何完成圖像識別任務的?本文介紹了其相關基本原理,一起來看看吧。

上文介紹了神經網絡的基礎概念,今天我們在神經網絡的基礎上,看看卷積神經網絡(CNN)是如何完成圖像識別任務的。

一、圖像識別的痛點問題

在CNN出現之前,圖像識別有兩個大難題:

  • 圖像需要處理的數據量太大:圖片是由像素構成的,每個像素又由顏色(R、G、B三個數值)構成,用720p的手機攝像頭隨便拍張照片,就是1280*720*3=276.48萬個參數,計算量無疑是巨大的。
  • 圖片內容多變,導致準確率不高:如果對同一物體做翻轉、位置變換等處理,使物體以不同的姿態顯示在圖片中,雖然物體本身并沒有太大變化,但卻大大提升了圖片識別的難度。

而CNN可以有效的解決這兩個問題,它不僅可以大幅減少參數數量,降低復雜度;還可以使用類似視覺處理的方式保留圖像特征,即使圖像翻轉、移動,也可以進行有效的識別。

二、人類的視覺原理

要理解CNN的原理,需要先了解人類的視覺原理。

人類判斷物體的大致過程:眼睛看到物體(瞳孔攝入像素),然后發現物體的邊緣和方向(初步處理),接著判斷物體的形狀(抽象)、最后根據形狀判定是什么物體(進一步抽象)。

我們可以發現,上述過程其實就是一個神經網絡,低層級負責識別圖像基礎特征,多個基礎特征整合后變成上一層的特征,逐層處理,最終在頂層判斷出是什么物體。

這就是CNN的基礎思路。

三、CNN的基本原理

CNN由卷積層、池化層、全連接層三部分構成,它們各自的作用如下:

  • 卷積層(Convolutional Layer):卷積層負責提取圖像中的局部特征。
  • 池化層(Pooling Layer):池化層負責大幅降低參數量級,在保留重要特征信息的同時,降低計算復雜度。
  • 全連接層(Fully Connected Layer):全連接層類似傳統神經網絡的作用,根據卷積層和池化層處理過的數據,計算出最終的結果。

我們先來看看卷積層,卷積層提取局部特征的過程,和人類視覺的提取特征類似,如下圖所示:

圖中的黃色部分是一個濾波器(Filter),我們稱它為“卷積核”,它是一個小的矩陣。

卷積核通過滑動窗口的方式在輸入數據上進行卷積操作,卷積核的每個元素與輸入數據對應位置的元素相乘,然后將所有乘積結果相加,得到卷積操作的輸出結果。

不同的卷積核可以捕捉到不同的特征,例如邊緣、紋理、形狀等。

在訓練過程中,卷積神經網絡會學習到最優的卷積核參數,使得網絡能更好的提取輸入數據的局部特征。

因為卷積核比較小,即便我們做完了卷積處理,圖像依然很大,這時候需要池化層來對數據進行降維操作:

池化層通過對輸入數據的局部區域進行匯聚操作,例如最大池化或平均池化,來減少特征圖的大小。

比如原圖是20*20,我們用一個10*10的采樣窗口對原圖進行下采樣,最終可以將原圖下采樣為一個2*2的小圖。

這個操作其實就是降低圖片的像素,從高清圖變成模糊圖,這樣既保留了主要特征信息,還有效的過濾掉了圖片中的干擾信息,減少了向下一階段傳遞的數據量。

池化層可以更有效的降低數據維度,大大減少參數和運算量,同時還可以避免過擬合現象的發生。

卷積層和池化層提取出的特征,輸入到全連接層進行訓練和學習,由于大大減少了參數量,丟棄了干擾特征,使得訓練成本和復雜度大大降低。

四、應用場景

CNN在計算機視覺領域有廣泛的應用,以下是一些CNN的應用場景:

  • 圖像分類:可以將圖像分為不同的類別,如識別手寫數字、識別動物、識別物體等。
  • 目標檢測:可以在圖像中定位和識別多個目標。這在自動駕駛、視頻監控、人臉識別等領域有重要應用。
  • 圖像分割:可以用于圖像分割,即將圖像中的每個像素分配到不同的類別。這在醫學圖像分析、自然語言處理等領域有廣泛應用。
  • 圖像生成:可以用于圖像生成,例如生成逼真的圖像、圖像風格轉換、圖像超分辨率等。
  • 視頻分析:可以用于視頻分析,例如動作識別、行為識別、視頻內容理解等。
  • 醫學圖像分析:可以用于醫學圖像分析,例如病理圖像識別、肺部結節檢測、疾病預測等。

五、優缺點

CNN的優點:

  • 局部感知性:CNN通過卷積操作可以捕捉輸入數據的局部空間關系,能夠有效地提取圖像、語音等數據中的局部特征。
  • 參數共享:CNN中的卷積核在整個輸入數據上共享參數,這樣可以大大減少網絡的參數數量,降低過擬合的風險,并提高模型的訓練效率。
  • 平移不變性:CNN具有平移不變性,即對輸入數據的平移操作不會改變網絡的輸出。這使得CNN在處理圖像等數據時具有一定的魯棒性。
  • 多層次的特征學習:CNN通過堆疊多個卷積層和池化層,可以逐層地學習更加抽象和高級的特征表示,從而提高模型的表達能力。
  • 并行計算:CNN中的卷積操作可以并行計算,適合在GPU等硬件上進行高效的計算,加速模型的訓練和推理過程。

CNN的缺點:

  • 數據需求量大:CNN通常需要大量的標注數據來訓練模型,特別是在復雜任務和大規模數據集上,需要更多的數據來獲得良好的性能。
  • 計算資源要求高:由于CNN模型的復雜性,訓練和推理過程需要大量的計算資源,特別是在深層網絡和大規模數據上。
  • 可解釋性較差:由于CNN的復雜結構和參數共享機制,模型的決策過程不太容易解釋和理解,這在一些應用場景中可能會受到限制。
  • 對輸入數據的變形敏感:CNN對輸入數據的變形、旋轉等變化較為敏感,這可能導致模型在處理具有變形或扭曲的圖像時性能下降。

六、總結

本文介紹了CNN的基本原理和應用場景,CNN非常適合處理圖像類任務,在很多領域都有廣泛的應用。

下篇文章,我們會介紹循環神經網絡(RNN),還會簡單介紹它的優化算法,敬請期待。

本文由 @AI小當家 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 太棒了

    來自廣東 回復