1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        卷積神經(jīng)網(wǎng)絡(luò)CNN完全指南終極版

        共 2559字,需瀏覽 6分鐘

         ·

        2022-02-20 23:30

        點擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號

        視覺/圖像重磅干貨,第一時間送達(dá)

        目錄導(dǎo)讀

        【1】導(dǎo)論

        【2】卷積運算

        【3】非線性激活

        【4】池化層

        【5】全連接層

        【6】神經(jīng)網(wǎng)絡(luò)的訓(xùn)練與優(yōu)化



        【1】導(dǎo)論

        先來說一寫題外話...

        學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),一開始非常盲目,先是在網(wǎng)上搜了一大堆的資料,各種什么“一文讀懂卷積神經(jīng)紋網(wǎng)絡(luò)”,“叫你三分鐘搭建屬于自己的神經(jīng)網(wǎng)絡(luò)框架”,“五分鐘速讀神經(jīng)網(wǎng)絡(luò)全解”,之類的文章層出不窮。看了太多導(dǎo)致的結(jié)果是,學(xué)了很久都沒能真正意義上地入門。

        而后自己艱辛摸索才慢慢了解了卷積神經(jīng)網(wǎng)絡(luò)的真諦。(好官方啊哈哈哈哈哈哈)


        首先最需要明確的一點就是,卷積神經(jīng)網(wǎng)絡(luò),也就是convolutional neural networks (簡稱CNN),現(xiàn)在已經(jīng)被用來應(yīng)用于各個領(lǐng)域,物體分割啦,風(fēng)格轉(zhuǎn)換啦,自動上色啦blahblah,但是!!CNN真正能做的,只是起到一個特征提取器的作用!所以這些應(yīng)用,都是建立在CNN對圖像進(jìn)行特征提取的基礎(chǔ)上進(jìn)行的。


        這篇文章呢,我不打算和傳統(tǒng)介紹CNN的文章一樣先介紹生物神經(jīng)元、突觸什么的,就直接從最簡單的實例講起。


        廢話不多說,開始。

        拿到一張圖片,要對它進(jìn)行識別,最簡單的栗子是,這張圖是什么?

        比如,我現(xiàn)在要訓(xùn)練一個最簡單的CNN,用來識別一張圖片里的字母是X還是O。

        我們?nèi)搜垡豢矗芎唵温?,明顯就是X啊,但是計算機(jī)不知道,它不明白什么是X。所以我們給這張圖片加一個標(biāo)簽,也就是俗稱的Label,Label=X,就告訴了計算機(jī)這張圖代表的是X。它就記住了X的長相。

        但是并不是所有的X都長這樣呀。比如說...

        這四個都是X,但它們和之前那張X明顯不一樣,計算機(jī)沒見過它們,又都不認(rèn)識了。

        (這里可以扯出機(jī)器學(xué)習(xí)中聽起來很高冷的名詞 “?欠擬合?”)


        不認(rèn)識了怎么辦,當(dāng)然是回憶看看是不是見過差不多的呀。這時候CNN要做的,就是如何提取內(nèi)容為X的圖片的特征。

        我們都知道,圖片在計算機(jī)內(nèi)部以像素值的方式被存儲,也就是說兩張X在計算機(jī)看來,其實是這樣子的。

        ? ? ? ? ?

        其中1代表白色,-1代表黑色。

        如果按照每像素逐個比較肯定是不科學(xué)的,結(jié)果不對而且效率低下,因此提出其他匹配方法。

        我們稱之為patch匹配。

        觀察這兩張X圖,可以發(fā)現(xiàn)盡管像素值無法一一對應(yīng),但也存在著某些共同點。

        如上圖所示,兩張圖中三個同色區(qū)域的結(jié)構(gòu)完全一致!

        因此,我們就考慮,要將這兩張圖聯(lián)系起來,無法進(jìn)行全體像素對應(yīng),但是否能進(jìn)行局部地匹配?

        答案當(dāng)然是肯定的。

        相當(dāng)于如果我要在一張照片中進(jìn)行人臉定位,但是CNN不知道什么是人臉,我就告訴它:人臉上有三個特征,眼睛鼻子嘴巴是什么樣,再告訴它這三個長啥樣,只要CNN去搜索整張圖,找到了這三個特征在的地方就定位到了人臉。


        同理,從標(biāo)準(zhǔn)的X圖中我們提取出三個特征feature

        我們發(fā)現(xiàn)只要用這三個feature便可定位到X的某個局部。

        feature在CNN中也被成為卷積核(filter),一般是3X3,或者5X5的大小。



        【2】卷積運算


        說了那么久終于扯到了卷積二字!

        但是!!胖友們!卷積神經(jīng)網(wǎng)絡(luò)和信號處理里面那個卷積運算!毛關(guān)系都沒有啊!當(dāng)初我還特意去復(fù)習(xí)了一下高數(shù)里的卷積運算!摔!

        這些??!都和我們的CNN沒有關(guān)系?。。?/p>

        (二稿修改:經(jīng)知友提醒,此處的確說的不對,卷積神經(jīng)網(wǎng)絡(luò)在本質(zhì)和原理上還是和卷積運算有一定的聯(lián)系的,只是之前本人才疏學(xué)淺未能看出它們二者實質(zhì)相關(guān)聯(lián)的地方,若有誤導(dǎo)之處還請各位諒解,抱歉?。?/p>


        好了,下面繼續(xù)講怎么計算。四個字:對應(yīng)相乘。

        看下圖。

        取 feature里的(1,1)元素值,再取圖像上藍(lán)色框內(nèi)的(1,1)元素值,二者相乘等于1。把這個結(jié)果1填入新的圖中。

        同理再繼續(xù)計算其他8個坐標(biāo)處的值

        9個都計算完了就會變成這樣。

        接下來的工作是對右圖九個值求平均,得到一個均值,將均值填入一張新的圖中。

        這張新的圖我們稱之為?feature map?(特征圖

        可能有小盆友要舉手問了,為什么藍(lán)色框要放在圖中這個位置呢?

        這只是個栗子嘛。這個藍(lán)色框我們稱之為 “窗口”,窗口的特性呢,就是要會滑動。

        其實最開始,它應(yīng)該在起始位置。

        進(jìn)行卷積對應(yīng)相乘運算并求得均值后,滑動窗便開始向右邊滑動。根據(jù)步長的不同選擇滑動幅度。

        比如,若 步長 stride=1,就往右平移一個像素。

        若步長 stride=2,就往右平移兩個像素。

        就這么移動到最右邊后,返回左邊,開始第二排。同樣,若步長stride=1,向下平移一個像素;stride=2則向下平移2個像素。

        好了,經(jīng)過一系列卷積對應(yīng)相乘,求均值運算后,我們終于把一張完整的feature map填滿了。

        feature map是每一個feature從原始圖像中提取出來的“特征”。其中的值,越接近為1表示對應(yīng)位置和feature的匹配越完整,越是接近-1,表示對應(yīng)位置和feature的反面匹配越完整,而值接近0的表示對應(yīng)位置沒有任何匹配或者說沒有什么關(guān)聯(lián)。


        一個feature作用于圖片產(chǎn)生一張feature map,對這張X圖來說,我們用的是3個feature,因此最終產(chǎn)生3個 feature map。

        至此,卷積運算的部分就講完啦!~


        【3】非線性激活層

        卷積層對原圖運算多個卷積產(chǎn)生一組線性激活響應(yīng),而非線性激活層是對之前的結(jié)果進(jìn)行一個非線性的激活響應(yīng)。

        這是一個很官方的說法,不知道大家看到上面這句話是不是都覺得要看暈了。

        嗯~ o(* ̄▽ ̄*)o 其實真的沒有那么復(fù)雜啦!

        本系列的文章秉承著“說人話!”的原則,著力于用最簡單通俗的語言來為大家解釋書上那些看不懂的概念。

        在神經(jīng)網(wǎng)絡(luò)中用到最多的非線性激活函數(shù)是Relu函數(shù),它的公式定義如下:

        f(x)=max(0,x)

        即,保留大于等于0的值,其余所有小于0的數(shù)值直接改寫為0。

        為什么要這么做呢?上面說到,卷積后產(chǎn)生的特征圖中的值,越靠近1表示與該特征越關(guān)聯(lián),越靠近-1表示越不關(guān)聯(lián),而我們進(jìn)行特征提取時,為了使得數(shù)據(jù)更少,操作更方便,就直接舍棄掉那些不相關(guān)聯(lián)的數(shù)據(jù)。

        如下圖所示:>=0的值不變

        而<0的值一律改寫為0

        得到非線性激活函數(shù)作用后 的結(jié)果:

        【4】pooling池化層

        卷積操作后,我們得到了一張張有著不同值的feature map,盡管數(shù)據(jù)量比原圖少了很多,但還是過于龐大(比較深度學(xué)習(xí)動不動就幾十萬張訓(xùn)練圖片),因此接下來的池化操作就可以發(fā)揮作用了,它最大的目標(biāo)就是減少數(shù)據(jù)量。

        池化分為兩種,Max Pooling 最大池化、Average Pooling平均池化。顧名思義,最大池化就是取最大值,平均池化就是取平均值。

        拿最大池化舉例:選擇池化尺寸為2x2,因為選定一個2x2的窗口,在其內(nèi)選出最大值更新進(jìn)新的feature map。


        同樣向右依據(jù)步長滑動窗口。

        最終得到池化后的feature map??擅黠@發(fā)現(xiàn)數(shù)據(jù)量減少了很多。

        因為最大池化保留了每一個小塊內(nèi)的最大值,所以它相當(dāng)于保留了這一塊最佳匹配結(jié)果(因為值越接近1表示匹配越好)。這也就意味著它不會具體關(guān)注窗口內(nèi)到底是哪一個地方匹配了,而只關(guān)注是不是有某個地方匹配上了。這也就能夠看出,CNN能夠發(fā)現(xiàn)圖像中是否具有某種特征,而不用在意到底在哪里具有這種特征。這也就能夠幫助解決之前提到的計算機(jī)逐一像素匹配的死板做法。


        到這里就介紹了CNN的基本配置---卷積層、Relu層、池化層。

        在常見的幾種CNN中,這三層都是可以堆疊使用的,將前一層的輸入作為后一層的輸出。比如:

        也可以自行添加更多的層以實現(xiàn)更為復(fù)雜的神經(jīng)網(wǎng)絡(luò)。

        而最后的全連接層、神經(jīng)網(wǎng)絡(luò)的訓(xùn)練與優(yōu)化,更多內(nèi)容將在下一篇文章中繼續(xù)。

        來源:MATLAB圖形說

        本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。

        —THE END—
        瀏覽 29
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲w码欧洲s码免费 | 国产午夜探花 | 国产三级久久 | 久久无码电影 | 国产乱╳╳AⅤ视频 | 国产自产在线播放 | 后进女神白嫩翘臀进入在线观看 | 国产乱人乱偷精品视频a人人澡 | 亚洲一线精品操逼毛片 | 亚洲h片 |