吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CNN是怎么幫助進行圖像分類的

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-06-30 11:07 ? 次閱讀

編者按:最近小編在搜集CNN卷積計算方面的資料,希望能出一份清晰明了的圖文列表,但即便是在CNN介紹已經泛濫的今天,一篇好的、簡單易懂的博客文章都是那么稀缺。今天,小編就先編譯加州大學洛杉磯分校學生Adit Deshpande的幾篇入門文章,希望能給新手讀者帶來幫助。

簡介

單從字面上看,卷積神經網絡這個詞聽起來就像是生物學和數學的詭異組合,里面可能還摻了一點計算機科學的意味,但這種神經網絡一直在為計算機視覺領域默默貢獻著最具影響力的創新。2012年是神經網絡蓬勃發展的第一年,Alex Krizhevsky利用它們在當年的ImageNet競賽中贏得了勝利,把分類錯誤率從原來的26%降低到了15%,這在當時簡直是驚天之舉。

從那之后,許多公司開始把深度學習納入自家的核心產品中:Facebook把神經網絡用于自動標記算法,Google把神經網絡用于圖像搜索,亞馬遜把它們用于商品推薦Pinterest把它們用于主頁的個性化,而Instagram則開始用神經網絡改進搜索架構。

而在這些神經網絡中,應用最為廣泛的就是今天我們要聊的CNN。以圖像處理為例,我們來看看CNN是怎么幫助進行圖像分類的。

輸入和輸出

圖像分類指的是輸入一張圖像后,神經網絡輸出一個關于這個圖像的類,或是圖像屬于某類的概率的任務。對于人類而言,這是我們從出生那一刻起就開始不斷學習的技能之一,而且隨著年齡的增長,人們處理這種任務會越來越輕松自然。

無需二次思考,我們就能快速無縫識別身處的環境和周圍的所有物體。當看到一幅圖或是觀察周圍環境時,我們幾乎是下意識地調用以往學習的所有知識,為場景中的各個對象一一打上標簽

我們看到的 vs. 計算機看到的

但計算機不同。我們把圖像輸入計算機后,它“看”到的其實是一組像素值。這些像素值的數量會根據圖像的大小和分辨率發生改變,如果輸入圖像是一張JPG格式的彩色圖像,它的像素為480×480,那么計算機得到的數組就是480×480×3(這里3表示RGB值)。

這個數組里的每一個值都介于0—225之間,描述了對應像素的強度。雖然這些值對分類任務來說毫無意義,但它們是計算機可以用的唯一輸入。這就帶出了另一個更直白的圖像分類任務描述:它其實是把像素值數組作為輸入,然后輸出圖像屬于某一類的具體概率,如80%(貓)、15%(狗)、5%(鳥)。

我們想讓計算機做什么

既然知道了理想的輸入和輸出,那我們面臨的下一個問題就是如何讓計算機解決這個任務。我們希望它能區分所有圖像,然后找出狗之所以是狗、貓之所以是貓的獨特特征。這是人類的本能反應。當我們看到包含狗的圖像時,如果圖像里出現了一些明確的識別特征,如狗爪子和四條小短腿,我們可以迅速將其歸類。

同樣的,計算機分辨貓狗的做法是觀察邊緣、曲線等低層次特征,然后把這些放進一系列卷積層中進一步提取更多抽象概念。當然,這只是CNN進行圖像分類的一般概述,在下一節中我們會具體說明。

在開始正題前,我們先來探討一下“卷積神經網絡”這個詞。當你第一次接觸這個術語時,你會不會覺得這應該是神經科學或生物學方面的東西?其實這種感覺是正確的,CNN是生物學家對動物的視覺研究成果的一個衍生物。

視覺皮層中存在一塊對視野特定區域尤為敏感的細胞。1962年,Hubel和Wiesel對視覺神經細胞做了一個實驗,實驗表結果明,只有在存在特定方向邊緣的情況下,大腦中的一些神經細胞個體才會響應。他們發現所有這些神經細胞都位于一個柱狀結構中,而且能產生視覺感知。這種在特定任務的系統內部尋找特定組件的思想正是如今許多計算機任務的核心,它也是CNN背后的基礎。

讓我們回到CNN,簡而言之,它的一般流程就是:輸入圖像——卷積層、非線性層、池化層(下采樣)、完全連接層——輸出分類/概率。那么這些層分別都做了什么呢?

第一層 - 數學視角

CNN的第一層是一個卷積層。我會假裝你還記得神經網絡的輸入和輸出分別是什么,所以在這里我們假設輸入圖像是一張像素為32×32的彩色JPG,相應的,CNN的輸入就是一個32×32×3的像素值數組。那么作為第一層的卷積層究竟有什么用?如下圖所示,我們可以把卷積層想象成一個發光的手電筒,它從左上角開始檢查,光照范圍是5×5。現在,想象一下用手電筒一塊塊檢查完所有區域。

機器學習術語中,這個手電筒是filter(neuron/kernel),每次照亮的這塊5×5的區域是receptive field(感受野)。filter也是一個數組(權重/參數),而且深度必須和輸入圖像深度一致,這樣才能確保計算。在我們的例子中,filter的具體尺寸就是5×5×3。

隨著手電筒從左上角開始逐漸照亮周圍區域,圖像正在卷積,這時filter的數組會與原圖像像素值數組相乘(計算點積),在我們的例子中,它需要進行75次乘法運算,然后把這些乘積相加得到一個值。檢查完第一塊5×5后,讓我們把手電筒往右挪一個像素繼續計算點積,之后繼續往右挪一個像素,以此類推。

已知原輸入是32×32×3,filter尺寸5×5×3,當手電筒掃完整片區域后,最后我們在隱藏層獲得的是一個28×28×1的數組(窗口逐格挪動,邊界少2;3個顏色通道合并成1個)。它也被稱為activation map(加激活函數)或feature map。

注:如果這里我們用了兩個5×5×3的filter,那最后的映射結果會是28×28×2。filter越多,空間維度保留地越好。

第一層 - 高層次的視角

知道了具體的數學計算步驟后,我們似乎還是不清楚卷積層的作用,所以這里我們從高層次的視角再看一遍。

每個filter都可以被看作是特征標識符( feature identifiers),這里的特征指的是直線邊緣、曲線、黑白等,它們是每個圖像的都具備的最簡單的特征。假設我們有一個7×7×3的能檢測曲線的filter,它會給帶有曲線像素結構的區域更高數值。(請忽略filter的深度,只把它看成一個數組)

上圖就是這個filter的可視化,它在曲線區域賦予了更高的權重,因此當圖像感受野和它相乘時,相應區域的值會很高。

假設輸入圖像是一只小老鼠的簡筆畫。當filter從左上角開始卷積時,窗口先接觸到老鼠尾部。請記住一點,我們必須計算filter與圖像原始像素數組和乘積。

這個圓潤的曲線和filter的理想曲線形狀相似,相乘后,它們產生了一個很大的值。

但是,如果這時我們把窗口移到老鼠頭部,輸出結果就很差了。我們要注意一點,就是filter的輸出是個activation map(必定要ReLu一下),所以在這個只包含一個filter的簡單示例中,第一個卷積層在圖像左上角的區域得到了高值,而對右上角不會有激活反應。這就起到了“過濾”的效果。

當然這只是一個filter,一個只能分辨向右彎曲的曲線的filter,在真實實踐中,我們可以設置大量不同的filter來獲得更全面的activation map,如檢測直線的、色彩的。

注:這里的曲線、直線、色彩都是假設,事實上我們并不清楚CNN捕捉的特征是什么,我們只能從數據中看出它有沒有得到新特征,切勿認為計算機看到的就等同于人眼看到的。

CS 231N課程

越來越深的網絡

現在在一些經典CNN架構中,卷積層之間偶爾也會出現一些其他層,感興趣的讀者可以去了解一下這些層分別是什么,或者分別有什么作用,但總的來說,它們的出現都是為了增強神經網絡的穩定性并控制過擬合。從某種角度上說,CNN一般長這樣:

常規的CNN包含兩個卷積層就夠了,一些更高級的可能會存在多個卷積層的情況。就上圖而言,最后一個完全連接層是非常重要的,但我們把它放到下一節再介紹,先聊聊之前的各個步驟。把圖像輸入神經網絡后,第一個卷積層輸出的是activation map,這時網絡提取到了圖像中的一些低層次特征,就像人類眼中的邊緣和曲線。

用ReLu激活后,CNN把activation map輸入第二個卷積層,在這里,filter過濾的就是activation map中的特征,這是一個從低層次特征中提取高層次特征的過程,雖然我們不知道計算機看到了什么,但如果拿人類學習來類比,這一步可以被理解為從之前看到的邊緣、曲線中找出能組成半圓、正方形的線條組合。

卷積層越多,我們能提取到的高層次特征就越多,神經網絡對像素空間就越敏感。反過來看,這時網絡復雜度也高了,容易產生過擬合。

全連接層

有了高層次特征,現在我們就能品嘗CNN的精華——全連接層了。無論之前是卷積層的輸出還是ReLu、池化層的輸出,全連接層基本只接受一個輸入,并輸出一個N維向量,其中N是必須從中選擇的分類數。如果你想要分類手寫數字,這時N就是10,因為有10個數字。

這個N維向量中的每個數字代表屬于某個類別的概率。例如,如果全連接層的輸出是[0 .1 .1 .75 0 0 0 0 .05],那么圖像是1的概率就是10%,圖像是2概率是10%,圖像是3的概率是75%,圖像是9的概率則是5%(注意:還有其他方法可以表示輸出,這里只展示softmax方法)。

簡而言之,全連接層的作用就是觀察前一層的輸出(一般是包含高層次特征的activation map),然后確定哪些特征與特定類最相關。以人類類比,如果要辨別圖像里的是不是狗,我們會注意里面有沒有爪子、四肢;如果要辨別是不是鳥,翅膀和喙就特別重要。全連接層會賦予這些相關性更強的特征更多權重,以便當我們計算權重和上一層之間的乘積時,我們可以得到圖像屬于不同類別的正確概率。

訓練

最后就到了CNN最重要的部分——訓練了。在閱讀前文時,我們可能有諸多疑惑:filter是怎么知道自己要找哪些低層次特征的?全連接層又是怎么篩選activation map的?計算機能自動選取filter中的權重嗎?很顯然,這一切都是由經典的反向傳播來實現的。

在我們剛出生的時候,一切都是新的,我們不知道什么是狗,也不知道什么是鳥。同樣的,當一個CNN被剛寫出來的時候,它的世界也才剛起步,所有數值都是隨機選取的,filter不知道自己要篩選什么特征,全連接層也無法在activation map里放大有效信息。而隨著年齡的增長,我們的父母和老師逐漸向我們展示了這個多彩的世界,以及和它緊密相關的諸多標簽。訓練就是CNN學習的過程,通過查看數據集中成千上萬的圖片,神經網絡也能慢慢從中捕捉到特征,并學會正確分類。

反向傳播由4個不同步驟組成:正向傳遞、損失函數、反向傳遞和權重更新。

正向傳遞時,我們輸入一張圖像,一個尺寸為32×32×3的像素值數組,然后將其傳遞給整個網絡。在我們的第一個訓練示例中,由于所有權重/filter值都是隨機初始化的,因此輸出結果可能類似[.1 .1 .1 .1 .1 .1 .1 .1 .1],它在分類上“不偏不倚”。

損失函數開啟了“反向”的第一步。當網絡現有權重無法提取低層次特征時,這就意味著它沒法得出合理的分類結果。但是記住一點,我們用的是訓練數據,它包含圖像和標簽兩種信息,這就意味著我們能用損失函數計算預測標簽和真實標簽的差異,差異越小,CNN預測正確的可能性就越大,性能也越好。損失函數有很多,但其中最常用的MSE(均方誤差):

既然目的是把損失值降到最低,那這就成了一個優化問題——找出對輸出影響最大的輸入,也就是dL / dW,其中W是特定層的權重。

現在,我們要做的是通過網絡進行反向傳遞,確定哪些權重對損失影響最大,并找到調整它們的方法從而減少損失。一旦我們計算出這個導數,我們就會進入最后一步,權重更新。

學習率(learning rate)是一個可以自定義調整的超參數,它影響著著CNN的收斂速度。如果學習率過大,權重更新的幅度就很大,這時CNN能快速收斂,但它也帶來一個問題,就是權重的精度不夠,無法得出最優解。

正向傳遞、損失函數、反向傳遞和權重更新的過程構成一輪訓練迭代。CNN會對參與訓練的每組圖像(batch)進行進行固定次數的迭代。一旦你完成了最后一個訓練樣本的參數更新,這時網絡的性能更好了,各層的權值也終于調整正確了。

下期預告

本文介紹了CNN的一些基礎知識,包括filter的作用、各層的作用等,但還未介紹網絡架構、批量歸一化、損失函數選擇、數據增強、正則化方法等內容。新人可以依靠本文對CNN建立初步認識,部分重要內容我們會在下一篇文章中詳談。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4780

    瀏覽量

    101174
  • 機器學習
    +關注

    關注

    66

    文章

    8439

    瀏覽量

    133087
  • cnn
    cnn
    +關注

    關注

    3

    文章

    353

    瀏覽量

    22336

原文標題:面向新手的CNN入門指南(一)

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用Python卷積神經網絡(CNN)進行圖像識別的基本步驟

    Python 卷積神經網絡(CNN)在圖像識別領域具有廣泛的應用。通過使用卷積神經網絡,我們可以讓計算機從圖像中學習特征,從而實現對圖像分類
    的頭像 發表于 11-20 11:20 ?6498次閱讀

    TensorFlow的CNN文本分類

    在TensorFlow中實現CNN進行文本分類(譯)
    發表于 10-31 09:27

    討論紋理分析在圖像分類中的重要性及其在深度學習中使用紋理分析

    紋理就能被更準確地捕捉和分類。  在基于紋理的分類任務重,紋理分析對于深度學習的重要性  由于紋理基于局部模式,而傳統的深度學習方法強調復雜的特征,對紋理分類沒有幫助,因此,傳統的
    發表于 10-26 16:57

    如何將DS_CNN_S.pb轉換為ds_cnn_s.tflite?

    用于圖像分類(eIQ tensflowlite 庫)。從廣義上講,我正在尋找該腳本,您可能已經使用該腳本將 DS_CNN_S.pb 轉換為 ds_cnn_s.tflite我能夠查看兩個
    發表于 04-19 06:11

    一文詳解CNN

    1 CNN簡介 CNN即卷積神經網絡(Convolutional Neural Networks),是一類包含卷積計算的神經網絡,是深度學習(deep learning)的代表算法之一,在圖像
    發表于 08-18 06:56

    圖像分類的方法之深度學習與傳統機器學習

    實際情況非常復雜,傳統的分類方法不堪重負。現在,我們不再試圖用代碼來描述每一個圖像類別,決定轉而使用機器學習的方法處理圖像分類問題。 目前,許多研究者使用
    發表于 09-28 19:43 ?0次下載

    簡單好上手的圖像分類教程!

    簡單好上手的圖像分類教程!構建圖像分類模型的一個突破是發現卷積神經網絡(CNN)可以用來逐步地提取圖像
    的頭像 發表于 05-31 16:36 ?8286次閱讀
    簡單好上手的<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>教程!

    全卷積網絡FCN進行圖像分割

    CNN能夠對圖片進行分類,可是怎么樣才能識別圖片中特定部分的物體,在2015年之前還是一個世界難題。神經網絡大神Jonathan Long發表了《Fully Convolutional
    發表于 09-26 17:22 ?656次閱讀

    如何使用CNN對可穿戴傳感器進行數據分類

    本文使用 CNN 來對可穿戴傳感器收集的大規模運動數據進行分類,同時對傳感器數據轉換為不同的圖像格式輸入做出了比較。最佳性能配置以 92.1%的準確率將 50 種健身房運動
    發表于 12-25 03:39 ?15次下載
    如何使用<b class='flag-5'>CNN</b>對可穿戴傳感器<b class='flag-5'>進行</b>數據<b class='flag-5'>分類</b>

    基于特征交換的卷積神經網絡圖像分類算法

    針對深度學習在圖像識別任務中過分依賴標注數據的問題,提岀一種基于特征交換的卷積神經網絡(CNN圖像分類算法。結合CNN的特征提取方式與全卷
    發表于 03-22 14:59 ?27次下載
    基于特征交換的卷積神經網絡<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>算法

    《自動化學報》:基于小樣本學習的圖像分類技術綜述

    , 二是如何學習好的分類參數. 隨著卷積神經網絡(Convolutional neural networks, CNN)的設計越來越深層化, 圖像特征的表示能力越來越強, 同時也能對圖像
    發表于 11-10 09:43 ?3875次閱讀
    《自動化學報》:基于小樣本學習的<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>技術綜述

    使用CNN進行2D路徑規劃

    卷積神經網絡(CNN)是解決圖像分類、分割、目標檢測等任務的流行模型。本文將CNN應用于解決簡單的二維路徑規劃問題。主要使用Python, PyTorch, NumPy和OpenCV。
    的頭像 發表于 02-13 14:30 ?786次閱讀

    CNN圖像分類策略

    在深度學習出現之前,自然圖像中的對象識別過程相當粗暴簡單:定義一組關鍵視覺特征(“單詞”),識別每個視覺特征在圖像中的存在頻率(“包”),然后根據這些數字對圖像進行
    發表于 12-25 11:36 ?324次閱讀
    <b class='flag-5'>CNN</b><b class='flag-5'>圖像</b><b class='flag-5'>分類</b>策略

    cnn卷積神經網絡分類有哪些

    卷積神經網絡(CNN)是一種深度學習模型,廣泛應用于圖像分類、目標檢測、語義分割等領域。本文將詳細介紹CNN分類任務中的應用,包括基本結構
    的頭像 發表于 07-03 09:28 ?741次閱讀

    使用卷積神經網絡進行圖像分類的步驟

    使用卷積神經網絡(CNN進行圖像分類是一個涉及多個步驟的過程。 1. 問題定義 確定目標 :明確你想要分類
    的頭像 發表于 11-15 15:01 ?395次閱讀
    囊谦县| 路劲太阳城业主论坛| 大西洋百家乐的玩法技巧和规则| 全讯网直播| 456棋牌游戏| 保时捷娱乐城| 百家乐官网论坛百科| 百家乐官网的保单打法| 免佣百家乐官网的玩法| 百家乐官网专打方法| 百家乐打法心得| 大发888游戏平台403| 皇冠网都市小说| 玩百家乐官网新澳门娱乐城| 天天百家乐官网的玩法技巧和规则 | 网上大发扑克| 网上玩百家乐官网好吗| 专业的百家乐官网玩家| 澳门百家乐职业| 大发888娱乐城高手| 申扎县| 沙龙百家乐官网娱乐网| 百家乐三珠连跳打法| 大发888棋牌下载| 灵璧县| 实战百家乐官网十大取胜原因百分百战胜百家乐官网不买币不吹牛只你能做到按我说的.百家乐官网基本规则 | 澳门百家乐官网战法| 百家乐网站加盟| 新乐园百家乐娱乐城| 灌阳县| 赢波娱乐| 百家乐官网牌| 亚洲百家乐的玩法技巧和规则| 澳门赌场有老千| 百家乐官网牌| 太阳城二手房| 澳门百家乐官网有哪些| 百家乐网络游戏平台| TT娱乐城娱乐,| 如何赢百家乐官网的玩法技巧和规则 | 金沙城百家乐官网大赛规则|