網(wǎng)站開(kāi)發(fā)規(guī)劃書(shū)龍巖網(wǎng)站推廣
一、說(shuō)明
????????循環(huán)生成對(duì)抗網(wǎng)絡(luò)(CycleGAN)是一種訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)以執(zhí)行圖像到圖像翻譯任務(wù)的方法。網(wǎng)絡(luò)使用不成對(duì)的數(shù)據(jù)集學(xué)習(xí)輸入和輸出圖像之間的映射。
二、基本介紹
????????CycleGAN 是圖像到圖像的翻譯模型,就像Pix2Pix一樣。Pix2Pix模型面臨的主要挑戰(zhàn)是訓(xùn)練所需的數(shù)據(jù)應(yīng)該配對(duì),即源域和目標(biāo)域的圖像應(yīng)該位于相同的位置,并且兩個(gè)域的圖像數(shù)量也應(yīng)該相同。
????????循環(huán)生成對(duì)抗網(wǎng)絡(luò)(CycleGAN)是一種訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)以執(zhí)行圖像到圖像翻譯任務(wù)的方法。網(wǎng)絡(luò)使用不成對(duì)的數(shù)據(jù)集學(xué)習(xí)輸入和輸出圖像之間的映射。例如:從 SAR 生成 RGB 圖像、從 RGB 生成多光譜圖像、從衛(wèi)星圖像生成地圖路線等。
????????該模型是 Pix2Pix 架構(gòu)的擴(kuò)展,涉及兩個(gè)生成器模型和兩個(gè)判別器模型的同時(shí)訓(xùn)練。除了 Pix2Pix 的功能之外,我們還可以使用不配對(duì)的數(shù)據(jù)集,并且還可以使用相同的模型反向轉(zhuǎn)換圖像(目標(biāo)到源圖像)。
三、模型架構(gòu)
圖 1. CycleGAN 架構(gòu)概述:從衛(wèi)星圖像轉(zhuǎn)換到地圖路線域 [3]
????????要了解 GAN 的基礎(chǔ)知識(shí),可以參考Pix2Pix 指南。
????????該模型架構(gòu)由兩個(gè)生成器模型組成:一個(gè)生成器(Generator-A)用于生成第一個(gè)域(Domain-A)的圖像,第二個(gè)生成器(Generator-B)用于生成第二個(gè)域(Domain-B)的圖像。
- 域-B ->生成器-A?-> 域-A
- 域-A ->生成器-B?-> 域-B
????????每個(gè)生成器都有一個(gè)相應(yīng)的判別器模型(判別器-A 和判別器-B)。鑒別器模型從域中獲取真實(shí)圖像并從生成器中獲取生成的圖像來(lái)預(yù)測(cè)它們是真還是假。
- 域-A ->鑒別器-A?-> [真/假]
- 域-B -> 生成器-A ->判別器-A?-> [真/假]
- 域-B ->鑒別器-B?-> [真/假]
- 域-A -> 生成器-B ->判別器-B?-> [真/假]
在 中arcgis.learn
,所有判別器和生成器都被分組為一個(gè)模型。
四、訓(xùn)練時(shí)loss是如何計(jì)算的?
????????用于訓(xùn)練生成器的損失由三部分組成:
- ????????對(duì)抗性損失:我們將對(duì)抗性損失應(yīng)用于兩個(gè)生成器,其中生成器嘗試生成其域的圖像,而其相應(yīng)的判別器區(qū)分翻譯樣本和真實(shí)樣本。生成器的目標(biāo)是最小化這種損失,而相應(yīng)的判別器則試圖最大化這種損失。
- ????????循環(huán)一致性損失:它捕捉到了這樣的直覺(jué):如果我們將圖像從一個(gè)域轉(zhuǎn)換到另一個(gè)域并再次轉(zhuǎn)換回來(lái),我們應(yīng)該到達(dá)我們開(kāi)始的地方。因此,它計(jì)算原始圖像和最終生成圖像之間的 L1 損失,該圖像應(yīng)該看起來(lái)與原始圖像相同。從兩個(gè)方向進(jìn)行計(jì)算:
- 正向循環(huán)一致性:域-B ->生成器-A?-> 域-A ->生成器-B?-> 域-B
- 后向循環(huán)一致性:Domain-A ->?Generator-B?-> Domain-B ->?Generator-A?-> Domain-A
- ????????身份丟失:它鼓勵(lì)生成器保留輸入和輸出之間的顏色成分。這是通過(guò)向生成器提供目標(biāo)域的圖像作為輸入并計(jì)算輸入和生成圖像之間的 L1 損失來(lái)完成的。
* Domain-A -> **Generator-A** -> Domain-A
* Domain-B -> **Generator-B** -> Domain-B
????????由于所有這些損失函數(shù)在獲得高質(zhì)量結(jié)果方面都發(fā)揮著關(guān)鍵作用。因此,這兩個(gè)生成器模型都是通過(guò)所有這些損失函數(shù)的組合來(lái)優(yōu)化的。
五、實(shí)施于arcgis.learn
????????首先,我們必須使用arcgis pro中的格式導(dǎo)出圖像芯片,然后使用中的函數(shù)Export Tiles
創(chuàng)建一個(gè)databunchprepare_data
arcgis.learn
data = arcgis.learn.prepare_data(path=r"path/to/exported/data", dataset_type='CycleGAN')
????????要傳遞的重要參數(shù)是:
- 到
path
數(shù)據(jù)目錄。我們需要遵循圖2所示的目錄結(jié)構(gòu)。這里,“train_a”和“train_b”文件夾包含域A和B的圖像。
圖 2. 目錄結(jié)構(gòu)
- 為
dataset_type
“CycleGAN”。
????????創(chuàng)建數(shù)據(jù)束后,我們可以通過(guò)調(diào)用初始化 CycleGAN 對(duì)象
cyclegan_model = arcgis.learn.CycleGAN(data)
????????與其他一些模型不同,我們從頭開(kāi)始訓(xùn)練 CycleGAN,某些初始時(shí)期的學(xué)習(xí)率為 0.0002,然后在下一個(gè)時(shí)期將學(xué)習(xí)率線性衰減到零。
????????然后我們可以繼續(xù)基本的 arcgis.learn 工作流程。有關(guān) API 和模型的更多信息,請(qǐng)?jiān)L問(wèn)API 參考。
參考
[1] Jun-Yan Zhu,Taesung Park,Phillip Isola,Alexei A. Efros,“使用循環(huán)一致對(duì)抗網(wǎng)絡(luò)的不配對(duì)圖像到圖像翻譯”,2017;arXiv:1703.10593。
[2] Jason Brownlee:Cyclegan 教程。訪問(wèn)日期:2020 年 9 月 29 日。
[3]??涤詈?、高松和羅伯特·E·羅斯。“使用生成對(duì)抗網(wǎng)絡(luò)傳輸多尺度地圖樣式?!?國(guó)際制圖雜志 5,no。2-3(2019):115-141。