卷積神經網路CNN在影象識別問題應用綜述(20191219)

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-11-18

卷積神經網路CNN在影象識別問題應用綜述(20191219)亞浩科技 2022-07-09

這兩天在公司做PM實習,主要是自學一些CV的知識,以瞭解產品在解決一些在影象識別、影象搜尋方面的問題,學習的主要方式是在知網檢索了6。7篇國內近3年計算機視覺和物體識別的碩博士論文。由於時間關係,後面還會繼續更新圖片相似度計算(以圖搜圖)等方面的學習成果

將這兩天的學習成果在這裡總結一下。你將會看到計算機視覺在解決特定物體識別問題(主要是卷積神經網路CNNs)的基礎過程和原理,但這裡不會深入到技術的實現層面。

計算機視覺(Computer vision)是一門研究如何使機器“看”的科學,更進一步的說,就是指用攝影機和計算機代替人眼對目標進行識別、跟蹤和測量等機器視覺,並進一步做影象處理,用計算機處理成為更適合人眼觀察或傳送給儀器檢測的影象。

————維基百科

通常而言,計算機視覺的研究包括三個層次:

(1)底層特徵的研究:

這一層次的研究主要聚焦如何高效提取出影象物件具有判別效能的特徵,具體的研究內容通常包括:物體識別、字元識別等

(2)中層語義特徵的研究:

該層次的研究在於在識別出物件的基礎上,對其位置、邊緣等資訊能夠準確區分。現在比較熱門的:影象分割;語義分割;場景標註等,都屬於該領域的範疇

(3)高層語義理解:

這一層次建立在前兩層的基礎上,其核心在於“理解”一詞。 目標在於對複雜影象中的各個物件完成語義級別的理解。這一層次的研究常常應用於:場景識別、影象摘要生成及影象語義回答等。

而我研究的問題主要隸屬於底層特徵和中層語義特徵研究中的物體識別和場景標註問題。

人類的視覺工作模式是這樣的:

首先,我們大腦中的神經元接收到大量的資訊微粒,但我們的大腦還並不能處理它們。

於是接著神經元與神經元之間互動將大量的微粒資訊整合成一條又一條的線。

接著,無數條線又整合成一個個輪廓。

最後多個輪廓累加終於聚合我們現在眼前看到的樣子。

計算機科學受到神經科學的啟發,也採用了類似的工作方式。具體而言,影象識別問題一般都遵循下面幾個流程

(1)獲取底層資訊。獲取充分且清潔的高質量資料往往是影象識別工作能否成功的關鍵所在

(2)資料預處理工作,在影象識別領域主要包括四個方面的技術:去噪處理(提升信噪比)、影象增強和影象修復(主要針對不夠清晰或有破損缺失的影象);歸一化處理(一方面是為了減少開銷、提高演算法的效能,另一方面則是為了能成功使用深度學習等演算法,這類演算法必須使用歸一化資料)。

(3)特徵提取,這一點是該領域的核心,也是本文的核心。影象識別的基礎是能夠提取出足夠高質量,能體現影象獨特性和區分度的特徵。

過去在10年代之前我們主要還是更多的使用傳統的人工特徵提取方法,如PCA\LCA等來提取一些人工設計的特徵,主要的方法有(HOG、LBP以及十分著名的SIFT演算法)。但是這些方法普遍存在(a)一般基於影象的一些提層特徵資訊(如色彩、紋理等)難以表達複雜的影象高層語義,故泛化能力普遍比較弱。(b)這些方法一般都針對特定領域的特定應用設計,泛化能力和遷移的能力大多比較弱。

另外一種思路是使用BP方法,但是畢竟BP方法是一個全連線的神經網路。這以為這我們非常容易發生過擬合問題(每個元素都要負責底層的所有引數),另外也不能根據樣本對訓練過程進行最佳化,實在是費時又費力。

因此,一些研究者開始嘗試把諸如神經網路、深度學習等方法運用到特徵提取的過程中,以十幾年前深度學習方法在業界最重要的比賽ImageNet中第一次戰勝了SIFT演算法為分界線,由於其使用權重共享和特徵降取樣,充分利用了資料的特徵。幾乎每次比賽的冠軍和主流都被深度學習演算法及其各自改進型所佔領。其中,目前使用較多又最為主流的是CNN演算法,在第四部分主要也研究CNN方法的機理。

上圖是一個簡易的神經網路,只有一層隱含層,而且是全連線的(如圖,上一層的每個節點都要對下一層的每個節點負責。)具體神經元與神經元的作用過程可見下圖。

在諸多傳統的神經網路中,BP演算法可能是效能最好、應用最廣泛的演算法之一了。其核心思想是:匯入訓練樣本、計算期望值和實際值之間的差值,不斷地調整權重,使得誤差減少的規定值的範圍內。其具體過程如下圖:

一般來說,機器學習又分成淺層學習和深度學習。傳統的機器學習演算法,如SVM、貝葉斯、神經網路等都屬於淺層模型,其特點是隻有一個隱含層。邏輯簡單易懂、但是其存在理論上缺乏深度、訓練時間較長、引數很大程度上依賴經驗和運氣等問題。

如果是有多個隱含層的多層神經網路(一般定義為大於5層),那麼我們將把這個模型稱為深度學習,其往往也和分層訓練配套使用。這也是目前AI最火的領域之一了。如果是淺層模型的問題在於對一個複雜函式的表示能力不夠,特別是在複雜問題分類情況上容易出現分類不足的弊端,深度網路的優勢則在於其多層的架構可以分層表示邏輯,這樣就可以用簡單的方法表示出複雜的問題,一個簡單的例子是:

如果我們想計算sin(cos(log(exp(x)))),

那麼深度學習則可分層表示為exp(x)—>log(x)—>cos(x)—>sin(x)

影象識別問題是物體識別的一個子問題,其魯棒性往往是解決該類問題一個非常重要的指標,該指標是指分類結果對於傳入資料中的一些轉化和扭曲具有保持不變的特性。這些轉化和扭曲具體主要包括了:

(1)噪音(2)尺度變化(3)旋轉(4)光線變化(5)位移

該部分具體的內容,想要快速理解原理的話推薦看[知乎相關文章] ( https://www。zhihu。com/search?type=content&q=CNN ),

特別是其中有些高贊回答中都有很多動圖和動畫,非常有助於理解。

但核心而言,CNN的核心優勢在於

共享權重

以及

感受野

,減少了網路的引數,實現了更快的訓練速度和同樣預測結果下更少的訓練樣本,而且相對於人工方法,一般使用深度學習實現的CNN演算法使用無監督學習,其也不需要手工提取特徵。

CNN演算法的過程給我的感覺,個人很像一個“擦玻璃”的過程。其技術主要包括了三個特性:區域性感知、權重共享和池化。

CNN中的神經元主要分成了兩種:

(a)用於特徵提取的S元,它們一起組成了卷積層,用於對於圖片中的每一個特徵首先區域性感知。其又包含很關鍵的閾值引數(控制輸出對輸入的反映敏感度)和感受野引數(決定了從輸入層中提取多大的空間進行輸入,可以簡單理解為擦玻璃的抹布有多大)

(b)抗形變的C元,它們一起組成了池化層,也被稱為欠取樣或下采樣。主要用於特徵降維,壓縮資料和引數的數量,減小過擬合,同時提高模型的容錯性。

(c*)啟用函式,及卷積層輸出的結果要經過一次激勵函式才會對映到池化層中,主要的啟用函式有Sigmoid函式、Tanh函式、ReLU、Leaky ReLU、ELU、Maxout等。

也許你會抱有疑問,CNN演算法和傳統的BP演算法等究竟有什麼區別呢。這就會引出區域感受野的概念。在前面我們提到,一個全連線中,較高一層的每個神經元要對低層的每一個神經元負責,從而導致了過擬合和維度災難的問題。但是有了區域感受野和,每個神經元只需要記錄一個小區域,而高層會把這些資訊綜合起來,從而解決了全連線的問題。

瞭解區域感受野後,你也許會想,區域感受野的底層神經元具體是怎麼聚合資訊對映到上一層的神經元呢,這就要提到重要的卷積核的概念。這個過程非常像上面曾提到的“神經元與神經元的聯絡”一圖,下面給大家一個很直觀的理解。

上面的這個過程就被稱為一個卷積核。在實際應用中,單特徵不足以被系統學習分類,因此我們往往會使用多個濾波器,每個濾波器對應1個卷積核,也對應了一個不同的特徵。比如:我們現在有一個人臉識別應用,我們使用一個卷積核提取出眼睛的特徵,然後使用另一個卷積核提取出鼻子的特徵,再用一個卷積核提取出嘴巴的特徵,最後高層把這些資訊聚合起來,就形成了分辨一個人與另一個人不同的判斷特徵。

現在我們已經有了區域感受野,也已經瞭解了卷積核的概念。但你會發現在實際應用中還是有問題:

給一個100 100的引數空間,假設我們的感受野大小是10 10,那麼一共有squar(1000-10+1)個,即10的六次方個感受野。每個感受野中就有100個引數特徵,及時每個感受野只對應一個卷積核,那麼空間內也會有10的八次方個次數,,更何況我們常常使用很多個卷積核。巨大的引數要求我們還需要進一步減少權重引數,這就引出了權重共享的概念。

用一句話概括就是,對同一個特徵圖,每個感受野的卷積核是一樣的,如這樣操作後上例只需要100個引數。

池化是CNN技術的最後一個特性,其基本思想是:

一塊區域有用的影象特徵,在另一塊相似的區域中很可能仍然有用。即我們透過卷積得到了大量的邊緣EDGE資料,但往往相鄰的邊緣具有相似的特性,就好像我們已經得到了一個強邊緣,再擁有大量相似的次邊緣特徵其實是沒有太大增量價值的,因為這樣會使得系統裡充斥大量冗餘資訊消耗計算資源。

具體而言,池化層把語義上相似的特徵合併起來,透過池化操作減少卷積層輸出的特徵向量,減少了引數,緩解了過擬合問題。常見的池化操作主要包括3種:

分別是最大值池化(保留了影象的紋理特徵)、均值池化(保留了影象的整體特徵)和隨機值池化。該技術的弊端是容易過快減小資料尺寸,目前趨勢是用其他方法代替池化的作用,比如膠囊網路推薦採用動態路由來代替傳統池化方法,原因是池化會帶來一定程度上表徵的位移不變性,傳統觀點認為這是一個優勢,但是膠囊網路的作者Hinton et al。認為影象中位置資訊是應該保留的有價值資訊,利用特別的聚類評分演算法和動態路由的方式可以學習到更高階且靈活的表徵,有望衝破目前卷積網路構架的瓶頸。

CNN總體來說是一種結構,其包含了多種網路模型結構,數目繁多的的網路模型結構決定了資料擬合能力和泛化能力的差異。其中的複雜性對使用者的技術能力有較高的要求。此外,CNN仍然沒有很好的解決過擬合問題和計算速度較慢的問題。

該部分的核心參考文獻: 《深度學習在影象識別中的應用研究綜述》鄭遠攀,李廣陽,李曄.[J].計算機工程與應用,2019,55(12):20-36.

深度學習技術在計算機影象識別方面的領域應用研究是目前以及可預見的未來的主流趨勢,在這裡首先對深度學習的基本概念作一簡介,其次對深度學習常用的結構模型進行概述說明,主要簡述了深度信念網路(DBN)、卷積神經網路(CNN)、迴圈神經網路(RNN)、生成式對抗網路(GAN)、膠囊網路(CapsNet)以及對各個深度模型的改進模型做一對比分析。

深度學習按照學習架構可分為生成架構、判別架構及混合架構。

其生成架構模型主要包括:

受限波爾茲曼機、自編碼器、深層信念網路等。判別架構模型主要包括:深層前饋網路、卷積神經網路等。混合架構模型則是這兩種架構的集合。深度學習按資料是否具有標籤可分為非監督學習與監督學習。非監督學習方法主要包括:受限玻爾茲曼機、自動編碼器、深層信念網路、深層玻爾茲曼機等。

監督學習方法主要包括:深層感知器、深層前饋網路、卷積神經網路、深層堆疊網路、迴圈神經網路等。大量實驗研究表明,監督學習與非監督學習之間無明確的界限,如:深度信念網路在訓練過程中既用到監督學習方法又涉及非監督學習方法。

[1]周彬。 多檢視視覺檢測關鍵技術及其應用研究[D]。浙江大學,2019。

[2]鄭遠攀,李廣陽,李曄。深度學習在影象識別中的應用研究綜述[J]。計算機工程與應用,2019,55(12):20-36。

[3]逄淑超。 深度學習在計算機視覺領域的若干關鍵技術研究[D]。吉林大學,2017。

[4]段萌。 基於卷積神經網路的影象識別方法研究[D]。鄭州大學,2017。

[5]李彥冬。 基於卷積神經網路的計算機視覺關鍵技術研究[D]。電子科技大學,2017。

[6]李衛。 深度學習在影象識別中的研究及應用[D]。武漢理工大學,2014。

[7]許可。 卷積神經網路在影象識別上的應用的研究[D]。浙江大學,2012。

[8]CSDN、知乎、機器之心、維基百科

Top