本教程的知識點為:深度學(xué)習(xí)介紹 1.1 深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的區(qū)別 TensorFlow介紹 2.4 張量 2.4.1 張量(Tensor) 2.4.1.1 張量的類型 TensorFlow介紹 1.2 神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 1.2.1 Logistic回歸 1.2.1.1 Logistic回歸 TensorFlow介紹 總結(jié) 每日作業(yè) 神經(jīng)網(wǎng)絡(luò)與tf.keras 1.3 神經(jīng)網(wǎng)絡(luò)基礎(chǔ) 神經(jīng)網(wǎng)絡(luò)與tf.keras 1.3 Tensorflow實現(xiàn)神經(jīng)網(wǎng)絡(luò) 1.3.1 TensorFlow keras介紹 1.3.2 案例:實現(xiàn)多層神經(jīng)網(wǎng)絡(luò)進(jìn)行時裝分類 神經(jīng)網(wǎng)絡(luò)與tf.keras 1.4 深層神經(jīng)網(wǎng)絡(luò) 為什么使用深層網(wǎng)絡(luò) 1.4.1 深層神經(jīng)網(wǎng)絡(luò)表示 卷積神經(jīng)網(wǎng)絡(luò) 3.1 卷積神經(jīng)網(wǎng)絡(luò)(CNN)原理 為什么需要卷積神經(jīng)網(wǎng)絡(luò) 原因之一:圖像特征數(shù)量對神經(jīng)網(wǎng)絡(luò)效果壓力 卷積神經(jīng)網(wǎng)絡(luò) 3.1 卷積神經(jīng)網(wǎng)絡(luò)(CNN)原理 為什么需要卷積神經(jīng)網(wǎng)絡(luò) 原因之一:圖像特征數(shù)量對神經(jīng)網(wǎng)絡(luò)效果壓力 卷積神經(jīng)網(wǎng)絡(luò) 2.2案例:CIFAR100類別分類 2.2.1 CIFAR100數(shù)據(jù)集介紹 2.2.2 API 使用 卷積神經(jīng)網(wǎng)絡(luò) 2.4 BN與神經(jīng)網(wǎng)絡(luò)調(diào)優(yōu) 2.4.1 神經(jīng)網(wǎng)絡(luò)調(diào)優(yōu) 2.4.1.1 調(diào)參技巧 卷積神經(jīng)網(wǎng)絡(luò) 2.4 經(jīng)典分類網(wǎng)絡(luò)結(jié)構(gòu) 2.4.1 LeNet-5解析 2.4.1.1 網(wǎng)絡(luò)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò) 2.5 CNN網(wǎng)絡(luò)實戰(zhàn)技巧 2.5.1 遷移學(xué)習(xí)(Transfer Learning) 2.5.1.1 介紹 卷積神經(jīng)網(wǎng)絡(luò) 總結(jié) 每日作業(yè) 商品物體檢測項目介紹 1.1 項目演示 商品物體檢測項目介紹 3.4 Fast R-CNN 3.4.1 Fast R-CNN 3.4.1.1 RoI pooling YOLO與SSD 4.3 案例:SSD進(jìn)行物體檢測 4.3.1 案例效果 4.3.2 案例需求 商品檢測數(shù)據(jù)集訓(xùn)練 5.2 標(biāo)注數(shù)據(jù)讀取與存儲 5.2.1 案例:xml讀取本地文件存儲到pkl 5.2.1.1 解析結(jié)構(gòu)
完整筆記資料代碼:https://gitee.com/yinuo112/AI/tree/master/深度學(xué)習(xí)/嘿馬深度學(xué)習(xí)筆記/note.md
感興趣的小伙伴可以自取哦~
全套教程部分目錄:
部分文件圖片:
卷積神經(jīng)網(wǎng)絡(luò)
3.1 卷積神經(jīng)網(wǎng)絡(luò)(CNN)原理
學(xué)習(xí)目標(biāo)
-
目標(biāo)
- 了解卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)成
- 記憶卷積的原理以及計算過程
- 了解池化的作用以及計算過程
-
應(yīng)用
- 無
為什么需要卷積神經(jīng)網(wǎng)絡(luò)
在計算機(jī)視覺領(lǐng)域菲盾,通常要做的就是指用機(jī)器程序替代人眼對目標(biāo)圖像進(jìn)行識別等借尿。那么神經(jīng)網(wǎng)絡(luò)也好還是卷積神經(jīng)網(wǎng)絡(luò)其實都是上個世紀(jì)就有的算法涩惑,只是近些年來電腦的計算能力已非當(dāng)年的那種計算水平竹祷,同時現(xiàn)在的訓(xùn)練數(shù)據(jù)很多,于是神經(jīng)網(wǎng)絡(luò)的相關(guān)算法又重新流行起來宪郊,因此卷積神經(jīng)網(wǎng)絡(luò)也一樣流行双炕。
- 1974年袖肥,Paul Werbos提出了誤差反向傳導(dǎo)來訓(xùn)練人工神經(jīng)網(wǎng)絡(luò),使得訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)成為可能棋电。
- 1979年茎截,Kunihiko Fukushima(福島邦彥)苇侵,提出了Neocognitron, 卷積企锌、池化的概念基本形成榆浓。
- 1986年,Geoffrey Hinton與人合著了一篇論文:Learning representations by back-propagation errors霎俩。
- 1989年哀军,Yann LeCun提出了一種用反向傳導(dǎo)進(jìn)行更新的卷積神經(jīng)網(wǎng)絡(luò),稱為LeNet打却。
- 1998年杉适,Yann LeCun改進(jìn)了原來的卷積網(wǎng)絡(luò),LeNet-5柳击。
原因之一:圖像特征數(shù)量對神經(jīng)網(wǎng)絡(luò)效果壓力
假設(shè)下圖是一圖片大小為28 * 28 的黑白圖片時候猿推,每一個像素點只有一個值(單通道)。那么總的數(shù)值個數(shù)為 784個特征捌肴。
那現(xiàn)在這張圖片是彩色的蹬叭,那么彩色圖片由RGB三通道組成,也就意味著總的數(shù)值有28 28 3 = 2352個值状知。
從上面我們得到一張圖片的輸入是2352個特征值秽五,即神經(jīng)網(wǎng)路當(dāng)中與若干個神經(jīng)元連接,假設(shè)第一個隱層是10個神經(jīng)元饥悴,那么也就是23520個權(quán)重參數(shù)坦喘。
如果圖片再大一些呢,假設(shè)圖片為1000 1000 3西设,那么總共有3百萬數(shù)值瓣铣,同樣接入10個神經(jīng)元,那么就是3千萬個權(quán)重參數(shù)贷揽。這樣的參數(shù)大小棠笑,神經(jīng)網(wǎng)絡(luò)參數(shù)更新需要大量的計算不說,也很難達(dá)到更好的效果禽绪,大家就不傾向于使用多層神經(jīng)網(wǎng)絡(luò)了蓖救。
所以就有了卷積神經(jīng)網(wǎng)絡(luò)的流行,那么卷積神經(jīng)網(wǎng)絡(luò)為什么大家會選擇它丐一。那么先來介紹感受野以及邊緣檢測的概念藻糖。
注:另有卷積網(wǎng)絡(luò)感受野的概念,也是為什么使用卷積的原因
3.1.1 卷積神經(jīng)網(wǎng)絡(luò)的組成
-
定義
- 卷積神經(jīng)網(wǎng)絡(luò)由一個或多個卷積層库车、池化層以及全連接層等組成巨柒。與其他深度學(xué)習(xí)結(jié)構(gòu)相比,卷積神經(jīng)網(wǎng)絡(luò)在圖像等方面能夠給出更好的結(jié)果。這一模型也可以使用反向傳播算法進(jìn)行訓(xùn)練洋满。相比較其他淺層或深度神經(jīng)網(wǎng)絡(luò)晶乔,卷積神經(jīng)網(wǎng)絡(luò)需要考量的參數(shù)更少,使之成為一種頗具吸引力的深度學(xué)習(xí)結(jié)構(gòu)牺勾。
我們來看一下卷積網(wǎng)絡(luò)的整體結(jié)構(gòu)什么樣子正罢。
其中包含了幾個主要結(jié)構(gòu)
- 卷積層(Convolutions)
- 池化層(Subsampling)
- 全連接層(Full connection)
- 激活函數(shù)
3.1.2 卷積層
-
目的
- 卷積運算的目的是提取輸入的不同特征,某些卷積層可能只能提取一些低級的特征如邊緣驻民、線條和角等層級翻具,更多層的網(wǎng)路能從低級特征中迭代提取更復(fù)雜的特征。
-
參數(shù):
- size:卷積核/過濾器大小回还,選擇有1 1裆泳, 3 3, 5 * 5(為什么是奇數(shù)個)
- padding:零填充柠硕,Valid 與Same
- stride:步長工禾,通常默認(rèn)為1
計算公式
3.1.2.1 卷積運算過程
對于之前介紹的卷積運算過程,我們用一張動圖來表示更好理解些蝗柔。一下計算中闻葵,假設(shè)圖片長寬相等,設(shè)為N
- 一個步長癣丧,3 X 3 卷積核運算
假設(shè)是一張5 X 5 的單通道圖片槽畔,通過使用3 X 3 大小的卷積核運算得到一個 3 X 3大小的運算結(jié)果(圖片像素數(shù)值僅供參考)
我們會發(fā)現(xiàn)進(jìn)行卷積之后的圖片變小了,假設(shè)N為圖片大小胁编,F(xiàn)為卷積核大小
相當(dāng)于<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>N</mi><mo>?</mo><mi>F</mi><mo>+</mo><mn>1</mn><mo>=</mo><mn>5</mn><mo>?</mo><mn>3</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">N - F + 1 = 5 - 3 + 1 = 3</annotation></semantics></math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.68333em;"></span><span class="strut bottom" style="height:0.76666em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathit" style="margin-right:0.10903em;">N</span><span class="mbin">?</span><span class="mord mathit" style="margin-right:0.13889em;">F</span><span class="mbin">+</span><span class="mord mathrm">1</span><span class="mrel">=</span><span class="mord mathrm">5</span><span class="mbin">?</span><span class="mord mathrm">3</span><span class="mbin">+</span><span class="mord mathrm">1</span><span class="mrel">=</span><span class="mord mathrm">3</span></span></span></span>
如果我們換一個卷積核大小或者加入很多層卷積之后竟痰,圖像可能最后就變成了1 X 1 大小,這不是我們希望看到的結(jié)果掏呼。并且對于原始圖片當(dāng)中的邊緣像素來說,只計算了一遍铅檩,二對于中間的像素會有很多次過濾器與之計算憎夷,這樣導(dǎo)致對邊緣信息的丟失。
-
缺點
- 圖像變小
- 邊緣信息丟失
3.1.3 padding-零填充
零填充:在圖片像素的最外層加上若干層0值昧旨,若一層拾给,記做p =1。
- 為什么增加的是0兔沃?
因為0在權(quán)重乘積和運算中對最終結(jié)果不造成影響蒋得,也就避免了圖片增加了額外的干擾信息。
這張圖中乒疏,還是移動一個像素额衙,并且外面增加了一層0。那么最終計算結(jié)果我們可以這樣用公式來計算:
<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>5</mn><mo>+</mo><mn>2</mn><mo>?</mo><mi>p</mi><mo>?</mo><mn>3</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>5</mn></mrow><annotation encoding="application/x-tex">5 + 2 * p - 3 + 1 = 5</annotation></semantics></math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.8388800000000001em;vertical-align:-0.19444em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">5</span><span class="mbin">+</span><span class="mord mathrm">2</span><span class="mbin">?</span><span class="mord mathit">p</span><span class="mbin">?</span><span class="mord mathrm">3</span><span class="mbin">+</span><span class="mord mathrm">1</span><span class="mrel">=</span><span class="mord mathrm">5</span></span></span></span>
P為1,那么最終特征結(jié)果為5窍侧。實際上我們可以填充更多的像素县踢,假設(shè)為2層,則
<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>5</mn><mo>+</mo><mn>2</mn><mo>?</mo><mn>2</mn><mo>?</mo><mn>3</mn><mo>+</mo><mn>1</mn><mo>=</mo><mn>7</mn></mrow><annotation encoding="application/x-tex">5 + 2 * 2 - 3 + 1 = 7</annotation></semantics></math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.64444em;"></span><span class="strut bottom" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="base textstyle uncramped"><span class="mord mathrm">5</span><span class="mbin">+</span><span class="mord mathrm">2</span><span class="mbin">?</span><span class="mord mathrm">2</span><span class="mbin">?</span><span class="mord mathrm">3</span><span class="mbin">+</span><span class="mord mathrm">1</span><span class="mrel">=</span><span class="mord mathrm">7</span></span></span></span>伟件,這樣得到的觀察特征大小比之前圖片大小還大硼啤。所以我們對于零填充會有一些選擇,該填充多少斧账?
3.1.3.1 Valid and Same卷積
有兩種兩種形式谴返,所以為了避免上述情況,大家選擇都是Same這種填充卷積計算方式
-
Valid :不填充咧织,也就是最終大小為
- <span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo>(</mo><mi>N</mi><mo>?</mo><mi>F</mi><mo>+</mo><mn>1</mn><mo>)</mo><mo>?</mo><mo>(</mo><mi>N</mi><mo>?</mo><mi>F</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><annotation encoding="application/x-tex">(N - F + 1) * (N - F + 1)</annotation></semantics></math></span><span aria-hidden="true" class="katex-html"><span class="strut" style="height:0.75em;"></span><span class="strut bottom" style="height:1em;vertical-align:-0.25em;"></span><span class="base textstyle uncramped"><span class="mopen">(</span><span class="mord mathit" style="margin-right:0.10903em;">N</span><span class="mbin">?</span><span class="mord mathit" style="margin-right:0.13889em;">F</span><span class="mbin">+</span><span class="mord mathrm">1</span><span class="mclose">)</span><span class="mbin">?</span><span class="mopen">(</span><span class="mord mathit" style="margin-right:0.10903em;">N</span><span class="mbin">?</span><span class="mord mathit" style="ma