版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
圖像風格遷移圖像風格遷移概述風格遷移的基本概念01任務風格遷移的發(fā)展歷程02任務學習目標了解什么是圖像風格遷移了解風格遷移的發(fā)展歷程1風格遷移的基本概念1風格遷移的基本概念
現(xiàn)在通訊工具越來越發(fā)達,在聊天的過程中可以選用各種不同字體,甚至可以以某一個人的書寫風格為標準生成專用字體。這種手寫體在以前是一種使用硬筆或者軟筆純手工寫出的文字,代表了中國漢字文化的精髓?,F(xiàn)在利用風格遷移技術可以生成不同風格的手寫體,省去了手工書寫的時間的同時也促進了中國漢字文化的發(fā)展。1風格遷移的基本概念
同樣,對于圖像的風格遷移,也希望能用一張普通的畫臨摹出瓦西里·康定斯基(俄羅斯現(xiàn)代抽象派藝術大師)或畢加索那樣的印象派畫作。圖像風格遷移都可以滿足這個愿望。
風格遷移是一種圖像優(yōu)化技術,用于將兩個圖像——一個內(nèi)容圖像(想要改變畫風的原始圖像)和一個風格參考圖像(如著名畫家的一個作品)——混合在一起,使輸出的圖像看起來像內(nèi)容圖像同時擁有風格參考圖像的風格。2風格遷移的發(fā)展歷程2風格遷移的發(fā)展歷程風格遷移的發(fā)展歷程可大致分為三個階段:1、傳統(tǒng)的圖像風格遷移(Traditionalstyletransfer)在計算機視覺領域,風格遷移被視為紋理合成的擴展問題,當時甚至連名字都沒有,更多的叫法是紋理遷移(texturetansfer),因為風格其實也可以看作一種紋理。假如在合成紋理圖的時候刻意的保留一些語義信息(即輸入圖的內(nèi)容信息),那就得到了風格遷移的結果。這一方法沒有流行起來的原因是當時紋理遷移的是基于像素的底層圖像特征,并沒有過多的考慮語義信息,因此圖像的遷移結果并不理想。其實,可以將圖像遷移看作圖像紋理提取和圖像重建兩個步驟,2015年前,僅在圖像紋理合成上有些許成就,但在圖像重建領域考慮的并不周全。但是隨著深度學習的飛速發(fā)展,基于神經(jīng)網(wǎng)絡的圖像遷移方法有了巨大的進步,以下的介紹都是基于神經(jīng)網(wǎng)絡的圖像遷移方法。2風格遷移的發(fā)展歷程2、基于神經(jīng)網(wǎng)絡的風格轉換(Neuralstyletransfer)在上一小節(jié)說道,可以通過紋理建模方法(VisualTextureModelling),主要研究如何表示一種紋理,是紋理合成技術的核心。紋理建模方法的相關研究解決了圖像風格化遷移的第一個大問題:如何對風格圖中的風格特征進行建模和提取。然而,如何將風格和內(nèi)容混合然后還原成一個相應的風格化結果呢?其中可以設計一個前向網(wǎng)絡,用數(shù)據(jù)驅動的方式,喂給很多訓練數(shù)據(jù)去提前訓練它,訓練的目標就是給定一個輸入,這個訓練好的網(wǎng)絡只需要一次前向就能輸出一張重建結果圖像。這就是基于神經(jīng)網(wǎng)絡的風格轉換方法。風格遷移原理主要包含三個部分:圖像內(nèi)容獲取,圖像風格提取以及內(nèi)容和風格融合。2風格遷移的發(fā)展歷程3、基于對抗生成網(wǎng)絡的風格遷移(StyletransferbasedonGAN)嚴格來說,基于GAN的風格遷移其實是屬于基于神經(jīng)網(wǎng)絡的風格遷移范圍之內(nèi)的,因為GAN網(wǎng)絡本質上就是神經(jīng)網(wǎng)絡,只是由于其巧妙的loss函數(shù)設計方法,使得GAN網(wǎng)絡的效果在圖像生成領域一馬當先,其研究也極為火熱,近些年已有開山立派之態(tài)。GAN網(wǎng)絡由生成器和判別器兩個網(wǎng)絡組成,生成器負責對輸入圖片進行重建;其重建結果與真實數(shù)據(jù)集一同送入判別網(wǎng)絡進行判斷,判別網(wǎng)絡負責分辨生成器的輸出結果到底是來自真實數(shù)據(jù)集的真實圖片還是來自其本身的生成圖片。這時,巧妙的事情就發(fā)生了,生成器會努力使自己生成的圖片騙過判別器,方法自然是生成的圖片越真實越容易欺騙判別器;判別器則會努力分辨輸入到底是真實的還是生成的,其反饋來指導生成器生成更真實的圖片,從而形成一種動態(tài)博弈,結果是輸出的圖片在內(nèi)容和風格上都類似于真實數(shù)據(jù)集。ThankYOU!風格提取風格的概念01任務風格提取的方法02任務學習目標了解什么是圖像風格了解風格提取的方法1風格的概念1風格的概念在學習風格提取之前,先弄明白什么是風格。一幅畫作的風格每個畫家而言,就是該畫家的畫風,抽象派,印象派,現(xiàn)實派等等。那具體表現(xiàn)在該幅畫上又是什么呢?或許不用那么復雜,可以從一張圖片的紋理(紋路),色彩來理解該幅圖像的風格。同一位畫家不同畫作的內(nèi)容可以不同,但具有相同畫風的畫作,它們的紋理,色彩布局是相似的。以康定斯基的畫作為例:2風格提取方法2風格提取方法既然圖像的風格可以簡單用紋理,色彩特征來表示,那么提取風格就變得簡單了。1.顏色特征提取
計算機視覺的特征提取算法研究至關重要。在一些算法中,一個高復雜度特征的提取可能能夠解決問題(進行目標檢測等目的),但這將以處理更多數(shù)據(jù),需要更高的處理效果為代價。而顏色特征無需進行大量計算。只需將數(shù)字圖像中的像素值進行相應轉換,表現(xiàn)為數(shù)值即可。因此顏色特征以其低復雜度成為了一個較好的特征。
在圖像處理中,我們可以將一個具體的像素點所呈現(xiàn)的顏色分多種方法分析,并提取出其顏色特征分量。比如通過手工標記區(qū)域提取一個特定區(qū)域(region)的顏色特征,用該區(qū)域在一個顏色空間三個分量各自的平均值表示,或者可以建立三個顏色直方圖等方法。下面我們介紹一下顏色直方圖和顏色矩的概念。2風格提取方法(1)顏色直方圖:
顏色直方圖用以反映圖像顏色的組成分布,即各種顏色出現(xiàn)的概率。Swain和Ballard最先提出了應用顏色直方圖進行圖像特征提取的方法,首先利用顏色空間三個分量的剝離得到顏色直方圖,之后通過觀察實驗數(shù)據(jù)發(fā)現(xiàn)將圖像進行旋轉變換、縮放變換、模糊變換后圖像的顏色直方圖改變不大,即圖像直方圖對圖像的物理變換是不敏感的。因此常提取顏色特征并用顏色直方圖應用于衡量和比較兩幅圖像的全局差。另外,如果圖像可以分為多個區(qū)域,并且前景與背景顏色分布具有明顯差異,則顏色直方圖呈現(xiàn)雙峰形。
顏色直方圖也有其缺點:由于顏色直方圖是全局顏色統(tǒng)計的結果,因此丟失了像素點間的位置特征??赡苡袔追鶊D像具有相同或相近的顏色直方圖,但其圖像像素位置分布完全不同。因此,圖像與顏色直方圖得多對一關系使得顏色直方圖在識別前景物體上不能獲得很好的效果。2風格提取方法(2)顏色矩:
顏色矩是一種有效的顏色特征,由Stricker和Orengo提出,該方法利用線性代數(shù)中矩的概念,將圖像中的顏色分布用其矩表示。與顏色直方圖不同,利用顏色矩進行圖像描述無需量化圖像特征。由于每個像素具有顏色空間的三個顏色通道,因此圖像的顏色矩有9個分量來描述。由于顏色矩的維度較少,因此常將顏色矩與其他圖像特征綜合使用。(3)顏色集:
以上兩種方法通常用于兩幅圖像間全局或region之間的顏色比較、匹配等,而顏色集的方法致力于實現(xiàn)基于顏色實現(xiàn)對大規(guī)模圖像的檢索。顏色集的方法由Smith和Chang提出,該方法將顏色轉化到HSV顏色空間后,將圖像根據(jù)其顏色信息進行圖像分割成若干region,并將顏色分為多個bin,每個region進行顏色空間量化建立顏色索引,進而建立二進制圖像顏色索引表。為加快查找速度,還可以構造二分查找樹進行特征檢索。2風格提取方法2.紋理特征提取
一幅圖像的紋理是在圖像計算中經(jīng)過量化的圖像特征。圖像紋理描述圖像或其中小塊區(qū)域的空間顏色分布和光強分布。紋理特征的提取分為基于結構的方法和基于統(tǒng)計數(shù)據(jù)的方法。一個基于結構的紋理特征提取方法是將所要檢測的紋理進行建模,在圖像中搜索重復的模式。該方法對人工合成的紋理識別效果較好。但對于交通圖像中的紋理識別,基于統(tǒng)計數(shù)據(jù)的方法效果更好。2風格提取方法3.邊緣特征提取
邊緣檢測是圖形圖像處理、計算機視覺和機器視覺中的一個基本工具,通常用于特征提取和特征檢測,旨在檢測一張數(shù)字圖像中有明顯變化的邊緣或者不連續(xù)的區(qū)域,在一維空間中,類似的操作被稱作步長檢測(stepdetection)。邊緣是一幅圖像中不同屈原之間的邊界線,通常一個邊緣圖像是一個二值圖像。邊緣檢測的目的是捕捉亮度急劇變化的區(qū)域,而這些區(qū)域通常是我們關注的。在一幅圖像中兩度不連續(xù)的區(qū)域通常是以下幾項之一:#圖像深度不連續(xù)處#圖像(梯度)朝向不連續(xù)處#圖像光照(強度)不連續(xù)處#紋理變化處2風格提取方法圖像的風格還可以利用卷積神經(jīng)網(wǎng)絡的卷積層提取的特征。在前面的單元中已經(jīng)介紹過,不同深度的卷積層提取的特征不同,提取的特征具有不同的含義。因此,只需設置不同的卷積層去提取該圖像的紋理和色彩風格特征。ThankYOU!gram矩陣gram矩陣的含義01任務gram矩陣的作用02任務gram矩陣的計算03任務學習目標了解什么是gram矩陣了解gram矩陣的作用掌握gram矩陣的計算方式1gram矩陣的含義1風格的概念gram矩陣的數(shù)學形式如下:可以看出,gram矩陣實際上是矩陣的內(nèi)積運算。在風格遷移中,其計算的是featuremap之間的偏心協(xié)方差(即沒有減去均值的協(xié)方差矩陣)。在featuremap中包含著圖像的特征,gram矩陣代表著特征之間的相關性。內(nèi)積數(shù)值越大,相關關系越大,兩個向量越相似。1風格的概念更加直觀的理解:2gram矩陣的作用2gram矩陣的作用既然gram矩陣代表了兩個特征之間的相關性,那么哪兩個特征同時出現(xiàn),哪兩個特征此消彼長等等,便可以很好的計算了。內(nèi)積之后得到的多尺度矩陣中,對角線元素提供了不同特征圖(a1,a2...,an)各自的信息,其余元素提供了不同特征圖之間的相關信息。同時,gram的對角線元素,還體現(xiàn)了每個特征在圖像中出現(xiàn)的量,因此,gram有助于把握整個圖像的大體風格。有了gram矩陣,要度量兩個圖像風格的差異,只需要比較它們之間的gram矩陣的差異即可。2gram矩陣的作用總之,gram矩陣用于度量各個維度自身的特性以及各個維度之間的關系。內(nèi)積之后得到的多尺度矩陣中,對角線元素提供了不同特征圖各自的信息,其余元素提供了不同特征圖之間的相關信息。這樣一個矩陣,既能體現(xiàn)出有哪些特征,又能體現(xiàn)出不同特征間的緊密程度。在網(wǎng)絡中提取的特征圖,一般來說淺層網(wǎng)絡提取的是局部的細節(jié)紋理特征,深層網(wǎng)絡提取的是更抽象的輪廓、大小等信息。這些特征總的結合起來表現(xiàn)出來的就是圖像的風格,由這些特征向量計算出來的gram矩陣,就可以把圖像特征之間隱藏的聯(lián)系提取出來,也就是各個特征之間的相關性高低。2gram矩陣的作用gram矩陣的計算公式如下:如果兩個圖像的特征向量的gram矩陣的差異較小,就可以認定這兩個圖像風格是相近的。有了表示風格的gram矩陣,要度量兩個圖像風格的差異,只需比較他們gram矩陣的差異即可。計算兩個圖像風格的公式如下:3gram矩陣的計算3gram矩陣的計算gram矩陣實際上是矩陣的內(nèi)積運算,可以使用Python的科學計算庫numpy來實現(xiàn)gram矩陣,當然也可以用更簡潔的方式。在一些比較流行的深度學習框架中,已經(jīng)內(nèi)置了矩陣相乘的方法。以Tensorflow為例,可以用“tf.matmul()”方法實現(xiàn)矩陣的相乘。具體使用方法如下:gram=tf.matmul(vector,vector,transpose_a=True)上面便是Tensorflow中實現(xiàn)gram矩陣的計算方式。參數(shù)‘vector’代表輸入的矩陣向量,‘transpose_a=True’意味著在進行乘法之前對第一個矩陣進行轉置,該方法還有一個名為“transpose_b”的參數(shù),它等于“True”時意味著在乘法之前對第二個矩陣進行轉置。3gram矩陣的計算在計算機視覺中,Gram矩陣用于把握整個圖像的大體風格。有了表示風格的Gram矩陣,就可以度量兩個圖像風格的差異,它也可以度量自己各個維度的特性以及各個維度之間的關系,其對角線元素提供了不同特征圖各自的信息,其余元素提供了不同特征圖之間的相關信息,既能體現(xiàn)出有哪些特征,又能體現(xiàn)出不同特征間的緊密程度,所以它被大量的運用在圖像風格遷移中,下圖就是利用Gram矩陣的特征信息完成的圖像風格遷移的圖片。ThankYOU!損失計算內(nèi)容損失01任務風格損失02任務總損失03任務學習目標掌握內(nèi)容損失和風格損失的計算方式掌握風格遷移的總損失計算方式1內(nèi)容損失1內(nèi)容損失在風格轉移任務中,想讓圖像盡量在內(nèi)容不變的情況下進行風格遷移。為了平衡這種關系,需要分別計算內(nèi)容損失和風格損失,最后再通過系數(shù)相關計算出總損失。在網(wǎng)絡中更靠近頂層的輸出包含圖像更加全局、更加抽象的信息(如羽毛,眼睛,房屋等),這也就對應上了原始圖片上的內(nèi)容信息。因此,內(nèi)容損失很好的選擇就是使用原始圖像和生成圖像在網(wǎng)絡中較為頂層的輸出(激活)的L2范數(shù)(也就是用原始圖像在較為頂層中的輸出和生成圖像在較為頂層中的輸出進行比較)。1內(nèi)容損失L2范數(shù),是反映估計量與被估計量之間差異的一種度量,計算的是預測值與真實值之差的平方和的平均值。數(shù)學公式如下:1內(nèi)容損失這里我們可以定義內(nèi)容損失函數(shù)為:2風格損失2風格損失相反,由紋理、顏色、視覺圖案所表示的風格就在網(wǎng)絡中較為底層的輸出中。但是風格在網(wǎng)絡中分布的較為廣泛(風格是多尺度的),單單選擇一層是不夠的(內(nèi)容損失就可以選擇一層在稍微頂層的層中能提取到)。對于風格損失,在這里將使用層激活的格拉姆矩陣,即特征圖的內(nèi)積。這個內(nèi)積可以被理解為一層特征圖之間的映射關系,也就是抓住了圖片特征的規(guī)律(即想索取的風格),可以在它身上找到想要的紋理外觀。2風格損失風格總代價分為兩個步驟:識別風格圖像的風格,從所有卷積層中獲取特征向量,將這些向量與另一層中的特征向量進行比較(查找其相關性);原始(原始風格圖像)和生成的圖像之間的風格代價。為了找到風格,可以通過將特征圖乘以其轉置來捕獲相關性,從而生成gram矩陣。先將提取的特征(生成的風格特征與風格參考圖像的風格特征)進行gram矩陣計算,之后再對計算后的結果進行均方誤差計算。2風格損失風格遷移中的Gram矩陣衡量的是不同特征之間的相關關系,計算流程如下:定義風格圖片在網(wǎng)絡第n層的Gram矩陣為Sn,內(nèi)容圖片(即待遷移圖片)的Gram矩陣為Cn,則風格損失可以定義為:3總損失3總損失總損失的計算方式如下:其中l(wèi)oss_content,loss_style分別是內(nèi)容損失和風格損失,
和
是平衡內(nèi)容損失和風格損失的超參數(shù)。如果
偏大則還原的圖像包含的內(nèi)容較多,偏大則還原的圖像包含風格較多。ThankYOU!VGG-19VGG-19的由來01任務結構解析02任務學習目標了解VGG-19的由來掌握VGG-19的網(wǎng)絡結構1VGG-19的由來1VGG-19的由來2014年,牛津大學計算機視覺組(VisualGeometryGroup)和GoogleDeepMind公司的研究員一起提出了一種新的深度卷積神經(jīng)網(wǎng)絡:VGGNet,并取得了ILSVRC2014比賽分類項目的第二名。VGGNet的主要貢獻是使用很小的卷積核(3×3)構建各種深度的卷積神經(jīng)網(wǎng)絡結構,并對這些網(wǎng)絡結構進行了評估,最終證明在16-19層的網(wǎng)絡深度能夠取得較好的識別精度。這也就是常用來提取圖像特征的VGG-16和VGG-19。2結構解析2結構解析VGG-19整體由五個卷積塊和3個全連接層組成,每個卷積塊由不同層數(shù)的卷積層構成。其中第一,二個卷積塊分別有兩個卷積層,第三,四,五個卷積塊分別有四個卷積層。那VGG-19中的19是怎么來的?這里的19只算了卷積層(16層)和全連接層(3層)的數(shù)量,沒有包括池化層。VGG-19的輸入為224×224×3的圖像,并且對圖像做了均值處理,在每個像素中減去在訓練集上計算的RGB均值。2結構解析VGG-19中使用的都是3×3的卷積核,來代替比較大的卷積核,并且使用了連續(xù)多個卷積層。使用小的卷積核的問題是,其感受野必然變小,但使用連續(xù)的卷積核,可以增大感受野。卷積的固定步長為1,并在圖像的邊緣填充1個像素,這樣卷積后保持圖像的分辨率不變;連續(xù)的卷積層(卷積塊)后會接著一個池化層,做最大池化,步長為2;最后一層卷積層之后,接著的是3個全連接層,前兩個每個都有4096個通道,第三是輸出層輸出1000個分類。2結構解析2結構解析VGG-19優(yōu)勢:VGG-19的結構很是簡潔,整個網(wǎng)絡都使用了一樣大小的卷積核尺寸(3×3)和最大池化尺寸(2×2)。幾個小濾波器(3×3)卷積層的組合比一個大濾波器(5×5或7×7)卷積層好,驗證了經(jīng)過不斷加深網(wǎng)絡結構能夠提高性能。VGG-19缺點:VGG-19耗費更多計算資源,而且使用了更多的參數(shù),致使更多的內(nèi)存占用(140M)。其中絕大多數(shù)的參數(shù)都是來自于第一個全連接層。VGG-19但是有3個全連接層。注:不少pretrained的方法就是使用VGG的model(主要是16和19),VGG相對其余的方法,參數(shù)空間很大,最終的model有500多m,AlexNet只有200m,GoogLeNet更少,因此train一個VGG模型一般要花費更長的時間,所幸有公開的pretrainedmodel讓咱們很方便的使用。ThankYOU!基于VGG-19的風格遷移了解VGG-19的結構01任務內(nèi)容層和風格層的抽取02任務損失計算03任務學習目標掌握總損失的計算方法掌握抽取內(nèi)容和風格的方法1數(shù)據(jù)加載及預處理1數(shù)據(jù)加載及預處理數(shù)據(jù)這里的數(shù)據(jù)很簡單,只有兩張圖片,一張是內(nèi)容圖片,一張是風格圖片。1數(shù)據(jù)加載及預處理數(shù)據(jù)預處理規(guī)范大小img=img.resize((round(img.size[0]*scale),round(img.size[1]*scale)),Image.ANTIALIAS)歸一化標準化x[:,:,0]+=103.939x[:,:,1]+=116.779x[:,:,2]+=123.68x=x[...,::-1]#將BGR轉化為RGBx=np.clip(x,0,255).astype('uint8')2內(nèi)容和風格抽取2內(nèi)容和風格抽取內(nèi)容層和風格層的選取VGG-19整體由五個卷積塊和和3個全連接層組成,每個卷積塊由3x3卷積核構成。如何選取卷積層作為內(nèi)容和風格的特征值?一般來說,越深的層越能更好的表示圖像的內(nèi)容(原有特征),而對于表示風格的卷積層,我們分別從五個卷積塊中選取第一個卷積層作為風格表示層。content_layers=['block5_conv2']style_layers=['block1_conv1','block2_conv1','block3_conv1','block4_conv1','block5_conv1']2內(nèi)容和風格抽取模型定義defget_model():vgg=VGG19(include_top=False,weights='imagenet')vgg.trainable=Falsecontent_output=[vgg.get_layer(layer).outputforlayerincontent_layers]style_output=[vgg.get_layer(layer).outputforlayerinstyle_layers]output=content_output+style_outputreturnModel(inputs=vgg.inputs,outputs=output)2內(nèi)容和風格抽取特征提取將內(nèi)容圖和風格圖分別傳給我們的模型,得到內(nèi)容特征和風格特征。content_features=[content_layer[0]forcontent_layerincontent_output[:len(style_layers)]]style_features=[style_layer[0]forstyle_layerinstyle_output[len(style_layers):]]3損失計算3損失計算內(nèi)容損失為了計算出總損失,我們需要分別計算出內(nèi)容損失和風格損失。我們將真實的內(nèi)容特征與預測的內(nèi)容特征作均方誤差計算,得到內(nèi)容損失。defcontent_loss(content,base_img):returntf.reduce_mean(tf.square(content-base_img))3損失計算風格損失我們將真實的風格特征與預測的風格特征分別作gram矩陣運算,并求其均方誤差,得到風格損失。defstyle_loss(style,base_img):gram_style=gram_matrix(style)gram_gen=gram_matrix(base_img)returntf.reduce_mean(tf.square(gram_style-gram_gen))3損失計算總損失計算α,β是平衡內(nèi)容損失和風格損失的超參數(shù),如果α偏大,還原的圖像包含的內(nèi)容較多,β偏大,還原的圖像包含風格較多。ThankYOU!對抗生成網(wǎng)絡對抗生成網(wǎng)絡(GAN)的基本概念01任務循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)02任務學習目標了解對抗生成網(wǎng)絡的原理及構成掌握循環(huán)一致對抗生成網(wǎng)絡的網(wǎng)絡結構1對抗生成網(wǎng)絡(GAN)的基本概念1對抗生成網(wǎng)絡(GAN)的基本概念除了使用卷積神經(jīng)網(wǎng)絡進行圖像風格遷移任務之外,現(xiàn)在流行的對抗生成網(wǎng)絡(GAN)非常適合做圖像生成類的任務。在介紹GAN之前,先簡單回顧下之前所介紹的CNN模型。在圖中,CNN通過卷積、池化等操作對輸入圖像進行分析,從而對其進行分類(判定是否為貓),這個過程可以概括為圖像處理,即模型輸入的圖像是確定的、待分析的對象,通過各種神經(jīng)網(wǎng)絡來對其進行分析。1對抗生成網(wǎng)絡(GAN)的基本概念與上述過程相反,對于圖像生成任務來說,模型的輸出才是確定的圖像,而模型的輸入則是不確定的,具體取決于場景以及特定的模型設計。在圖像生成任務的一種特殊應用——風格遷移中,模型的輸入可能是一個隨機生成的圖像,圖中模型的訓練過程可以看成對這個隨機生成的圖像所對應像素值的更新過程,以實現(xiàn)較好的風格遷移效果。1對抗生成網(wǎng)絡(GAN)的基本概念生成對抗網(wǎng)絡(GenerativeAdversarialNets,GAN)自提出以來,在許多領域中出現(xiàn)大量有趣的應用,如漫畫變臉的特效、訓練樣本的構造、模型的架構等。通過以上講解,應該建立以下認知:圖像處理任務利用如CNN的神經(jīng)網(wǎng)絡對輸入圖像進行分析處理,得到跟輸入圖像內(nèi)容相關的信息;與圖像處理任務相反,在圖像生成任務中,圖像生成模型根據(jù)輸入圖像內(nèi)容相關的信息來生成圖像;對于圖像生成任務來說,圖像生成模型的輸入是不確定的,具體取決于場景以及特定的模型設計。其中風格遷移就屬于其中的一種場景;生成對抗網(wǎng)絡(GAN)可以應用于風格遷移。1對抗生成網(wǎng)絡(GAN)的基本概念接下來簡單介紹GAN的基本原理,GAN的主要組成如圖所示:1對抗生成網(wǎng)絡(GAN)的基本概念GAN模型中有兩個核心的組成:生成器(Generator)與判別器(Discriminator)。它的整體的流程如下:1.首先定義一個生成器(Generator),輸入一組隨機噪聲向量(最好符合常見的分布,一般的數(shù)據(jù)分布都呈現(xiàn)常見分布規(guī)律),輸出為一個圖片;2.定義一個判別器(Discriminator),用它來判斷圖片是否為訓練集中的圖片,是為真,否為假;3.當判別器無法分辨真假,即判別概率為0.5時,停止訓練。1對抗生成網(wǎng)絡(GAN)的基本概念體現(xiàn)“對抗”的關鍵步驟是:1.固定生成器(的參數(shù)),訓練(優(yōu)化)判別器,使得判別器能夠盡可能準確地區(qū)分“真圖像”與“假圖像”;2.在完成步驟1之后,固定判別器(的參數(shù)),訓練(優(yōu)化)生成器,盡可能使得判別器無法準確地區(qū)分“真圖像”與“假圖像”。在GAN模型訓練完成后,即可使用經(jīng)訓練的生成器(Generator)來生成圖像了。GAN的判別器與生成器都由多層感知機(可以看成全連接神經(jīng)網(wǎng)絡,即FC)構成,它們都可以使用其他類型的神經(jīng)網(wǎng)絡,如卷積神經(jīng)網(wǎng)絡(CNN)。1對抗生成網(wǎng)絡(GAN)的基本概念GAN模型的目標函數(shù)如下:在這里,訓練網(wǎng)絡D使得盡可能最大程度地分對訓練樣本的標簽(最大化logD(x)和log(1-D(G(z)))),訓練網(wǎng)絡G最小化log(1-D(G(z))),即最大化D的損失。而訓練過程中固定一方,更新另一個網(wǎng)絡的參數(shù),交替迭代,使得對方的錯誤最大化。最終,G能估測出樣本數(shù)據(jù)的分布,也就是生成的樣本更加的真實。然后從式子中解釋對抗,了解到G網(wǎng)絡的訓練是希望D(G(z))趨近于1,也就是正類,這樣G的loss就會最小。而D網(wǎng)絡的訓練就是一個2分類,目標是分清楚真實數(shù)據(jù)和生成數(shù)據(jù),也就是希望真實數(shù)據(jù)的D輸出趨近于1,而生成數(shù)據(jù)的輸出即D(G(z))趨近于0,或是負類。這里就是體現(xiàn)了對抗的思想。2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)現(xiàn)在要通過GAN網(wǎng)絡實現(xiàn)風格遷移需要考慮的事情就是如何為GAN網(wǎng)絡加上內(nèi)容約束和風格約束了,著名的CycleGAN變通過自己巧妙的loss設計實現(xiàn)了這一點。針對原始GAN網(wǎng)絡可以進行如下的簡化描述,如圖所示:輸入x經(jīng)過生成器G得到輸出Y,判別器用來負責判別Y是取自真實數(shù)據(jù)集還是來自生成的圖像。通過這一約束,使得生成器生成的圖片越來越真實,但是由于沒有內(nèi)容和風格約束,所以模型的輸出結果是不可預測的,這更像是藝術創(chuàng)作。就像給畫家一張白紙,說你去畫畫吧,最后只評判畫家畫的畫寫不寫實,因此畫家可以隨意創(chuàng)作,這要保證作品看起來真實就好。那么如何添加約束?2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)首先,要實現(xiàn)風格轉換,就必須要有兩套不同風格的數(shù)據(jù)集,例如春天數(shù)據(jù)集和冬天數(shù)據(jù)集,GAN網(wǎng)絡的輸入也不再是隨機噪聲,而是其中一個數(shù)據(jù)集,這里使用春天數(shù)據(jù)集,經(jīng)過生成器后重建的結果圖片與冬天數(shù)據(jù)集一起作為判別器的輸入,讓判別器來判斷該冬天風格圖是否真實,從而指導生成器生成的圖片是冬天風格且真實的。這樣生成器G就通過優(yōu)化對抗loss就學習到了一種由春天風格到冬天風格的一種映射,可以將任意一張輸入圖片轉換為冬天風格的。這里的風格約束與使用卷積神經(jīng)網(wǎng)絡進行風格轉換的思路就完全不同了,一個是通過不斷優(yōu)化結果圖與風格圖gram矩陣的距離作為loss;一個是通過對抗損失的動態(tài)博弈為loss。2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)值得一提的是,由于對抗損失只是為了學習不同風格域間的映射,因此兩個數(shù)據(jù)集里的數(shù)據(jù)不必是成對的,(通俗的理解是風格作為紋理特征的延伸是一種低級特征,內(nèi)容作為語義信息是一種高級特征。當只從不同數(shù)據(jù)集學習風格映射時,只需要保證不同數(shù)據(jù)集風格一致即可,比如一個數(shù)據(jù)集都是冬天,另一個數(shù)據(jù)集都是夏天,對數(shù)據(jù)集中具體照片的內(nèi)容沒有要求,是貓是狗是啥姿態(tài)無所謂(即可以是非配對的),這一點很重要,因為現(xiàn)實中不同風格下成對的數(shù)據(jù)是很難獲得的。2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)但是,僅僅使用兩個數(shù)據(jù)集運用GAN網(wǎng)絡是不能達到風格遷移的目的的,原因有二:其一,沒有內(nèi)容約束,生成的結果無法預測,失去了風格遷移的意義(風格遷移后的語義信息是不變的);其二,GAN網(wǎng)絡的訓練傾向于模式崩塌(Modelcollapse),這里不展開解釋,簡單來說就是,當生成器發(fā)現(xiàn)生成某一張圖片可以輕易的騙過判別器時,其他的生成結果就會傾向類似于該照片。即當生成器發(fā)現(xiàn)一個好的解時,就瘋狂輸出類似于這個解的結果,不愿意去做其他的嘗試,但是,關鍵在于該解并不一定有較好的視覺效果或者不一定是期望的結果,只是因為該解的loss較優(yōu),生成器才做此決定,希望生成器多去嘗試,以找到最優(yōu)解。2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)CycleGAN如何進行內(nèi)容約束?如圖所示:圖中對輸出結果進行一次反變換,來對比原始輸入和反變換后的輸出間的差異即可進行內(nèi)容上的約束。類比語言翻譯:我的目的是將漢語風格的X(“神經(jīng)網(wǎng)絡真奇妙~”)
變換成英語Y。生成器G相當于翻譯機,經(jīng)過GAN的過程可以有多個翻譯結果:例如1,“神經(jīng)netveryfun”;2,“neuralnetwork真好玩”;3,“neuralnetworkveryfantastic”;4,“Iamveryhandsome”
,判斷器D的任務是判斷哪個結果更像英語,因此判斷器給出的結果可能是3,也可能是4,因為它們都是英語。但是,顯然4是不對的。那要如何進行約束呢?只需要再進行一次反變換,判斷其結果和原始輸出之間的差別即可。經(jīng)過CycleGAN的過程,得到3的結果是神經(jīng)網(wǎng)絡真奇妙,與原始輸入結果(神經(jīng)網(wǎng)絡真奇妙)的距離為0,4的結果與原始結果的距離就很大了。這便達到了內(nèi)容約束的目的。2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)將后半部分進行翻轉就形成了一個閉環(huán),如圖6-7-6所示,這就是CycleGAN名字的由來??偨Y一下,CycleGAN使用兩個不同風格的數(shù)據(jù)集,通過優(yōu)化對抗損失來達到風格約束的目的,這一過程需要生成器和判別器兩個網(wǎng)絡組成;CycleGAN又通過一次反向變化來達到內(nèi)容約束的目的,同樣,這一過程也需要生成器和判別器兩個網(wǎng)絡組成。因此CycleGAN的網(wǎng)絡組成部分是兩個生成器和兩個判別器四部分,loss組成部分是對抗loss和原始輸入與反變換后輸出的內(nèi)容距離loss兩部分組成。2循環(huán)一致對抗生成網(wǎng)絡(CycleGAN)由于GAN網(wǎng)絡在圖像生成領域的效果卓越,因此也廣泛應用于風格轉換,各種基于GAN的變體都能達到風格轉換的效果。CycleGAN是其中非常有創(chuàng)新性的代表模型。下圖則是使用CycleGAN進行風格轉化的一些示例圖:ThankYOU!基于CycleGAN的圖像風格遷移案例描述01任務案例目標02任務案例分析03任務案例實施04任務1案例描述1案例描述本案例將學習如何使用搭建一個CycleGAN風格遷移網(wǎng)絡,通過訓練該網(wǎng)絡實現(xiàn)斑馬和馬的風格互換。2案例目標案例目標學會搭建一個完整的CycleGAN風格遷移網(wǎng)絡;
設計出CycleGAN網(wǎng)絡的風格遷移損失,包括內(nèi)容損失和風格損失;使用訓練后的CycleGAN網(wǎng)絡實現(xiàn)斑馬與馬的風格轉換。23案例分析案例分析上節(jié)已經(jīng)了解到,CycleGAN是由兩個生成器和兩個判別器組成。如圖6-7-6,X表示X域的圖像,Y表示Y域的圖像。X域的圖像經(jīng)過生成器G生成Y域的圖像,再經(jīng)過生成器F重構回X域輸入的原圖像;Y域的圖像經(jīng)過生成器F生成X域圖像,再經(jīng)過生成器G重構回Y域輸入的原圖像。判別器D_x和D_y起到判別作用,確保圖像的風格遷移。對于X域轉化為Y域的生成器G和判別器D_y建立損失函數(shù)如下所示:3案例分析對于重構回Y域的圖像,建立循環(huán)一致性損失函數(shù)如下所示:CycleGAN的訓練的總體損失函數(shù)以下所示:總而言之,CycleGAN想要達到的目的是,完成兩個域之間的風格轉換,在風格轉換的同時,又要確保圖中物體的幾何形狀和空間關系不發(fā)生變化。34案例實施4案例實施 1.導庫安裝
tensorflow_examples
包,以導入生成器和判別器。pipinstallgit導入程序運行所需要庫,其中pix2pix是基于GAN實現(xiàn)圖像翻譯,更準確地講是基于cGAN(conditionalGAN,也叫條件GAN)。因為cGAN可以通過添加條件信息來指導圖像生成,因此在圖像翻譯中就可以將輸入圖像作為條件,學習從輸入圖像到輸出圖像之間的映射,從而得到指定的輸出圖像。而其它基于GAN來做圖像翻譯的,因為GAN算法的生成器是基于一個隨機噪聲生成圖像,難以控制輸出。因此基本上都是通過其他約束條件來指導圖像生成,而不是利用cGAN,這是pix2pix和其他基于GAN做圖像翻譯的差異。4案例實施2.數(shù)據(jù)預處理加載數(shù)據(jù)庫中訓練和測試圖片。dataset,metadata=tfds.load('cycle_gan/horse2zebra',with_info=True,as_supervised=True)train_horses,train_zebras=dataset['trainA'],dataset['trainB']test_horses,test_zebras=dataset['testA'],dataset['testB']隨機裁剪圖片至同一尺寸。cropped_image=tf.image.random_crop(image,size=[IMG_HEIGHT,IMG_WIDTH,3])4案例實施將圖片進行標準化處理。image=(image/127.5)–1返回隨機抖動的圖片。image=tf.image.resize(image,[286,286],method=tf.image.ResizeMethod.N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026年小學五年級語文(考點梳理)下學期期末試題及答案
- 2025年中職老年服務與管理(養(yǎng)老護理基礎)試題及答案
- 2026年中職第一學年(數(shù)控專業(yè))數(shù)控加工工藝試題及答案
- 2025年大學大三(醫(yī)學影像學)醫(yī)學影像技術學基礎試題及答案
- 高三歷史(沖刺訓練)2026年上學期單元測試卷
- 2025年高職食品加工(食品保鮮)試題及答案
- 七、電氣識圖入門基礎
- 深度解析(2026)《GBT 18208.2-2001地震現(xiàn)場工作 第2部分建筑物安全鑒定》
- 深度解析(2026)《GBT 18042-2000熱塑性塑料管材蠕變比率的試驗方法》
- 武漢信息傳播職業(yè)技術學院《包裝與型錄設計》2025-2026學年第一學期期末試卷
- 中建通風與空調施工方案
- 幼兒園中班安全教育《這些東西能吃嗎》
- 深度冷凍法生產(chǎn)氧氣及相關氣體安全技術規(guī)程-宣貫培訓課件
- GB/T 34630.5-2017攪拌摩擦焊鋁及鋁合金第5部分:質量與檢驗要求
- GB/T 30476-2013木工機床鏈式單軸榫槽機術語和精度
- GB/T 16823.3-2010緊固件扭矩-夾緊力試驗
- 《線性代數(shù)》同濟大學版 課后習題答案詳解
- 心臟神經(jīng)癥與抑郁
- 視頻影像檔案管理系統(tǒng)整體解決方案
- GB∕T 22793-2022 兒童高椅安全性能試驗方法
- 電動客車培訓課件
評論
0/150
提交評論