在使用GAN進行圖像生成任務中,我們的目的就是爲了得到高質量的生成圖像,那麼總得需要個度量指標來衡量生成的圖像是否是“高質量”的吧?不能完全靠人眼主觀判斷。這裏提到生成圖像的“高質量”,主要從兩方面考慮:
- 圖像本身的質量。如:是否清晰,內容是否完整,是否逼真等等。
- 多樣性。最終的生成器所生成的圖像需要多種多樣的,不能只生成一種或幾種類型的圖像,產生的這種現象稱爲模式崩潰(Mode collapse)。
下面介紹兩個在文獻中常用的評價指標,IS(Inception Score)和FID(Fréchet Inception Distance)。
一、IS(Inception Score)
Inception Score[1] 使用在ImageNet上預訓練的Inception V3 Network作爲分類網絡,將生成器生成的圖像輸入到Inception V3 Network中,對該網絡輸出值(圖像所屬類別)做統計分析。
IS的計算公式如下:
IS(G)=exp(Ex∼pgDKL(p(y∣x)∣∣p(y)))(1)
其中:
- x∼pg表示x是從pg中生成的圖像樣本。
- DKL(p∣∣q)表示分佈p和q間的KL散度(衡量兩個分佈間距離)。
- p(y∣x)表示在給定圖像x下分類爲y的概率(∈[0,1]1000,表示ImageNet中的1000類)。
- p(y)=∫xp(y∣x)pg(x),表示類別的邊緣分佈。
- exp是便於比較最終計算的IS值。
之所以IS公式考慮分佈p(y∣x)和p(y),是出於以下兩個目的[2]:
- 所生成圖像中需要包含清楚的目標或者說p(y∣x)要有較低的熵。p(y∣x)反映出圖片的生成質量,概率值越大,說明生成的圖像屬於y類的可能性越高,也就表明生成的質量越高。最理想的情況是分佈p(y∣x)集中在某一值,即該分佈的熵很低。因此,p(y∣x)的熵越低,生成圖像的質量越好。
- 生成器要能生成ImageNet中多種類型的圖像,保持多樣性或者說p(y)要有較高的熵。p(y)指的是生成圖像的類別分佈,假如有n類,理想情況是p(y1)=p(y2)=⋯=p(yn)=1/n,即類別分佈是一個均勻分佈,這時具有較高的熵。因此,p(y)的熵越高,生成圖像的多樣性越好。
如果滿足上述兩個特性,我們想要p(y∣x)和p(y)的KL散度越大,從IS公式中看出IS值也越大。我們從推導中來看一看IS如何與p(y∣x)和p(y)的熵聯繫起來的。這裏直接附上文獻[2]中的證明過程,對公式(1)左右兩邊取ln:
而互信息熵(Mutual Information)I(y;x)
I(y;x)=H(y)−H(y∣x)(2)
因此
ln(IS(G))=H(y)−H(y∣x)(3)
由(3)式我們就可以輕易看出,p(y)的熵越大,p(y∣x)的熵越小,IS值越大。
實際計算:
利用模型生成部分圖片xi來計算先驗類別邊緣分佈p^(y):
p^(y)=N1i=1∑Np(y∣xi)(4)
其中N表示由模型生成的樣本圖片數目。之後可以求IS(G)的近似值:
IS(G)≈exp(N1i=1∑NDKL(p(y∣xi)∣∣p^(y)))(5)
計算IS時,建議在N=5000下計算10次,再計算IS值的均值和標準差。
缺點:
- IS計算公式沒有考慮真實圖像(Ground Truth),不能反映出生成圖像與真實圖像是否相近[3]。
- 由於使用Inception Network,爲此對網絡權重變化較敏感。
補充知識點
互信息(Mutual Information)度量的是兩個隨機變量間相互依賴的程度。
假設有兩個隨機變量X和Y,它們的互信息定義爲:
I(X;Y)=x∈X∑y∈Y∑p(x,y)log(p(x)p(y)p(x,y))
其中p(x,y)是隨機變量X和Y的聯合概率分佈,p(x)和p(y)分別是X和Y的邊緣概率分佈。當X和Y相互獨立時,p(x,y)=p(x)p(y),I(X;Y)=0。而且互信息是非負的,對稱的。
再介紹下條件熵(Conditional Entropy)。給定隨機變量X的條件下,隨機變量Y的條件熵定義爲:
H(Y∣X)=x∈X∑p(x)H(Y∣X=x)=x∈X∑p(x)[−y∈Y∑p(y∣x)logp(y∣x)]=−x∈X∑y∈Y∑p(x,y)logp(y∣x)
那麼,有:
I(X;Y)=x∈X∑y∈Y∑p(x,y)log(p(x)p(y)p(x,y))=x∈X∑y∈Y∑p(x,y)log(p(x)p(x∣y))=x∈X∑y∈Y∑p(x,y)logp(x∣y)−x∈X∑y∈Y∑p(x,y)logp(x)=−H(X∣Y)−x∈X∑(y∈Y∑p(x,y))logp(x)=−H(X∣Y)−x∈X∑p(x)logp(x)=−H(X∣Y)+H(X)=H(X)−H(X∣Y)
下面給出互信息、條件熵、聯合熵間的韋恩圖:
有關更詳細內容,請移步:信息論 – 熵與互信息和什麼是「互信息」?
二、FID(Fréchet Inception Distance)
FID(Fréchet Inception Distance)[4]是用來計算真實圖像與生成圖像的特徵向量間距離的一種度量,這裏的特徵向量是由Inception v3 Network得到的。Inception v3 Network是一個分類網絡,網絡結構的最後兩層爲全連接層,以得到1∗1∗1000分類向量,而FID採用的是倒數第二個全連接層的輸出1∗1∗2048維向量用於距離度量。
我們用這個距離來衡量真實圖像和生成圖像的相似程度,如果FID值越小,則相似程度越高。最好情況即是FID=0,兩個圖像相同。
假設真實分佈Pr和生成分佈Pg建模爲多維高斯分佈,參數分別爲(μr,Σr)和(μg,Σg),其中μ和Σ分別爲均值向量和協方差矩陣。FID的計算公式爲:
d2((μr,Σr),(μg,Σg))=∥μr−μg∥2+Tr(Σr+Σg−2(ΣrΣg)21)
其中Tr表示矩陣的跡(矩陣對角元之和)。
實際計算:
那在計算FID時呢,一般性我們假設特徵向量維數爲n,那麼均值向量μ的維數爲n,協方差矩陣Σ的維數爲n∗n。首先分別選取真實圖像和生成圖像各N張,計算得到的特徵向量有N∗n維,之後分別計算這N個樣本對應的均值向量μ和協方差矩陣Σ,即得到了真實分佈Pr和生成分佈Pg對應的參數。詳細計算代碼可參考:How to Implement the Frechet Inception Distance (FID) for Evaluating GANs
缺點:
與IS同樣基於特徵的方法,不能很好區分指標的好壞是由生成圖像質量問題還是生成多樣性問題導致的[3]。IS和FID同樣還不能描述特徵的空間關係[6]。
參考文獻
[1] Improved techniques for training gans. (NeurIPS2016)
[2] A Note on the Inception Score.
[3] How good is my GAN?.(ECCV2018) (引用了其Related work部分)
[4] Gans trained by a two time-scale update rule converge to a local nash equilibrium. (NeurIPS2017)
[5] GAN生成圖像質量的兩個評價指標——IS與FID
[6] 【深度理解】如何評價GAN網絡的好壞?IS(inception score)和FID(Fréchet Inception Distance)
[7] How to Implement the Frechet Inception Distance (FID) for Evaluating GANs