paper:https://ieeexplore.ieee.org/document/8713484
開源代碼:https://github.com/grip-unina/noiseprint
文獻分類
- 基於semantic或者physical不連續性
- 像素級的統計方法
- model-based approach
- 目的:建立針對某些特徵的數學模型
- 缺點:每一種方法的適用範圍都較窄
- 包括:lens aberration,camera response function,color filter array(CFA),JPEG artifacts
- data-driven approach
- 目的:使用大規模樣本進行算法訓練
- 在所有的方法中,依賴photo-response non-uniformity(PRNU)的算法是比較流行的,並且性能較好。
- noise residual還可以用於異常檢測發現局部圖像篡改中【25-28】
- 大多數data-driven方法作用於noise residual,將圖片減去denoising算法得到的圖像估計或者空域/頻域高通濾波【19-24】得到
- model-based approach
PRNU pattern: device fingerprint
在文獻【30】中,作者顯示每一個獨立的設備對其所有照片上留有一個獨特的mark,也就是PRNU模式。這是由於設備加工過程中的不完美性導致的。
由於PRNU的唯一性和穩定性,其被用於設備指紋(device fingerprint),並被用於圖片僞造檢測任務中。
- source identification【31】
- image forgery detection and localization【30】【32-35】
缺點:
- 一個camera需要大量圖像才能提取較好的PRNU估計
- 如果圖像中內容比較模糊(相對noise),則也會大大影響PRNU的提取
Noiseprint: camera model fingerprint
爲了解決PRNU的問題,作者提出了一種新的提取noise residual的方法。
目標:
- 增強語義內容的提取,同時強化所有的相機相關的artifacts
- 沒人先驗知識,沒有標註樣本
原理:
- 採用Siamese Network的理念,使用相同或不同相機的images進行配對訓練。
- 一旦訓練完成,網絡參數固定,用於對任意相機model拍攝的images,不論該model是否在訓練集中。
- 因此,本方法是完全無監督的,被認爲是camera model fingerrint。
需要注意的是,圖像篡改將在noiseprint中留下明細的痕跡,因而可以只是定位篡改的部分。
noiseprint抽取過程
目標:
事實上,目的是從原始圖像中減去高層次的場景內容,這些內容被認爲是抽取noiseprint的干擾。這也是CNNbased的降噪器的目標【59】。通過【59】可以作爲新系統的起點,並且將其得到的最有參數作爲新系統的初始參數使用。然後,再在訓練過程中更新這些參數。
在【59】中,使用有監督的方式來訓練CNN網絡,其輸入是噪聲圖像,輸出是噪聲。如圖4所示。在本文中,使用該結構時,輸入是一個一般的圖像,輸出是noiseprint。但是,問題是我們沒有noiseprint的生成模型,因此,我們無法得到圖4中的output patch。
核心改進:
- 考慮到,從同一個camera model得到的image patches應該具有相似的noiseprint patches,從不同camera model得到的image patches具有不同的noiseprint patches。
- 因此,需要訓練一個noise residual生成網絡,不僅使得場景內容被消除,同時也使得所有的不可區分信息(camera model之間)被消除,而可區分信息被加強。
- 於是考慮到如下的Siamese網絡結構,該機構中有兩個並行且完全一致(相同結構和參數)的CNNs。需要注意的是,負樣本和正樣本是一樣重要的,它們使得網絡丟棄無用的信息(所有model公共的),只在noiseprint中保持最有區分度的特徵。
網絡訓練的細節
1)初始化
【59】中的CNN結構:
考慮到複雜度問題,該CNN網絡使用minibatch進行訓練N=200,每個image patch是48*48。需要強調的是,該CNN是fully卷積,因此,一旦訓練好後,可以用於任意大小的輸入圖像,不僅僅是48*48
2)boosting minibatch information
Siamese結構只是用於展示說明,實際訓練的只有一個CNN。在每個minibatch中,包括了200個patches,用於形成合適的輸入輸出對。因此,每個minibatch提供了O(N^2)個樣本用於訓練,大大提升了訓練速度。如果兩個patch來自同一個model,則爲正label,否則爲負label。爲了執行上述策略,我們的minibatch包含了50個組,每個組包含4個patches。每個組是相同model+相同位置。
3)Distance-based logistic loss
最小化如下的目標函數:
其中,
4)Regularization
爲了保持noiseprint之間的差異性(上述L0會使得不同model之間趨於一致),使用2D離散傅立葉變換。給定一個camera model,其功率譜的尖峯在於artifacts的基礎頻率處以及它們的組合處。而對於不同的camera models,期望它們的功率譜峯值在不同地方。考慮到峯值位置是重要的區分性特徵,因此,期望對於一個minibatch在所有頻率上能夠均勻分佈。
故而,使用minibatch的PSD的幾何均值於算術均值作爲新的懲罰項:
其中,
是minibatch的功率譜密度PSD。
最終,整個損失函數是:
實驗結果分析
主要研究noiseprint在image manipulation location上的性能。
A. 基於noiseprint的Forgery localization
自動化定位工具,用於後續的檢測能力分析使用。該工具以原始圖像和它的noiseprint作爲輸入,輸出一個real-valued熱力圖,該圖中每個像素值表示其被篡改的概率。
因此,使用【28】中的盲定位算法,其中將noiseprint代替了3階圖像residual方法。
參考代碼:
https://github.com/grip-unina/noiseprint/blob/master/noiseprint/post_em.py
B. 參考的方法
爲了保持與noiseprint方法一致,只考慮blind方法,即不需要特殊的數據集用於訓練或者fine tuning,也不需要使用測試集的metadata或者先驗知識。
根據它們使用的特徵,這些方法可以大致分爲3類:
- JPEG artifacts【60-64】,【16】
- CFA artifacts【13】【14】
- 特徵空域分佈的非連續性【65】【26】【66】【27】【28】【58】
https://github.com/MKLab-ITI/image-forensics
C. 數據集
使用瞭如下9個數據集:
D. 性能衡量標準
Forgery localization可以被認爲是一個二分類問題,即每個像素屬於正常或者僞造兩種情況。
1)整體準確率
2)精度、召回和F1
3)Matthews Correlation Coefficient(MCC)
決策面與ground truth的交叉相關係數:
對類別不平衡的情況是robust的。
4)Average Precision(AP)
由precision-recall曲線的面就計算得到,因此可以衡量所有檢測閾值下的平均性能。
E. 訓練過程
構造一個數據集,包括相機和手機,包括:
- Dresden數據集中44個cameras【68】
- Socrates數據集中32個cameras【69】
- VISION數據集中32個cameras【70】
- 自己提供的數據集包含17個cameras
上述一共是125個獨立的cameras,涉及70個不同的models以及19個品牌。爲了進行實驗,劃分爲你訓練和驗證集,分別包含100和25個cameras,並且保證這些數據不包含在測試階段。所有images是JPEG形式。
網絡使用denoising算法【59】的結果進行初始化。在訓練過程中,每個minibatch包含200個48*48的patches,這些patches來自25個不同cameras拍攝的100個不同images。在每個minibatch中,包含了50個組,每組有相同camera和位置的4個patches組成。
F. 實驗結果
儘管每個實驗中,數值變化很大,每個方法的相對排名幾乎是一致的。在表III-V中分別展示了MCC、F1和AP衡量指標下不同方法的性能。具體分析見arXiv論文。