【計算機視覺|生成對抗】StackGAN:使用堆疊生成對抗網絡進行文本到照片逼真圖像合成

本系列博文為深度學習/計算機視覺論文筆記,轉載請注明出處

標題:StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks

鏈接:[1612.03242] StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks (arxiv.org)

摘要

從文本描述合成高質量圖像是計算機視覺中的一個具有挑戰性的問題,具有許多實際應用。現有的文本到圖像方法生成的樣本大致能夠反映出給定描述的意思,但它們缺乏必要的細節和生動的物體部分。在本文中,我們提出了堆疊生成對抗網絡(StackGAN)來生成基于文本描述的 256×256 照片逼真圖像。我們通過一個素描精化過程將這個難題分解為更易管理的子問題。第一階段生成對抗網絡(Stage-I GAN)根據給定的文本描述勾勒出物體的原始形狀和顏色,生成第一階段的低分辨率圖像。第二階段生成對抗網絡(Stage-II GAN)以第一階段的結果和文本描述作為輸入,生成帶有照片逼真細節的高分辨率圖像。它能夠通過精化過程矯正第一階段結果中的缺陷,并添加引人注目的細節。為了提高合成圖像的多樣性并穩定條件生成對抗網絡的訓練,我們引入了一種新穎的條件增強技術,鼓勵在潛在條件空間中的平滑性。在基準數據集上進行的大量實驗和與最先進方法的比較表明,所提出的方法在基于文本描述生成照片逼真圖像方面取得了顯著的改進。

1. 引言

從文本生成逼真的圖像是一個重要的問題,具有廣泛的應用,包括照片編輯、計算機輔助設計等。近年來,生成對抗網絡(GAN)[8, 5, 23] 在合成真實世界圖像方面取得了有希望的結果。在給定文本描述的條件下,條件生成對抗網絡(conditional GANs)[26, 24] 能夠生成與文本意義高度相關的圖像。

然而,通過文本描述訓練GAN生成高分辨率逼真圖像是非常困難的。僅僅在最先進的GAN模型中添加更多的上采樣層用于生成高分辨率(例如 256×256)圖像通常會導致訓練不穩定并產生荒謬的輸出(見圖1?)。GAN生成高分辨率圖像的主要困難在于自然圖像分布的支持和隱含模型分布的支持在高維像素空間中可能不重疊[31, 1]。隨著圖像分辨率的增加,這個問題變得更加嚴重。Reed等人僅在給定文本描述的情況下成功生成了可信的 64×64 圖像[26],但這些圖像通常缺乏細節和生動的物體部分,例如鳥類的嘴和眼睛。此外,他們無法在不提供額外物體注釋的情況下合成更高分辨率(例如 128×128)的圖像[24]。

圖1。比較所提出的 StackGAN 與普通的單階段 GAN 生成 256×256 圖像的效果。(a)在給定文本描述的情況下,StackGAN 的第一階段勾畫出對象的粗略形狀和基本顏色,生成低分辨率圖像。(b)StackGAN 的第二階段以第一階段的結果和文本描述作為輸入,生成帶有逼真細節的高分辨率圖像。(c)普通的 256×256 GAN 的結果,它僅僅在現有的 GAN-INT-CLS [26] 的基礎上添加了更多的上采樣層。它無法生成任何具有 256×256 分辨率的可信圖像。

類比于人類畫家的繪畫方式,我們使用堆疊生成對抗網絡(StackGAN)將文本到逼真圖像合成問題分解為兩個更易處理的子問題。首先,低分辨率圖像由第一階段生成對抗網絡(Stage-I GAN)生成(見圖1(a))。在第一階段生成對抗網絡的基礎上,我們堆疊第二階段生成對抗網絡(Stage-II GAN),以生成基于第一階段結果和文本描述的逼真高分辨率(例如 256×256)圖像(見圖1(b))。通過再次基于第一階段結果和文本描述進行條件化,第二階段生成對抗網絡學會捕捉第一階段生成對抗網絡遺漏的文本信息,并為物體繪制更多細節。從大致對齊的低分辨率圖像生成的模型分布支持更可能與圖像分布的支持交叉。這就是為什么第二階段生成對抗網絡能夠生成更好的高分辨率圖像的根本原因。

此外,在文本到圖像生成任務中,有限數量的訓練文本-圖像對往往導致文本條件空間中的稀疏性,這種稀疏性使得訓練GAN變得困難。因此,我們提出了一種新穎的條件增強技術,以鼓勵潛在條件空間的平滑性。它允許在條件空間中進行小的隨機擾動,并增加合成圖像的多樣性。

所提出方法的貢獻有三個方面:

  1. 我們提出了一種新穎的堆疊生成對抗網絡,用于從文本描述合成逼真的圖像。它將生成高分辨率圖像的困難問題分解為更易管理的子問題,并顯著改進了現有技術水平。StackGAN首次能夠從文本描述中生成具有逼真細節的 256×256 分辨率圖像。
  2. 提出了一種新的條件增強技術,用于穩定條件生成對抗網絡的訓練,同時也提高了生成樣本的多樣性。
  3. 大量的定性和定量實驗證明了整體模型設計的有效性,以及各個組件的效果,這為設計未來的條件生成對抗網絡模型提供了有用的信息。我們的代碼可在 https://github.com/hanzhanggit/StackGAN 上獲取。

2. 相關工作

生成圖像模型是計算機視覺中的一個基本問題。隨著深度學習技術的出現,這方向取得了顯著的進展。變分自編碼器(VAE)[13, 28] 使用概率圖模型來制定問題,其目標是最大化數據似然的下界。自回歸模型(例如,PixelRNN)[33] 利用神經網絡來建模像素空間的條件分布,也生成了吸引人的合成圖像。最近,生成對抗網絡(GAN)[8] 在生成更銳利的圖像方面表現出有希望的性能。但是,訓練不穩定性使得GAN模型難以生成高分辨率(例如 256×256)圖像。已經提出了幾種技術[23, 29, 18, 1, 3] 來穩定訓練過程并生成引人注目的結果。基于能量的GAN[38] 也被提出用于更穩定的訓練行為。

在這些生成模型的基礎上,還研究了條件圖像生成。大多數方法使用簡單的條件變量,如屬性或類標簽[37, 34, 4, 22]。還有以圖像為條件生成圖像的工作,包括照片編輯[2, 39]、域轉移[32, 12] 和超分辨率[31, 15]。然而,超分辨率方法[31, 15] 只能對低分辨率圖像添加有限的細節,無法像我們提出的StackGAN那樣糾正大的缺陷。近期,已經開發了幾種從非結構化文本生成圖像的方法。Mansimov等人[17] 構建了一個AlignDRAW模型,通過學習估計文本和生成畫布之間的對齊。Reed等人[27] 使用條件PixelCNN根據文本描述和物體位置約束生成圖像。Nguyen等人[20] 使用近似的Langevin采樣方法生成基于文本的圖像。然而,他們的采樣方法需要一個低效的迭代優化過程。通過條件GAN,Reed等人[26] 成功地基于文本描述為鳥類和花朵生成了可信的 64×64 圖像。他們的后續工作[24] 能夠通過利用物體部位位置的額外注釋生成 128×128 圖像。

除了使用單個GAN生成圖像外,還有一些工作[36, 5, 10] 使用一系列GAN來生成圖像。Wang等人[36] 使用提出的 S 2 ? G A N S^2-GAN S2?GAN,將室內場景生成過程分解為結構生成和樣式生成。相反,我們的StackGAN的第二階段旨在基于文本描述完善物體細節并矯正第一階段結果的缺陷。Denton等人[5] 在拉普拉斯金字塔框架內構建了一系列GAN。在金字塔的每個層級中,基于前一階段的圖像條件生成了一個剩余圖像,然后將其添加回輸入圖像,生成下一階段的輸入。與我們的工作同時進行,Huang等人[10] 也展示了通過堆疊多個GAN來重構預訓練鑒別模型的多級表示,從而生成更好的圖像。然而,他們只成功地生成了 32×32 圖像,而我們的方法利用了更簡單的架構,生成了具有逼真細節的 256×256 圖像,像素數量增加了64倍。

3. 堆疊生成對抗網絡

為了生成具有逼真細節的高分辨率圖像,我們提出了一個簡單但有效的堆疊生成對抗網絡(Stacked GANs)。它將文本到圖像生成過程分解為兩個階段(見圖2)。

圖2。所提出的 StackGAN 的架構。第一階段生成器通過從給定的文本勾畫出對象的粗略形狀和基本顏色,并從隨機噪聲向量中繪制背景來生成低分辨率圖像。在第一階段的結果的條件下,第二階段生成器修復缺陷并將引人注目的細節添加到第一階段的結果中,從而生成更加逼真的高分辨率圖像。

  • 第一階段生成對抗網絡(Stage-I GAN):它根據給定的文本描述勾勒出物體的原始形狀和基本顏色,并從隨機噪聲向量中生成背景布局,生成低分辨率圖像。
  • 第二階段生成對抗網絡(Stage-II GAN):它糾正了第一階段低分辨率圖像中的缺陷,并通過再次讀取文本描述來完善物體的細節,生成高分辨率照片逼真的圖像。

3.1. 預備知識

生成對抗網絡(GAN)[8] 由兩個模型組成,它們交替訓練以相互競爭。生成器 G 優化以重現真實數據分布 pdata,通過生成對判別器 D 難以與真實圖像區分的圖像。與此同時,判別器 D 優化以區分真實圖像和生成器 G 生成的合成圖像。整體而言,訓練過程類似于一個兩人零和博弈,其目標函數如下:

min ? G max ? D V ( D , G ) = E x ~ p data [ log ? D ( x ) ] + E z ~ p z [ log ? ( 1 ? D ( G ( z ) ) ) ] (1) \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))] \tag{1} Gmin?Dmax?V(D,G)=Expdata??[logD(x)]+Ezpz??[log(1?D(G(z)))](1)

其中 x x x 是來自真實數據分布 p d a t a p_{data} pdata? 的真實圖像, z z z 是從分布 p z p_z pz?(例如均勻分布或高斯分布)中采樣的噪聲向量。

條件生成對抗網絡(Conditional GAN)[7, 19] 是GAN的一個擴展,其中生成器和判別器都接收額外的條件變量 c c c,得到 G ( z , c ) G(z, c) G(z,c) D ( x , c ) D(x, c) D(x,c)。這種表述允許生成器 G 基于變量 c c c 生成圖像。

3.2. 條件增強

如圖2所示,首先通過編碼器對文本描述 t t t 進行編碼,得到文本嵌入 ? t \phi_t ?t?。在以前的工作中[26, 24],文本嵌入被非線性地轉化為生成器的輸入條件潛變量。然而,文本嵌入的潛在空間通常是高維的(> 100維)。在有限數量的數據情況下,它通常會導致潛在數據流形中的不連續性,這對于學習生成器是不可取的。為了緩解這個問題,我們引入了一種“條件增強”技術來生成額外的條件變量 c ^ \hat{c} c^。與[26, 24]中固定的條件文本變量 c c c 不同,我們從獨立的高斯分布 N ( μ ( ? t ) , Σ ( ? t ) ) N(\mu(\phi_t), \Sigma(\phi_t)) N(μ(?t?),Σ(?t?)) 隨機采樣潛在變量 c ^ \hat{c} c^,其中均值 μ ( ? t ) \mu(\phi_t) μ(?t?) 和對角協方差矩陣 Σ ( ? t ) \Sigma(\phi_t) Σ(?t?) 是文本嵌入 ? t \phi_t ?t? 的函數。所提出的條件增強在少量圖像-文本對的情況下產生更多的訓練對,從而鼓勵對條件流形上的小擾動具有穩健性。為了進一步強制在條件流形上實現平滑性并避免過擬合[6, 14],我們在訓練過程中為生成器的目標函數添加了以下正則化項:

D K L ( N ( μ ( ? t ) , Σ ( ? t ) ) ∣ ∣ N ( 0 , I ) ) (2) D_{KL}(N(\mu(\phi_t), \Sigma(\phi_t)) || N(0, I)) \tag{2} DKL?(N(μ(?t?),Σ(?t?))∣∣N(0,I))(2)

其中 D K L D_{KL} DKL? 是標準高斯分布和條件高斯分布之間的Kullback-Leibler散度(KL散度)。條件增強引入的隨機性有助于模型文本到圖像的翻譯,因為同一句子通常對應于具有不同姿勢和外觀的物體。

3.3. 第一階段生成對抗網絡(Stage-I GAN)

與直接在文本描述的條件下生成高分辨率圖像不同,我們將任務簡化為首先使用我們的第一階段生成對抗網絡生成低分辨率圖像,該階段僅關注為物體繪制粗糙的形狀和正確的顏色。

設文本描述 t t t 的文本嵌入為 ? t \phi_t ?t?,在本文中由預訓練的編碼器[25]生成。用于文本嵌入的高斯條件變量 c 0 ^ \hat{c_0} c0?^? N ( μ 0 ( ? t ) , Σ 0 ( ? t ) ) N(\mu_0(\phi_t), \Sigma_0(\phi_t)) N(μ0?(?t?),Σ0?(?t?)) 中采樣,以捕捉 ? t \phi_t ?t? 的含義及其變化。在給定 c 0 ^ \hat{c_0} c0?^? 和隨機變量 z z z 的條件下,通過交替地最大化 Eq. (3) 中的 L D 0 LD0 LD0 和最小化 Eq. (4) 中的 L G 0 LG0 LG0,第一階段生成對抗網絡訓練判別器 D 0 D0 D0 和生成器 G 0 G0 G0

L D 0 = E ( I 0 , t ) ~ p data [ log ? D 0 ( I 0 , ? t ) ] + E ( z , t ) ~ p z , p data [ log ? ( 1 ? D 0 ( G 0 ( z , c 0 ^ ) , ? t ) ) ] (3) L_{D_0} = \mathbb{E}_{(I_0,t) \sim p_{\text{data}}}[ \log D_0(I_0, \phi_t)] + \mathbb{E}_{(z,t) \sim p_z, p_{\text{data}}}[ \log(1 - D_0(G_0(z, \hat{c_0}), \phi_t))] \tag{3} LD0??=E(I0?,t)pdata??[logD0?(I0?,?t?)]+E(z,t)pz?,pdata??[log(1?D0?(G0?(z,c0?^?),?t?))](3)

L G 0 = E ( z , t ) ~ p z , p data [ log ? ( 1 ? D 0 ( G 0 ( z , c 0 ^ ) , ? t ) ) ] + λ D K L ( N ( μ 0 ( ? t ) , Σ 0 ( ? t ) ) ∣ ∣ N ( 0 , I ) ) (4) L_{G_0} = \mathbb{E}_{(z,t) \sim p_z, p_{\text{data}}}[ \log(1 - D_0(G_0(z, \hat{c_0}), \phi_t))] + \lambda D_{KL}(N(\mu_0(\phi_t), \Sigma_0(\phi_t))|| N(0, I)) \tag{4} LG0??=E(z,t)pz?,pdata??[log(1?D0?(G0?(z,c0?^?),?t?))]+λDKL?(N(μ0?(?t?),Σ0?(?t?))∣∣N(0,I))(4)

其中真實圖像 I 0 I0 I0 和文本描述 t t t 來自真實數據分布 p data p_{\text{data}} pdata? z z z 是從給定分布 p z p_z pz?(在本文中為高斯分布)中隨機采樣的噪聲向量。 λ \lambda λ 是在 Eq. (4) 中平衡兩項的正則化參數。我們在所有實驗中都將 λ \lambda λ 設置為 1。利用 [13] 中引入的重新參數化技巧, μ 0 ( ? t ) \mu_0(\phi_t) μ0?(?t?) Σ 0 ( ? t ) \Sigma_0(\phi_t) Σ0?(?t?) 與網絡的其余部分一起聯合學習。

模型架構:對于生成器 G 0 G0 G0,為了獲得文本條件變量 c 0 ^ \hat{c_0} c0?^?,首先將文本嵌入 ? t \phi_t ?t? 輸入到一個全連接層中,以生成 Gaussian 分布 N ( μ 0 , Σ 0 ) N(\mu_0, \Sigma_0) N(μ0?,Σ0?) μ 0 \mu_0 μ0? Σ 0 \Sigma_0 Σ0? Σ 0 \Sigma_0 Σ0? Σ 0 \Sigma_0 Σ0? 對角線上的值)。然后,從高斯分布中采樣得到 c 0 ^ \hat{c_0} c0?^?。我們的 Ng 維條件向量 c 0 ^ \hat{c_0} c0?^? 通過 c 0 ^ = μ 0 + Σ 0 ⊙ ε \hat{c_0} = \mu_0 + \Sigma_0 \odot \varepsilon c0?^?=μ0?+Σ0?ε 計算得出(其中 ⊙ \odot 是逐元素乘法, ε ~ N ( 0 , I ) \varepsilon \sim N(0, I) εN(0,I))。然后,通過一系列上采樣塊生成一個 W 0 × H 0 W_0 × H_0 W0?×H0? 圖像,其中 c 0 ^ \hat{c_0} c0?^? 與一個 N z N_z Nz? 維噪聲向量連接在一起。

對于判別器 D 0 D_0 D0?,首先使用全連接層將文本嵌入 ? t \phi_t ?t? 壓縮為 Nd 維,然后進行空間復制,形成一個 M d × M d × N d M_d × M_d × N_d Md?×Md?×Nd? 張量。與此同時,圖像通過一系列下采樣塊直到具有 M d × M d M_d × M_d Md?×Md? 的空間尺寸。然后,圖像濾波器映射沿著通道維度與文本張量連接。所得到的張量進一步輸入到一個 1 × 1 1×1 1×1 卷積層中,以共同學習圖像和文本之間的特征。最后,使用一個節點的全連接層產生決策分數。

3.4. 第二階段生成對抗網絡(Stage-II GAN)

由第一階段生成對抗網絡生成的低分辨率圖像通常缺乏生動的物體部分,并可能包含形狀扭曲。一些文本中的細節在第一階段可能也被忽略了,而這些細節對于生成逼真的圖像至關重要。我們的第二階段生成對抗網絡基于第一階段的結果生成高分辨率圖像。它在低分辨率圖像的基礎上以及再次使用文本嵌入來糾正第一階段結果的缺陷。第二階段生成對抗網絡完善先前被忽略的文本信息,以生成更多逼真的細節。

在低分辨率結果 s 0 = G 0 ( z , c 0 ^ ) s0 = G0(z, \hat{c_0}) s0=G0(z,c0?^?) 和高斯潛變量 c ^ \hat{c} c^ 的條件下,通過交替地最大化 Eq. (5) 中的 L D LD LD 和最小化 Eq. (6) 中的 L G LG LG,第二階段生成對抗網絡訓練判別器 D D D 和生成器 G G G

L D = E ( I , t ) ~ p data [ log ? D ( I , ? t ) ] + E ( s 0 , t ) ~ p G 0 , p data [ log ? ( 1 ? D ( G ( s 0 , c ? ) , ? t ) ) ] (5) L_D = \mathbb{E}_{(I,t) \sim p_{\text{data}}}[ \log D(I, \phi_t)] + \mathbb{E}_{(s_0,t) \sim p_{G_0}, p_{\text{data}}}[ \log(1 - D(G(s_0, c?), \phi_t))] \tag{5} LD?=E(I,t)pdata??[logD(I,?t?)]+E(s0?,t)pG0??,pdata??[log(1?D(G(s0?,c?),?t?))](5)

L G = E ( s 0 , t ) ~ p G 0 , p data [ log ? ( 1 ? D ( G ( s 0 , c ? ) , ? t ) ) ] + λ D K L ( N ( μ ( ? t ) , Σ ( ? t ) ) ∣ ∣ N ( 0 , I ) ) (6) L_G = \mathbb{E}_{(s_0,t) \sim p_{G0}, p_{\text{data}}}[ \log(1 - D(G(s_0, c?), \phi_t))] + \lambda D_{KL}(N(\mu(\phi_t), \Sigma(\phi_t))|| N(0, I)) \tag{6} LG?=E(s0?,t)pG0?,pdata??[log(1?D(G(s0?,c?),?t?))]+λDKL?(N(μ(?t?),Σ(?t?))∣∣N(0,I))(6)

與原始的 GAN 公式不同,假設隨機噪聲 z z z 在這個階段沒有被使用,因為隨機性已經由 s 0 s0 s0 保留。在此階段使用的高斯條件變量 c ^ \hat{c} c^ 與第一階段的 c 0 ^ \hat{c_0} c0?^? 共享相同的預訓練文本編碼器,生成相同的文本嵌入 ? t \phi_t ?t?。然而,第一階段和第二階段的條件增強使用不同的全連接層來生成不同的均值和標準差。通過這種方式,第二階段生成對抗網絡學習捕捉在文本嵌入中被第一階段忽略的有用信息。

模型架構:我們將第二階段生成器設計為一個帶有殘差塊[9]的編碼器-解碼器網絡。與前一階段類似,文本嵌入 ? t \phi_t ?t? 用于生成 N g N_g Ng? 維文本條件向量 c ^ \hat{c} c^,將其進行空間復制,形成一個 M g × M g × N g M_g×M_g×N_g Mg?×Mg?×Ng? 張量。與此同時,由第一階段生成對抗網絡生成的 s 0 s_0 s0? 通過多個下采樣塊(即編碼器)傳遞,直到具有 M g × M g M_g × M_g Mg?×Mg? 的空間尺寸。圖像特征與文本特征沿通道維度進行拼接。編碼的圖像特征與文本特征結合在一起,傳遞到多個殘差塊,這些塊旨在學習跨圖像和文本特征的多模態表示。最后,使用一系列上采樣層(即解碼器)來生成一個 W × H W × H W×H 的高分辨率圖像。這樣的生成器能夠在修正輸入圖像的缺陷的同時添加更多的細節,以生成逼真的高分辨率圖像。

對于判別器,其結構與第一階段判別器類似,只是在此階段由于圖像尺寸更大,額外的下采樣塊。為了明確地強制GAN學習圖像和條件文本之間更好的對齊,而不是使用傳統的判別器,我們對兩個階段都采用了 Reed 等人提出的匹配感知判別器[26]。在訓練過程中,判別器將真實圖像及其對應的文本描述作為正樣本對,而負樣本對則包括兩組。第一組是帶有不匹配文本嵌入的真實圖像,而第二組則是帶有對應文本嵌入的合成圖像。

3.5. 實現細節

上采樣塊由最近鄰上采樣和一個 3 × 3 3×3 3×3 步長 1 的卷積組成。在每個卷積之后都應用批歸一化 [11] 和 ReLU 激活函數,最后一個卷積之后沒有應用。殘差塊由 3 × 3 3×3 3×3 步長 1 的卷積、批歸一化和 ReLU 組成。在 128 × 128 128×128 128×128 的 StackGAN 模型中使用兩個殘差塊,而在 256 × 256 256×256 256×256 的模型中使用四個殘差塊。下采樣塊由 4 × 4 4×4 4×4 步長 2 的卷積、批歸一化和 LeakyReLU 組成,只有第一個下采樣塊沒有批歸一化。

默認情況下, N g = 128 N_g = 128 Ng?=128 N z = 100 N_z = 100 Nz?=100 M g = 16 M_g = 16 Mg?=16 M d = 4 M_d = 4 Md?=4 N d = 128 N_d = 128 Nd?=128 W 0 = H 0 = 64 W_0 = H_0 = 64 W0?=H0?=64 W = H = 256 W = H = 256 W=H=256。對于訓練,首先通過固定第二階段生成對抗網絡,迭代地訓練第一階段生成對抗網絡的 D 0 D_0 D0? G 0 G_0 G0?,共進行 600 個 epochs。然后通過固定第一階段生成對抗網絡,迭代地訓練第二階段生成對抗網絡的 D D D G G G,共進行另外 600 個 epochs。所有網絡都使用批量大小為 64 的 ADAM 求解器進行訓練,初始學習率為 0.0002。學習率每經過 100 個 epochs 衰減到其前一個值的一半。

4. 實驗

為了驗證我們的方法,我們進行了廣泛的定量和定性評估。我們將我們的方法與兩種最先進的文本到圖像合成方法 GAN-INT-CLS [26] 和 GAWWN [24] 進行比較。我們使用這兩種比較方法的作者發布的代碼生成了它們的結果。此外,我們設計了一些基線模型,以調查我們提出的 StackGAN 的整體設計和重要組件。首先,我們直接訓練 Stage-I GAN 生成 64×64 和 256×256 的圖像,以調查所提出的堆疊結構和條件增強是否有益。然后,我們修改了我們的 StackGAN 以生成 128×128 和 256×256 的圖像,以調查通過我們的方法生成更大圖像是否會導致更高的圖像質量。我們還調查了在 StackGAN 的兩個階段都輸入文本是否有用。

4.1. 數據集和評估指標

CUB [35] 包含 200 種鳥類,共 11,788 張圖像。由于該數據集中 80% 的鳥類的對象-圖像大小比小于 0.5 [35],作為預處理步驟,我們裁剪了所有圖像,以確保鳥類的邊界框具有大于 0.75 的對象-圖像大小比。Oxford-102 [21] 包含 8,189 張來自 102 種不同類別的花朵圖像。為了展示我們方法的泛化能力,我們還使用了更具挑戰性的 MS COCO 數據集 [16] 進行評估。與 CUB 和 Oxford-102 不同,MS COCO 數據集包含具有多個對象和各種背景的圖像。它有一個包含 80,000 張圖像的訓練集和包含 40,000 張圖像的驗證集。COCO 數據集中的每個圖像都有 5 個描述,而 CUB 和 Oxford-102 數據集中的每個圖像都有 10 個描述。根據 [26] 中的實驗設置,我們直接使用了 COCO 數據集的訓練集和驗證集,同時將 CUB 和 Oxford-102 數據集拆分成類不相交的訓練和測試集。

評估指標。評估生成模型(例如 GAN)的性能是困難的。我們選擇了最近提出的數值評估方法 “Inception Score” [29] 進行定量評估。
I = exp ? ( E x D KL ( p ( y ∣ x ) ∣ ∣ p ( y ) ) ) I = \exp\left(\mathbb{E}_x D_{\text{KL}}\left(p(y|x) || p(y)\right)\right) I=exp(Ex?DKL?(p(yx)∣∣p(y)))

其中, x x x 表示一個生成的樣本, y y y 是 Inception 模型 [30] 預測的標簽。這個指標背后的思想是,良好的模型應該生成多樣但有意義的圖像。因此,邊際分布 p ( y ) p(y) p(y) 與條件分布 p ( y ∣ x ) p(y|x) p(yx) 之間的 KL 散度應該很大。在我們的實驗中,我們直接使用預訓練的 Inception 模型來評估 COCO 數據集。對于細粒度數據集 CUB 和 Oxford-102,我們為每個數據集微調了一個 Inception 模型。正如 [29] 中所建議的,我們對每個模型評估這個指標,使用大量樣本(例如,隨機選擇的 30,000 個樣本)。

盡管 Inception Score 已經顯示與人類對樣本視覺質量的感知有很好的相關性 [29],但它無法反映生成的圖像是否在給定的文本描述條件下良好。因此,我們還進行了人類評估。我們從 CUB 和 Oxford-102 的每個類別的測試集中隨機選擇了 50 個文本描述。對于 COCO 數據集,我們從其驗證集中隨機選擇了 4,000 個文本描述。對于每個句子,我們由 10 名用戶(不包括任何作者)來排名不同方法的結果。計算人類用戶的平均排名來評估所有比較方法。

4.2. 定量和定性結果

我們將我們的 StackGAN 與 CUB、Oxford-102 和 COCO 數據集上的最先進文本到圖像方法 [24, 26] 進行了比較。我們提供的 StackGAN 和比較方法的 Inception Score 和人類平均排名在 表1 中報告。在 圖3 和 圖4 中比較了一些代表性的示例。

表1。我們的 StackGAN、GAWWN [24] 和 GAN-INT-CLS [26] 在 CUB、Oxford-102 和 MS-COCO 數據集上的 Inception 分數和平均人類排名。

圖3。使用 CUB 測試集中的文本描述為條件,我們的 StackGAN、GAWWN [24] 和 GAN-INT-CLS [26] 生成的示例結果。

圖4。使用 Oxford-102 測試集(最左邊的四列)和 COCO 驗證集(最右邊的四列)的文本描述作為條件,我們的 StackGAN 和 GAN-INT-CLS [26] 生成的示例結果。

我們的 StackGAN 在所有三個數據集上都獲得了最佳的 Inception Score 和平均人類排名。與 GAN-INT-CLS [26] 相比,在 CUB 數據集上,StackGAN 的 Inception Score 提高了 28.47%(從 2.88 提高到 3.70),在 Oxford-102 上提高了 20.30%(從 2.66 提高到 3.20)。我們的 StackGAN 的更好的平均人類排名也表明,我們提出的方法能夠生成更真實的、基于文本描述的樣本。

正如 圖3 所示,GAN-INT-CLS [26] 生成的 64×64 樣本只能反映鳥類的一般形狀和顏色。它們的結果在大多數情況下缺乏生動的部分(例如嘴巴和腿部)和令人信服的細節,使它們既不足夠逼真也沒有足夠高的分辨率。通過在位置約束上使用額外的條件變量,GAWWN [24] 在 CUB 數據集上獲得了更好的 Inception Score,但

仍略低于我們的方法。它生成的高分辨率圖像比 GAN-INT-CLS 更具細節,如 圖3 所示。然而,正如其作者所提到的,當只基于文本描述條件時,GAWWN 無法生成任何合理的圖像 [24]。相比之下,我們的 StackGAN 可以僅從文本描述生成 256×256 的照片逼真圖像。

圖5 展示了我們的 StackGAN 生成的 Stage-I 和 Stage-II 圖像的一些示例。正如 圖5 的第一行所示,在大多數情況下,Stage-I GAN 能夠在給定文本描述的情況下繪制對象的大致形狀和顏色。然而,Stage-I 圖像通常是模糊的,有各種缺陷和缺失的細節,特別是前景對象。如第二行所示,Stage-II GAN 生成 4 倍分辨率的圖像,其中包含更有說服力的細節,更好地反映了相應的文本描述。對于 Stage-I GAN 已經生成合理形狀和顏色的情況,Stage-II GAN 完成了細節。例如,在 圖5 的第一列中,對于一個令人滿意的 Stage-I 結果,Stage-II GAN 專注于繪制短嘴和文本中描述的白色顏色,以及尾巴和腿部的細節。在所有其他示例中,Stage-II 圖像都添加了不同程度的細節。在許多其他情況下,Stage-II GAN 能夠通過再次處理文本描述來糾正 Stage-I 結果的缺陷。例如,在第 5 列的 Stage-I 圖像中,其冠是藍色的,而不是文本中描述的紅棕色冠。這個缺陷被 Stage-II GAN 糾正了。在一些極端情況下(例如 圖5 的第 7 列),即使 Stage-I GAN 無法繪制出合理的形狀,Stage-II GAN 也能夠生成合理的對象。我們還觀察到 StackGAN 有能力從 Stage-I 圖像中轉移背景,并在 Stage-II 中將其微調以獲得更高分辨率和更真實的圖像。

圖5。使用 CUB 測試集中的未見文本生成的樣本,每列列出了文本描述,以及由 StackGAN 的 Stage-I 和 Stage-II 生成的圖像。

重要的是,StackGAN 并不是通過簡單地記住訓練樣本來實現好的結果,而是通過捕捉復雜的底層語言-圖像關系。我們從我們生成的圖像和所有訓練圖像中提取視覺特征,然后使用我們的 StackGAN 的 Stage-II 判別器 D。對于每個生成的圖像,可以檢索出與訓練集中的最近鄰。通過檢查檢索出的圖像(見 圖6),我們可以得出結論,生成的圖像具有一些與訓練樣本類似的特征,但實質上是不同的。

圖6。對于生成的圖像(第一列),通過利用 Stage-II 判別器 D 提取視覺特征來檢索其最近的訓練圖像(第2-6列)。使用特征之間的 L2 距離進行最近鄰檢索。

4.3. 組件分析

在這個小節中,我們使用我們的基線模型在 CUB 數據集上分析了 StackGAN 的不同組件。這些基線模型的 Inception Score 在 表2 中報告。

表2。使用不同的基線模型生成的30,000個樣本計算的我們的 StackGAN 的 Inception 分數。

**StackGAN 的設計。**如 表2 的前四行所示,如果直接使用 Stage-I GAN 生成圖像,Inception Score 明顯下降。這種性能下降可以通過 圖7 中的結果很好地說明。正如 圖7 的第一行所示,如果不使用條件增強(CA),Stage-I GAN 無法生成任何合理的 256×256 樣本。盡管帶有 CA 的 Stage-I GAN 能夠生成更多樣的 256×256 樣本,但這些樣本不如由 StackGAN 生成的樣本逼真。這證明了所提出的堆疊結構的必要性。此外,通過將輸出分辨率從 256×256 減小到 128×128,Inception Score 從 3.70 下降到 3.35。請注意,在計算 Inception Score 之前,所有圖像都縮放到 299 × 299。因此,如果我們的 StackGAN 只是增加圖像尺寸而沒有添加更多信息,不同分辨率的樣本的 Inception Score 將保持相同。因此,128×128 StackGAN 的 Inception Score 下降表明,我們的 256×256 StackGAN 確實在更大的圖像中添加了更多細節。對于 256×256 StackGAN,如果僅在 Stage-I 階段輸入文本(標記為 “no Text twice”),則 Inception Score 從 3.70 下降到 3.45。這表明在 Stage-II 階段再次處理文本描述有助于改進 Stage-I 結果。從 128×128 StackGAN 模型的結果中也可以得出相同的結論。

**條件增強。**我們還調查了所提出的條件增強(CA)的有效性。通過從 StackGAN 256×256 中刪除它(在 表2 中標記為 “no CA”),Inception Score 從 3.70 下降到 3.31。圖7 也顯示了具有 CA 的 256×256 Stage-I GAN(和 StackGAN)可以根據相同的文本描述生成具有不同姿勢和視角的鳥類圖像。相比之下,沒有使用 CA,在沒有穩定訓練動態的情況下,256×256 Stage-I GAN 生成的樣本會坍縮成無意義的圖像。因此,所提出的條件增強有助于穩定條件 GAN 訓練,并提高了生成樣本的多樣性,因為它能夠鼓勵對潛在流形上的小擾動具有魯棒性。

圖7。條件增強(CA)有助于穩定條件 GAN 的訓練,并提高了生成樣本的多樣性。(第一行)沒有使用 CA,Stage-I GAN 無法生成可信的 256×256 樣本。盡管每列使用不同的噪聲向量 z,但生成的樣本對于每個輸入的文本描述來說都是相同的。(第2-3行)使用了 CA 但固定噪聲向量 z,方法仍然能夠生成具有不同姿勢和視角的鳥類圖像。

**句子嵌入插值。**為了進一步證明我們的 StackGAN 學習了一個平滑的潛在數據流形,我們使用它從線性插值的句子嵌入中生成圖像,如 圖8 所示。我們固定噪聲向量 z,因此生成的圖像僅根據給定的文本描述推斷。第一行的圖像是由我們自己構造的簡單句子生成的。這些句子僅包含簡單的顏色描述。結果顯示,從插入的嵌入中生成的圖像可以準確地反映顏色變化并生成合理的鳥類形狀。第二行展示了從更復雜的句子生成的樣本,這些句子包含有關鳥類外觀的更多細節。生成的圖像將主要顏色從紅色變為藍色,并將翅膀顏色從黑色變為褐色。

圖8。從左到右:通過插值兩個句子嵌入而生成的圖像。可以觀察到從第一個句子的含義到第二個句子的含義的逐漸變化。每行的噪聲向量 z 被固定為零。

5 結論

本文提出了具有條件增強的堆疊生成對抗網絡(StackGAN),用于合成逼真的圖像。所提出的方法將文本到圖像的合成分解為一種新穎的草圖細化過程。第一階段 GAN 根據給定的文本描述從基本顏色和形狀約束中勾勒出對象的草圖。第二階段 GAN 修正了第一階段結果中的缺陷,并添加了更多細節,生成了更高分辨率、更具圖像質量的圖像。廣泛的定量和定性結果表明了我們提出的方法的有效性。與現有的文本到圖像生成模型相比,我們的方法生成更高分辨率(例如 256×256)的圖像,具有更多逼真的細節和多樣性。

References

  1. Arjovsky, M., & Bottou, L. (2017). Towards principled methods for training generative adversarial networks. In ICLR.

  2. Brock, A., Lim, T., Ritchie, J. M., & Weston, N. (2017). Neural photo editing with introspective adversarial networks. In ICLR.

  3. Che, T., Li, Y., Jacob, A. P., Bengio, Y., & Li, W. (2017). Mode regularized generative adversarial networks. In ICLR.

  4. Chen, X., Duan, Y., Houthooft, R., Schulman, J., Sutskever, I., & Abbeel, P. (2016). Infogan: Interpretable representation learning by information maximizing generative adversarial nets. In NIPS.

  5. Denton, E. L., Chintala, S., Szlam, A., & Fergus, R. (2015). Deep generative image models using a Laplacian pyramid of adversarial networks. In NIPS.

  6. Doersch, C. (2016). Tutorial on variational autoencoders. arXiv preprint arXiv:1606.05908.

  7. Gauthier, J. (2015). Conditional generative adversarial networks for convolutional face generation. Technical report.

  8. Goodfellow, I. J., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., … & Bengio, Y. (2014). Generative adversarial nets. In NIPS.

  9. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In CVPR.

  10. Huang, X., Li, Y., Poursaeed, O., Hopcroft, J., & Belongie, S. (2017). Stacked generative adversarial networks. In CVPR.

  11. Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. In ICML.

  12. Isola, P., Zhu, J. Y., Zhou, T., & Efros, A. A. (2017). Image-to-image translation with conditional adversarial networks. In CVPR.

  13. Kingma, D. P., & Welling, M. (2014). Auto-encoding variational Bayes. In ICLR.

  14. Larsen, A. B. L., S?nderby, S. K., Larochelle, H., & Winther, O. (2016). Autoencoding beyond pixels using a learned similarity metric. In ICML.

  15. Ledig, C., Theis, L., Huszar, F., Caballero, J., Aitken, A., Tejani, A., … & Shi, W. (2017). Photo-realistic single image super-resolution using a generative adversarial network. In CVPR.

  16. Lin, T. Y., Maire, M., Belongie, S., Hays, J., Perona, P., Ramanan, D., … & Zitnick, C. L. (2014). Microsoft coco: Common objects in context. In ECCV.

  17. Mansimov, E., Parisotto, E., Ba, L. J., & Salakhutdinov, R. (2016). Generating images from captions with attention. In ICLR.

  18. Metz, L., Poole, B., Pfau, D., & Sohl-Dickstein, J. (2017). Unrolled generative adversarial networks. In ICLR.

  19. Mirza, M., & Osindero, S. (2014). Conditional generative adversarial nets. arXiv preprint arXiv:1411.1784.

  20. Nguyen, A., Yosinski, J., Bengio, Y., Dosovitskiy, A., & Clune, J. (2017). Plug & play generative networks: Conditional iterative generation of images in latent space. In CVPR.

  21. Nilsback, M. E., & Zisserman, A. (2008). Automated flower classification over a large number of classes. In ICCVGIP.

  22. Odena, A., Olah, C., & Shlens, J. (2017). Conditional image synthesis with auxiliary classifier GANs. In ICML.

  23. Radford, A., Metz, L., & Chintala, S. (2016). Unsupervised representation learning with deep convolutional generative adversarial networks. In ICLR.

  24. Reed, S., Akata, Z., Mohan, S., Tenka, S., Schiele, B., & Lee, H. (2016). Learning what and where to draw. In NIPS.

  25. Reed, S., Akata, Z., Schiele, B., & Lee, H. (2016). Learning deep representations of fine-grained visual descriptions. In CVPR.

  26. Reed, S., Akata, Z., Yan, X., Logeswaran, L., Schiele, B., & Lee, H. (2016). Generative adversarial text-to-image synthesis. In ICML.

  27. Reed, S., van den Oord, A., Kalchbrenner, N., Bapst, V., Botvinick, M., & de Freitas, N. (2016). Generating interpretable images with controllable structure. Technical report.

  28. Rezende, D. J., Mohamed, S., & Wierstra, D. (2014). Stochastic backpropagation and approximate inference in deep generative models. In ICML.

  29. Salimans, T., Goodfellow, I. J., Zaremba, W., Cheung, V., Radford, A., & Chen, X. (2016). Improved techniques for training GANs. In NIPS.

  30. Szegedy, C., Vanhoucke, V., Ioffe, S., Shlens, J., & Wojna, Z. (2016). Rethinking the inception architecture for computer vision. In CVPR.

  31. S?nderby, C. K., Caballero, J., Theis, L., Shi, W., & Huszar, F. (2017). Amortised map inference for image super-resolution. In ICLR.

  32. Taigman, Y., Polyak, A., & Wolf, L. (2017). Unsupervised cross-domain image generation. In ICLR.

  33. van den Oord, A., Kalchbrenner, N., & Kavukcuoglu, K. (2016). Pixel recurrent neural networks. In ICML.

  34. van den Oord, A., Kalchbrenner, N., Vinyals, O., Espeholt, L., Graves, A., & Kavukcuoglu, K. (2016). Conditional image generation with PixelCNN decoders. In NIPS.

  35. Wah, C., Branson, S., Welinder, P., Perona, P., & Belongie, S. (2011). The Caltech-UCSD Birds-200-2011 Dataset. Technical Report CNS-TR-2011-001.

  36. Wang, X., & Gupta, A. (2016). Generative image modeling using style and structure adversarial networks. In ECCV.

  37. Yan, X., Yang, J., Sohn, K., & Lee, H. (2016). Attribute2image: Conditional image generation from visual attributes. In ECCV.

  38. Zhao, J., Mathieu, M., & LeCun, Y. (2017). Energy-based generative adversarial network. In ICLR.

  39. Yan, X., Yang, J., Sohn, K., & Lee, H. (2016). Attribute2image: Conditional image generation from visual attributes. In ECCV.

  40. Zhao, J., Mathieu, M., & LeCun, Y. (2017). Energy-based generative adversarial network. In ICLR.

  41. Zhu, J., Kr¨ahenb¨uhl, P., Shechtman, E., & Efros, A. A. (2016). Generative visual manipulation on the natural image manifold. In ECCV.

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

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

相關文章

ViewFs And Federation On HDFS

序言 ViewFs 是在Federation的基礎上提出的,用于通過一個HDFS路徑來訪問多個NameSpace,同時與ViewFs搭配的技術是client-side mount table(這個就是具體的規則配置信息可以放置在core.xml中,也可以放置在mountTable.xml中). 總的來說ViewFs的其實就是一個中間層,用于去連接不…

Vue3 setup語法糖 解決富文本編輯器上傳圖片64位碼過長問題 quill-image-extend-module

引言&#xff1a; 富文本編輯器傳圖片會解碼成64位&#xff0c;非常長導致數據庫會報錯第一種方法&#xff1a;將數據庫類型改成 mediumtext第二種辦法&#xff1a;本文中的方法 說明&#xff0c;本周文所用語法糖為Vue3 setup語法&#xff0c;即<script setup> 思路 攔…

HIVE SQL通過Lateral View + explode實現列轉行

原表&#xff1a; abAndy<碟中諜>,<諜影重重>,<007>MOMO<小鞋子>,<朋友啊你的家在哪里> 實現效果 abAndy<碟中諜>Andy<諜影重重>Andy<007>MOMO<小鞋子>MOMO<朋友啊你的家在哪里> 實現代碼&#xff1a; selec…

STM32 F103C8T6學習筆記8:0.96寸單色OLED顯示屏顯示字符

使用STM32F103 C8T6 驅動0.96寸單色OLED顯示屏: OLED顯示屏的驅動&#xff0c;在設計開發中OLED顯示屏十分常見&#xff0c;因此今日學習一下。一篇文章從程序到顯示都講通。 文章提供源碼、原理解釋、測試工程下載&#xff0c;測試效果圖展示。 目錄 OLED驅動原理—IIC通信…

無涯教程-Perl - undef函數

描述 此函數未定義EXPR的值。用于標量,列表,哈希,函數或類型范圍。在帶有諸如undef $hash {$key}之類的語句的哈希上使用&#xff1b;實際上將指定鍵的值設置為未定義的值。 如果要從哈希中刪除元素,請使用delete函數。 語法 以下是此函數的簡單語法- undef EXPRundef返回…

Java進階篇--迭代器模式

目錄 同步迭代器&#xff08;Synchronous Iterator&#xff09;&#xff1a; Iterator 接口 常用方法&#xff1a; 注意&#xff1a; 擴展小知識: 異步迭代器&#xff08;Asynchronous Iterator&#xff09;&#xff1a; 常用的方法 注意&#xff1a; 總結&#xff1a…

LeetCode 每日一題 2023/8/14-2023/8/20

記錄了初步解題思路 以及本地實現代碼&#xff1b;并不一定為最優 也希望大家能一起探討 一起進步 目錄 8/14 617. 合并二叉樹8/15 833. 字符串中的查找與替換8/16 2682. 找出轉圈游戲輸家8/17 1444. 切披薩的方案數8/18 1388. 3n 塊披薩8/19 2235. 兩整數相加8/20 8/14 617. 合…

【學習FreeRTOS】第9章——FreeRTOS任務調度

1.開啟任務調度器 vTaskStartScheduler() 作用&#xff1a;用于啟動任務調度器&#xff0c;任務調度器啟動后&#xff0c; FreeRTOS 便會開始進行任務調度【動態創建任務為例】 創建空閑任務如果使能軟件定時器&#xff0c;則創建定時器任務關閉中斷&#xff0c;防止調度器開…

Microsoft ISA服務器配置及日志分析

Microsoft ISA 分析器工具&#xff0c;可分析 Microsoft ISA 服務器&#xff08;或 Forefront 威脅管理網關服務器&#xff09;的日志并生成安全和流量報告。支持來自 Microsoft ISA 服務器組件的以下日志&#xff1a; 數據包過濾器ISA 服務器防火墻服務ISA 服務器網絡代理服務…

透過源碼理解Flutter中widget、state和element的關系

1、framework源碼組成 Flutter中widget、state、element的源碼位于framework.dart中&#xff0c;整個文件6693行(版本Flutter 3.12.0-14.0.pre.28)。整個代碼可劃分為若干部分&#xff0c;主要包括key、widget、state、element四部分。 1.1 key 關于key的代碼65行到272行&am…

NVIDIA GPU驅動和CUDA工具包 Linux CentOS 7 在線安裝指南

挑選指定系統和對應的GPU型號下載驅動和CUDA工具包: Linux CentOS安裝NVIDIA GPU驅動程序和NVIDIA CUDA工具包_centos安裝顯卡驅動和cuda_Entropy-Go的博客-CSDN博客 相比之下&#xff0c;本文是在線安裝NVIDIA GPU驅動和CUDA工具包方式&#xff0c;省去挑選對應正確安裝包的煩…

Uniapp Syntax Error: Error: Unbalanced delimiter found in string

報錯 in ./src/pages/user/components/tasks.vue?vue&typescript&langjs&Syntax Error: Error: Unbalanced delimiter found in string...這邊導致文件的原因&#xff1a;可能是條件編譯語法不小心刪了某個字符&#xff0c;導致不全&#xff0c;無法形成一對。 //…

GuLi商城-前端基礎Vue-生命周期和鉤子函數

下圖展示了實例的生命周期。你不需要立馬弄明白所有的東西&#xff0c;不過隨著你的不斷學習和使用&#xff0c;它 的參考價值會越來越高。 VUE 的生命周期指的是組件在創建、運行和銷毀過程中所經歷的一系列事件&#xff0c;通過這些事件可以 讓開發者在不同階段進行相應的…

vue3 + antv/x6 實現拖拽側邊欄節點到畫布

前篇&#xff1a;vue3ts使用antv/x6 自定義節點 前篇&#xff1a;vue3antv x6自定義節點樣式 1、創建側邊欄 用antd的menu來做側邊欄 npm i --save ant-design-vue4.x//入口文件main.js內 import Antd from ant-design-vue; import App from ./App; import ant-design-vue/…

安卓的代碼加固和其他安全問題

文章目錄 安卓加固apk文件結構dex加固過程 其它安全問題 安卓加固 從App的加固技術來看:主流分為dex加密和so加密,目前來看保護dex文件更為重要,因為dex反編譯后的java代碼可讀性更強。 android-ndk: Native Development Kit 官網解釋&#xff1a;這套工具使您能在 Android 應…

Kvm配置ovs網橋

環境&#xff1a;部署在kvm虛擬環境上&#xff08;讓虛擬機和宿主機都可以直接從路由器獲取到獨立ip&#xff09; 1、安裝ovs軟件安裝包并啟動服務&#xff08;一般采用源碼安裝&#xff0c;此處用yum安裝&#xff09; yum install openvswitch-2.9.0-3.el7.x86_64.rpm syste…

Git常見操作

一、全局配置命令 配置級別&#xff1a; –local&#xff08;默認&#xff0c;高級優先&#xff09;&#xff1a;只影響本地倉庫 –global(中優先級)&#xff1a;只影響所有當前用戶的git倉庫 –system&#xff08;低優先級&#xff09;&#xff1a;影響到全系統的git倉庫 1…

【力扣】739. 每日溫度 <單調棧>

【力扣】739. 每日溫度 給定一個整數數組 temperatures &#xff0c;表示每天的溫度&#xff0c;返回一個數組 answer &#xff0c;其中 answer[i] 是指對于第 i 天&#xff0c;下一個更高溫度出現在幾天后。如果氣溫在這之后都不會升高&#xff0c;請在該位置用 0 來代替。 …

劍指 Offer 40. 最小的k個數(C+實現)

劍指 Offer 40. 最小的k個數https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/ 法1&#xff1a;二叉堆 通過最小堆&#xff0c;直接篩選出最小的k個數 vector<int> getLeastNumbers(vector<int>& arr, int k) {priority_queue<int, vector<int>…

YOLOv8改進后效果

數據集 自建鐵路障礙數據集-包含路障&#xff0c;人等少數標簽。其中百分之八十作為訓練集&#xff0c;百分之二十作為測試集 第一次部署 版本&#xff1a;YOLOv5 訓練50epoch后精度可達0.94 mAP可達0.95.此時未包含任何改進操作 第二次部署 版本&#xff1a;YOLOv8改進版本 首…