GAN網絡評估指標:IS、FID、PPL

GAN網絡評估指標:IS、FID、PPL

轉自:IS、FID、PPL,GAN網絡評估指標

另外關于GAN的評價指標,推薦李宏毅老師的視頻:【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條件式生成

0 圖形生成指標的要求

眾所周知,評價生成模型最基本的要考慮以下兩方面

  1. 生成的圖片是否清晰
  2. 生成的圖片是否多樣?即使圖片足夠清晰,只能生成幾種圖片的網絡(也就是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(yx) 的熵很小(概率比較確定)。

多樣性:對于所有的生成圖片,應該均勻分布在所有的類別中。比如共生成10000張圖片,對于1000類別,每一類應該生成10張圖片。即 p(y)=∑p(y∣x(i))p(y)=\sum p(y|x^{(i)})p(y)=p(yx(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?(Expg??DKL?(p(yx)∣∣p(y)))
其中

  • exp?\expexp :為了形式更加好看
  • Ex~pg\mathbb{E}_{x\sim p_g}Expg?? :遍歷所有的生成樣本,求平均值
  • DKLD_{KL}DKL? :KL散度, DKL(P∣∣Q)D_{KL}(P||Q)DKL?(P∣∣Q) 用于衡量分布 PPPQQQ 之間的近似程度
  • p(y∣x)p(y|x)p(yx) :對于圖片 xxx,屬于所有類別的概率分布。對于給定圖片 xxx,表示為一個1000維數向量。
  • p(y)p(y)p(y) :邊緣概率,具體實現為對于所有的驗證圖片 xxx,計算得到 p(y∣x)p(y|x)p(yx) ,再求所有向量平均值。

我們希望生成的圖片,足夠清晰且生成類別多樣,所有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(yx) 的熵,在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 ZzZ ,通過生成器,可以得到一副圖 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)tU(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

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

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

相關文章

降維后輸入分類器分類時報錯_邏輯回歸解決多分類方法及其優缺點分析

眾所周知&#xff0c;邏輯回歸常用于解決二分類任務&#xff0c;但是在工作/學習/項目中&#xff0c;我們也經常要解決多分類問題。本文總結了 3 種邏輯回歸解決多分類的方法&#xff0c;并分析了他們的優缺點。一、One-Vs-Rest假設我們要解決一個分類問題&#xff0c;該分類問…

淺談 PyTorch 中的 tensor 及使用

淺談 PyTorch 中的 tensor 及使用 轉自&#xff1a;淺談 PyTorch 中的 tensor 及使用 這篇文章主要是圍繞 PyTorch 中的 tensor 展開的&#xff0c;討論了張量的求導機制&#xff0c;在不同設備之間的轉換&#xff0c;神經網絡中權重的更新等內容。面向的讀者是使用過 PyTorch …

簡述springmvc過程_spring mvc的工作流程是什么?

展開全部SpringMVC工作流程描述向服務器發送HTTP請求&#xff0c;請求被前端控制器 DispatcherServlet 捕獲。DispatcherServlet 根據 -servlet.xml 中的配置對請62616964757a686964616fe59b9ee7ad9431333365646233求的URL進行解析&#xff0c;得到請求資源標識符(URI)。 然后根…

PyTorch 的 Autograd

PyTorch 的 Autograd 轉自&#xff1a;PyTorch 的 Autograd PyTorch 作為一個深度學習平臺&#xff0c;在深度學習任務中比 NumPy 這個科學計算庫強在哪里呢&#xff1f;我覺得一是 PyTorch 提供了自動求導機制&#xff0c;二是對 GPU 的支持。由此可見&#xff0c;自動求導 (a…

商場樓層導視牌圖片_百寶圖商場電子導視軟件中預約產品功能簡介

百寶圖商場電子導視軟件中預約產品功能簡介 管理端&#xff0c;可配合百寶圖商場電子導視軟件配套使用 1&#xff1a;數據展示&#xff1a;圖形展示總預約數/預約時間峰值/預約途徑/各途徑數量對比 2&#xff1a;數據統計&#xff1a;有效預約數量/無效預約數量/無效預約原因備…

Pytorch autograd.grad與autograd.backward詳解

Pytorch autograd.grad與autograd.backward詳解 引言 平時在寫 Pytorch 訓練腳本時&#xff0c;都是下面這種無腦按步驟走&#xff1a; outputs model(inputs) # 模型前向推理 optimizer.zero_grad() # 清除累積梯度 loss.backward() # 模型反向求導 optimizer.step()…

相對熵與交叉熵_熵、KL散度、交叉熵

公眾號關注 “ML_NLP”設為 “星標”&#xff0c;重磅干貨&#xff0c;第一時間送達&#xff01;機器學習算法與自然語言處理出品公眾號原創專欄作者 思婕的便攜席夢思單位 | 哈工大SCIR實驗室KL散度 交叉熵 - 熵1. 熵(Entropy)抽象解釋&#xff1a;熵用于計算一個隨機變量的信…

動手實現一個帶自動微分的深度學習框架

動手實現一個帶自動微分的深度學習框架 轉自&#xff1a;Automatic Differentiation Tutorial 參考代碼&#xff1a;https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目錄 簡介自動求導設計自動求導實現一個例子總結參考資料 簡介 梯度…

git安裝后找不見版本_結果發現git版本為1.7.4,(git --version)而官方提示必須是1.7.10及以后版本...

結果發現git版本為1.7.4,(git --version)而官方提示必須是1.7.10及以后版本升級增加ppasudo apt-add-repository ppa:git-core/ppasudo apt-get updatesudo apt-get install git如果本地已經安裝過Git&#xff0c;可以使用升級命令&#xff1a;sudo apt-get dist-upgradeapt命令…

隨機數生成算法:K進制逐位生成+拒絕采樣

隨機數生成算法&#xff1a;K進制逐位生成拒絕采樣 轉自&#xff1a;【宮水三葉】k 進制諸位生成 拒絕采樣 基本分析 給定一個隨機生成 1 ~ 7 的函數&#xff0c;要求實現等概率返回 1 ~ 10 的函數。 首先需要知道&#xff0c;在輸出域上進行定量整體偏移&#xff0c;仍然滿…

深入理解NLP Subword算法:BPE、WordPiece、ULM

深入理解NLP Subword算法&#xff1a;BPE、WordPiece、ULM 本文首發于微信公眾號【AI充電站】&#xff0c;感謝大家的贊同、收藏和轉發(▽) 轉自&#xff1a;深入理解NLP Subword算法&#xff1a;BPE、WordPiece、ULM 前言 Subword算法如今已經成為了一個重要的NLP模型性能提升…

http 錯誤 404.0 - not found_電腦Regsvr32 用法和錯誤消息的說明

? 對于那些可以自行注冊的對象鏈接和嵌入 (OLE) 控件&#xff0c;例如動態鏈接庫 (DLL) 文件或 ActiveX 控件 (OCX) 文件&#xff0c;您可以使用 Regsvr32 工具 (Regsvr32.exe) 來將它們注冊和取消注冊。Regsvr32.exe 的用法RegSvr32.exe 具有以下命令行選項&#xff1a; Regs…

mysql error 1449_MySql錯誤:ERROR 1449 (HY000)

筆者系統為 mac &#xff0c;不知怎的&#xff0c;Mysql 竟然報如下錯誤&#xff1a;ERROR 1449 (HY000): The user specified as a definer (mysql.infoschemalocalhost) does not exist一時沒有找到是什么操作導致的這個錯誤。然后經過查詢&#xff0c;參考文章解決了問題。登…

MobileNet 系列:從V1到V3

MobileNet 系列&#xff1a;從V1到V3 轉自&#xff1a;輕量級神經網絡“巡禮”&#xff08;二&#xff09;—— MobileNet&#xff0c;從V1到V3 自從2017年由谷歌公司提出&#xff0c;MobileNet可謂是輕量級網絡中的Inception&#xff0c;經歷了一代又一代的更新。成為了學習輕…

mysql 查詢表的key_mysql查詢表和字段的注釋

1,新建表以及添加表和字段的注釋.create table auth_user(ID INT(19) primary key auto_increment comment 主鍵,NAME VARCHAR(300) comment 姓名,CREATE_TIME date comment 創建時間)comment 用戶信息表;2,修改表/字段的注釋.alter table auth_user comment 修改后的表注…

mysql 高級知識點_這是我見過最全的《MySQL筆記》,涵蓋MySQL所有高級知識點!...

作為運維和編程人員&#xff0c;對MySQL一定不會陌生&#xff0c;尤其是互聯網行業&#xff0c;對MySQL的使用是比較多的。MySQL 作為主流的數據庫&#xff0c;是各大廠面試官百問不厭的知識點&#xff0c;但是需要了解到什么程度呢&#xff1f;僅僅停留在 建庫、創表、增刪查改…

teechart mysql_TeeChart 的應用

TeeChart 是一個很棒的繪圖控件&#xff0c;不過由于里面沒有注釋&#xff0c;網上相關的資料也很少&#xff0c;所以在應用的時候只能是一點點的試。為了防止以后用到的時候忘記&#xff0c;我就把自己用到的東西都記錄下來&#xff0c;以便以后使用的時候查詢。1、進制縮放圖…

NLP新寵——淺談Prompt的前世今生

NLP新寵——淺談Prompt的前世今生 轉自&#xff1a;NLP新寵——淺談Prompt的前世今生 作者&#xff1a;閔映乾&#xff0c;中國人民大學信息學院碩士&#xff0c;目前研究方向為自然語言處理。 《Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in…

mysql key_len_淺談mysql explain中key_len的計算方法

mysql的explain命令可以分析sql的性能&#xff0c;其中有一項是key_len(索引的長度)的統計。本文將分析mysql explain中key_len的計算方法。1、創建測試表及數據CREATE TABLE member (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,age tinyint(…

requestfacade 這個是什么類?_Java 的大 Class 到底是什么?

作者在之前工作中&#xff0c;面試過很多求職者&#xff0c;發現有很多面試者對Java的 Class 搞不明白&#xff0c;理解的不到位&#xff0c;一知半解&#xff0c;一到用的時候&#xff0c;就不太會用。想寫一篇關于Java Class 的文章&#xff0c;沒有那么多專業名詞&#xff0…