Neuromation:一文告訴你如何用CNN檢測兒童骨齡

 2018-08-27 19:54:00.0

雷鋒網按:本文來自Medium,由雷鋒網編譯。

一直以來,NeuroNuggets和Neuromation Research系列文章都致力於介紹其優秀團隊的人工智能研究人員。

今天要介紹的就是曾獲Kaggle Master的Alexander Rakhlin。Alexander是一位深度學習專家,專門研究與醫療影像相關的問題,包括圖像分割、物體檢測和廣義上的卷積神經網絡等領域。

就在最近,Alexander的合著論文《使用深度卷積神經網絡的兒童骨齡評估》被第四屆醫療影像分析大會的深度學習研討會收錄(DLMIA 2018)。這已經不是第一篇Neuromation旗下專門研究醫療影像的論文,我們正好可以利用這個機會來討論下這項工作的細節。

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

人如其骨:骨齡評估

骨骼年齡,或者說骨齡,本質上說就是你的骨頭看起來有多大歲數。

隨着孩子長大,他/她的骨骼會成長和成熟;這意味着,通過觀察孩子的骨骼,我們可以估計出孩子擁有某種骨骼的平均年齡,從而瞭解孩子的年齡。這個時候,你可能想問這篇文章是不是關於考古學的:活生生的孩子們通常不會去拍X光,除非沒有人知道他們什麼時候出生的。

是也不是。如果孩子發育正常,骨齡應該在實際年齡的10%以內,但是也有例外。一些例外是無害的,但是最好心知肚明:比如,你的孩子在青春期的快速成長與骨齡有關。因此,如果骨齡比實際年齡大幾年,孩子會更早的停止生長,如果骨頭比實際年齡「年輕」幾年,快速生長會延遲到來。此外,考慮到現在的身高和骨齡,已經可以相當準確地預測一個孩子最終的成年身高,這會派上用場:如果你的孩子喜歡籃球,你可能會對他是否會長到7英尺感興趣。

其他例外就嚴重得多:骨齡和實際年齡之間的顯著不匹配會預示各種問題,包括生長障礙和內分泌問題。骨齡的單一讀數值會告訴臨牀醫生患者在特定時間內的相對成熟度,與其他臨牀發現相結合,就可以將正常人與相對快速或遲緩的人區分開來。連續的骨齡讀數值意味着孩子的成長方向和/或顯示他或她在治療中的進展。通過評估骨齡,兒科醫生可以診斷兒童發育過程中的內分泌失調和代謝紊亂問題,如骨骼發育不良,或與營養、代謝或影響骨骺或骨成熟的未知因素有關的生長缺陷。在這種生長遲緩的情況下,骨齡和身高可能都會延遲到幾乎相同的程度,但是,通過治療,達到正常成人身高的潛力仍然存在。

由於上述種種原因,兒科醫生對孩子的手部進行X光檢查來估計他/她的骨齡是非常常見的……所以自然而然的,自動化就是一個很棒的嘗試。

閱讀手掌:通過手部和腕部評估骨齡

骨骼成熟度主要由骨骺中繼發性骨化中心的發育程度和骨化程度來評價。幾十年來,骨成熟度通常是通過對手和腕部骨骼發育的視覺評估來確定的。下面是放射科醫生在檢查你的手部X射線時所尋找的東西:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

目前估計骨骼年齡的兩種最常用的技術是Greulich and Pyle和Tanner Whitehouse(TW2)。兩種方法都使用左手和手腕的X線片來評估骨骼的成熟度,其依據是成熟度指標,也就是,管狀骨骨骺從骨化的早期階段到與骨骼融合的X光外觀的變化,或者直到骨骼變成人形狀之前扁骨的變化……不用擔心,我們以前也沒聽說過這些詞語。我們來看一張照片:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

傳統的骨骼成熟度評估技術,比如GP或TW2,很冗長,也很耗時,而且在某種程度上是主觀的,甚至是資深的放射科醫生也不總是同意評估結果。因此,利用計算機輔助診斷系統提高骨齡評估的準確性,增加臨牀醫生的再利用性和效率是非常吸引人的。

近年來,基於深度學習的方法在生物醫學的許多問題中顯示出優於傳統機器學習方法的性能改進。在醫療影像領域,卷積神經網絡(CNN)已經成功地用於糖尿病視網膜病變篩查、乳腺癌組織學圖像分析、骨病預測和許多其他問題;可以參見我們先前的文章對這些疾病和其他應用的調查。

因此,我們自然也試着將現代深度神經結構也應用於骨齡評估。下面,我們利用北美放射學會(RSNA)組織的兒科骨齡挑戰賽(Pediatic Bone Age Challenge)的數據,描述一種完全自動化的骨齡評估的深度學習方法。雖然達到儘可能高的準確度是一個基本目標,但我們的系統也被設計成針對各種醫療中心在不同硬件上產生的射線照片的質量不足和多樣性依然能保持魯棒性。

數據

數據集由北美放射學會(RSNA)提供,RSNA還組織了2017年兒童骨齡挑戰賽。這些照片是從斯坦福兒童醫院和科羅拉多兒童醫院獲得的,他們在不同的時間、不同的條件下拍攝了不同的硬件。這些圖像由專業的兒科放射學家負責解釋,他們在放射報告中記錄了骨骼的年齡,記錄基於Greulich and Pyle的手和手腕骨骼發育的放射圖解的視覺比較。另外,組委會從放射報告中自動提取骨齡標誌以作爲模型訓練的基本依據。

射線照片的大小、方向、曝光量各不不同,而且通常具有特定的標記。整個RSNA數據集包含12611次訓練,1425次驗證和200個測試圖像。由於測試數據集明顯太小,而且在開發期間其標籤未知,因此我們只在訓練集保留的1000張射線照片上對模型進行了測試。

訓練數據包括5778個女性和6833個男性的照片。年齡1~228個月,主要爲5~15歲兒童。

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

預處理I:分割與對比

我們工作的主要貢獻之一是嚴格的預處理流水線。爲了防止模型與失真圖像學習發生錯誤關聯,我們首先通過分割手來去除背景。

對於圖像分割,我們使用的是U-Net深層結構。自2015年被髮明以來,U-Net已成爲處理分割任務的主流。它由捕獲上下文的收縮路徑和允許精確定位的對稱擴展路徑組成;由於這不是本文的主題,因此我們將僅展示一下結構並推薦去閱讀可以獲得細節的論文:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

我們也使用了批量歸一化,以提高訓練過程中的收斂性。在我們的算法中,我們使用了廣義損失函數。

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

標準二進制交叉熵損失函數爲

Neuromation:一文告訴你如何用CNN檢測兒童骨齡Neuromation:一文告訴你如何用CNN檢測兒童骨齡

其中

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

像素的真值爲

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

是像素的預測概率,以及

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

Jaccard指數的一個可微推廣:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

我們通過去除小而無關的連通分量和均衡對比度來完成分割步驟。下面是我們的預處理流水線的工作原理:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

就像你所看到的,X線片的質量和對比度確實有了很大的提高。在這裏你可以停下來訓練用於分類/迴歸的標準卷積神經網絡,用我們的預處理和標準化技術(如縮放和旋轉)來擴展訓練集。我們試了一下這種方法,結果雖然不如我們的最終模型準確,但還是令人相當滿意的。

然而,最初的GP和TW方法側重於特定的手骨,包括指骨、掌骨和腕骨。我們決定嘗試使用這些信息,並在幾個特定區域上以高分辨率訓練單獨的模型,以數值評估和比較它們的性能。爲了正確定位這些區域,我們必須將所有圖像變換到相同的大小和位置,即,將它們全部帶到相同的座標空間,這個過程稱爲圖像配準。

預處理Ⅱ:關鍵點的圖像配準

我們的圖像配準方案很簡單:我們只需要檢測手上的幾個特徵點的座標。然後我們將能夠計算仿射變換參數(縮放、旋轉、平移和鏡像)以將圖像擬合到標準位置。

爲了創建一個訓練集的關鍵點模型,我們使用VGG圖像註釋器(VIA)手動標記了800張照片。我們選擇了三個特徵點:第三指遠端指骨的尖端,拇指遠端指骨的尖端和頭骨的中心。關鍵點的像素座標就作爲我們迴歸模型的訓練目標。

關鍵點模型再次被實現爲深度卷積神經網絡,其靈感來自流行的VGG模型族,但是具有迴歸輸出。VGG模塊由兩個卷積層組成,具有指數線性單元激活、批量標準化和最大池化。下面是結構:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

該模型訓練的均方誤差損失(MSE)和Adam 優化器:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

爲了提高泛化性,我們將標準擴充應用於輸入,包括旋轉、平移和縮放。該模型輸出6個座標。

找到關鍵點後,我們計算所有射線照片的仿射變換(縮放、旋轉、平移)。我們的目標是保持圖像的縱橫比,但將其適配到一個均勻的位置,每個射線照片都是如此:

1.中指的尖端水平對齊並定位在圖像的上邊緣下方大約100個像素;

2.頭骨水平對齊並定位在圖像底部邊緣上方大約480個像素處。

按照慣例,骨齡評估使用左手的X射線照片,但有時數據集中的圖像會被鏡像。爲了檢測這些圖像並適當地調整它們,我們使用了拇指的關鍵點。

來看看我們的圖像註冊模型如何工作。正如你所看到的,手已經成功地旋轉到我們的首選標準位置:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

這裏有整個預處理流水線的諸多案例。包括分割結果,標準化和註冊都展示在第四行裏。

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

骨齡評價模型

遵循Gilsanz和Ratib的手部骨齡:骨骼成熟度數字地圖集,我們從註冊的X線照片中選擇了三個特定區域,併爲每個區域訓練了一個單獨的模型:

1.整手

2.腕骨

3.掌骨和近側指骨。

這裏是真實射線照片的區域和一些樣本對應的分割片段:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

卷積神經網絡通常用於分類任務,但骨齡評估本質上是一個迴歸問題:我們必須預測年齡,它是一個連續變量。因此,我們想要比較兩套CNN架構,迴歸和分類,所以我們實現了這兩個。模型共享相似的參數和訓練協議,並且僅在兩個最終層中有所不同。

我們的第一個模型是一個定製的VGG風格的架構,具有迴歸輸出。該網絡由六個卷積模塊組成,具有32、64、128、128、256、384個濾波器,接着是兩個全連接的層,每個層由2048個神經元和一個輸出組成(我們將在下面展示圖片)。輸入大小根據圖像的考慮區域而變化。爲了更好的泛化,我們在完全連接層之前應用正則層。我們將回歸目標,即骨齡重新調整到範圍[-1, 1 ]。爲了避免過度擬合,我們將訓練時間放大與縮放,旋轉和換檔。通過最小化平均絕對誤差(MAE),利用Adam優化器對網絡進行訓練:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

第二個模型用於分類,除了兩個最終層之外,與迴歸模型非常相似。一個主要區別是分配給每個骨齡不同類別。在數據集中,骨齡是以月份表示的,所以我們考慮了所有240個類,倒數第二層變成了具有240個輸出的softmax層。該層輸出概率的向量,其中類的概率在範圍[0, 1 ]中取實值。在最後一層中,概率向量乘以不同骨齡的向量[1,…,239, 240]。由此,模型輸出骨齡的單個期望值。我們使用與迴歸模型相同的協議來訓練該模型。

這是用於分類的模型體系結構;除了缺少softmax和binning層之外,迴歸模型是相同的:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

結果

我們評估了1000個放射線照片訓練組的驗證集上的模型。按照考慮性別的GP和TW方法,對於每個空間區域,我們分別針對女性和男性訓練了性別特定模型,並將其與針對整個人羣訓練的性別不可知模型進行比較。這裏是我們的結果的總結,我們將討論:

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

事實證明,增加性別的輸入之後大大提高了準確性,平均1.4個月。最左邊的列代表兩個性別的迴歸模型的表現。掌骨和近指骨區(C區)平均絕對誤差(MAE)爲8.42個月,全手(A區)平均絕對誤差(MAE)爲8.08個月。三個區域的線性集合提高了7.52個月的總體準確度(表中的下一行)。

性別特定性迴歸模型(第二欄和第三欄)將MAE提高到男性的6.30個月,女性爲6.49個月。注意,對於女性隊列,掌骨和近指骨的區域MAE等於6.79個月,甚至比整個手更精確,MAE只有7.12個月!

性別特定性分類模型(第四和第五列)表現略好於迴歸模型,分別表現出6.16個月和6.39個月的MAE(下行)。

最後,在第六列中,我們展示了所有性別特定模型的集合(分類和迴歸)。在驗證數據集上,它達到了6.10個月的最新精確度,無論從骨齡評估挑戰還是從實際應用的角度來看,這都是很棒的結果。

結論

總結一下:在這篇文章中,我們展示瞭如何開發一個自動化的骨齡評估系統,該系統能夠以驚人的準確性評估骨骼的成熟度,類似於或優於專業放射學家。我們用數值方法評估了手的不同區域,發現骨齡評估可以只針對掌骨和近端指骨進行,而不會顯著損失準確性。爲了克服射線照片的質量多樣性,我們引入了嚴格的清洗和標準化過程,顯著提高了模型的魯棒性和準確性。

該模型在臨牀環境下具有很大的應用潛力,可以幫助臨牀醫生做出準確和實時的骨齡評估決策,甚至拓展到難以到達的醫療邊界。這將確保及時診斷和治療他們小病人的生長障礙。雷鋒網(公衆號:雷鋒網)雷鋒網

Neuromation:一文告訴你如何用CNN檢測兒童骨齡

文章來源:雷鋒網