<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          深入理解CNN

          共 5212字,需瀏覽 11分鐘

           ·

          2021-09-23 16:51

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          本文轉(zhuǎn)自|機(jī)器學(xué)習(xí)實(shí)驗(yàn)室
          在本書前三講中,我們學(xué)習(xí)了神經(jīng)網(wǎng)絡(luò)的基本原理、優(yōu)化方法和訓(xùn)練算法等基礎(chǔ)知識(shí),主要針對(duì)的是以BP算法為支撐的深度神經(jīng)網(wǎng)絡(luò)。從本講開始,我們將為大家介紹一種用途更為廣泛、性能更加優(yōu)越的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)——卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)。CNN在圖像識(shí)別、目標(biāo)檢測(cè)和語義分割等多個(gè)計(jì)算機(jī)視覺領(lǐng)域有著廣泛的應(yīng)用。

          CNN發(fā)展簡(jiǎn)史與人物
          早在20個(gè)世紀(jì)60年代的時(shí)候,生物神經(jīng)學(xué)領(lǐng)域的相關(guān)研究就表明,生物視覺信息從視網(wǎng)膜傳遞到大腦是由多個(gè)層次的感受野逐層激發(fā)完成的。到了20世紀(jì)80年代,出現(xiàn)了相應(yīng)的早期感受野的理論模型。這一階段是早期的樸素卷積網(wǎng)絡(luò)理論時(shí)期。

          到了1985年,Rumelhart和Hinton等人提出了BP神經(jīng)網(wǎng)絡(luò),也就是著名的反向傳播算法來訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。這基本奠定了神經(jīng)網(wǎng)絡(luò)的理論基礎(chǔ),如今大家在谷歌學(xué)術(shù)上可以看到,提出BP算法的這篇文章的引用次數(shù)是24914(這個(gè)數(shù)字隨時(shí)都在上升),如圖1所示。所以如果你的論文里引用到了BP算法,這個(gè)數(shù)字還得繼續(xù)往上漲。

          圖1 提出BP算法的論文
           
          有了此前的理論積累,在 BP算法提出三年之后,如今深度學(xué)習(xí)三巨頭之一的Yann LeCun發(fā)現(xiàn)可以用BP算法來訓(xùn)練一種構(gòu)造出來的多層卷積網(wǎng)絡(luò)結(jié)構(gòu),并用其訓(xùn)練出來的卷積網(wǎng)絡(luò)識(shí)別手寫數(shù)字。在1989年,LeCun正式提出了卷積神經(jīng)網(wǎng)絡(luò)的概念。因而,現(xiàn)在我們提到Y(jié)ann LeCun這個(gè)人物時(shí),除了深度學(xué)習(xí)三巨頭之外,還有個(gè)名號(hào)就是深度學(xué)習(xí)之父。圖2這四位深度學(xué)習(xí)頂級(jí)大咖中最左邊這位就是Yann Lecun。
           

          圖2 深度學(xué)習(xí)三巨頭和吳恩達(dá)
           
          至于圖中其他人,咱們也一并介紹了。除了第一位卷積神經(jīng)網(wǎng)絡(luò)之父的Yann Lecun之外,第二位就是前面提到的發(fā)明反向傳播算法之一的Geoffrey Hinton , 第三位則是在RNN和序列模型領(lǐng)域成就頗豐的Yoshua Bengio,這三位便是前面我們所說的深度學(xué)習(xí)三巨頭,是他們支撐起了深度學(xué)習(xí)的發(fā)展。第四位便是我們熟悉的吳恩達(dá)(Andrew Ng)。大家若想更多的了解以上深度學(xué)習(xí)人物的故事,可以參看吳恩達(dá)對(duì)三位大神的采訪,看他們對(duì)大家學(xué)習(xí)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是怎樣建議的。

          繼續(xù)來看CNN的發(fā)展歷程。LeCun正式提出CNN之后,經(jīng)過一些年的醞釀,在1998 年提出了CNN的開山之作——LeNet5網(wǎng)絡(luò)。提出 LeNet5 的這篇論文引用次數(shù)已達(dá)21444次,如圖3所示。

          圖3 提出LeNet5的論文
           
          進(jìn)入新世紀(jì)后,由于計(jì)算能力不足和可解釋性較差等多方面的原因,神經(jīng)網(wǎng)絡(luò)的發(fā)展經(jīng)歷了短暫的低谷,直到2012年ILSVRC ImageNet圖像識(shí)別大賽上AlexNet一舉奪魁,此后大數(shù)據(jù)逐漸興起,以CNN為代表的深度學(xué)習(xí)方法逐漸成為計(jì)算機(jī)視覺、語音識(shí)別和自然語言處理等領(lǐng)域的主流方法,CNN才真正實(shí)現(xiàn)開宗立派。
           
          卷積的含義

          從前面的學(xué)習(xí)中,我們了解了深度神經(jīng)網(wǎng)絡(luò)的一般結(jié)構(gòu)、前向傳播和反向傳播機(jī)制,而CNN相較于深度神經(jīng)網(wǎng)絡(luò),其主要區(qū)別就在于卷積層(Convolutional Layer),卷積層的存在使得神經(jīng)網(wǎng)絡(luò)具備更強(qiáng)的學(xué)習(xí)和特征提取能力。除了卷積層之外,池化層(Pooling Layer)的存在也使得CNN有著更強(qiáng)的穩(wěn)定性,最后則是DNN中常見的全連接層(Fully Connected Layer)。一個(gè)典型的CNN通常包括這三層。CNN的基本結(jié)構(gòu)如圖4所示。 

          圖4 CNN的基本結(jié)構(gòu)
           
          說了半天的CNN,想必很多人還沒弄明白:到底什么是卷積?

          從數(shù)學(xué)角度來看,卷積可以理解為一種類似于加權(quán)運(yùn)算一樣的操作。在圖像處理中,針對(duì)圖像的像素矩陣,卷積操作就是用一個(gè)卷積核來逐行逐列的掃描像素矩陣,并與像素矩陣做元素相乘,以此得到新的像素矩陣。這個(gè)過程就是卷積。其中卷積核也叫過濾器或者濾波器,濾波器在輸入像素矩陣上掃過的面積稱之為感受野。這么說可能過于概念化,我們以一個(gè)具體的例子來看卷積操作,如圖4.5所示。

           

          圖5 卷積計(jì)算示意圖

          圖5中我們用一個(gè)3*3的濾波器去掃描一個(gè)5*5的像素矩陣,用濾波器中每一個(gè)元素與像素矩陣中感受野內(nèi)的元素進(jìn)行乘積運(yùn)算,可得到了一個(gè)3*3的輸出像素矩陣,這個(gè)輸出的3*3像素矩陣能夠較大程度的提取原始像素矩陣的圖像特征,這也是卷積神經(jīng)網(wǎng)絡(luò)之所以有效的原因。我們以輸出像素矩陣中第一個(gè)元素4為例,演示一下計(jì)算過程:
          1*1 + 1*0 + 1*1 + 1*0 + 1*1 + 0*0 + 1*1 + 0*0 + 0*1 = 4

          這里你可能會(huì)問:如何確定經(jīng)過卷積后的輸出矩陣的維度?我們是有計(jì)算公式的。假設(shè)原始輸入像素矩陣的shape為n*n,濾波器的shape為f*f,那么輸出像素矩陣的shape為(n-f+1)*(n-f+1) 。例如,3*3的濾波器去掃描一個(gè)5*5的輸入圖像,按照公式計(jì)算的話輸出就是 (5-3+1)*(5-3+1)=3*3。在訓(xùn)練卷積網(wǎng)絡(luò)時(shí),我們需要初始化濾波器中的卷積參數(shù),在訓(xùn)練中不斷迭代得到最好的濾波器參數(shù)。

          大體上卷積操作就是這么個(gè)過程,看起來十分簡(jiǎn)單。這也是目前大多數(shù)深度學(xué)習(xí)教程對(duì)于卷積的闡述方式。讓我們來深究一下,究竟卷積為什么要這么設(shè)計(jì),背后有沒有什么數(shù)學(xué)和物理意義呢?追本溯源,我們先回到數(shù)學(xué)教科書中來看卷積。在泛函分析中,卷積也叫旋積或者褶積,是一種通過兩個(gè)函數(shù)x(t)和h(t)生成的數(shù)學(xué)算子。其計(jì)算公式如下:

           公式寫的很清楚了,兩個(gè)函數(shù)的卷積就是先將一個(gè)函數(shù)進(jìn)行翻轉(zhuǎn)(Reverse,然后再做一個(gè)平移Shift,這便是的含義。就是將平移后的兩個(gè)函數(shù)對(duì)應(yīng)元素相乘求和。所以卷積本質(zhì)上就是一個(gè)Reverse-Shift-Weighted Summation(翻轉(zhuǎn)平移加權(quán)求和)的操作。那么為什么要卷積?直接元素相乘不好嗎?就圖像的卷積操作而言,卷積能夠更好提取區(qū)域特征,使用不同大小的卷積算子能夠提取圖像各個(gè)尺度的特征。卷積這么設(shè)計(jì)的原因也正在于此。

          接著前面的卷積圖像處理操作,這里我們需要注意兩個(gè)問題:第一個(gè)就是濾波器移動(dòng)的步幅問題,上面的例子中我們的濾波器的移動(dòng)步長(zhǎng)為1,即在像素矩陣上一格一格平移。但如果濾波器是以兩個(gè)單位或者更多單位平移呢?這里就涉及卷積過程中的Stride問題。第二個(gè)問題涉及卷積操作的兩個(gè)缺點(diǎn) ,第一個(gè)缺點(diǎn)在于每次做卷積,你的圖像就會(huì)變小,可能做了幾次卷積之后,你的圖像就變成1*1,這就不好辦了。第二個(gè)缺點(diǎn)在于原始輸入像素矩陣的邊緣和角落的像素點(diǎn)只能被濾波器掃到一次,而靠近像素中心點(diǎn)的像素點(diǎn)則會(huì)被多次掃到進(jìn)行卷積。這就使得邊緣和角落里的像素特征提取不足,這就涉及卷積過程中的 Padding問題。

          針對(duì)第一個(gè)問題,也就是卷積步長(zhǎng)問題,其實(shí)也很簡(jiǎn)單,就是按照正常的卷積過程去操作,只不過每次要多走一個(gè)像素單位。且看卷積步幅為2的卷積操作示例,如圖6所示。 

          圖6 步長(zhǎng)等于2的卷積計(jì)算示例
           
          我們用一個(gè)3*3的濾波器去對(duì)原始像素為7*7的圖像進(jìn)行卷積操作,設(shè)定卷積步長(zhǎng)為 2,可看到輸出像素矩陣的第二行第一個(gè)元素69的計(jì)算跨越了兩個(gè)像素格點(diǎn),計(jì)算過程為:
          3*3 + 4*4 + 8*4 + 7*1 + 8*0 + 3*2 + 4*-1 + 2*0 + 1*3 = 69

          加入步長(zhǎng)之后我們的輸出像素矩陣的shape的計(jì)算公式需要更新為:,其中為步長(zhǎng)。

          針對(duì)第二個(gè)問題,卷積神經(jīng)網(wǎng)絡(luò)采用一種叫作Padding的操作,即對(duì)原始像素邊緣和角落進(jìn)行零填充,以期能夠在卷積過程中充分利用邊緣和角落的像素特征。至于填充多少 0 像素值,一般有兩個(gè)選擇,一是Valid填充,也就是不填充,所以就不用管它了。我們?cè)谝獾氖怯刑畛?,就是第二種,Same填充方法,即填充后,輸入和輸出大小是一致的,對(duì)于n*n大小的輸入像素,如果你用填充了p個(gè)像素點(diǎn)之后,就變成了n+2p,最后輸出像素的shape 計(jì)算公式就變成了((n+2p-f)/s)+1,要想讓的((n+2p-f)/s)+1=n話,輸入輸出大小相等,則p=(f-1)/2。所以,正常情況下濾波器f的大小都會(huì)選擇為奇數(shù)個(gè)。

          以上便是CNN中卷積的基本過程描述。一個(gè)完整的卷積神經(jīng)網(wǎng)絡(luò)除了最重要的卷積層之外,還有池化層和全連接層。
           
          池化和全連接

          通常在設(shè)計(jì)卷積網(wǎng)絡(luò)結(jié)構(gòu)時(shí),卷積層后會(huì)跟著一個(gè)池化層。池化(Pooling)的操作類似于卷積,只是將濾波器與感受野之間的元素相乘改成了對(duì)感受野直接進(jìn)行最大采樣。簡(jiǎn)單來說,池化層是用來縮減模型大小,提高模型計(jì)算速度以及提高所提取特征的魯棒性。池化操作通常有兩種,一種是常用的最大池化(Max Pooling),另一種是不常用的平均池化(Average Pooling)。池化操作過程也非常簡(jiǎn)單,假設(shè)池化層的輸入為一個(gè)4*4的圖像,我們用最大池化對(duì)其進(jìn)行池化,執(zhí)行最大池化的樹池是一個(gè)2*2的矩陣,執(zhí)行過程就是將輸入矩陣拆分為不同區(qū)域,對(duì)于2*2 的輸出而言,輸出的每個(gè)元素都是其對(duì)應(yīng)區(qū)域的最大元素值。最大池化如圖7所示。 

          圖7 最大池化
           
          最大池化過程就像是應(yīng)用了一個(gè)2*2的濾波器以步幅2進(jìn)行區(qū)域最大化輸出操作。我們可以這么理解:池化的參數(shù)就是濾波器的大小和步幅,池化的效果就相當(dāng)于對(duì)輸入圖像的高度和寬度進(jìn)行縮小。值得注意的是,最大池化只是計(jì)算神經(jīng)網(wǎng)絡(luò)某一層的靜態(tài)屬性,中間并沒有什么學(xué)習(xí)過程。

          池化完成之后就是標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)中的全連接層了。全連接層我們?cè)诒緯叭v深度神經(jīng)網(wǎng)絡(luò)中有詳細(xì)描述,在此就不再贅述??傊?,一個(gè)典型的卷積層通常包括卷積層-池化層和全連接層。例如,Yann LeCun在1998年提出的LeNet5網(wǎng)絡(luò)結(jié)構(gòu)就是最初的卷積網(wǎng)絡(luò)結(jié)構(gòu)。LeNet5網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。
           

          圖8 LeNet5網(wǎng)絡(luò)結(jié)構(gòu)
           
          CNN發(fā)展到如今,人們?cè)缫巡粷M足常規(guī)的卷積方式設(shè)計(jì),除此之外,針對(duì)3維圖像的3D卷積、在圖像分割中應(yīng)用廣泛的轉(zhuǎn)置卷積、GoogLeNet中常用的1*1卷積、基于1*1卷積的深度可分離卷積、為擴(kuò)大感受野而設(shè)計(jì)的空洞卷積等各種花式卷積方式不斷地出現(xiàn)在各種CNN結(jié)構(gòu)設(shè)計(jì)中,感興趣的讀者可以逐一深入了解。

          本講在介紹卷積神經(jīng)網(wǎng)絡(luò)發(fā)展歷程的基礎(chǔ)上,對(duì)卷積的基本過程進(jìn)行了詳細(xì)的描述,之后又介紹了池化和全連接卷積神經(jīng)網(wǎng)絡(luò)的另外兩大組成部分。一個(gè)典型的卷積網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)通常包括卷積層、池化層和全連接層三個(gè)部分。在下一講中,我們將和大家繼續(xù)深入討論卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)、訓(xùn)練等更加深入的內(nèi)容。

          好消息,小白學(xué)視覺團(tuán)隊(duì)的知識(shí)星球開通啦,為了感謝大家的支持與厚愛,團(tuán)隊(duì)決定將價(jià)值149元的知識(shí)星球現(xiàn)時(shí)免費(fèi)加入。各位小伙伴們要抓住機(jī)會(huì)哦!


          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車道線檢測(cè)、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久国产乱子伦精品 | 国产成人亚洲一区二区三区 | 成人鸡巴视频 | 性交动态图黄色视频在线观看 | 色黄视频在线观看 |