孫志偉,曾令賢,馬永軍
(天津科技大學人工智能學院,天津 300457)
深度生成視覺是計算機視覺領域的一個重要研究方向,它將人工生成的過程轉化為智能生成的過程,以大幅減少重復性的人工勞動,甚至可以進行創造性的智能創作[1]。生成對抗網絡(generative adversarial network,GAN)由Goodfellow 等[1]在2014 年提出,是實現計算機深度生成視覺的主要技術之一,隨后發展并衍生了許多變體,如生成器和判別器上都增加約束條件的條件生成對抗網絡CGAN[3],生成器和判別器均采用深度卷積的DCGAN 模型[4]。為了解決生成對抗網絡長期以來的訓練不穩定和模式坍塌的問題,Arjovsky 等[5]提出了 WGAN 模型,使用 W(Wasserstein)距離代替 JS(Jensen-Shannon)散度計算生成樣本分布與真實樣本分布間的距離,但是WGAN 模型依然存在訓練困難,收斂速度慢的問題。Gulrajani 等[6]提出的WGAN-GP 直接將判別器的梯度作為正則項加入判別器的損失函數中。Zhang等[7]將自注意力模塊與GAN 的思想相結合提出的SAGAN 模型,為圖像生成任務提供了注意力驅動的長距離依賴的模型。
以上GAN 的衍生模型都是通過網絡結構、損失函數等的改變,提高GAN 的性能和穩定性。這些GAN 的衍生模型被用在圖像任務中,如用于解決圖像修復的超分辨率重建SRGAN[8]、IIZUKA[9]等方法。
隨著圖像到圖像翻譯任務的發展,對GAN 所生成圖像的要求也越來越多,如兩個圖像領域的轉換問題(cross-domain)、屬性編輯問題等,出現了能進行多領域圖像轉換的 CycleGAN[10]、DualGAN[11]、DualStyleGAN 等[12]方法。CycleGAN 主要是解決pix2pix[13]中進行風格轉換時需要成對數據的問題,使用兩個生成器和兩個判別器分別處理源域到目標域的轉換,并且提出了循環一致性損失進行控制,但仍然存在生成器數量和域數量一對一的問題。DualGAN 主要受自然語言翻譯任務中對偶學習的啟發,使圖像翻譯器能夠在兩個無標簽的圖像域中學習,但是也存在生成器過多的問題。在單屬性編輯任務中已有的模型不能很好地完成多屬性的轉換,往往在k 個屬性之間相互轉換時,需要k×(k-1)個生成器,并且由于是一對一的屬性變換并不能有效學習到全局特征以及充分利用全部訓練數據[14],多屬性風格變換有助于拓展屬性變換任務需求。Choi 等[14]提出的StarGAN 解決了1 個生成器只能處理單一屬性的問題,生成器的形狀像星星一樣,可以根據不同的輸入屬性要求產生不同的輸出,在人臉數據集上取得了很好的效果。
StarGAN v2[16]是基于StarGAN[14]跨域的多樣性圖像生成網絡,其多樣性在于通過最大化兩個風格編碼所生成圖像的距離控制生成圖像的多樣性,但是不同于多屬性生成,模型能夠生成某一個域多樣性的圖像,而不是具體的多屬性轉換。
多屬性圖像生成網絡在很多場景下具有重要的應用價值,然而該模型結構復雜、計算量大。輕量化的目的是在保持模型精度基礎上減少模型參數量和復雜度,輕量化網絡既包含了對網絡結構的探索,又有知識蒸餾、剪枝等模型壓縮技術的應用,推動了深度學習在移動端和嵌入式端的應用落地,在智能家居、安防、自動駕駛等領域都有重要貢獻。傳統的模型壓縮方法很難對生成模型進行壓縮,主要原因包括:生成器需要大量的參數建立潛在向量到生成圖像的映射關系,這種極度復雜的映射結構相較于圖像識別任務更難確定冗余的權重;目標檢測和圖像分割等其他視覺任務都是有標簽的訓練數據,而GAN 中的很多任務并沒有任何標簽用來評判生成的圖像,如超分辨率重建和風格遷移。
為了解決上述問題,Aguinaldo 等[17]提出一種壓縮和加速GAN 訓練的網絡框架,利用知識蒸餾技術以均方誤差(MSE)損失最小化學生網絡和教師網絡的距離,但是該方法僅能應用于噪聲到圖像的網絡架構,而如今GAN 的應用主要是圖像到圖像[17]。為了解決這些問題,Chen 等[18]以CycleGAN[10]為基準提出了一個新的基于知識蒸餾的小型GAN 的框架,在像素層面上最小化學生網絡和教師網絡生成圖像的距離,教師網絡生成的圖像對學生判別器而言是真實樣本,因此設計了學生判別器。但是,該方法只能進行單一圖像域的轉換,而不能進行多屬性的圖像生成任務。
由于實際場景中實際采集樣本的各屬性分布不均,多屬性生成是目前的研究重點之一,然而現有的模型較為復雜,計算量大,而且圖像生成的效果需進一步提高,因此本文提出了一種基于StarGAN 的可進行多屬性風格圖像生成的輕量化網絡。
本文模型是以StarGAN 為基準模型設計的多屬性風格圖像生成的輕量化網絡。StarGAN 作為跨多領域的圖像到圖像翻譯任務的生成對抗網絡,其結構為1 個可以生成多屬性的條件生成器和1 個判別器。生成器包括下采樣模塊、特征提取模塊和上采樣模塊,生成器接收原圖像以及目標屬性條件作為輸入,生成同樣尺寸的目標屬性圖像。判別器接受生成器生成的圖像或者真實圖像作為輸入,但是判別器有兩個輸出,一個是二分類的輸出,判斷圖像是來自真實樣本還是生成器生成樣本;另一個是類別輸出,判別圖像的屬性類別。
Hinton 等[19]提出知識蒸餾用于模型的輕量化過程,主要是設計學生網絡,讓小型的學生網絡學習大型教師網絡的低層特征和高層語義信息。知識蒸餾及其變種主要研究教師網絡向學生網絡傳遞知識的連接方式,最初的蒸餾對象是logit 層,讓學生網絡和教師網絡的logit KL 散度盡可能小。FitNets[20]出現開始蒸餾中間層,一般使用MSE 損失函數,使學生網絡和教師網絡特征圖盡可能接近,如圖1 所示。Zagoruyko 等[21]提出的Attention Transfer 進一步發展了FitNets,提出使用注意力圖引導知識的傳遞。Tian等[22]在FitNet 基礎上引入對比學習進行知識遷移。

圖1 蒸餾網絡示意圖Fig. 1 Diagram of distillation network
這些模型多數用于CNN 等神經網絡,很少有對生成網絡GAN 的蒸餾,主要在于GAN 學習的是很復雜的從噪聲向量到生成圖像的映射關系,而且GAN 多數是沒有標簽的數據,導致網絡學習到的知識很難衡量,難以確定冗余權重。pix2pix[13]在論文中提供了成對的數據集,Chen 等[18]基于這個成對有標簽數據集對pix2pix 蒸餾,用判別器衡量標簽的圖像、學生生成器以及教師生成器生成的圖像三者之間的距離訓練學生生成器,并且在CycleGAN[10]上有較好的效果,主要是其對判別器也同時進行了蒸餾,讓學生判別器對教師生成器的輸出判定為真,使教師網絡和學生網絡的判別器接近教師生成器的結果。
深度可分離卷積是一種廣泛應用于卷積神經網絡模型結構中的模塊,可以取代傳統的卷積操作,用于提取圖像特征。傳統的卷積神經網絡,一個卷積核對輸入特征圖的所有通道進行卷積,卷積核的通道數為輸入通道數,卷積核的個數為輸出通道數,而深度可分離卷積將卷積過程進行分解,卷積核的個數分別由輸入通道數和輸出通道數決定。
深度可分離卷積示意圖如圖2 所示,核心思想是將卷積分成了逐通道卷積(depthwise convolution)和逐點卷積(pointwise convolution),前者對輸入特征圖的每一個通道進行卷積,卷積核個數等于輸入通道數;后者主要指1×1 的卷積[23],在不改變特征圖尺寸的情況下加深特征圖的通道數,能夠進行跨通道的特征融合,卷積核個數等于輸出通道數。

圖2 深度可分離卷積示意圖Fig. 2 Diagram of depth separable convolution
在圖像到圖像轉換的早期任務中,如將一張圖形的風格轉換到另一張內容圖像上的風格遷移。內容損失和風格損失比較示意圖如圖3 所示。為了確保遷移圖像的風格和風格損失函數控制,而使生成的圖像和原內容圖像的結構等信息不變,則用內容損失函數控制。在Yang 等[24]提出的L2M-GAN 模型中,內容損失函數在潛在空間中對人臉的語義信息獲取有提升作用。

圖3 內容損失和風格損失比較示意圖Fig. 3 Diagram of content loss and style loss
本文是對StarGAN 進行輕量化,提出了能夠生成多風格屬性圖像的學生網絡(student network based on StarGAN,stuStarGAN),在保證生成圖像質量的前提下,減少網絡的參數量,降低了模型的復雜度。
由于跨域的生成模型,StarGAN v2 等[16]只能生成屬于該圖像域的整體變換,主要建立兩個數據集之間的映射關系,而不能生成確定屬性和多屬性風格圖像,并且其中的多樣性損失與蒸餾損失發生沖突,故本文以StarGAN 為教師網絡和基準模型。
模型包括以下過程:首先使用知識蒸餾技術降低參數量,提出進一步采用學生判別器蒸餾損失提升性能;然后為了保證生成圖像質量,采用skip-connection提供跨模塊的連接;使用內容損失,確保不改變原始圖像的內容信息;最后用深度可分離卷積取代普通卷積,進一步降低參數量并提高圖像生成質量。
為了讓學生生成器學習教師生成器的知識,直接最小化兩個生成器生成的圖像的歐氏距離,為
式中:GT表示教師生成器,GS表示學生生成器,其中表示L1 正則化。通過最小化式(5),學生生成器的結果可以從像素層面上與教師生成器相似,L1 損失的目標只是最小化平均合理的結果。由于生成器的訓練是伴隨著判別器的,因此只蒸餾生成器對學生生成器的學習是不夠的。教師判別器與生成器任務高度相關,要求教師判別器能夠評估學生生成器是否像教師生成器那樣生成了高質量的圖像,即生成器的感知損失,為
式中:TD表示教師判別器,同時生成器的輸入中省略了屬性標簽信息。
因此,生成器的蒸餾損失為
其中γ是平衡兩個損失函數的超參數。
Aguinaldo 等[17]對生成式網絡壓縮時,沒有利用教師判別器對學生判別器蒸餾,而判別器對GAN 的訓練也很重要,本文首先設計學生判別器,然后對學生判別器進行蒸餾。
學生判別器用來協同學生生成器訓練,同時用教師判別器進行蒸餾,在蒸餾過程中,使用了與蒸餾生成器相同的方法(L1 損失),判別器的蒸餾損失為

圖4 整體蒸餾網絡模塊示意圖Fig. 4 Diagram of whole distillation network module
此外,本文采用了教師網絡和學生網絡的對抗學習,教師網絡經過訓練,學生判別器在教師網絡的監督之下訓練,通過教師生成器生成的圖像應該被學生判別器判別為真,損失函數定義為
StarGAN 網絡包括下采樣模塊、骨干網絡以及上采樣模塊。在生成模型中,下采樣主要用于編碼功能,完成對潛在向量的編碼,骨干網絡主要提取圖像特征,而上采樣模塊主要用于解碼,還原為圖像。在學生網絡設計中,骨干網絡選擇與教師網絡相同,都是ResNet 模塊,在下采樣和上采樣之間使用skipconnection 提供跨模塊的連接??缒K連接示意圖如圖5 所示。在學生網絡中將具有同樣尺寸的上采樣和下采樣中的模塊進行skip-connection,連接的過程不是簡單的求和,而是通道的疊加,盡可能地保留低層的信息。

圖5 跨模塊連接示意圖Fig. 5 Diagram of skip-connection
在圖像的風格變換后,為了使與風格無關的信息能夠保留下來,而對生成圖像和原圖像作內容損失。本文中圖像的屬性改變,但是不希望與屬性無關的其他信息,如結構、背景等發生變化,本文采用內容損失函數,在消融實驗中驗證其有效性。
內容損失函數通過1 個預訓練好的網絡作為特征提取器,由于模型高層的輸出是高維的語義特征,包含更多具體的內容信息,因此本文采用ResNet-18模型的最后1 個卷積層的輸出作為特征提取器。分別提取原圖像和學生網絡生成器生成圖像的特征,在像素層面上作L1 損失,為
其中:c表示x要轉換的目標屬性類別,生成器以原圖像和目標屬性類別作為輸入;F則是1 個預訓練好的ResNet-18[25]模型。
在學生網絡設計中,替換掉骨干網絡ResNet 模塊中的普通卷積,改為深度可分離的卷積,進一步減少模型計算量,降低網絡復雜度。Google 公司的MobileNet[26]證明了深度可分離卷積的性能,相較于普通卷積,它能極大降低計算量。
假定輸入通道數為M,輸出通道數為N,標準卷積的卷積核大小為DK·DK,特征圖大小為DF·DF,則采用標準卷積計算量為
若采用深度可分離卷積,計算量為
聯立二者,可得出其比值為
為了對所提學生網絡的輕量化和性能進行驗證,本文首先在CelebA 上做消融實驗驗證模型不同部分的有效性,然后進一步在CelebA 和Fer2013 數據集上進行算法對比實驗。
CelebA 數據集是人臉識別和人臉表情研究領域具有權威性和完整性的名人人臉屬性數據集,包含202 599 張人臉圖像,圖像大小為128×128,在原始數據集中每張圖像都有40 個屬性標注。以20%作為測試集,即40 000 張圖像,其余為訓練集。
Fer2013 數據集是一個灰度圖像數據集,主要用于人臉表情變化的研究,該數據集共有7 種表情,分別對應數字標簽0~6,這7 種表情圖像共有35 886張,其中訓練集包含28 708 張,其余為測試集7 178張。每張圖像的大小為48×48,以csv 格式的文件存儲像素值表示。
實驗以PyTorch 框架在Nvidia GeForce RTX 3060 上實現,顯存為12 GB。在訓練過程中,將學生網絡輸入和教師網絡輸入尺寸固定一樣,參數設置:批大小(batch size)為8,迭代次數200 000 次,生成器和判別器的學習率均為0.000 1,每1 000 次時更新1次,在每更新5 次判別器時更新1 次生成器。部分損失函數權重與教師網絡保持一致,類別損失函數的權重為1,重構損失權重為10,梯度懲罰權重為10,生成器和判別器蒸餾損失均為1。
為了衡量網絡的輕量化,本文以網絡參數量和浮點數運算次數(GFLOPs)作為評價指標。此外,圖像風格轉換任務常用指標包括圖像信噪比(PSNR,用符號RPSNR表示)、原圖像和生成圖像的結構相似性(SSIM,用符號SSSIM表示)、生成圖像質量弗雷歇初始距離(FID,用符號DFID表示)。在SRGAN[8]中,由于PSNR 定義在像素級別的圖像區別上,不能很好地表示圖像的高維細節,本文只在消融實驗中進行了PSNR 指標的對比,在算法對比實驗中不再對比這個指標,只給出FID 和SSIM 的數據。
PSNR、SSIM 和FID 指標計算公式分別為
式中:Pmax為圖像像素理論最大值;EMSE為兩張圖像的均方誤差;u表示均值;σ表示方差;C表示常數;tr表示矩陣對角線上元素的綜合,即在矩陣論中稱為矩陣的跡;r 和g 表示真實的圖像和生成的圖像;∑是協方差矩陣。
stuStarGAN 在CelebA 數據集上的生成效果如圖6 所示,其中第1 列為原始圖像,后面5 列依次對原圖像屬性進行更改,分別為黑發、金發、棕發、性別以及年齡。圖中第2 行第3 列膚色有些變化,可能是在變換黑色頭發時,對黑色膚色產生了影響。

圖6 stuStarGAN在CelebA數據集上的生成效果Fig. 6 Diagram of result of stuStarGAN on CelebA
stuStarGAN 在Fer2013 數據集上的生成效果如圖7 所示,圖中第1 列為原始圖像,第1 列至第7 列分別表示該數據集中存在的 7 種表情,分別是neutral、anger、fear、disgust、happy、sad、surprised。stuStarGAN 模型依然能很好地改變圖像的表情屬性,而不改變其他部分。

圖7 stuStarGAN在Fer2013數據集上的生成效果Fig. 7 Diagram of result of stuStarGAN on Fer2013
模型在CelebA 數據集上進行多屬性風格圖像生成的結果如圖8 所示。

圖8 多屬性的改變示意圖Fig. 8 Diagram of change of multi attributes
圖8 中第1 列表示原圖像,第2 列改變頭發顏色以及性別,第3 列改變了頭發顏色以及年齡兩個屬性。結果表明生成器能對圖像進行單屬性和多屬性轉換。
為了確保學生網絡在輕量化之后仍然能有很好的圖像質量,本文以教師網絡為基準模型進行消融實驗,在評價指標上評估各個模塊或損失函數對性能的影響,結果見表1,其中U 表示使用U-net 的skipconnection,CL 表示使用內容損失,DP 表示將普通卷積更換為深度可分離卷積,DL 表示蒸餾生成器同時新增判別器蒸餾損失。

表1 在CelebA數據集上不同模塊的對比Tab. 1 Comparison of different modules on CelebA
在表1 中,第1 行為教師網絡,KD 表示知識蒸餾,第2 行+KD 表示只對教師網絡進行知識蒸餾的結果,以后的每一行都是在前面的基礎上進一步改進學生網絡,如第3 行是在第2 行的基礎上采用skipconnection。比較第1 行和第2 行,只對StarGAN 蒸餾,模型雖然顯著降低參數量,但性能卻有所下降。學生網絡在使用skip-connection 之后效果有改善,表明模型的底層信息正確地傳遞給了上層神經元。
比較第3 行和第4 行,其中DL 表示對學生判別器采取的蒸餾損失,也就是直接比較教師和學生判別器的輸出,包括真假概率輸出和屬性類別輸出,可以看出使用DL 后確實提高了學生網絡的效果。
第5 行在前面基礎上采用內容損失,SSIM 進一步提高,說明生成圖像很好地保留了原圖像的結構信息,而PSNR 相較第4 行有明顯下降。推測其原因主要在于引入內容損失后,為了保證圖像主體結構信息不變,生成圖像在其余部分引入噪聲,使得圖像信噪比下降,即PSNR 降低。第6 行4+DP 是指在第4 行的基礎上引入DP,結果表明CL 確實影響了PSNR指標,然而引入DP 之后PSNR 有明顯提升,但是SSIM 相較第4 行有所下降。比較第4 行和最后一行,雖然SSIM 有些許降低,但是深度可分離卷積大幅降低了網絡的參數量和計算量,并提升了網絡模型的FID。因此,根據PSNR 和SSIM 有些許變化以及FID 進一步提高的情況,本文選擇了參數量和計算量更少的模型作為最后的stuStarGAN 模型。第5 列浮點數運算次數表明本文模型有更少的運算量,說明模型確實降低了網絡的計算量。
表1 中參數量只包括生成器參數,因為判別器只在訓練階段起作用,最終也只需部署生成器。
將不同算法在CelebA 以及Fer2013 兩個數據集上進行對比實驗,結果見表2 和表3。

表2 不同算法在CelebA數據集上的性能比較Tab. 2 Comparison of different methods on CelebA

表3 不同算法在Fer2013數據集上的性能比較Tab. 3 Comparison of different methods on Fer2013
在CelebA 數據集上,本文模型與近年來的一些在圖像翻譯領域的先進模型進行比較,包括pix2pix、CycleGAN、StarGAN、UE-StarGAN 等。從表2 中可以看出,在CelebA 數據集上,從SSIM 和FID 兩個指標上看,本文模型都有較好的性能。本文主要設計能生成多屬性風格圖像的輕量化學生網絡,在保證生成質量的前提下降低模型復雜度,在考慮了判別器參數的情況下,參數量依然小于最少參數量的50%,其中CycleGAN 的參數量中的×10 是因為CycleGAN的1 個生成器只能轉換原圖像的1 種屬性值,而StarGAN 可以1 個生成器轉換多種屬性值。
在表3 中,從第2 列可以看到本文模型可以保證很高的結構相似性,并且參數量和GFLOPs 有較大降低,相較其他模型在性能接近的情況下,計算量更少,結構復雜度更低,表明了本文模型的有效性。
本文基于StarGAN 設計了1 個能生成多屬性風格變化的輕量化網絡stuStarGAN。模型首先應用知識蒸餾技術降低教師網絡參數量;然后為了確保生成圖像質量,采用skip-connection 提供跨模塊的連接,使用內容損失確保生成圖像和原始圖像的內容信息一致,在蒸餾生成器的同時新增判別器蒸餾損失以提高生成器性能;將普通卷積替換為深度可分離卷積,進一步降低參數量并提高圖像生成質量;最后將模型在兩個數據集上進行實驗,給出了單屬性和多屬性的生成效果;并與其他模型進行比較,在保證生成圖像質量的基礎上極大地降低了參數量和計算量,可以應用于實際場景采集數據不足和數據分布不均需要擴充數據集以及某些實時應用場景中,如監控行人數據集樣本分布不均、社交網絡更改頭像保護隱私、游戲角色變化頭像等具體場景中。由于學生網絡生成圖像的多樣性不足,在后續研究中會考慮并繼續完善模型,做好效率和精度之間的平衡。