GAN網絡評估指標:IS、FID、PPL
轉自:IS、FID、PPL,GAN網絡評估指標
另外關于GAN的評價指標,推薦李宏毅老師的視頻:【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條件式生成
0 圖形生成指標的要求
眾所周知,評價生成模型最基本的要考慮以下兩方面
- 生成的圖片是否清晰?
- 生成的圖片是否多樣?即使圖片足夠清晰,只能生成幾種圖片的網絡(也就是mode collapse)肯定不是好的。
此外可能也要考慮以下幾點
- 生成的圖片是否和訓練數據圖片過于相近?比如我設計一個網絡,只是簡單的拷貝訓練數據圖片,這樣認為也是不好的。
- 生成的圖片是否可以平滑的變化?對于從噪聲z得到的圖片x,如果在z附近取值,應該也是得到近似變化的圖片x。
- …
1 Inception Score
1.1 Inception Score的基本思想
基本思想:Inception Score使用圖片類別分類器來評估生成圖片的質量。其中使用的圖片類別分類器為Inception Net-V3。這也是Inception Score名稱的由來。
Inception Net-V3 是圖片分類器,在ImageNet數據集上訓練。ImageNet是由120多萬張圖片,1000個類別組成的數據集。Inception Net-V3可以對一副圖片輸出一個1000分類的概率。
清晰度,IS 對于生成的圖片 xxx 輸入到Inception Net-V3中產生一個1000維的向量 yyy 。其中每一維代表數據某類的概率。對于清晰的圖片來說, yyy 的某一維應該接近1,其余維接近0。即對于類別 yyy 來說, p(y∣x)p(y|x)p(y∣x) 的熵很小(概率比較確定)。
多樣性:對于所有的生成圖片,應該均勻分布在所有的類別中。比如共生成10000張圖片,對于1000類別,每一類應該生成10張圖片。即 p(y)=∑p(y∣x(i))p(y)=\sum p(y|x^{(i)})p(y)=∑p(y∣x(i)) 的熵很大,總體分布接近均勻分布。
1.2 Inception Score的公式
直觀感受,IS是對生成圖片清晰度和多樣性的衡量,IS值越大越好。具體公式如下
IS(G)=exp??(Ex~pgDKL(p(y∣x)∣∣p(y)))IS(G)=\exp?(\mathbb{E}_{x\sim p_g}D_{KL}(p(y|x)||p(y))) IS(G)=exp?(Ex~pg??DKL?(p(y∣x)∣∣p(y)))
其中
- exp?\expexp :為了形式更加好看
- Ex~pg\mathbb{E}_{x\sim p_g}Ex~pg?? :遍歷所有的生成樣本,求平均值
- DKLD_{KL}DKL? :KL散度, DKL(P∣∣Q)D_{KL}(P||Q)DKL?(P∣∣Q) 用于衡量分布 PPP 和 QQQ 之間的近似程度
- p(y∣x)p(y|x)p(y∣x) :對于圖片 xxx,屬于所有類別的概率分布。對于給定圖片 xxx,表示為一個1000維數向量。
- p(y)p(y)p(y) :邊緣概率,具體實現為對于所有的驗證圖片 xxx,計算得到 p(y∣x)p(y|x)p(y∣x) ,再求所有向量平均值。
我們希望生成的圖片,足夠清晰且生成類別多樣,所有IS越大越好。并且對于Inception Net-V3由于是1000分類任務,所以 IS(G)IS(G)IS(G) 有最大值 IS(G)≤1000IS(G)≤1000IS(G)≤1000 。
1.3 Inception Score的問題
(1)數據集問題
Inception Score是基于Inception Net-V3得出的,而Inception Net-V3是在ImageNet上1000分類任務。所以生成模型應該也是在ImageNet上訓練,生成ImageNet相似圖片。
不能生成任意的圖片,而直接套用Inception Net-V3。
比如說,使用Inception Net-V3來計算 p(y∣x)p(y|x)p(y∣x) 的熵,在ImageNet上計算結果為1.97bit。在CIFAR-10上計算結果是4.664bit,在隨機噪聲圖片上計算結果是6.512bit。
可以看出真實的圖片數據集CIFAR-10居然和隨機噪聲圖片的結果相近這是不科學的。
總結:不能使用在一個數據集上訓練分類模型,評估在另一個數據集上訓練的生成模型
(2)Inception Score敏感性問題
使用pytorch、tensorflow、keras等不同框架下的Inception Net權值,在同樣的分類精度下,計算同一個數據集的IS。IS的差別很大,僅僅由于使用的框架不同,IS分值可以相差11.5%。
總結:神經網絡中權值的細節改變可能很大的影響IS分數
(3)Inception Score高的圖片不一定真實
由于Inception Score是根據分類器進行給分,我們可以根據分類器的結果來進行刷分。刷分的關鍵是全體圖片的類別要多樣,其中具體一副圖片,分類器計算出的熵要比較低。
比如我現有數據集50000張,取第1張圖片,使用Inception Net-V3計算分類概率,要使圖片第1類概率達到最大。使用梯度下降,對圖片進行更新,直到第一類概率極大。如此對第2圖片強行調整至符合第2類…遍歷所有的圖片之后,在1000類中,每一類有10張圖片,且每張圖片的分類概率都很明確。但這樣生成的圖片大概率是不真實的
(4)Inception Score低的圖片不一定差
如果我給出一張真實的圖片,但并不屬于Inception Net-V3的1000分類中的任何一類。分類器無法判別,那么Inception Score分數不高,但圖像是真實的。
(6)Inception Score的多樣性檢驗有局限性
Inception Score檢測生成圖片是否多樣,是根據生成的類別進行檢驗判斷。如果我的模型輸出圖片,類別是平均分配的。但每一類中,圖片都一樣,也就是mode collapse。這種情況Inception Score是無法檢測的
(6)Inception Score不能反映過擬合
如果我的神經網絡只是單純的拷貝訓練集的圖片,那么Inception Score肯定是很高的,但這樣的生成模型是沒有意義的。
總結:Inception Score得分過于依賴分類器,是一種間接的對圖片質量評估的方法,沒有考慮真實數據與生成數據的具體差異。Inception Score是基于ImageNet得到的,在IS看來,凡是不像ImageNet的數據,都是不真實的。
2 Fréchet Inception Distance
2.1 Fréchet Inception Distance的基本思想
基本思想:直接考慮生成數據和真實數據在feature層次的距離,不再額外的借助分類器。因此來衡量生成圖片和真實圖片的距離。
眾所周知,預訓練好的神經網絡在高層可以提取圖片的抽象特征。FID使用Inception Net-V3全連接前的2048維向量作為圖片的feature。
2.2 Fréchet Inception Distance的公式
直觀感受,**FID是反應生成圖片和真實圖片的距離,數據越小越好。**專業來說,FID是衡量兩個多元正態分布的距離,其公式如下:
FID=∣∣μr?μg∣∣2+Tr(Σr+Σg?2(ΣrΣg)1/2)FID=||\mu_r?\mu_g||^2+Tr(\Sigma_r+\Sigma_g?2(\Sigma_r\Sigma_g)^{1/2}) FID=∣∣μr??μg?∣∣2+Tr(Σr?+Σg??2(Σr?Σg?)1/2)
其中
- μr\mu_rμr? :真實圖片的特征均值
- μg\mu_gμg? :生成圖片的特征均值
- Σr\Sigma_rΣr? :真實圖片的協方差矩陣
- Σg\Sigma_gΣg? :生成圖片的協方差矩陣
- TrTrTr :跡
2.3 Fréchet Inception Distance的優缺點
(1)Fréchet Inception Distance優點
- 生成模型的訓練集可以和Inception Net-V3不同
- 刷分不會導致生成圖片質量變差
(2)Fréchet Inception Distance的缺點
- FID是衡量多元正態分布之間的距離,但提取的圖片特征不一定是符合多元正態分布的
- 無法解決過擬合問題,如果生成模型只能生成和訓練集一模一樣的數據無法檢測
3 Perceptual Path Length
對生成圖片除了要求清晰、多樣之外。我們還希望生成模型可以結合不同的訓練圖片的特征。比如說我取一個人的發型,取另一個人的臉型,然后結合生成一張圖片。
也就是生成器能否很好的把不同圖片的特征分離出來,論文StyleGAN提出了Perceptual Path Length(PPL)用來評估這個指標。
如何理解生成器把不同圖片的特征分離開呢?
首先回顧最初的GAN網絡,給定隱空間中的噪聲 z∈Zz\in Zz∈Z ,通過生成器,可以得到一副圖 x=G(z)x=G(z)x=G(z) 。優秀的生成器,應該可以把 ZZZ 空間進行良好劃分。
比如說對于生成人臉的生成器,對于任意的噪聲向量 zzz 來說,我們希望第一個分量 z1z_1z1? 控制人的頭發,改變 z1z_1z1? 的大小僅僅改變生成圖片的頭發,希望第二個分離 z2z_2z2? 控制人的眉毛形狀…那么這個生成器就把隱空間中不同的部分和不同的特征分離開了。
3.1 Perceptual Path Length基本思想
基本思想:給出兩個隨機噪聲 z1,z2z_1,z_2z1?,z2? ,為求得兩點的感知路徑長度PPL,采用微分的思想。把兩噪聲點插值路徑細分成多個小段,求每個小段的長度,再求平均
3.2 Perceptual Path Length公式
直觀來說,PPL評估利用生成器從一個圖片變道另一個圖片的距離,越小越好。公式如下
PPL=E[1?2d(G(slerp(z1,z2;t)),G(slerp(z1,z2;t+?)))]PPL=\mathbb{E}[\frac{1}{\epsilon^2}d(G(slerp(z_1,z_2;t)),G(slerp(z_1,z_2;t+?)))] PPL=E[?21?d(G(slerp(z1?,z2?;t)),G(slerp(z1?,z2?;t+?)))]
其中
- ?\epsilon? :細分小段,用1e-4代替
- d(?,?)d(?,?)d(?,?) :perceptual distance,使用預訓練的VGG來衡量
- GGG :圖片生成器
- slerpslerpslerp :spherical linear interpolation球面線性插值,一種插值方式
- t~U(0,1)t\sim U(0,1)t~U(0,1) ,插值參數,服從均勻分布
3.3 理解Perceptual Path Length
具有良好perceptual變化的優秀的GAN網絡應該什么樣子的?
perceptual是比較抽象的人理解的概念,我們希望GAN網絡可以讓在歐幾里得空間中相近的噪聲點,得到的圖片也是相近的。如下圖
假設上圖表示perceptual距離空間。z1z_1z1? 可以生成一張白色的狗, z2z_2z2? 可以生成一張黑色的狗。那么我們在 z1z_1z1? 和 z2z_2z2? 的歐式最短路徑上,移動藍色的點。在優秀的GAN網絡中,得到的結果應該是perceptual距離也是最短的(也就是藍色的線,最短距離)。
綠色的線是比較差的GAN網絡,在從白狗向黑狗變化的過程中,變化perceptual過大,出現了臥室。
而PPL就是通過類似曲線積分的方法,計算出perceptual path的長度。比如下圖,在兩個不同的網絡中。 PPL(t+?1)<PPL(t+?2)PPL(t+\epsilon_1)<PPL(t+\epsilon_2)PPL(t+?1?)<PPL(t+?2?) 。通過累加的方法逐步計算出綠線比藍線長,那么得到了藍線代表的GAN網絡要比綠線代表的GAN網絡要好。這里也就是說,以優化PPL為目標可以提升GAN網絡的質量。
( t+?1t+\epsilon_1t+?1? 和 t+?2t+\epsilon_2t+?2? 在歐式空間 ZZZ 中是向一個方向移動,但在perceptual距離空間下,不同的GAN網絡可能會向不同的方向移動。)
參考資料
A Note on the Inception Score (arxiv.org)
Inception Score 的原理和局限性 - 知乎 (zhihu.com)
Fréchet Inception Distance (FID) - 知乎 (zhihu.com)
From GAN basic to StyleGAN2. This post describes GAN basic… | by Akihiro FUJII | Analytics Vidhya | Medium