紋理一致性圖像評價指標: Image Quality Assessment: Unifying Structure and Texture Similarity(2020 PAMI)
- 專題介紹
- 一、研究背景
- 二、方法總覽
- 2.1 初始變換
- 2.2 紋理表示和結構表示
- 2.3 DISTS指標
- 2.4 優化DISTS指標
- 三、實驗結果
- 四、總結
本文將對統一圖像結構和圖像紋理的評價指標DISTS進行講解。這篇主要的亮點在于作者開發了一個具有明確容忍紋理重采樣的全參考質量評價模型,參考資料如下:
[1]. 論文地址
[2]. 代碼地址
[3]. IQA-pytorch代碼路徑
[4]. 作者視頻講解地址
專題介紹
圖像質量評價(Image Quality Assessment, IQA)是圖像處理、計算機視覺和多媒體通信等領域的關鍵技術之一。IQA不僅被用于學術研究,更在影像相關行業內實現了完整的商業化應用,涉及影視、智能手機、專業相機、安防監控、工業質檢、醫療影像等。IQA與圖像如影隨形,其重要程度可見一斑。
但隨著算法側的能力不斷突破,AIGC技術發展火熱,早期的IQA或已無法準確評估新技術的能力。另一方面,千行百業中各類應用對圖像質量的需求也存在差異和變化,舊標準也面臨著適應性不足的挑戰。
本專題旨在梳理和跟進IQA技術發展內容和趨勢,為讀者分享有價值、有意思的IQA。希望能夠為底層視覺領域內的研究者和從業者提供一些參考和思路。
系列文章如下:
【1】🔥IQA綜述
【2】PSNR&SSIM
【3】Q-Insight
【4】VSI
【5】LPIPS
一、研究背景
作者研究的動機,可以用以下的圖來直觀明確的表達。
圖中(a)、(b)、(c)分別是原圖,原圖進行jpeg壓縮的圖像,以及重新在同樣的草上采樣的圖(這里作者用的詞叫resample)。從人類的認知上來說,會覺得(c)和(a)會更相像,然而這里所有的常規的IQA方法都失效了,包含前面提到的PSNR、SSIM以及LPIPS等,這里失敗的原因也很明顯,作者想要捕捉的是紋理上的感知一致性,而紋理具有不規則的情況,對于人類的感知來說并不需要像素級別的完全對其或一致,以前的方法對于這種情況的紋理不太具有容忍度,與實際人類的感知是不一樣的。
基于此,作者開發了一個能夠在圖像結構和圖像紋理上都具有與人類相同感知判斷的指標,在此之上,還希望紋理能夠resample(不需要像素級對齊)之后也是一樣的,另外區分開退化(JPEG,JPEG會損失紋理)。總的來說,作者的貢獻如下(作者沒有明確分點,博主這里做一個簡單總結):
- 開發了第一個具有明確容忍紋理resample的全參考圖像質量評價模型。
- 設計特征空間的均值作為圖像紋理統計特征,引入全局SSIM作為結構相似性指標,結合這兩點在多尺度特征上利用不同的權重得到一個綜合評價的指標。
- 通過最小化從相同紋理圖像裁剪的子圖像之間的相似距離,進一步優化了同一紋理判斷的魯棒性。
- 優化后的方法在傳統的圖像評價數據集和紋理相似數據集上都更接近人類的判斷結果,該方法在紋理分類和檢索任務上表現優異,最后該方法還對幾何變化(平移和擴張)不敏感且不需要專門的訓練或數據增強。
二、方法總覽
博主先對該方法做一個大概的流程總結,后續會按照這個流程進行描述,整體博主認為可以分為4個步驟:
- 對圖像進行一個初始的變換,從像素空間變換到特征空間。
- 對特征提取所謂紋理的表示,對特征提取所謂結構的表示。
- 利用紋理和結構的表示,加入一些可學習的權重綜合計算一個評價指標。
- 利用這個評價指標,進一步優化權重得到紋理區域resample不敏感的指標,且能夠有結構和紋理上做感知相似度的模型。
作者展示了這個評價指標做損失函數優化隨機噪聲和帶JPEG噪聲做輸入的效果。可以看到本文的方法可以精準捕捉結構和紋理,優化后的效果在跟原圖感知相似度上對比其他方法是最高的。
其他方法有些在輸入為隨機噪聲時,連結構信息都被丟失了,最好表現的LPIPS在紋理上表現不如DISTS。
下面根據上面提到的幾點根據順序進行講解。
2.1 初始變換
作者最后使用的是在ImageNet上訓練的VGG16網絡來對圖像進行預處理,轉換到特征空間,原因在于pixel空間不好對比感知距離。但是這個對于選取的變換,提到2個很重要的點:
- 下采樣時需要抗混疊:作者描述的原因比較學術,博主這里做一些比較形象的描述,混疊現象一般會給圖像的高頻區域帶來2個最常見的問題是,空間上的鋸齒現象以及通道上的偽彩現象,這些是不抗混疊帶來的artifact現象。那在這里,VGG16也是需要下采樣的,下采樣VGG16中使用到的算子是Maxpool,一個不抗混疊的算子,解決這個問題的方法非常簡單,作者直接替換了這個算子引入了一個g濾波器,最后的表現形式名為L2-pooling,如下式所示。P(x)=g?(x?x)P(x)=\sqrt{g*(x*x)}P(x)=g?(x?x)?g是一個Hanning window,具體表現為數值,大家可以參考后續的代碼講解,是一個較為低頻的濾波器。
- 集合必須是單射(Injection):單射的意思就是不同的輸入應該映射到不同的輸出,一個對一個,不能一個特征的輸出,對應著多個輸入。例子就是當IQA指標最高時,對應的最佳輸入不是參考圖像,前面展示的一些方法(GTI-CNN等),就不滿足這個性質,那么優化后的結果就很可能跟原圖差距很大,損失大量結構信息或是紋理上的問題,這里LPIPS也是如此,沒有嚴格的滿足這個性質,所以在紋理上優化后也是存在一定的問題。作者對于DISTS的設計上為了滿足這個性質,引入一個輸入x,相當于預處理變換中引入一個identity變換,這樣就能保證滿足這個性質。即提取的預處理特征集合是:
f(x)={xj(i);i=0,…,m;j=1,…,nif(x)=\{x_j^{(i)}; i = 0,\ldots,m; j = 1,\ldots,n_if(x)={xj(i)?;i=0,…,m;j=1,…,ni? f(y)={y~j(i);i=0,…,m;j=1,…,nif(y)=\{\tilde{y}_j^{(i)}; i = 0,\ldots,m; j = 1,\ldots,n_if(y)={y~?j(i)?;i=0,…,m;j=1,…,ni?
此兩個分別代表輸入和參考圖像的預處理特征集合,是用VGG16提取的多個層的結果,對應conv1_2,conv2_2, conv3_3, conv4_3, and conv5_3,這里m=5,對應的x0和y0是identity變換。
2.2 紋理表示和結構表示
- 首先是紋理的部分,這里作者引用了很多研究,結論是一個僅包含CNN通道均值和方差的簡化統計集合足以用于紋理分類或風格轉移任務,因此作者使用了一個簡單的集合來表示紋理,只包含特征映射的空間均值(總共1475個統計數據),為視覺紋理提供了一個有效的參數化模型,如下式所示。
l(x~j(i),y~j(i))=2μx~j(i)μy~j(i)+c1(μx~j(i))2+(μy~j(i))2+c2l(\tilde{x}_j^{(i)}, \tilde{y}_j^{(i)}) = \frac{2\mu_{\tilde{x}_j}^{(i)}\mu_{\tilde{y}_j}^{(i)} + c_1}{(\mu_{\tilde{x}_j}^{(i)})^2 + (\mu_{\tilde{y}_j}^{(i)})^2 + c_2}l(x~j(i)?,y~?j(i)?)=(μx~j?(i)?)2+(μy~?j?(i)?)2+c2?2μx~j?(i)?μy~?j?(i)?+c1??
這里的μ\muμ就是我們一直講到的均值,ccc是一個防除零的值。
作者為了驗證這個模型的可行性,用以下的公式來優化了以該特征的隨機噪聲輸入。
y?=argmin?yD(x,y)=argmin?y∑i,j(μx~j(i)?μy~j(i))2y^\star = \underset{y}{\mathrm{arg}\min} D(x, y) = \underset{y}{\mathrm{arg}\min} \sum_{i, j} (\mu_{\tilde{x}_j}^{(i)} - \mu_{\tilde{y}_j}^{(i)})^2y?=yargmin?D(x,y)=yargmin?i,j∑?(μx~j?(i)??μy~?j?(i)?)2
可視化的優化結果表明該模型是有意義的,如下圖所示。
(b)和(f)是用了多層((b)指只用到最淺層的VGG,( c)指只用到第二層VGG),只不過層數逐漸增大,(g)-(k)是只使用了VGG的某一層,可以看到多層的效果要明顯優于單層的,(f)的效果與原圖(a)很相像了,也是DISTS指標使用到的,通過看單層的效果可以發現,淺層的均值更多與圖像基本的強度和顏色相關,深層的與形狀和結構更加相關。作者還對比了其他紋理提取方法的效果:
這里(a)是原圖,(b)圖是一個不熟悉的方法,(c)是圖像復原領域中感知損失中關于風格損失的部分,使用gram矩陣統計的紋理相關性,(d)是本文的方法,可以看到本文的方法得到的效果和gram_matrix的效果不相上下,但本文使用到的特征數相比gram_matrix是大大減小的,不會有太多的冗余。
- 結構的部分:使用了一個特征的相關系數,觀察公式可以發現跟SSIM關于結構特征的定義是一樣的,這里不同之處在于作者使用的global,全局的,因此可以理解為SSIM中窗口的尺寸跟特征圖尺寸一樣。
s(x~j(i),y~j(i))=2σx~jy~j(i)+c2(σx~j(i))2+(σy~j(i))2+c2s(\tilde{x}_j^{(i)}, \tilde{y}_j^{(i)}) = \frac{2\sigma_{\tilde{x}_j\tilde{y}_j}^{(i)} + c_2}{(\sigma_{\tilde{x}_j}^{(i)})^2 + (\sigma_{\tilde{y}_j}^{(i)})^2 + c_2}s(x~j(i)?,y~?j(i)?)=(σx~j?(i)?)2+(σy~?j?(i)?)2+c2?2σx~j?y~?j?(i)?+c2??
這個沒什么特別需要描述的,比較重要的點就是SSIM是分窗口計算,最后做平均,這里就是全局窗口,計算完一次就結束。
2.3 DISTS指標
DISTS指標的總覽如下:l(x~j(i),y~j(i))=2μx~j(i)μy~j(i)+c1(μx~j(i))2+(μy~j(i))2+c1l(\tilde{x}_j^{(i)}, \tilde{y}_j^{(i)}) = \frac{2\mu_{\tilde{x}_j}^{(i)}\mu_{\tilde{y}_j}^{(i)} + c_1}{(\mu_{\tilde{x}_j}^{(i)})^2 + (\mu_{\tilde{y}_j}^{(i)})^2 + c_1}l(x~j(i)?,y~?j(i)?)=(μx~j?(i)?)2+(μy~?j?(i)?)2+c1?2μx~j?(i)?μy~?j?(i)?+c1?? s(x~j(i),y~j(i))=2σx~jy~j(i)+c2(σx~j(i))2+(σy~j(i))2+c2,s(\tilde{x}_j^{(i)}, \tilde{y}_j^{(i)}) = \frac{2\sigma_{\tilde{x}_j\tilde{y}_j}^{(i)} + c_2}{(\sigma_{\tilde{x}_j}^{(i)})^2 + (\sigma_{\tilde{y}_j}^{(i)})^2 + c_2},s(x~j(i)?,y~?j(i)?)=(σx~j?(i)?)2+(σy~?j?(i)?)2+c2?2σx~j?y~?j?(i)?+c2??, D(x,y;α,β)=1?∑i=0m∑j=1ni(αijl(x~j(i),y~j(i))+βijs(x~j(i),y~j(i)))D(x, y; \alpha, \beta) = 1 - \sum_{i = 0}^{m} \sum_{j = 1}^{n_i} \left( \alpha_{ij} l(\tilde{x}_j^{(i)}, \tilde{y}_j^{(i)}) + \beta_{ij} s(\tilde{x}_j^{(i)}, \tilde{y}_j^{(i)}) \right)D(x,y;α,β)=1?i=0∑m?j=1∑ni??(αij?l(x~j(i)?,y~?j(i)?)+βij?s(x~j(i)?,y~?j(i)?))
對紋理和結構的對比結果進行一個α\alphaα和β\betaβ的加權求和,最后進行一個減法,即相似度越高,值越小。
作者這里還講了下這個指標滿足的一些數學性質:非負性、對稱性、三角不等式、唯一最小值,論文中有證明,感興趣的讀者可以看一下。
2.4 優化DISTS指標
自然,因為DISTS指標已經定義完畢,我們首先可以針對數據集進行一個L1的距離的優化。
E1(x,y;α,β)=∣D(x,y;α,β)?q(y)∣E_1(x, y; \alpha, \beta) = \left| D(x, y; \alpha, \beta) - q(y) \right|E1?(x,y;α,β)=∣D(x,y;α,β)?q(y)∣
這里的q(y)q(y)q(y)是數據的分數標記。
為了使得容忍紋理resample更有效,作者還加入了一個正則項,顯式的強制模型以數據驅動的方式來解決這個問題,最小化從同一紋理區域z中采樣的兩個patch(z1、z2)之間的距離。
E2(z;α,β)=D(z1,z2;α,β)E_2(z; \alpha, \beta) = D(z_1, z_2; \alpha, \beta)E2?(z;α,β)=D(z1?,z2?;α,β)
那么總的優化函數就可以寫作:
E(Q,T;α,β)=1∣Q∣∑x,y∈QE1(x,y;α,β)+λ1∣T∣∑z∈TE2(z;α,β)E(\mathcal{Q}, \mathcal{T}; \alpha, \beta) = \frac{1}{|\mathcal{Q}|} \sum_{x, y \in \mathcal{Q}} E_1(x, y; \alpha, \beta) + \lambda \frac{1}{|\mathcal{T}|} \sum_{z \in \mathcal{T}} E_2(z; \alpha, \beta)E(Q,T;α,β)=∣Q∣1?x,y∈Q∑?E1?(x,y;α,β)+λ∣T∣1?z∈T∑?E2?(z;α,β)
這里是從兩個不同數據集上采樣的mini-batch,分別優化我們前面講到的內容,有分數的數據集優化E1E_1E1?損失,紋理一致的數據集提供正則項E2E_2E2?損失。
后續作者對比了其他的IQA方法,大概講了下聯系和區別,這個地方內容比較多,博主也不能完全講明白,僅作一個拋磚引玉:
- SSIM和SSIM變種:都存在一個多尺度的操作,并且也可以調整多尺度給到最后結果的比例,SSIM也有能夠解決輕微幾何變換的能力,DISTS通過優化紋理不變性,這部分是相同的,但是前面也講到SSIM是窗口的,DISTS是全局的,這個是比較大的一個區別。
- 自適應線性系統框架:這里是指一些將圖像分離結構和非結構的方法,包含很多IQA模型,比如說MSE和空間頻率加權的方法,方法上細節上肯定是存在一些不同。
- 圖像內容和風格分離的方法:這個指的是常見的感知損失,圖像內容的定義感知損失用的是特征之間的差值,風格的損失使用的是gram_matrix,計算的特征的相關性,作者認為這兩個分量都存在大量冗余且不滿足前面提到的變換唯一最小值的一個約束。
- 其他圖像復原的損失:計算的pixel_loss,或者說跟感知損失的一個組合損失形式(開發中時常會使用到的情況,多個損失的組合),作者認為這種組合雖然說可以讓模型復原的圖像盡可能生成一些感知上有意義的結果,但沒有達到作者想要的紋理不變性的水平。
三、實驗結果
本篇文章的實驗非常詳細。
-
最基本的功能,分數預測。
針對數據集進行一個分數的擬合,在主觀平均意見分數(MoSs)的散點圖上,DISTS基本上是線性的,存在明顯優勢。
定量的實驗上的表現:
在前面提到的LPIPS的數據集上進行了對比,效果也是在前列的,當然在分數預測上跟LPIPS沒有明顯優勢。 -
紋理相似性:優勢明顯,對比其他方法。
紋理的失真量化,可以做排序的應用。
從(a)到(p)是質量逐漸遞減的,(a)是原圖。
紋理的分類和檢索:紋理分類是將未知樣本圖像分類到已知紋理類的一種,紋理檢索是在大型數據庫上進行一個搜索,找到相似的圖像。結果也是比較好的。
-
幾何的形變:除了紋理上的相似度外,當原始圖像跟退化圖像存在全局或局部的錯配時,大多數的全參考IQA方法會嚴重受損,根本原因他們需要像素對齊,當然配準可以解決這個問題,但是會帶來更多的計算負擔,且無法適應嚴重失真,本文提出的方法可以解決這個問題。
定量的實驗,有明顯優勢。
定性的實驗表現如下:
其中(a)時原圖,(b)做了translate平移,(c)做了dilate擴展,(d)做了旋轉,(e)做了云層的移動,(f)做了高斯噪聲,(g)高斯模糊,(h)jpeg壓縮,(i)jpeg2000壓縮,可以明顯看到DISTS對幾何形變更魯棒,這跟人類的感知會更相像。 -
消融實驗:作者做了以下的實驗:
(a):原始LPIPS;(b):(a)基礎上替換L2 pooling;(c):添加indentity,輸入圖像;(d):在(c)之上將LPIPS中的L2距離替換為局部的SSIM計算,窗口為11x11;(e):在(c)之上將LPIPS中的L2距離替換為全局的SSIM計算;(f):在(c)的基礎上加上紋理不變性的正則;(g):在(d)的基礎上加入紋理不變的正則;(h):在(e)的基礎上添加紋理不變的正則。
實驗結果如下:
從中可以得到幾個結論: -
L2 pooling優于maxpool。
-
將輸入圖像加入到其中對性能影響不大,但它保證了最小值唯一的情況,有利于感知優化。
-
全局的SSIM距離由于歐式距離,特別是比較紋理相似性和幾何變換的不變性上。滑動窗口11x11一樣是存在這個問題,效果會下降。
-
紋理不變正則項的訓練,對于幾何變換的不變性以及紋理的不變性有很大作用,盡管它會略微損失一部分對于分數評估的性能。
以上可以說明作者的DISTS中各個改進都是有益的。
四、總結
DISTS針對紋理和結構的全參考感知評估提供了一個新的方法,并且它還能對紋理resample和幾何形變有一定容忍,更加靠近人類圖像質量感知。不過還存在一些問題是:
- 預處理網絡的特征提取部分還是一個黑盒子,對于提取的那些紋理和屬性是未知的。
- 級聯卷積和采樣得到的多尺度特征對于最終結果的重要程度,如果我們可以量化它們,就可以針對性的定義距離,自適應的去使用,而不是現在這種固定的情況。
代碼部分將會單起一篇進行解讀。(未完待續)
感謝閱讀,歡迎留言或私信,一起探討和交流,如果對你有幫助的話,也希望可以給博主點一個關注,謝謝。