李宏毅机器学习课程10~~~卷积神经网络
卷積的意義
數(shù)字圖像是一個(gè)二維的離散信號(hào),對(duì)數(shù)字圖像做卷積操作其實(shí)就是利用卷積核(卷積模板)在圖像上滑動(dòng),將圖像點(diǎn)上的像素灰度值與對(duì)應(yīng)的卷積核上的數(shù)值相乘,然后將所有相乘后的值相加作為卷積核中間像素對(duì)應(yīng)的圖像上像素的灰度值,并最終滑動(dòng)完所有圖像的過(guò)程。
這張圖可以清晰的表征出整個(gè)卷積過(guò)程中一次相乘后相加的結(jié)果:該圖片選用3*3的卷積核,卷積核內(nèi)共有九個(gè)數(shù)值,所以圖片右上角公式中一共有九行,而每一行都是圖像像素值與卷積核上數(shù)值相乘,最終結(jié)果-8代替了原圖像中對(duì)應(yīng)位置處的1。這樣沿著圖片一步長(zhǎng)為1滑動(dòng),每一個(gè)滑動(dòng)后都一次相乘再相加的工作,我們就可以得到最終的輸出結(jié)果。除此之外,卷積核的選擇有一些規(guī)則:
1)卷積核的大小一般是奇數(shù),這樣的話(huà)它是按照中間的像素點(diǎn)中心對(duì)稱(chēng)的,所以卷積核一般都是3x3,5x5或者7x7。有中心了,也有了半徑的稱(chēng)呼,例如5x5大小的核的半徑就是2。 2)卷積核所有的元素之和一般要等于1,這是為了原始圖像的能量(亮度)守恒。其實(shí)也有卷積核元素相加不為1的情況,下面就會(huì)說(shuō)到。3)如果濾波器矩陣所有元素之和大于1,那么濾波后的圖像就會(huì)比原圖像更亮,反之,如果小于1,那么得到的圖像就會(huì)變暗。如果和為0,圖像不會(huì)變黑,但也會(huì)非常暗。4)對(duì)于濾波后的結(jié)構(gòu),可能會(huì)出現(xiàn)負(fù)數(shù)或者大于255的數(shù)值。對(duì)這種情況,我們將他們直接截?cái)嗟?和255之間即可。對(duì)于負(fù)數(shù),也可以取絕對(duì)值。卷積操作有兩個(gè)問(wèn)題:
1. 圖像越來(lái)越小;
2. 圖像邊界信息丟失,即有些圖像角落和邊界的信息發(fā)揮作用較少。因此需要padding。
卷積核大小通常為奇數(shù),
一方面是為了方便same卷積padding對(duì)稱(chēng)填充,左右兩邊對(duì)稱(chēng)補(bǔ)零;
n+2p-f+1=n
p=(f-1)/2
另一方面,奇數(shù)過(guò)濾器有中心像素,便于確定過(guò)濾器的位置。
更多細(xì)節(jié)見(jiàn)
理解圖像卷積操作的意義
padding
更多細(xì)節(jié)可見(jiàn)卷積步長(zhǎng)
不同卷積核下卷積意義
我們經(jīng)常能看到的,平滑,模糊,去燥,銳化,邊緣提取等等工作,其實(shí)都可以通過(guò)卷積操作來(lái)完成,下面我們一一舉例說(shuō)明一下:
(1)一個(gè)沒(méi)有任何作用的卷積核:
將原像素中間像素值乘1,其余全部乘0,顯然像素值不會(huì)發(fā)生任何變化。
(2)平滑均值濾波:
選擇卷積核:
該卷積核的作用在于取九個(gè)值的平均值代替中間像素值,所以起到的平滑的效果:
(3)高斯平滑:
卷積核:
高斯平滑水平和垂直方向呈現(xiàn)高斯分布,更突出了中心點(diǎn)在像素平滑后的權(quán)重,相比于均值濾波而言,有著更好的平滑效果。
(4)圖像銳化:
卷積核:
該卷積利用的其實(shí)是圖像中的邊緣信息有著比周?chē)袼馗叩膶?duì)比度,而經(jīng)過(guò)卷積之后進(jìn)一步增強(qiáng)了這種對(duì)比度,從而使圖像顯得棱角分明、畫(huà)面清晰,起到銳化圖像的效果。
除了上述卷積核,邊緣銳化還可以選擇:
(5)梯度Prewitt:
水平梯度:
垂直梯度:
梯度Prewitt卷積核與Soble卷積核的選定是類(lèi)似的,都是對(duì)水平邊緣或垂直邊緣有比較好的檢測(cè)效果。
(6)Soble邊緣檢測(cè):
Soble與上述卷積核不同之處在于,Soble更強(qiáng)調(diào)了和邊緣相鄰的像素點(diǎn)對(duì)邊緣的影響。
水平梯度:
垂直梯度:
以上的水平邊緣與垂直邊緣檢測(cè)問(wèn)題可以參考:Soble算子水平和垂直方向?qū)?shù)問(wèn)題
(7)梯度Laplacian:
卷積核:
Laplacian也是一種銳化方法,同時(shí)也可以做邊緣檢測(cè),而且邊緣檢測(cè)的應(yīng)用中并不局限于水平方向或垂直方向,這是Laplacian與soble的區(qū)別。下面這張圖可以很好的表征出二者的區(qū)別:來(lái)源于OpenCV官方文檔
代碼實(shí)現(xiàn)
可以利用OpenCV提供的filter2D函數(shù)完成對(duì)圖像進(jìn)行卷積操作,其函數(shù)接口為:
CV_EXPORTS_W void filter2D( InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor=Point(-1,-1), double delta=0, int borderType=BORDER_DEFAULT );第一個(gè)參數(shù): 輸入圖像
第二個(gè)參數(shù): 輸出圖像,和輸入圖像具有相同的尺寸和通道數(shù)量
第三個(gè)參數(shù): 目標(biāo)圖像深度,輸入值為-1時(shí),目標(biāo)圖像和原圖像深度保持一致。
第四個(gè)參數(shù): 卷積核,是一個(gè)矩陣
第五個(gè)參數(shù):內(nèi)核的基準(zhǔn)點(diǎn)(anchor),其默認(rèn)值為(-1,-1)說(shuō)明位于kernel的中心位置。基準(zhǔn)點(diǎn)即kernel中與進(jìn)行處理的像素點(diǎn)重合的點(diǎn)。
第五個(gè)參數(shù): 在儲(chǔ)存目標(biāo)圖像前可選的添加到像素的值,默認(rèn)值為0
第六個(gè)參數(shù): 像素向外逼近的方法,默認(rèn)值是BORDER_DEFAULT。
所以代碼的實(shí)現(xiàn)就非常簡(jiǎn)單了,不同的卷積操作只需要改變卷積核kernel 即可。
更多細(xì)節(jié)見(jiàn)
理解圖像卷積操作的意義
TensorFlow基本操作 實(shí)現(xiàn)卷積和池化
A Beginner’s Guide To Understanding Convolutional Neural Networks
卷積的可視化圖
A guide to convolution arithmetic for deep learning
A guide to convolution arithmetic for deep learning-github
原來(lái),動(dòng)物的眼睛看世界都是自帶濾鏡的!
看問(wèn)題的角度不一樣,導(dǎo)致圖像識(shí)別的任務(wù)就不一樣。
Why CNN for Image-motivation
CNN的動(dòng)機(jī)就是減少參數(shù)。CNN相當(dāng)于Fully Connected Network簡(jiǎn)化版本. CNN的Function set 的Space 比較小,而Fully Connected Network的Function set 的Space 比較大。
pattern 往往小于圖片,因此neuron沒(méi)有必要discover整副圖片
同樣的pattern可能出現(xiàn)到圖片中不同的位置
下采樣不會(huì)影響圖片辨識(shí)的結(jié)果
Convolution考慮Property1 和Property2,Pooling考慮的是Property3.
convolution卷積 也稱(chēng)為核,濾波器,Feature Detection.
卷積層兩個(gè)主要優(yōu)勢(shì):共享參數(shù)和稀疏連接。
共享參數(shù)
稀疏連接
卷積神經(jīng)網(wǎng)絡(luò)有一定的平移不變性屬性
例如平移圖像中的貓,依然可以檢測(cè)到平移后的貓,這是因?yàn)榫植窟B接,貓的特征在同一副圖的任何位置都可被檢測(cè)出來(lái),只要這個(gè)濾波器檢測(cè)到貓的特征,那么不論貓?jiān)趫D像中的任何位置都是可以被檢測(cè)出來(lái)的。
CNN具有一定的平移、旋轉(zhuǎn)和縮放不變性
CNN 的平移不變性的一個(gè)重要來(lái)源就是池化(Pooling)操作。
池化可以提供一定的平移、旋轉(zhuǎn)不變性。maxpool能保證在在一定范圍內(nèi)平移特征能得到同樣的激勵(lì),也就是說(shuō)最大池化操作會(huì)提取出相同的值而不管你是否有一定程度內(nèi)的平移或旋轉(zhuǎn)。CNN具有一定的旋轉(zhuǎn)縮放不變性,見(jiàn)How is a convolutional neural network able to learn invariant features?但是這個(gè)旋轉(zhuǎn)不變性是有一定的角度控制的,當(dāng)然起作用的是maxpooling 層,當(dāng)我們正面拍一些照片的時(shí)候,也許我們學(xué)習(xí)得到的一些地方的activation會(huì)比較大,當(dāng)我們略微的轉(zhuǎn)過(guò)一點(diǎn)角度之后,由于maxpooling的存在,會(huì)使得我們的maxpooling依然在那個(gè)地方取到最大值,所以有一定的旋轉(zhuǎn)不變性。但是,對(duì)于角度很大的來(lái)說(shuō),maxpooling可能也會(huì)失效,所以需要一定的data augmentation,或者你也可以提高maxpooling的窗口,來(lái)提高一定的旋轉(zhuǎn)不變性。。所以說(shuō)maxpooling的窗口越大可以旋轉(zhuǎn)保持抽取特征不變性的角度就越大。現(xiàn)在很多人解決這種問(wèn)題的方法都是用data augmentation。
data augmentation:人工增加訓(xùn)練集的大小. 通過(guò)平移, 翻轉(zhuǎn), 加噪聲等方法從已有數(shù)據(jù)中創(chuàng)造出一批”新”的數(shù)據(jù)
權(quán)值共享還賦予了卷積網(wǎng)絡(luò)對(duì)平移的容忍性,而池化層降采樣則進(jìn)一步降低了輸出參數(shù)量,同時(shí)賦予模型對(duì)輕度變形的容忍性,提高了模型的泛化能力。
為何使用卷積?
pool層的組合方式
各種好基本網(wǎng)絡(luò)結(jié)構(gòu)組合的方式
http://speech.ee.ntu.edu.tw/~tlkagk/courses/MLDS_2017/Lecture/Basic%20Structure%20(v8).pdf
權(quán)值共享這個(gè)詞說(shuō)全了就是整張圖片在使用同一個(gè)卷積核內(nèi)的參數(shù),比如一個(gè)3*3*1的卷積核,這個(gè)卷積核內(nèi)9個(gè)的參數(shù)被整張圖共享,而不會(huì)因?yàn)閳D像內(nèi)位置的不同而改變卷積核內(nèi)的權(quán)系數(shù)。說(shuō)的再直白一些,就是用一個(gè)卷積核不改變其內(nèi)權(quán)系數(shù)的情況下卷積處理整張圖片。
!LeNet首次把卷積的思想加入到神經(jīng)網(wǎng)絡(luò)模型中,這是一項(xiàng)開(kāi)創(chuàng)性的工作,而在此之前,神經(jīng)網(wǎng)絡(luò)輸入的都是提取到的特征而已,就比如想要做一個(gè)房?jī)r(jià)預(yù)測(cè),我們選取了房屋面積,臥室個(gè)數(shù)等等數(shù)據(jù)作為特征。而將卷積核引入到了神經(jīng)網(wǎng)絡(luò)去處理圖片后,自然而然就會(huì)出現(xiàn)一個(gè)問(wèn)題,神經(jīng)網(wǎng)絡(luò)的輸入是什么?如果還是一個(gè)個(gè)像素點(diǎn)上的像素值的話(huà),那就意味著每一個(gè)像素值都會(huì)對(duì)應(yīng)一個(gè)權(quán)系數(shù),這樣就帶來(lái)了兩個(gè)問(wèn)題:
1.每一層都會(huì)有大量的參數(shù)
2.將像素值作為輸入特征本質(zhì)上和傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)沒(méi)有區(qū)別,并沒(méi)有利用到圖像空間上的局部相關(guān)性。
而權(quán)值共享的卷積操作有效解決了這個(gè)問(wèn)題,無(wú)論圖像的尺寸是多大,都可以選擇固定尺寸的卷積核,LeNet中最大的卷積核只有5*5*1,而在AlexNet中最大的卷積核也不過(guò)是11*11*3。而卷積操作保證了每一個(gè)像素都有一個(gè)權(quán)系數(shù),只是這些系數(shù)是被整個(gè)圖片共享的,著大大減少了卷積核中的參數(shù)量。此外卷積操作利用了圖片空間上的局部相關(guān)性,這也就是CNN與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)或機(jī)器學(xué)習(xí)的一個(gè)最大的不同點(diǎn),特征的自動(dòng)提取。
這也就是為什么卷積層往往會(huì)有多個(gè)卷積核(甚至幾十個(gè),上百個(gè)),因?yàn)闄?quán)值共享后意味著每一個(gè)卷積核只能提取到一種特征,為了增加CNN的表達(dá)能力,當(dāng)然需要多個(gè)核,不幸的是,它是一個(gè)Hyper-Parameter。
更多細(xì)節(jié)見(jiàn)
如何理解卷積神經(jīng)網(wǎng)絡(luò)中的權(quán)值共享
卷積層在CNN中扮演著很重要的角色——特征的抽象和提取。
在CNN中,卷積核的尺寸是人為指定的,但是卷積核內(nèi)的數(shù)全部都是需要不斷學(xué)習(xí)得到的。比如一個(gè)卷積核的尺寸為3*3*3,分別是寬,高和厚度,那么這一個(gè)卷積核中的參數(shù)有27個(gè)。
在這里需要說(shuō)明一點(diǎn):
卷積核的厚度=被卷積的圖像的通道數(shù)
卷積核的個(gè)數(shù)=卷積操作后輸出的通道數(shù)
池化操作(Pooling)用于卷積操作之后,其作用在于特征融合和降維,其實(shí)也是一種類(lèi)似卷積的操作,只是池化層的所有參數(shù)都是超參數(shù),都是不用學(xué)習(xí)得到的。
上面這張圖解釋了最大池化(Max Pooling)的操作過(guò)程,核的尺寸為2*2,步長(zhǎng)為2,最大池化的過(guò)程是將2*2尺寸內(nèi)的所有像素值取最大值,作為輸出通道的像素值。
除了最大池化外,還有平均池化(Average Pooling),也就是將取最大改為取平均。
一個(gè)輸入為224*224*64的圖像,經(jīng)過(guò)最大池化后的尺寸變?yōu)?12*112*64,可以看到池化操作的降維改變的是圖像的寬高,而不改變通道數(shù)。
設(shè)計(jì)CNN
3X3意味著用3X3可以catch 到這個(gè)pattern---Property 1
Pattern Size <= 3X3
3X3 filter的設(shè)計(jì)使得pattern響應(yīng)最大的設(shè)計(jì)為好。—-Property 2
同樣的pattern,filter都會(huì)使得其響應(yīng)最大,所以在不同位置pattern 都可以使用同樣的filter.
最大池化,平均池化,隨機(jī)池化。可以同時(shí)做最大池化和平均池化。
1) mean-pooling,即對(duì)鄰域內(nèi)特征點(diǎn)只求平均,對(duì)背景保留更好;
2) max-pooling,即對(duì)鄰域內(nèi)特征點(diǎn)取最大,對(duì)紋理提取更好;
3) Stochastic-pooling,介于兩者之間,通過(guò)對(duì)像素點(diǎn)按照數(shù)值大小賦予概率,再按照概率進(jìn)行亞采樣;
4) 重疊池化(Overlapping Pooling)
重疊池化的相鄰池化窗口之間會(huì)有重疊區(qū)域。該部分詳見(jiàn) Krizhevsky, I. Sutskever, andG. Hinton, “Imagenet classification with deep convolutional neural networks”
5) 空間金字塔池化(Spatial Pyramid Pooling)
空間金字塔池化拓展了卷積神經(jīng)網(wǎng)絡(luò)的實(shí)用性,使它能夠以任意尺寸的圖片作為輸入。該部分詳見(jiàn)Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,這篇paper主要的創(chuàng)新點(diǎn)在于提出了空間金字塔池化。paper主頁(yè):http://research.microsoft.com/en-us/um/people/kahe/eccv14sppnet/index.html 這個(gè)算法比R-CNN算法的速度快了n多倍。
理解見(jiàn)# 深度學(xué)習(xí)(十九)基于空間金字塔池化的卷積神經(jīng)網(wǎng)絡(luò)物體檢測(cè)
6) ROIs Pooling
ROI pooling layer實(shí)際上是SPP-NET的一個(gè)精簡(jiǎn)版,SPP-NET對(duì)每個(gè)proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采樣到一個(gè)7x7的特征圖.對(duì)于VGG16網(wǎng)絡(luò)conv5_3有512個(gè)特征圖,這樣所有region proposal對(duì)應(yīng)了一個(gè)7*7*512維度的特征向量作為全連接層的輸入.
pooling是一種信息匯集,信息粗粒度化
SUM Pooling, AVE Pooling, MAX Pooling,MOP Pooling, CROW Pooling , RMAC Pooling
SUM pooling基于SUM pooling的中層特征表示方法,指的是針對(duì)中間層的任意一個(gè)channel(比如VGGNet16, pool5有512個(gè)channel),將該channel的feature map的所有像素值求和,這樣每一個(gè)channel得到一個(gè)實(shí)數(shù)值,N個(gè)channel最終會(huì)得到一個(gè)長(zhǎng)度為N的向量,該向量即為SUM pooling的結(jié)果。
作者:小白菜
鏈接:https://www.zhihu.com/question/41948919/answer/196459630
Max pooling的主要功能是downsamping,卻不會(huì)損壞識(shí)別結(jié)果。 這意味著卷積后的Feature Map中有對(duì)于識(shí)別物體不必要的冗余信息。
filter為何隨著層數(shù)加深而越來(lái)越多,這是因?yàn)榍懊娴膶邮莄atch 比較小的patter,后面的層是catch 比較豐富的pattern,所以需要的參數(shù)比較多,因而需要更多的filter.
有些問(wèn)題不適合使用Pooling,要根據(jù)具體問(wèn)題來(lái)設(shè)計(jì)CNN結(jié)構(gòu)。
pooling是一種信息匯集,信息粗粒度化。Pooling實(shí)際上也可以當(dāng)做一種尺度縮放,conv后面不一定要有pooling。
conv后面不一定要有pooling.像VGG結(jié)構(gòu),都會(huì)在很多個(gè)conv之后才加一個(gè)pooling. ResNet, 152層里面總共就三四個(gè)pooling. Pooling只是用來(lái)減小feature map的大小,可能其實(shí)并不是那么必要。在論文Striving for Simplicity: The All Convolutional Net研究表明用stride大于1的conv來(lái)代替pooling效果是一樣的。
Convolution v.s. Fully Connected
卷積后的圖像比原圖小
原圖中的每個(gè)patch,在卷積后的圖像中都有多個(gè)位置對(duì)應(yīng)。(多個(gè)filter卷積后的圖),上圖中每個(gè)3X3的patch,都有兩個(gè)位置對(duì)應(yīng),因?yàn)槭褂昧藘蓚€(gè)filter.
彩圖中的原圖中有三個(gè)通道,那么對(duì)應(yīng)的每個(gè)filter也應(yīng)該有三個(gè)通道,這些filter都是通過(guò)學(xué)習(xí)得到的。
該部分內(nèi)容轉(zhuǎn)自:YJango的卷積神經(jīng)網(wǎng)絡(luò)——介紹
Depth維的處理
現(xiàn)在我們已經(jīng)知道了depth維度只有1的灰度圖是如何處理的。 但前文提過(guò),圖片的普遍表達(dá)方式是下圖這樣有3個(gè)channels的RGB顏色模型。 當(dāng)depth為復(fù)數(shù)的時(shí)候,每個(gè)feature detector是如何卷積的?
**現(xiàn)象:**2x2所表達(dá)的filter size中,一個(gè)2表示width維上的局部連接數(shù),另一個(gè)2表示height維上的局部連接數(shù),并卻沒(méi)有depth維上的局部連接數(shù),是因?yàn)閐epth維上并非局部,而是全部連接的。
在2D卷積中,filter在張量的width維, height維上是局部連接,在depth維上是貫串全部channels的。
類(lèi)比:想象在切蛋糕的時(shí)候,不管這個(gè)蛋糕有多少層,通常大家都會(huì)一刀切到底,但是在長(zhǎng)和寬這兩個(gè)維上是局部切割。
下面這張圖展示了,在depth為復(fù)數(shù)時(shí),filter是如何連接輸入節(jié)點(diǎn)到輸出節(jié)點(diǎn)的。 圖中紅、綠、藍(lán)顏色的節(jié)點(diǎn)表示3個(gè)channels。 黃色節(jié)點(diǎn)表示一個(gè)feature detector卷積后得到的Feature Map。 其中被透明黑框圈中的12個(gè)節(jié)點(diǎn)會(huì)被連接到黃黑色的節(jié)點(diǎn)上。
在輸入depth為1時(shí):被filter size為2x2所圈中的4個(gè)輸入節(jié)點(diǎn)連接到1個(gè)輸出節(jié)點(diǎn)上。在輸入depth為3時(shí):被filter size為2x2,但是貫串3個(gè)channels后,所圈中的12個(gè)輸入節(jié)點(diǎn)連接到1個(gè)輸出節(jié)點(diǎn)上。在輸入depth為n時(shí):2x2xn個(gè)輸入節(jié)點(diǎn)連接到1個(gè)輸出節(jié)點(diǎn)上。注意:三個(gè)channels的權(quán)重并不共享。 即當(dāng)深度變?yōu)?后,權(quán)重也跟著擴(kuò)增到了三組,如式子(3)所示,不同channels用的是自己的權(quán)重。 式子中增加的角標(biāo)r,g,b分別表示red channel, green channel, blue channel的權(quán)重。
(3)
計(jì)算例子:用x_{r0}表示red channel的編號(hào)為0的輸入節(jié)點(diǎn),x_{g5}表示green channel編號(hào)為5個(gè)輸入節(jié)點(diǎn)。x_{b1}表示blue channel。如式子(4)所表達(dá),這時(shí)的一個(gè)輸出節(jié)點(diǎn)實(shí)際上是12個(gè)輸入節(jié)點(diǎn)的線(xiàn)性組合。
每個(gè)filter會(huì)在width維, height維上,以局部連接和空間共享,并貫串整個(gè)depth維的方式得到一個(gè)Feature Map。更多細(xì)節(jié)理解見(jiàn)
3D卷積
Summary of notation
Convolution中每個(gè)neuron僅僅連接了9個(gè)input,而不是連接所有的input.
CNN in Keras
filter為何隨著層數(shù)加深而越來(lái)越多,這是因?yàn)榍懊娴膶邮莄atch 比較小的patter,后面的層是catch 比較豐富的pattern,所以需要的參數(shù)比較多,因而需要更多的filter.
有些問(wèn)題不適合使用Pooling,要根據(jù)具體問(wèn)題來(lái)設(shè)計(jì)CNN結(jié)構(gòu)。
(5x5+1)x8=208
(5x5+1)x16=416
400x120+1=48001
120x84+1=10081
卷積核的厚度=被卷積的圖像的通道數(shù)
卷積核的個(gè)數(shù)=卷積操作后輸出的通道數(shù)
池化層不需要訓(xùn)練參數(shù)。全連接層的參數(shù)最多。卷積核的個(gè)數(shù)逐漸增多。激活層的size,逐漸減少。
卷積神經(jīng)網(wǎng)絡(luò)示例
分析CNN的結(jié)果
1. First Convolution Layer
查看第一個(gè)layer,這是因?yàn)榈谝粋€(gè)layer通常是比較簡(jiǎn)單的可理解的layer. 而第二個(gè)layer或者后面的layer,往往不可理解,說(shuō)白了就是生成了我們無(wú)法理解的東西。
2. How about higher layer?
Higher layers,通常是其他層layer的輸出結(jié)果,所以管轄的范圍比較大,所以查看higher layer會(huì)看到比較大的范圍(前面filter的結(jié)果組合)。不同的filter對(duì)應(yīng)不同的pattern.
3. What does CNN learn?
找到一張圖片使得某個(gè)filter響應(yīng)最大。相當(dāng)于filter固定,未知的是輸入的圖片。
對(duì)Fully connected Network做同樣的分析。
同樣可以對(duì)要求的未知圖像做一些限制,比如加regulation項(xiàng)。
遮擋某個(gè)部位,來(lái)判別該部位對(duì)模型的影響。
Deep Dream
強(qiáng)化CNN所看到的東西。使得每個(gè)filter得到的結(jié)果夸張化,大的更大,小的更小。
畫(huà)風(fēng)遷移
CNN的一些filter結(jié)果代表內(nèi)容,一些filter結(jié)果代表風(fēng)格。在找另外一張圖片,使得一些filter結(jié)果更像內(nèi)容,另外一些filter結(jié)果更像風(fēng)格。
https://deepart.io/
DeepDream的代碼實(shí)現(xiàn)
Understanding Deep Dreams
Inceptionism: Going Deeper into Neural Networks
Autoencoding beyond pixels using a learned similarity metric
更多解讀見(jiàn)
瞎談CNN:通過(guò)優(yōu)化求解輸入圖像
Alphago
參考文獻(xiàn)
Home: http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html
YJango的卷積神經(jīng)網(wǎng)絡(luò)——介紹
問(wèn)題
1. Pooling 同時(shí)max, average?
2. 查看Fully Connected Network 中第一層layer,看看具體是代表的什么?
3. 多個(gè)不同核,是否可以借助手動(dòng)設(shè)置呢?
4. P24里面的 50X11X11 如何得出的呢?解釋見(jiàn)YJango的卷積神經(jīng)網(wǎng)絡(luò)——介紹
總結(jié)
以上是生活随笔為你收集整理的李宏毅机器学习课程10~~~卷积神经网络的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何测量服务器网络带宽、延迟、抖动和丢包
- 下一篇: 当你在应用机器学习时你应该想什么