聲明
出於好奇,本人只是閱讀過該篇文章,並沒有將該論文應用於實際生活,故不能在實踐上給予各位一些建議,萬分抱歉!
如果諸位在看我寫過的文章時發現了錯誤,請務必告訴本人,不勝感激!
主要工作
提出了一種Encoder,可以快速將圖片映射到隱空間中的某個點,接着利用WGAN進行異常檢測。
在深度學習論文筆記(異常檢測)—— Generative Adversarial Networks to Guide Marker Discovery一文中,我總結了AnoGAN,其通過不斷迭代優化,在隱空間中尋找某個點,該點生成的圖片與測試圖片最爲相近,接着利用DCGAN進行異常檢測,由於需要迭代優化,勢必會耗費大量時間,而f-AnoGAN通過引入Encoder,解決了這個問題。
算法介紹
有監督異常檢測存在的問題
- 需要耗費大量人力與時間對數據進行標註,在醫療領域,數據標註的代價更高,並且數據量比較少,而有監督學習往往需要耗費大量數據。
- 有監督學習只能處理訓練樣例中存在的情況。
針對有監督的問題,論文提出了使用無監督的GAN進行醫療數據的異常檢測,其具體機制爲:使用正常數據訓練GAN,生成器只能生成正常數據,如果能在隱空間中找到一點,與測試圖像最爲相近,爲正常圖像,如果兩者的差距大於某個值,就可判斷測試圖像爲異常圖像。鑑別器本質是一個二分類模型,可以鑑別出真實圖像與生成器生成圖像之間的細微差別,而異常圖像本身與正常圖像差別較大,鑑別器會將異常圖像分爲非正常圖像。可以看到,鑑別器與生成器都可以單獨用於異常檢測,和AnoGAN一樣,論文將兩者進行了結合。
模型分爲兩個階段,如下圖
階段一:訓練WGAN
階段二:訓練Encoder
階段一:訓練WGAN
此處總結數據準備
設有張正常醫療圖片構成的集合,(),從中隨機截取張大小爲的圖片構成訓練數據集
設標記好的數據集爲,按上述方式採集大小爲的圖像,同時獲得對應的大小爲的掩碼圖像(爲像素爲1表示異常,爲0表示無異常),構成了一個測試數據,不斷重複上述方式構成測試數據集
在視網膜光學相干斷層掃描圖像數據集上構建訓練與測試數據集的流程如下:
階段二:訓練Encoder
論文沒有給出Encoder的結構,應該是一個卷積神經網絡,具體可以查看代碼部分
WGAN訓練完畢後,不在改變,由生成器充當decoder,與Encoder一起構成了auto-encoder結構,Encoder負責將訓練圖片(查看上一節數據準備部分)映射爲隱空間中的點,生成器將映射爲圖片。
Encoder存在三種訓練方式,如下圖
訓練方式一:
具體步驟
- Encoder將圖片x映射爲隱空間中的點
- 生成器將映射爲圖片
- 損失函數爲MSE: 爲像素的個數
訓練方式二:
具體步驟
- 在隱空間中隨機選取一個點,生成器將映射爲圖片
- Encoder將映射爲隱空間中的點
- 損失函數爲MSE: d爲隱空間的維數
訓練方式三:
具體步驟
- Encoder將圖片x映射爲隱空間中的點
- 生成器將映射爲圖片
- 將與輸入到鑑別器中,得到,f(x)爲鑑別器中間某一層的特徵圖,該特徵圖被認爲含有輸入圖像的統計信息,用於比較圖像之間統計信息的差異,爲特徵圖的維數(個人理解爲特徵圖像素個數)
- 損失函數爲爲超參數
將 作爲Encoder的訓練方式
異常檢測
異常檢測其實是一個二分類問題,我們需要設計一個異常分數公式用於計算異常分數,異常分數高於某個值,即可認爲出現異常,f-AnoGAN將作爲異常分數公式,從像素差異與圖片之間的統計學差異角度比較了兩張圖片之間的差距。
假設爲異常圖片,由於生成器只能生成正常圖片,鑑別器能鑑別圖片是否符合正常圖片分佈,則與、與之間的差異勢必比較大。
對應AnoGAN中的,則對應,AnoGAN中統計過正常與異常圖片在與上的取值差異,如下:
x軸表示與的值,y軸表示頻率,可以看出
- 異常圖片的與普遍大於正常圖片
- 正常圖片與異常圖片在與上的取值分佈重疊部分小,說明與對於正常圖片與異常圖片的區分度高
因此,可用於計算異常得分
實驗
問題一:隱空間是否平滑連續?
如果隱空間不夠平滑連續,只有部分隱空間中的點能生成真實度較高的圖片,爲了驗證隱空間是連續的,論文進行了兩個實驗
實驗一:隨機選擇隱空間中的兩個點,兩點之間做一條位於高維度空間的直線,生成這條直線上的點對應的圖片
實驗二:依據真實圖片在隱空間中選擇兩個點(應該是使用了Encoder),兩點之間做一條位於高維度空間的直線,生成這條直線上的點對應的圖片
兩個實驗的結果如下
可以看到,圖像之間的變化非常自然,由此可見隱空間還是比較平滑的,如果隱空間是劇烈抖動的,那麼圖像之間的漸變效果應該會非常明顯
問題二:f-AnoGAN的預測準確率如何?
異常檢測本質上是一個二分類問題,可以使用準確率召回率等指標進行模型評估
論文比對的baseline有
- :使用WGAN的鑑別器輸出作爲異常分數,由於WGAN的輸出比較的是生成圖片與真實圖片的Wasserstein距離,因此不能直接作爲異常分數,設測試圖片爲,則異常分數定義如下
隨機選擇32000張測試圖片,統計對應的鑑別器輸出,計算平均值,即爲 - :使用WCAN的AnoGAN
結果如下:
f-AnoGAN的評價指標均爲最高,表現相當優異
AUC如下
問題三:f-AnoGAN異常檢測的效果如何?
問題四:不同Encoder訓練策略的比較
首先是異常檢測的視覺效果
接着是各項指標
AUC如下:
可看出,策略的訓練結果最佳