PaperNotes(4)-高質量圖像生成-CGAN-StackGAN-Lapgan-Cyclegan-Pix2pixgan

cgan,stackgan,lapgan,cyclegan,pix2pixgan

  • 1.Conditional GAN
    • 1.1簡介
    • 1.2網絡結構與訓練
    • 1.3特點與用途
  • 2.Stack GAN
    • 2.1簡介
    • 2.2網絡結構與訓練
    • 2.3特點與用途
  • 3.Lap GAN
    • 3.1簡介
    • 3.2網絡結構與訓練
    • 3.3特點與用途
  • 4.Pix2pix GAN
    • 4.1 簡介
    • 4.2 網絡結構和訓練
    • 4.3 特點和用途
  • 5.Patch GAN
  • 6.Cycle GAN
    • 6.1簡介
    • 6.2網絡結構與訓練
    • 6.3特點與用途
  • 7.思考與待定

題記–如何生成高質量圖像,gan相關模型調研

1.基于散度距離的改進方案:f GAN, LSGAN, WGAN, WGAN-GP, SNGAN

2.基于網絡結構的改進方案:DCGAN, ImprovedDCGAN, SAGAN, BigGAN

3.由應用引發的改進方案:Conditional GAN, TripleGAN, StackGAN, LapGAN,PGGAN, SRGAN, CycleGAN,StarGAN

4.GAN在特征提取上的應用:InfoGAN,VAEGAN,BigGAN

1.Conditional GAN

Generative Adversarial Text to Image Synthesis [ICML 2016,http://arxiv.org/abs/1605.05396]

1.1簡介

論文:

條件GAN–生成的數據不僅要求逼真,還要求滿足一定的條件約束

文字約束–一只在奔跑的小狗;

圖像約束–生成圖像的框架輪廓約束,生成器就好像在輪廓的基礎上填充了顏色,繪制細節;

1.2網絡結構與訓練

生成網絡增加了條件輸入;
判別網絡用于判別生成的圖像與條件是否匹配,因此其需要三種類型的匹配對(生成圖像,匹配條件)(真實圖像,匹配條件)(真實圖像,不匹配條件);
在這里插入圖片描述
在這里插入圖片描述
訓練流程
在這里插入圖片描述

1.3特點與用途

1.能生成符合條件的圖像,但是現有數據集合成pair出現的很少;TripleGAN是基于 CGAN 的改進,主要用于解決配對數據少的問題,會訓練一個圖像標注模型。

2.不能生成大分辨率的高清圖,圖像細節缺失;StackGAN 也是基于 CGAN 的改進,它主要想C-GAN無法生成高清圖的問題。

3.有一個觀點:CGAN可以避免所有的隨機噪聲很產生相同的樣本(模式坍塌問題),不同的條件,可以產生不同的圖。

**思考:**條件要是文字形式的,會涉及到NLP,文字的表示方式;條件如果是圖像,就是img2img的問題,類似于上色,填充簡單細節。

參考博文:https://blog.csdn.net/taoyafan/article/details/81229466

2.Stack GAN

2.1簡介

StackGAN 希望輸入一個描述語 c,能夠產生一張 256256 的清晰大圖。通過兩個階段堆疊來實現這個過程。
第一個階段輸入(c,z)產生一個 64
64 的小圖x,
第二個節點輸入(c,x)產生一個256*256的大圖X

2.2網絡結構與訓練

在這里插入圖片描述
由結構圖可見,對于獲得的 text_embedding,stackGAN 沒有直接將 embedding 作為
condition,而是用 embedding 接了一個 FC 層得到了一個正態分布的均值和方差,然后從
這個正態分布中 采樣 出來要用的 condition。這樣做實際是做了一個降維處理,避免原始embeding高維稀疏,導致模型過擬合。(為了避免過擬合在生成器的loss上增加了一個正太分布的正則項)

兩個階段的損失函數為:
在這里插入圖片描述

2.3特點與用途

1.Conditioning Augmentation(CA) 條件增強技術

2.StackGAN 不能處理比較復雜的文本,李飛飛小組提出方法能處理更長更復雜的文本,并且有不錯的生成效果,論文地址:https://arxiv.org/abs/1804.01622。

思考:
1.要有同一張圖像的6464,256256大小的真圖。
2.感覺就像是兩個Conditional GAN 簡單的堆疊在一起,多增加了一個CA技術;
3.不要condition,直接級連的效果是不是等價于生成網絡層數加深?設計合適的級連結構,應該能夠生成合適大小的圖像才對呀?嘗試級連生成大分辨率的工作,在相關工作中應愛會介紹

參考博文:https://blog.csdn.net/a312863063/article/details/83574422

3.Lap GAN

3.1簡介

生成高分辨率圖像GAN模型的典型代表,利用拉普拉斯金字塔,由低分辨率生成高分辨圖像。金字塔的每一層都是一個C-GAN,其中下一級圖像的上采樣圖作為G的條件,生成本級真實圖像與上采樣圖像的殘差。

3.2網絡結構與訓練

采樣流程圖,自右向左分析
在這里插入圖片描述
訓練流程,自右向左分析
在這里插入圖片描述

3.3特點與用途

1.能生成較高分辨率的圖像,但是更高分辨率的圖像可能使用PGGAN,或者超分辨率GAN效果會更好一些。

2.實際都是C-GAN 的堆疊,只是G的條件是上采樣的圖,生成真圖和上采樣的殘差。

參考博文:https://zhuanlan.zhihu.com/p/94153155

4.Pix2pix GAN

4.1 簡介

從風格遷移說起:在深度學習興起后,16年有篇cvpr文章使用深度卷積網絡做風格遷移。隨著GAN網絡研究熱潮,人們開始研究使用gan 網絡做風格遷移。以下五個是比較典型風格遷移的工作。
pix2pix GAN (1611),CycleGAN (1703),DiscoGAN (1703),PAN( Perceptual Adversarial Networks)感知GAN (1706),StarGAN (1711)

pix2pix GAN 和 cycle GAN是同以作者,兩篇遞進式的工作。

pix2pix GAN工作出自Image-to-Image Translation with Conditional Adversarial Networks,實質還是用CGAN來做圖像轉換工作。

4.2 網絡結構和訓練

pix2pix gan 生成器和判別器的工作結構
在這里插入圖片描述
pix2pix gan 損失函數,L1是True黑與生成黑的像素間l1范數距離。
在這里插入圖片描述

4.3 特點和用途

1.pix2pix 主要做了G網絡結構的探索:Encoder-decoder 結構和U-net結構,圖像patch的操作

2.實質還是用CGAN來做圖像轉換工作。

參考博文:https://blog.csdn.net/on2way/article/details/78768221

5.Patch GAN

主要對判別網絡做了改進,D輸出N*N的矩陣,每個元素為True/False,表示輸入圖像中的感受野的真假。

思考:標簽該怎么打?真實圖像給一個NN的True塊,生成圖像給一個NN的False塊?
主要是patch 操作?和pix2pix gan 中的patch有什么異同。

參考博文:https://blog.csdn.net/xiaoxifei/article/details/86506955
https://blog.csdn.net/weixin_35576881/article/details/88058040

6.Cycle GAN

6.1簡介

用原始GAN結構在生成網絡層數較深時,可能生成與輸入差別較大的圖像,就不是風格遷移,而是改頭換面, 忽略了輸入圖像長什么樣子。
在這里插入圖片描述
為了防止生成器學習到具有欺騙性的造假數據,需要保證生成器的輸出和原圖具有很高的相似性,就可以不丟失原圖的特征。

于是 CycleGAN 中加入了一個新的生成器,以第一個生成器的輸出作為輸入,希望輸出一個和原始輸入盡可能相似的圖。如果能夠還原回原始圖片,可以表明第一個生成器的輸出保留了大量原始圖片的特征,輸出結果是較為可靠的;而如果不能較好的還原回原始圖片,意味著第一個生成器輸出與輸入差別較大。

6.2網絡結構與訓練

單向cycle gan
在這里插入圖片描述
雙向cycle gan(很多博文中都是這個結構)
在這里插入圖片描述

6.3特點與用途

1.用來做風格遷移,在pix2pi的基礎上不需要pair的訓練樣本。

2.CycleGAN 存在一種問題,是它能學會把輸入的某些部分藏起來,然后在輸出的時候再還原回來。比較好理解,隱藏掉一些破壞風格相似性的“壞點”會更容易獲得判別器的高分。

思考:如何用實現圖像分辨率擴大的功能?

參考博文:https://blog.csdn.net/on2way/article/details/78768221

7.思考與待定

做高分辨率的實驗

1.cycle gan 似乎不是天生用來做分辨率變高的實驗的。

2.直接使用stack GAN,梯度信息傳不到前面–兩個生成器具分開訓練

3.CGAN的公式推導,如何與stein 變分合在一起–基本沒啥好推導的。

4.直接級連不需要條件的GAN–基本上沒有看到相關的文章

5.srgan 官網上提供了訓練好的超分辨率模型,可以嘗試一些圖像的超分辨率生成。但如果原圖是一團看不清的東西,基本也不了什么。

6.兩個網絡堆疊:兩個網絡同時訓練的比兩個網絡分開訓練難訓。改造了stack gan stage2 的GAN模型(去除條件輸入)堆疊模型在object101-airplane上表現好不錯,但是在cifar上的效果還是基本看不出來畫的是什么。

pg-gan,info gan 還沒有看多

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444939.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444939.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444939.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于c++的一些案例

之前做項目的時候,有時候會用到位,也就是將一些數據放在二進制里,然后存在數據庫中或者緩存在服務器上,取出來,然后要判斷某位是不是置0或1,然后再將某位置0或1(比如領多個獎勵的 游戲邏輯),之前有點傻,竟然用 << ,>>這些運算符計算,今天翻起以前好久不…

C++(1)--概況、開發工具、hello word

簡介1. 概況2. 開發工具3. mac 寫hello word4. c 基本概念5.兩個數相加代碼分解5.1編譯預處理命令# include5.2輸入輸出庫iostream6.注釋7.編碼規范《老九學堂C課程》《C primer》學習筆記。《老九學堂C課程》詳情請到B站搜索《老九零基礎學編程C入門》1. 概況 20世紀70年代&a…

class 和 struct的區別

C中的struct對C中的struct進行了擴充&#xff0c;它已經不再只是一個包含不同數據類型的數據結構了&#xff0c;它已經獲取了太多的功能。 struct能包含成員函數嗎&#xff1f; 能&#xff01; struct能繼承嗎&#xff1f; 能&#xff01;&#xff01; struct能實現多態嗎&…

leetcode206 反轉鏈表

反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 進階: 你可以迭代或遞歸地反轉鏈表。你能否用兩種方法解決這道題&#xff1f; 經典題不解釋 /*** Definition for singly-linked list.* public class ListNode…

淺議柔性數組

很多時候,柔性數組應用在了變長結構體中,如: StructPacket {Int state; Int len;

leetcode 152 乘積最大子序列

給定一個整數數組 nums &#xff0c;找出一個序列中乘積最大的連續子序列&#xff08;該序列至少包含一個數&#xff09;。 示例 1: 輸入: [2,3,-2,4] 輸出: 6 解釋: 子數組 [2,3] 有最大乘積 6。 示例 2: 輸入: [-2,0,-1] 輸出: 0 解釋: 結果不能為 2, 因為 [-2,-1] 不是子…

PaperNotes(5)-Conditional Generative Adversarial Nets

Conditional GAN 論文閱讀筆記Abstract1 Introduction2 Related Work3 Conditional Adversarial Nets3.1 Generative Adversarial Nets3.2 Conditional Adversarial Nets4 Experimental Results4.1 Unimodal4.2 Multimodal5 Future Work6.思考文章地址&#xff1a;https://arxi…

蛙泳姿勢教學

偶爾看到分享的一篇日志&#xff0c;記錄下&#xff0c;忙過這段時間努力學蛙泳。 蛙泳配合有一個順口溜&#xff0c;在講解蛙泳動作要領之前先介紹給大家&#xff1a;“劃手腿不動&#xff0c;收手再收腿&#xff0c;先伸胳膊后蹬腿&#xff0c;并攏伸直漂一會兒。”從順口溜中…

leetcode238 除本身以外數組的乘積

給定長度為 n 的整數數組 nums&#xff0c;其中 n > 1&#xff0c;返回輸出數組 output &#xff0c;其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘積。 示例: 輸入: [1,2,3,4] 輸出: [24,12,8,6] 說明: 請不要使用除法&#xff0c;且在 O(n) 時間復雜度內完…

C 和c++的一些雜想,想到哪兒寫到哪兒

關于C和c++一直有好多的程序猿在研究,研究區別研究相似的地方,究竟用那個預言好,沒有確定的說法,要看你做什么了。 初始化操作: 在初始化的時候,我們都知道C語言一般都是這樣處理的: int a=12; C++ 呢,除了這樣復制初始化之外還可以直接初始化: int a(12); 啊…

C++(2)--mac使用VScode 進行C++編譯、運行、調試

mac 使用VScode 進行C開發1.編譯的基礎概念2. mac 編譯c代碼2.1 查看編譯器情況2.2 安裝插件C/C&#xff0c;C/C Clang Command Adapte2.3新建一個C project2.3.1本地新建文件夾2.3.2新建mian.cpp文件2.3.3 編寫hello word demo2.4 代碼編譯&#xff0c;運行&#xff0c;調試2.…

boost庫linux編譯安裝

0.下載 1.解壓boost_1_49_0.tar.g然后放到/opt/ 2. 進入解壓后的文件夾 cd /opt/boost_1_49_0 3.將boost安裝配置在/boost/prefix目錄下 不過之前先 mkdir -p /boost/prefix

leetcode136 只出現一次的數字

給定一個非空整數數組&#xff0c;除了某個元素只出現一次以外&#xff0c;其余每個元素均出現兩次。找出那個只出現了一次的元素。 說明&#xff1a; 你的算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎&#xff1f; 示例 1: 輸入: [2,2,1] 輸出: 1 示例 2: …

C++(3)--編譯、gdb調試

3--編譯和執行過程1.編譯2.gdb調試gdb 查coreGCC是一個編譯套件&#xff0c;是一個以"gcc"命令為首的源碼施工隊。施工隊的成員有gcc、cpp、as、ld四個成員 預處理–宏定義展開&#xff0c;頭文件引入-- cpp 等價于 gcc -E編譯–C語言->匯編語言–gcc -S匯編–匯…

leetcode94 二叉樹的中序遍歷

給定一個二叉樹&#xff0c;返回它的中序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2] 進階: 遞歸算法很簡單&#xff0c;你可以通過迭代算法完成嗎&#xff1f; 遞歸 /*** Definition for a binary tree node.* public class TreeNode …

使用動態鏈接庫

1. 動態鏈接庫是程序運行時加載的庫,當動態鏈接庫正確安裝后,所有的程序都可以使用動態庫來運行程序。動態鏈接庫是目標文件的集合,目標文件在動態鏈接庫中的組織方式是按照特殊方式形成的。庫中函數和變量的地址是相對地址,不是絕對地址,其真實地址在調用動態庫的程序加載…

算法(29)--兩棵樹匹配

樹匹配1.劍指 Offer 26. 樹的子結構2.劍指 Offer 27. 二叉樹的鏡像3.劍指 Offer 28. 對稱的二叉樹1.劍指 Offer 26. 樹的子結構 判斷&#xff1a;小樹B是否是大樹A的一部分&#xff0c;需要以大樹A的每個為根節點進行匹配判斷。 算法&#xff1a;判斷兩個節點是否相等&#xf…

leetcode647 回文子串

給定一個字符串&#xff0c;你的任務是計算這個字符串中有多少個回文子串。 具有不同開始位置或結束位置的子串&#xff0c;即使是由相同的字符組成&#xff0c;也會被計為是不同的子串。 示例 1: 輸入: "abc" 輸出: 3 解釋: 三個回文子串: "a", "…

windows下關于Objective-C開發環境的配置

最近IOS一直很火&#xff0c;也想學習以以下OC開發&#xff0c;一般裝個虛擬機&#xff0c;然后裝個mac&#xff0c;我相信大多數人的機子跑不起來或者很卡&#xff0c;所以之前借鑒了一個文章&#xff0c;就是關于在windows下配置OC開發環境&#xff0c;這里我把自己的安裝說一…

如何選擇商鋪投資

如何選擇商鋪&#xff1f; 選擇商鋪時&#xff0c;需要考慮哪些因素呢&#xff1f; 聶先生表示&#xff0c;要看地段&#xff0c;包括周圍的商業環境、停車方便程度、汽車流量、未來發展前景、視覺效果等因素。此外&#xff0c;地域經濟也很重要&#xff0c;必須要有一個好的投…