CVPR2020論文解讀:CNN合成的圖片鑑別git
論文連接:https://arxiv.org/abs/1912.11035github
代碼連接:https://peterwang512.github.io/CNNDetection/算法
該文章被CVPR2020錄用,Arxiv公開於2019年12月,做者來自 UC Berkeley 和 Adobe Research。數據庫
CNN 生成的圖像與真實圖像很難分辨嗎?來自 Adobe 和加州伯克利的研究者發現,僅僅在一種 CNN 生成的圖像上進行訓練的分類器,也能夠檢測許多其餘模型生成的結果。或許,GAN 和 Deepfake 在「瞞天過海」上也不是萬能的。網絡
近來,諸如生成對抗網絡(GAN)的深度圖像生成技術快速發展,引起了公衆的普遍關注和興趣,但這也令人們擔憂,會逐漸走入一個沒法分辨圖像真實與否的世界。架構
這種擔心尤爲體如今一些特定的圖像操縱技術上,例如用來進行面部風格替換的「Deepfake」,以及逼真的人像生成。其實這些方法僅僅是一種普遍應用技術中的兩個實例:基於卷積神經網絡(CNN)的圖像生成。函數
《CNN-generated images are surprisingly easy to spot... for now》提出,即便是在一種 CNN 生成的圖像所訓練的分類器,也可以跨數據集、網絡架構和訓練任務,展示出驚人的泛化能力。這篇論文目前已被 CVPR 2020 接收,代碼和模型也已公佈。性能
這篇論文主要探索如何利用單一的GAN模型來鑑別其餘各類GAN生成的圖像。不管各類GAN生成的圖像是何種類型,使用何種網絡結構,合成的假圖都用相同的缺陷。做者首先利用11種GAN模型來構造一個大規模的合成圖像鑑別數據庫,ForenSynths Datsets。以後僅僅利用單一的ProGAN模型來訓練,就可以在ForenSynths上表現出良好的泛化性能,甚至能夠戰勝新出的StyleGAN2和DeepFake。經過實驗代表數據加強做爲後處理方法,以及訓練數據的多樣性是成功的關鍵,尤爲是數據加強使得訓練一個鑑別器就有良好的泛化能力和魯棒性。這篇論文收錄在CVPR 2020,是反造假技術再進一步的標誌。造假和反造假技術一直在共同進步。測試
在這項工做中,研究者但願找到一種用於檢測 CNN 生成圖像的通用圖像僞造檢測方法。檢測圖像是否由某種特定技術生成是相對簡單的,只需在由真實圖像和該技術生成的圖像組成的數據集上訓練一個分類器便可。ui
但現有的不少方法的檢測效果極可能會與圖像生成訓練中使用的數據集(如人臉數據集)緊密相關,而且因爲數據集誤差的存在,一些方法在新數據(例如汽車)測試時可能泛化性較差。更糟糕的是,隨着圖像生成方法的發展,或是用於訓練的技術被淘汰,這種基於特定生成技術的檢測器可能會很快失效。
因此 CNN 生成的圖像是否包含共同的僞造痕跡呢?例如某種可檢測的 CNN 特徵,這樣就能夠將分類器推廣到整個生成方法族,而不僅是針對單個生成方法。通常來講,泛化性確實一直是圖像僞造檢測領域的難題。例如,最近的一些工做 [48,13,41] 觀察代表,對某一種 GAN 架構所生成圖像進行訓練的分類器在其餘架構上進行測試時性能較差,而且在許多狀況下,僅僅訓練數據集的改變(而非架構或任務)就會致使泛化失敗 [48]。這是有道理的,由於圖像生成方法千差萬別,它們使用的是不一樣的數據集、網絡架構、損失函數和圖像預處理方式。
但研究者發現,與當前人們的理解相反,爲檢測 CNN 生成的圖像所訓練的分類器可以跨數據集、網絡架構和訓練任務,展示出驚人的泛化能力。在本文中,研究者遵循慣例並經過簡單的方式訓練分類器,使用單個 CNN 模型(使用 ProGAN,一種高性能的非條件式 GAN 模型)生成大量僞造圖像,並訓練一個二分類器來檢測僞造圖像,將模型使用的真實訓練圖像做爲負例。
此外,本文還提出了一個用於檢測 CNN 生成圖像的新數據集和評價指標,並經過實驗分析了影響跨模型泛化性的因素。
基於 CNN 生成模型的數據集
研究者建立了一個 CNN 生成圖像的新數據集「ForenSynths」,該數據集由 11 種模型生成的圖像組成,從非條件式的圖像生成方法(如 StyleGAN)到超分辨率方法,以及 deepfake。每一個模型都在適合其特定任務的不一樣圖像數據集上進行訓練。研究者還繼續在論文撰寫後發佈的模型上評估檢測器,發現它能夠在最新的非條件式 GAN——StyleGAN2 實現開箱即用。
實驗:檢測 CNN 生成的圖像
鑑於數據集中的非條件式 GAN 模型能夠生成任意數量的圖像,研究者選擇了一種特定的模型 ProGAN 來訓練檢測器。使用單一模型進行訓練,這個方法與現實世界中的檢測問題極爲類似,即訓練時並不清楚須要泛化模型的多樣性和數量。
接着,研究者建立了一個僅由 ProGAN 生成的圖像和真實圖像組成的大規模數據集。使用 20 個模型,每一個模型在不一樣的 LSUN 物體類別上進行訓練,並生成 36K 的訓練圖像和 200 張驗證圖像,每一個模型所用的真實和僞造的圖像數量是相等的。一共有 720K 圖像用於訓練、4K 圖像用於驗證。
這一實驗的主要思想是在這個 ProGAN 數據集上訓練一個判斷「真實或僞造」的分類器,並評估該模型對其餘 CNN 合成圖像的泛化效果。在分類器的選擇上,使用了通過 ImageNet 預訓練的 ResNet-50,並在二分類的設定下進行訓練。
亮點:該工做意圖探究深度生成取證泛化能力可能性。從訓練數據的多樣性、數據加強技術作探討,說明了必定強先驗條件下,泛化能力是可能的(AP衡量)。該文章作了偏基礎的探究性實驗工做。
缺陷:
1. 這種泛化效果的先驗假設是,測試的樣本都是同一種僞造技術,這是不知足實際應用環境的。
2. 對衡量指標AP的閾值threshold,和準確率Acc.未作討論,未說明是否會存在較大的數據集之間的bias誤差。
思考:
1. 訓練用的是ProGAN,內容是場景,非人臉
2. SAN 超分辨率很難檢測,說明其有較強的篡改噪聲能力,是否能加以利用?
3. Deepfake的泛化效果較差,由於通過強手工設計,並不是ProGAN相似全局CNN圖片生成。
4. 對Photoshop相似的算法無效。
通用的檢測器、用11種CNN生成技術的數據集、預處理和後處理、數據加強。
「針對生成技術的共有特徵」爲出發點,公佈了以11種生成方法生成的的測試集「ForenSynths」,包含GAN生成、超分辨率、手工設計的Deepfakes。以ProGAN用做訓練,採用特定數據加強的前/後處理方法,能帶來泛化能力和魯棒性。
分三部分:檢測CNN生成的技術、圖像取證、CNN生成的共有特徵。
CNN生成的共有特徵:由於CNN的結構類似,致使生成的結果存在一種類似模式,舉例爲上採樣和下采樣。
訓練尺寸:224x224的隨機裁剪(數據集尺寸爲256x256)
用ProGAN訓練,探究泛化能力的上界;
採用ProGAN訓練的緣由:生成圖像分辨率高、網絡結構簡單
ProGAN訓練集用了20種LSUN類別:至關於20種生成的類型,airplane、cat...
每類別36K訓練圖片,20種一共720k訓練圖片
網絡結構:預訓練的ResNet-50+二分類
數據加強:隨機翻轉+224x224隨機裁剪;同時Blur和JPEG壓縮劃分了幾個等級。
衡量指標:AP,對不一樣數據集單獨衡量,而非混合在一塊兒(存在潛在數據集誤差問題,未作探究)
泛化性(訓練數據加強,測試不處理)
魯棒性(訓練、測試同時處理)
面對整張圖片全由CNN生成的圖片,效果較好;面對SAN和Deepfake,泛化表現較差。
對新出的StyleGAN2一樣有效。
將Acc拿出來,比較真實應用場景下,有兩張測試環境圖片,估計閾值的狀況。
Oracle表示準確率的上界,Two-shot表示拿測試集的兩張圖片「校準」後的準確率。注意這裏的校準的含義是閾值的選取,而並不是微調。
CNN生成方法當前存在能檢測的通用「水印」,但不表明將來也可行,由於生成技術會持續進步,甚至補齊此缺陷;
真實場景(In the wild)下,認真的攻擊者會選擇生成效果優良的結果,放在網絡上,檢測難度更大;
對Photoshop相似篡改算法測試來看,face-aware liquify dataset上,做者的分類器表現如隨機選擇通常;
測試結果
先是在測試集上,肉眼觀察分類器斷定的效果。做者把質量分紅五個等級,上圖從左至右分別真實性預測變差。
後續作了頻譜分析,發現CNN生成的方法,在傅里葉變換頻譜上,可能會呈現週期性的特性。(然而SAN和Deepfake比較正常,可能由於其通過手工設計,並不是徹底CNN生成。)
兩個方面,ProGAN的不一樣類別、不一樣生成技術(換BigGAN作訓練)
LSUN的20個類別,分別對應不一樣生成物品/物種種類,好比airplane、cat...
對比400k個圖片BigGAN的訓練結果:也有必定泛化能力,但效果沒ProGAN好。
表 2:跨生成器的泛化結果。圖中展現了 Zhang 等人提供的基線和本文模型在不一樣分類器上的平均準確度(AP),共 11 個生成器參與測試。符號 X 和 † 分別表示在訓練時分別以 50%和 10%的機率應用數據加強。隨機表現是 50%,可能的最佳表現是 100%。在測試用的生成器被用於訓練時,結果顯示爲灰色(由於它們不是在測試泛化性)。黑色的值表示跨生成器的泛化性結果。其中,最高值以黑色加粗顯示。經過減小數據擴充,研究者展現了針對 ProGAN 中較少類的消融實驗結果。同時經過平均全部數據集的 AP 分數來獲得 mean AP。