圖像需要處理的數據量太大,導致成本高,效率低。
圖像數字化過程中很難保持原始特征,導致圖像處理精度低。
我們來詳細解釋壹下這兩個問題:
圖像由像素組成,每個像素由顏色組成。
現在任何壹張圖片都是1000×1000像素以上,每個像素都有RGB 3參數來表示顏色信息。
如果我們處理壹張1000×1000像素的圖片,需要處理300萬個參數!
1000×1000×3=3,000,000
這麽大的數據量,處理起來非常耗費資源,而這只是壹張不算太大的圖!
卷積神經網絡CNN解決的第壹個問題是“簡化復雜問題”,將大量的參數縮減為少數幾個參數,然後進行處理。
更重要的是,在大多數場景下,降維不會影響結果。比如壹張1000像素的圖片縮小到200像素,不影響肉眼識別圖片是貓還是狗,機器也會識別。
讓我們簡化數字化圖片的傳統方式,它類似於下面所示的過程:
如果壹個圓是1,沒有壹個圓是0,那麽圓的不同位置會產生完全不同的數據表達式。但從視覺上看,形象的內容(本質)沒有變,只是位置變了。
所以當我們移動圖像中的物體時,傳統方式得到的參數會有很大的不同!這不符合圖像處理的要求。
CNN解決了這個問題。它以類似的視覺方式保留了圖像的特征。當圖像被翻轉、旋轉或移位時,它也能有效地將其識別為相似圖像。
那麽卷積神經網絡是如何實現的呢?在了解CNN的原理之前,我們先來看看人類視覺的原理。
深度學習的很多研究成果都離不開大腦認知原理的研究,尤其是視覺原理的研究。
1981諾貝爾醫學獎授予了大衛·胡貝爾(David Hubel),他是壹位出生於加拿大托斯坦威瑟爾和羅傑·斯佩裏的美國神經生物學家。前兩者的主要貢獻是“發現視覺系統的信息處理”,視覺皮層是有層次的。
人的視覺原理是這樣的:從原始信號攝取(像素被瞳孔攝取)開始,然後做初步處理(大腦皮層的壹些細胞找到邊緣和方向),然後抽象(大腦確定我們面前的物體形狀是圓的),然後進壹步抽象(大腦進壹步確定物體是氣球)。以下是人腦人臉識別的壹個例子:
對於不同的對象,人類視覺也通過這種分層分類來識別:
我們可以看到,在底部,特征基本相似,即邊緣越高,特征越多(車輪、眼睛、軀幹等。)這樣的物體可以被提取出來,在最上面,不同的高級特征最終被組合成相應的圖像,從而讓人類能夠準確地區分不同的物體。
那麽我們可以很自然的想到:是否可以模仿人腦的這種特性,構造壹個多層神經網絡,在較低層識別出初級的圖像特征,用幾個較低層的特征組成壹個較高層的特征,最後通過多層次的組合在頂層進行分類?
答案是肯定的,這也是很多深度學習算法(包括CNN)的靈感來源。
典型的CNN由三部分組成:
卷積層
遊泳池層
全連接層
如果簡單描述:
卷積層負責提取圖像中的局部特征;池層用於大大降低參數的階數(降維);全連接層類似於傳統的神經網絡,用於輸出期望的結果。
下面的原理解釋為了簡單易懂,忽略了很多技術細節。如果妳對詳細原理感興趣,可以看這個視頻《卷積神經網絡基礎》。
卷積層的操作過程如下:用壹個卷積核掃描整張圖片:
這個過程可以理解為我們用壹個濾波器(卷積核)對圖像的小區域進行濾波,從而得到這些小區域的特征值。
在具體應用中,往往有多個卷積核。可以認為每個卷積核代表壹種圖像模式。如果與該卷積核卷積的圖像塊的值大,則認為該圖像塊非常接近該卷積核。如果我們設計六個卷積核,就可以理解為這個圖像有六個底層紋理圖案,也就是說我們可以用六個基本圖案來畫壹個圖像。以下是25種不同卷積核的示例:
總結:卷積層通過卷積核的過濾,提取出圖片中的局部特征,類似於前面提到的人類視覺的特征提取。
池層就是簡單的下采樣,可以大大降低數據的維度。流程如下:
在上圖中,我們可以看到原始圖像是20×20,所以我們用10×10的采樣窗口對其進行下采樣,最後下采樣成2×2的特征圖。
這樣做的原因是,即使卷積後,圖像仍然很大(因為卷積核比較小),所以為了降低數據維數,進行了下采樣。
總結:Pool層比卷積層更能有效地降低數據維數,不僅能大大降低計算量,還能有效避免過擬合。
這部分是最後壹步,卷積層和池層處理後的數據輸入到全連接層,得到最終想要的結果。
只有卷積層和池層縮減的數據,全連通層才能“運行”,否則數據量過大,計算成本高,效率低。
典型的CNN不僅僅是上面提到的三層結構,而是多層結構,比如下圖所示的LeNet-5的結構:
卷積層-池層-卷積層-池層-卷積層-全連通層。
在了解了CNN的基本原理後,我們將重點介紹CNN的實際應用。
卷積神經網絡——CNN擅長處理圖像。視頻是圖像的疊加,所以也擅長處理視頻內容。下面給大家介紹壹些比較成熟的應用?:
圖像分類和檢索
圖像分類是壹個比較基礎的應用,可以節省大量的人力成本,對圖像進行有效的分類。對於某些特定領域的圖片,分類準確率可以達到95%+,被認為是高可用的應用。
典型場景:圖片搜索…
目標位置檢測
您可以在圖像中定位目標,並確定目標的位置和大小。
典型場景:自動駕駛、安防、醫療……
目標分割
簡單理解就是像素級分類。
他可以在像素級別區分前景和背景,更高級的是,他可以識別和分類目標。
典型場景:米托秀秀,視頻後期處理,圖像生成…
面部識別
人臉識別已經成為壹個非常流行的應用,它已經被廣泛應用於許多領域。
典型場景:安全、金融、生活……
骨架識別
骨骼識別可以識別身體的關鍵骨骼,並跟蹤骨骼的運動。
典型場景:安全、電影、圖像和視頻生成、遊戲…
今天我們介紹了CNN的價值、基本原理和應用場景,簡要概括如下:
CNN的價值:
可以有效的將數據量大的圖片降維到數據量小(不影響結果)
能保留畫面的特點,類似於人的視覺原理。
CNN的基本原理:
卷積層——主要作用是保存畫面的特征。
池層——主要作用是降低數據的維度,可以有效避免過擬合。
全連接層-根據不同的任務輸出所需的結果。
CNN的實際應用:
圖片分類和檢索
目標位置檢測
目標分割
面部識別
骨架識別
本文首次發表於easy ai-人工智能知識庫。
理解卷積神經網絡-CNN(基本原理+唯壹值+實際應用))