吳恩達(dá)Deep Learning學(xué)習(xí)筆記——第四課 卷積神經(jīng)網(wǎng)絡(luò)

目錄鏈接:吳恩達(dá)Deep Learning學(xué)習(xí)筆記目錄

?1.卷積神經(jīng)網(wǎng)絡(luò)
?2.CNN實例探究
?3.目標(biāo)檢測
?4.人臉識別和神經(jīng)風(fēng)格轉(zhuǎn)換

1. 卷積神經(jīng)網(wǎng)絡(luò)

? 1.1 邊緣檢測

??在計算機視覺中,圖片的識別過程是先檢測到圖片中的邊緣,再檢測到圖片中的一部分,最后檢測到整個圖像。如下圖,對于邊緣檢測,計算機檢測一張圖片時,可能首先第一步要做的就是檢測圖片中的垂直邊緣(如欄桿、人的輪廓線)。可能第二步要做的是檢測水平邊緣。

??那么如何進行邊緣檢測呢?例如下圖中垂直邊緣的檢測,一張單通道的6x6的圖片矩陣表示,經(jīng)過3x3的卷積核卷積后,輸出4x4的矩陣。
??卷積計算過程(圖片來源):

??為什么通過卷積計算后,計算機能夠檢測到圖像的邊緣呢?下圖是比較直觀的描述,可以看出,原圖片為左邊亮、右邊暗,卷積核也是左邊亮、右邊暗(反過來呢?),卷積后的結(jié)果就是中間亮、兩邊暗(卷積核或原圖反過來就中間暗)。
??下圖中,第一種情況,即由亮到暗的過渡,邊緣檢測為亮;第二種情況,由暗到亮過渡,邊緣檢測為暗。如果不在意這個過渡變化,那么可以在卷積后取絕對值。
??水平邊緣檢測和垂直邊緣檢測:

? 1.2 Padding

??如下圖中的卷積操作,(n,n)的圖片經(jīng)過(f,f)的卷積核后,得到(n-f+1,n-f+1)的輸出。這樣進行卷積存在兩個問題,①每經(jīng)過一次卷積,圖片都在縮小;②在邊緣上的像素點卷積時只被利用一次或幾次,而在中間的像素點被重復(fù)利用很多次,這就導(dǎo)致邊緣的很多信息被丟失。Padding即用來解決這個問題,即在圖片矩陣外圍再補一層亮度值0(RGB圖中為0-255),Padding后再卷積得到的輸出為(n+2p-f+1,n+2p-f+1),如此便可以避免圖片縮小問題,弱化邊緣信息丟失問題。

??一般,是否進行Padding,Padding多少,取決于你希望圖片大小不變還是縮小。在計算機視覺中很少有f為偶數(shù)的卷積核,因為①偶數(shù)卷積核會導(dǎo)致輸出大小不變圖片時,Padding會不對稱填充;②奇數(shù)卷積核會有一個中心點便于定位卷積核的位置。

? 1.3 卷積步長

??假設(shè)輸入圖片為(n,n),卷積核(f,f),步長為s,Padding為p,那么輸出圖片大小為((n+2p-f)/ s +1,(n+2p-f)/ s +1)。如果(n+2p-f)/ s不是整數(shù),則向下取整。

? 1.4 三維卷積

??RGB圖片有三個通道,分別為紅綠藍(lán),描述一張圖片的矩陣為(n,n,3),所以卷積核大小為(f,f,3),但輸出還是一個二維矩陣。

??多個卷積核同時卷積,如同時提取垂直邊緣和水平邊緣,用兩個不同三維的卷積核卷積后再堆疊:
??多核卷積后,輸出結(jié)果的通道數(shù)等于卷積核的數(shù)量。

? 1.5 單層卷積網(wǎng)絡(luò)

??單層卷積網(wǎng)絡(luò)計算過程:

? 1.6 簡單卷積網(wǎng)絡(luò)示例

??簡單的卷積網(wǎng)絡(luò)如下,一般而言,卷積核的數(shù)量會隨著網(wǎng)絡(luò)深入而增加,圖片縮?。oPadding時),實際上,典型的卷積網(wǎng)絡(luò)應(yīng)該包括卷積層、池化層和全連接層。

? 1.7 池化層

??池化的直觀理解,相當(dāng)于卷積核,但不是執(zhí)行權(quán)重求和,而是執(zhí)行核選取區(qū)域最大值(最大池化)或平均值(平均池化)。其意義是,如果核提取到某個特征,則保留其最大值,如果這個區(qū)域沒有這個特征,那么它的最大值也很小。池化操作會對每一通道數(shù)據(jù)進行池化,池化后通道數(shù)不變。池化層只有一組超參數(shù),沒有可學(xué)習(xí)參數(shù)。

? 1.8 典型卷積神經(jīng)網(wǎng)絡(luò)

? 1.9 為什么采用卷積網(wǎng)絡(luò)

??相比于只用全連接層相比,卷積層的兩個主要優(yōu)勢是參數(shù)共享和稀疏連接,這兩個原因可以減少參數(shù),防止過擬合。

??①參數(shù)共享:相比全連接層,卷積層中可訓(xùn)練參數(shù)數(shù)量極少,如下圖,假設(shè)輸入32x32x3的圖片,輸出到28x28x6的數(shù)據(jù),那么全連接層權(quán)重參數(shù)w數(shù)量將達(dá)3072 x 4704,近1400萬個,如果輸入圖片為1000x1000x3,那么參數(shù)數(shù)量量級會更大;而采用卷積層,參數(shù)數(shù)量只與卷積核大小和數(shù)量相關(guān),如下圖中,w僅5 x 5 x 6 =150個參數(shù),參數(shù)數(shù)量急劇減少。
??為什么可以參數(shù)共享?如果一個卷積核用于提取某類特征,如垂直邊緣,那么這個卷積核可能適用于其他區(qū)域。這不僅適用于低層提取邊緣,也適用于提取高階特征,如臉上的眼睛。

??②稀疏連接:例如,輸出結(jié)果中一個像素點上的數(shù)值僅由卷積核對應(yīng)的那塊區(qū)域決定,其他區(qū)域都不會對其造成影響,而全連接層則是將輸入圖片所有數(shù)據(jù)用于計算。
??卷積神經(jīng)網(wǎng)絡(luò)還能夠提取平移不變的特征,因為對于卷積網(wǎng)絡(luò),即使畫像平移幾個像素,這張圖片依然具有非常相似的特征。

2. CNN實例探究

? 2.1 經(jīng)典網(wǎng)絡(luò)

??(1)LeNet - 5
??LeNet - 5可以識別圖片中的手寫數(shù)字(適用于灰階圖像,32 * 32 * 1),LeNet - 5沒有Padding,池化采用的是平均池化。隨網(wǎng)絡(luò)深度增加,圖像縮小,通道數(shù)增加。論文中使用的激活函數(shù)為sigmoid和tanh。一共約6萬個參數(shù)。

??(2)AlexNet **
??實際上,AlexNet (一共約6000萬個參數(shù))與LeNet - 5有很多相似之處,但AlexNet采用了含有很多隱藏單元的基礎(chǔ)模塊,并在規(guī)模很大的數(shù)據(jù)集上訓(xùn)練,這使得其表現(xiàn)極為出色;另一個讓其表現(xiàn)出色的原因是采用了relu激活函數(shù)。
??①這篇論文中采用了非常復(fù)雜的方法在兩個GPU上進行訓(xùn)練(因為那時候GPU還不行),方法大致是將一個卷積層中的卷積核分成兩部分在兩個GPU上分別運行,同時還專門有一個方法用于兩個GPU交流。
??②“局部響應(yīng)歸一化層”:將一個像素位置上所有通道上的值進行歸一化,即LRN層,這么做的原因是我們可能不需要那么高的激活值,但后來研究者發(fā)現(xiàn)LRN層起到的作用不大。
??
(2)VGG-16 **

? 2.2 殘差網(wǎng)絡(luò)(Residual Networks)

??非常深的網(wǎng)絡(luò)是很難訓(xùn)練的,因為存在梯度消失和梯度爆炸問題。殘差網(wǎng)絡(luò),通過“遠(yuǎn)跳連接”將前面的信息直接傳給后面的layer,而不經(jīng)過中間的layer。

????理論上隨著網(wǎng)絡(luò)層數(shù)的增加,訓(xùn)練誤差應(yīng)該是單調(diào)遞減的,但實際上當(dāng)網(wǎng)絡(luò)層數(shù)到了一定深度,訓(xùn)練誤差開始增加,這可能是由于梯度消失和梯度爆炸問題帶來的。但通過殘差網(wǎng)絡(luò),訓(xùn)練誤差可以一直單調(diào)遞減。

(1)殘差網(wǎng)絡(luò)為什么有效?
??當(dāng)一個網(wǎng)絡(luò)越深時,它在訓(xùn)練集上的效率會有所降低,但在殘差網(wǎng)絡(luò)上并不完全如此。在殘差塊中,a[l]通過遠(yuǎn)跳連接直接與l+2層Z加和后輸入到激活函數(shù),若網(wǎng)絡(luò)中添加了正則項,Z[l+2]的計算中,權(quán)重W可能被壓縮得很小,如果出現(xiàn)梯度消失問題,那么Z[l+2]項被忽略;又激活函數(shù)為ReLu,故該過程相當(dāng)于計算了a[l]=a[l+2]得恒等式。a[l]和a[l+2]維度不同問題,添加一個權(quán)重矩陣來將a[l]維度轉(zhuǎn)化與a[l+2]一致,但實際上ReNet采用了一系列維度相同的卷積。
詳細(xì)解釋參見詳解殘差網(wǎng)絡(luò)
(2)網(wǎng)絡(luò)中的網(wǎng)絡(luò)和1x1卷積
??對于一張單通道的圖片來說,用一個1x1的卷積核去卷積,其意義不大,但對于網(wǎng)絡(luò)中,通道數(shù)量很多的數(shù)據(jù),1x1卷積核可以實現(xiàn)降維或升維的作用(通道坐標(biāo)上的維度)。

? 2.3 Inception network motivation

??構(gòu)建卷積層是,我們要決定卷積核的大小(1x3、3x3或5x5?)、要不要添加池化層,Inception網(wǎng)絡(luò)可以自己學(xué)習(xí)決定,雖然模型會變得比較復(fù)雜,但其表現(xiàn)卻非常好。如下圖,①1x1 filter用于通道降維(或升維);②3x3 filter用于卷積;③5x5 filter也用于卷積;④MAX-POOL用于最大池化。這些filter過程都需要維持輸出圖片大小一致(通過Padding和stride控制)。


(1)如何計算loss
??如下圖,在計算loss的過程中,存在一個問題,28x28x192的輸入,那么卷積核的大小為5x5x192,一共32個卷積核,那么需要執(zhí)行的乘法操作將達(dá)到1.2億次,就算是現(xiàn)在的計算機也比較花費時間,而這僅僅是一層卷積。
??另一種架構(gòu)如下圖所示,輸入輸出大小與上圖相同,但中間采用了1x1x192的filter將輸入維度降低到28x28x16大小,再經(jīng)過5x5x16卷積核卷積。其乘法計算量減少至1240萬。

(2)Inception network
??Inception模塊,兩個綠色層中間各個連接,在訓(xùn)練時,模型會選擇啟用哪一個連接結(jié)果更優(yōu)。
??完整Inception網(wǎng)絡(luò)如下,它在隱藏層也伸出了一些分支,通過隱藏層特征直接連接到全連接層用于預(yù)測。這確保了即使隱藏層參與了特征計算,但同時也能做預(yù)測,在一定程度上能防止過擬合的發(fā)生。

? 2.4 遷移學(xué)習(xí)

image.png

??如上圖所示,①當(dāng)你的數(shù)據(jù)集較小時,可以采用其他人的網(wǎng)絡(luò)核權(quán)重參數(shù),替換輸出層,訓(xùn)練時僅訓(xùn)練輸出層參數(shù);②當(dāng)數(shù)據(jù)集較大時,則選擇訓(xùn)練后幾層網(wǎng)絡(luò)參數(shù);③當(dāng)你的數(shù)據(jù)集足夠大時,可以將所有參數(shù)都訓(xùn)練。

3. 目標(biāo)檢測

? 3.1 目標(biāo)定位

??在目標(biāo)檢測中,一張圖片的分類,輸出不僅僅是一個標(biāo)簽(歸屬于什么),而是多個標(biāo)簽,如同時輸入這張圖片含有行人、汽車、摩托、背景等;此外對于檢測到的目標(biāo)如行人,不僅包含行人標(biāo)簽,還包含這個行人的位置、大小。如下圖,圖片左上角坐標(biāo)為(0,0),右下角坐標(biāo)為(1,1),檢測到的目標(biāo)坐標(biāo)為其中心點(bx,by),大小為(bh,bw)。故目標(biāo)檢測中,輸出的結(jié)果為多個標(biāo)簽,每個標(biāo)簽含目標(biāo)所屬類別、坐標(biāo)、大小。

??標(biāo)簽定義和loss函數(shù)如下,假設(shè)目標(biāo)檢測僅含下圖中4類,那么,定義標(biāo)簽為長度為8的向量,y1=Pc代表圖片中是否含目標(biāo)(除背景之外),接著四個值為目標(biāo)大小和坐標(biāo),c1、c2、c3分別代表目標(biāo)所屬歸類。一張圖片的loss,當(dāng)檢測到目標(biāo)時(y1=Pc=1)由向量中各對應(yīng)值來求,否則只采用y1=Pc來求loss,其他值忽略(只有背景的圖片,標(biāo)簽向量中只含Pc,其他值為?,這并不影響模型訓(xùn)練和預(yù)測)。在輸出層,可以不是都采用均方誤差來輸出,Pc可采用邏輯回歸輸出,目標(biāo)大小和坐標(biāo)采用平方誤差,類別采用softmax。

? 3.2 特征點檢測

??通過目標(biāo)定位方法可以輸出目標(biāo)大小、坐標(biāo)。更概括的說法是,神經(jīng)網(wǎng)絡(luò)可以通過輸出圖片上的特征點(x,y)坐標(biāo),來實現(xiàn)對目標(biāo)特征的識別。例如,需要通過特征點來識別一張人臉,在訓(xùn)練集中,X為圖片數(shù)據(jù),標(biāo)簽數(shù)據(jù)Y包含[分類,人臉各個部分輪廓的特征點],如下圖中人臉檢測,輸出64對坐標(biāo)點、一個分類。需要注意的是,所有圖片的坐標(biāo)點順序一致,如左眼角都是(x1,y1)。.

? 3.3 目標(biāo)檢測

(1)滑動窗口法
??要實現(xiàn)圖片中汽車目標(biāo)檢測,①首先要構(gòu)建一個標(biāo)簽訓(xùn)練集,X表示適當(dāng)剪切的汽車圖片樣本(含有汽車則圖片基本被汽車占滿),Y=[1 = 汽車,0 != 汽車];②將這個訓(xùn)練集用于訓(xùn)練卷積網(wǎng)絡(luò);③通過滑動窗口的方法,采用已訓(xùn)練好的網(wǎng)絡(luò),可以實現(xiàn)目標(biāo)檢測。

??滑動窗口法:①設(shè)置滑動窗口大小,將窗口內(nèi)的圖片數(shù)據(jù)輸入到卷積網(wǎng)絡(luò)用于預(yù)測,然后滑動窗口,再預(yù)測,重復(fù),窗口自左向右,自上向下滑動,直到掃描完整張圖片;②改變窗口大小,重復(fù)①過程,因此,無論汽車在圖片哪一個位置,總會有一個窗口檢測到。顯然,滑動窗口法會增加計算量,因為每滑動一次窗口,都要進行預(yù)測,如果增加滑動的步長,那么,會減少出入卷積網(wǎng)絡(luò)的窗口個數(shù),這能夠減少計算量,但會影響性能。滑動步長和窗口大小要足夠小,否則無法準(zhǔn)確定位圖中的目標(biāo)。

(2)滑動窗口的卷積應(yīng)用實現(xiàn)
??如果采用上述的方法來實現(xiàn)窗口滑動,那么效率很低,如果在卷積層上應(yīng)用這個算法,那么效率將大大提升。
??(2.1)全連接層轉(zhuǎn)化為卷積層
??如下圖第一個全連接層,一個樣本輸出的是一個長度為400的向量。將其轉(zhuǎn)化為卷積層,則采用5x5x400的卷積核,卷積后得到1x1x400的輸出,最終輸出不再是一個softmax向量,而是1x1x4的輸出。

??(2.2)卷積層實現(xiàn)滑動窗口
??實際上將滑動窗口中數(shù)據(jù)傳入卷積網(wǎng)絡(luò),很多像素點對應(yīng)的卷積計算都是重復(fù)在進行,所以沒必要一個一個窗口的輸入,而是將整張圖片輸入,最后輸出各個窗口組成的卷積層數(shù)據(jù)。如下圖中,綠色對應(yīng)綠色部分。
??所以,在卷積網(wǎng)絡(luò)中應(yīng)用窗口滑動法,將一次獲得所有窗口預(yù)測值。

? 3.4 YOLO算法

(1)Bounding box
??在卷積網(wǎng)絡(luò)中實現(xiàn)窗口滑動,能夠提升效率,但還存在一個問題:不能輸出最精準(zhǔn)的邊界框。在YOLO算法中,將圖片劃分為nxn份,如下圖中3x3,更精細(xì)一點還可以是19x19等等。為每一部分都設(shè)置標(biāo)簽向量(含類別、坐標(biāo)、大小等),最后輸出結(jié)果大小為3x3x8(8即每個標(biāo)簽向量的長度)。這個算法將會使得兩個目標(biāo)的中心在同一個格子的概率降低。同時,能輸出邊界邊框,可以具有任意高寬比和更精確的坐標(biāo)。

??坐標(biāo)、大小參數(shù)(注意:中心坐標(biāo)一定會坐落在劃分的格子內(nèi),但長寬可能會比格子大)

(2)交并比函數(shù)
??交并比函數(shù)用于評價預(yù)測邊框是否定位準(zhǔn)確。

(3)非極大值抑制
??前述的算法可能會對同一個目標(biāo)做出多次檢測,非極大值抑制可以保證算法對每個目標(biāo)只檢測一次。如下圖中,每一個目標(biāo)對象都會有很多個邊框,每個邊框會給出對應(yīng)的Pc概率值,非最大值抑制算法會去掉除了概率最大的其他邊框。
??如下圖,首先后拋棄所有概率低于0.6的邊框;②對于剩下的邊框,進行循環(huán)篩選:i、篩選出概率最大的框,然后計算其他框與這框的IoU值,將IoU大于0.5的框都去除;ii、篩選剩余框中第二大,重復(fù)第i步。通過這樣篩選,如果是同一個目標(biāo),那么這些框的IoU值都會很大,而不同目標(biāo),如果距離足夠遠(yuǎn),那么IoU為0,該框會被保留,以此來定位圖片中多個目標(biāo)。

(4)Anchor box
??如前所述算法都只是一個框檢測一個目標(biāo),如果需要一個框檢測多個目標(biāo),可以使用Anchor box。如下圖,人和車的中心坐標(biāo)都坐落在同一個格子里,那么對于那個格子的輸出Y將無法檢測出兩個結(jié)果,必須輸出人或車的其中一個。而Anchor box的思路是預(yù)先定義兩個形狀不同的anchor box,然后定義的輸出向量包含兩個概率、坐標(biāo)、類別信息,并將其與anchor box分別關(guān)聯(lián)起來。
??當(dāng)只有一個目標(biāo)時,標(biāo)簽定義如下:

(5)YOLO算法
??①訓(xùn)練集:檢測類別(行人、車、摩托),anchor box(竹竿和胖墩),那么標(biāo)簽向量為3x3x2x8。不同各自y定義如下:
??②預(yù)測:對于含目標(biāo)和不含目標(biāo)的格子,卷積網(wǎng)絡(luò)的輸出如下:
??③非極大值抑制:i、如下圖,由于會檢測到兩個目標(biāo),所以將會獲得兩個bounding boxes;ii、拋棄概率極低的邊框;iii、對于每個類別,執(zhí)行非極大值抑制算法,留下概率最大的邊框。

4. 人臉識別和神經(jīng)風(fēng)格轉(zhuǎn)換

? 4.1 one shot學(xué)習(xí)

??人臉識別最大的挑戰(zhàn)是解決一次學(xué)習(xí)問題,也就是需要僅僅通過一張照片或一個樣本就能去識別這個人,而在傳統(tǒng)的deep learning的認(rèn)知中,只有一個樣本時,表現(xiàn)并不好。假設(shè)用下圖的方法去做人臉識別,①如果僅有4個員工,用4個員工去訓(xùn)練一個卷積網(wǎng)絡(luò),顯然樣本數(shù)太小,是不合理;②如果又來一個新員工,那么又將要重新訓(xùn)練這個網(wǎng)絡(luò)。

??可以通過學(xué)習(xí)"similarity"函數(shù)來解決一次學(xué)習(xí)問題。這個函數(shù)用于判斷兩張照片的差異性,并設(shè)置一個閾值來判斷兩張照片是否是同一個人,如下數(shù)據(jù)庫中有4個人的照片,當(dāng)輸入一張照片后,會與這四張照片都計算出相似度函數(shù)值。期望同一個人輸出的d值小,而不是同一個人的d值很大。如果有新員工,只需要將照片添加至數(shù)據(jù)庫就可以,而不用再次訓(xùn)練。

? 4.2 Siamese network

??前述的卷積網(wǎng)絡(luò),最后將提取到的特征輸入到softmax等函數(shù)來輸出結(jié)果。在Siamese network中,將最后提取特征這一層(encoding of sample)將不會輸入給softmax層,再將另一張照片輸入到同一網(wǎng)絡(luò)中(結(jié)構(gòu)和參數(shù)都相同)提取特征,將兩張照片的特征輸入到“similarity”函數(shù)來求兩張照片的相似度。

??而我們需要做的是要學(xué)習(xí)這個網(wǎng)絡(luò)的參數(shù),使得網(wǎng)絡(luò)在提取特征時,如果是同一個人的照片,那么提取到的特征相似度高,不是同一個人的照片提取到的特征相似度低。

? 4.3 三元損失函數(shù)(Triplet loss)

??如下圖,一共三張照片,A和P為同一個人,A和N為不同人,學(xué)習(xí)的目標(biāo)是,我們希望,A和P之間的距離盡量小,而A和N之間的距離盡量大,那么就有:

??
??為避免兩項距離同時出現(xiàn)0的情況,需要加一項α作為兩項間的margin,得到公式:

loss 函數(shù)
??如果在數(shù)據(jù)集中隨機選擇圖片來進行訓(xùn)練,那么很大程度上,d(A,N)都會大于d(A,P),那么模型將學(xué)習(xí)不到什么東西,所以,用于訓(xùn)練的數(shù)據(jù),應(yīng)該是d(A,N)和d(A,P)比較接近的數(shù)據(jù)。

? 4.4 人臉驗證和二分類問題

? 4.5 神經(jīng)風(fēng)格轉(zhuǎn)換

??例子:采用Style的風(fēng)格來繪制Content:


(1)深度卷積網(wǎng)絡(luò)到底在學(xué)習(xí)什么?
??論文Visualizing and Understanding Convolutional Networks告訴我們CNN每一層到底學(xué)習(xí)到了什么。論文通過將每一層的輸出反池化、反卷積的到與原圖片大小的圖片,以此來觀察每一層所學(xué)習(xí)到的東西。池化是不可逆的過程,論文中采用記錄最大值的位置,再將池化后的數(shù)值放回原來位置,其余位置填充0來實現(xiàn)反池化過程。例如第一層,我們選取9個卷積核的輸出,將每個卷積核的輸出反卷積后,選取激活值top9(我的理解:n個樣本通過這個卷積核輸出后,選擇激活值最大的9個)的繪制成圖。可以看出,隨著layer的增加,所學(xué)習(xí)到的特征更為復(fù)雜。

(2)代價函數(shù)
??為了實現(xiàn)神經(jīng)風(fēng)格遷移,我們需要定義一個對于生成圖片G的代價函數(shù),并來優(yōu)化它。公式含兩項,分別代表新生成的圖片和原圖片、風(fēng)格圖片的相似度。對于新圖片會先隨機生成,然后經(jīng)過優(yōu)化代價函數(shù)來生成圖片。

??(2.1)Content代價函數(shù)
??①我們需要通過hidden layer來計算content cost,如果層數(shù)太淺,那么它可能會使得像素上非常接近content圖片,如果太深,則會判斷圖片中有什么(狗)來生成圖片,并確保生成圖片里有這個東西(狗),所以一般這個hidden layer既不會太淺也不會太深。②使用一個已經(jīng)預(yù)訓(xùn)練的卷積網(wǎng)絡(luò)(如VGG)。③將al和al作為圖片在l層的激活值。④如果al和al相似,那么圖片內(nèi)容相似。

??(2.2)Style代價函數(shù)
??什么是一張圖片的“style”?如果采用某一層的激活值來衡量“style”,那么這個style的定義就是各個通道之間對應(yīng)位置上的點的相關(guān)系數(shù)。這個相關(guān)系數(shù)描述了,如果通道i中的內(nèi)容出現(xiàn)在該位置,那么通道j中的內(nèi)容出現(xiàn)在該位置的概率。例如下圖,①通道對應(yīng)①部分垂直線特征,②對應(yīng)②部分橘色圖案,相關(guān)系數(shù)描述了在對應(yīng)位置①②同時出現(xiàn)的概率。

??①k和k`表示同一層不同通道,i,j代表一個通道中不同位置坐標(biāo)。計算兩個通道的相關(guān)系數(shù)如下,將會得到一個相關(guān)系數(shù)矩陣,大小為通道數(shù) x 通道數(shù):
??②代價函數(shù):求和符合內(nèi)為兩個矩陣的Frobenius范數(shù)。此外,在每一層上都使用風(fēng)格代價函數(shù),將會使得效果更好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容