1. 程式人生 > >ImageNet和CNN怎樣幫助醫學影象的識別

ImageNet和CNN怎樣幫助醫學影象的識別

從ImageNet和CNN說起

影象的分類和識別一直是計算機視覺的熱門研究領域,在醫學影象領域,很多方法也都是從計算機視覺領域借鑑過來的,而計算機視覺的許多方法又離不開機器學習和人工智慧的基礎。

在典型的影象分類和識別問題中,通常有兩個重要的步驟,一個是特徵提取,常見的有GLCM, HOG, LBP, Haar Wavelet, 一個是分類器, 例如SVM, Random Forest, Neuron Network等。特徵提取過程中通常是人工選取某些特徵,但是難以確定這些特徵是否真正準確地描述了不同類別的差異,怎樣才能得到最好的特徵呢?

於是卷積神經網路應運而生。其思想是通過一些卷積層的引數來描述特徵,這些引數的值不是人工設定,而是通過大量的訓練資料通過訓練自動得到。再配合傳統的Neuron Network可以同時訓練特徵的引數和分類器的引數。這就是卷積神經網路(Convolution Neuron Network, CNN)。下圖簡要歸納了它的結構與傳統Neuron Network的聯絡與區別。 

ImageNet和CNN可以幫助醫學影象的識別嗎?_第1張圖片

CNN的成功主要起源於它在ImageNet大規模視覺識別挑戰賽(ILSVRC)上的成就。ImageNet是一個斯坦福大學Fei-fei Li教授發起的影象資料庫,包含120萬以上的訓練資料和1000種不同的類別,其識別一直比較困難,直到2012年AlexNet的提出,從此以後幾乎每年ILSVRC的贏家都使用了CNN,相比以往的方法大幅提高了識別的準確率。 
ImageNet和CNN可以幫助醫學影象的識別嗎?_第2張圖片

CNN在ImageNet上的成功源於三個主要因素:一是大規模的訓練資料。二是更為複雜的模型(CNN)。網路結構更加複雜,更深,引數更多。三是GPU對計算的加速,使以往需要數週的訓練過程只需一天甚至數小時以內就可以完成。

醫學影象識別的問題

如果將CNN應用於醫學影象,首要面對的問題是訓練資料的缺乏。因為CNN的訓練資料都需要有類別標號,這通常需要專家來手工標記。要是標記像ImageNet這樣大規模的上百萬張的訓練影象,簡直是不可想象的。

因為CNN的引數多,必須依靠大規模的訓練資料才能防止過度擬合(Over Fitting)。在資料量少的情況下,有兩種解決方案:一個叫Data Augmentation。就是依賴現有的影象,通過旋轉,平移,變形等變化,產生更多的影象。二是使用轉移學習(Transfer Learning)。其思想是通過在另一種大規模的資料集上面訓練,得到CNN的引數作為初始值,再在目標資料集上訓練對引數進行調優(Fine-tuning)。

轉移訓練的原理是某些特徵在不同的訓練資料集上是具有通用性的。對於CNN而言,其第一層是提取區域性的特徵,在後續層通過下采樣擴大感知區域, 再往後的層感知區域更大,得到的特徵也更加抽象。在前幾層的特徵通常並不與某一個具體的分類任務直接相關,而是類似於Gabor Filter, 邊緣,與方向有關的特徵等。這些特徵都是比較通用的,因此可以在一個數據集上訓練得到而應用在一個與之類似的資料集上。當然,如果訓練出的特徵對某個訓練資料集或者識別任務具有特異性,用它做轉移學習就未必有好的效果。

對於醫學影象而言,得到大規模的訓練資料是比較不容易的,那麼可否使用Transfer Learning利用現成的ImageNet的影象來幫助醫學影象的識別呢?ImageNet裡面的影象(二維,彩色)沒有醫學影象,包含一些諸如鳥類、貓、狗、直升機等物體的識別,與醫學影象(二維或三維,非彩色)相差很大。如果回答是肯定的話,是一件令人非常振奮的事情。

使用ImageNet做轉移學習的效果

在NIH的Hoo-Chang Shin ; Holger R. Roth等人最近的一篇文章中研究了這個問題(下載連結)。其全名為:Deep Convolutional Neural Networks for Computer-Aided Detection: CNN Architectures, Dataset Characteristics and Transfer Learning。

該文章除了研究上述問題,還比較了CifarNet (2009年), AlexNet(2012年)和GoogleNet(2014年)這三個一個比一個複雜的網路結構在不同的訓練資料量的情況下的效能。這三個網路的結構簡圖如下: 
ImageNet和CNN可以幫助醫學影象的識別嗎?_第3張圖片

該文章研究的醫學影象應用為CT影象中胸腹部淋巴結(三維)的檢測和肺部疾病的分類(二維)。如何讓彩色二維影象與醫學影象相結合呢?該文采用了兩個小技巧: 
ImageNet和CNN可以幫助醫學影象的識別嗎?_第4張圖片

對於三維CT影象,將通過某一點的冠狀面、矢狀面和橫斷面的三個二維影象組合在一起,作為RGB的三個通道,使之與彩色影象相容。對二維CT影象,分別採用三種不同的CT灰度視窗,得到三張影象,組合成彩色影象。 
ImageNet和CNN可以幫助醫學影象的識別嗎?_第5張圖片

實驗的結果如上圖。可以看出,在不使用Transfer Learning的情況下(Random Initialization, RI),AlexNet雖然比GoogleNet簡單,但是效果比GoogleNet好,這是因為GoogleNet引數太多,訓練資料不夠導致過度擬合,使其泛化能力下降,從而分類精度降低。使用了Transfer Learning (TL)後,GoogleNet的效能提高很多,效果比AlexNet要好。

Random Initialization和Transfer Learning 在訓練過程中的效能比較如下圖: 
ImageNet和CNN可以幫助醫學影象的識別嗎?_第6張圖片
可見Transfer Learning減少了測試資料上的誤差,提高了分類的準確率。

再來看看Transfer Learning學到了那些特徵: 
ImageNet和CNN可以幫助醫學影象的識別嗎?_第7張圖片

上圖顯示了在CNN的第一層中學習到的特徵。可以看出在不使用Transfer Learning的情況下,單從CT影象上學習到的特徵都表現出比較模糊的樣子,而使用Transfer Learning的CNN相應的特徵中包含一些和邊緣有關的特徵,這些實際上是從ImageNet中學習過來的,但有助於CT影象的分類和識別。