本文介紹了利用機器學習實現胸部CT掃描圖像自動判讀的任務,這對我來說是一個有趣的課題,因為它是我博士論文研究的重點。這篇文章的主要參考資料是我最近的預印本 “Machine-Learning-Based Multiple Abnormality Prediction with Large-Scale Chest Computed Tomography Volumes.”
CT掃描圖像是一種大體積圖像,大小約為512×512×1000灰度體素,用於描繪心臟、肺和胸部的其他解剖結構。胸部CT掃描圖像用於診斷和治療多種疾病,包括癌症、感染和骨折。這篇文章討論了如何獲得CT圖像,如何對CT圖像進行判讀,以及為什么CT圖像的自動判讀具有挑戰性,最后,我們將介紹如何使用機器學習來實現CT圖像的自動判讀任務。
什么是CT掃描圖像
胸部CT用於顯示胸部,包括左肺、右肺、氣道、心臟和大血管:
有關胸部解剖學的更詳細概述,請參閱本文。
因為胸部CT掃描是一種三維圖像,所以會在三個不同的解剖學平面上分辨觀察,這三種解剖學平面分別是冠狀面、橫斷面與矢狀面。
下面是一個橫斷面CT圖像的例子:
下面是另一個橫斷面CT圖像的例子:
想要了解同一張CT掃描圖像在三個解剖學平面上的不同視圖,請參閱本文,它含有一張可以滾動查看的健康人的高分辨率胸部CT圖像。
CT圖像是怎么獲得的?
下圖顯示的是CT掃描儀,它是一個甜甜圈形狀的儀器:
病人躺在桌子上,通過CT掃描儀的“甜甜圈孔”移動。以下是CT掃描儀的內部結構:
CT掃描是基於X射線的。然而,CT不同於“投影X射線”,因為CT是3D的,而投影X射線是2D的(關於自動投影X射線請參閱本文)。
CT掃描儀的X射線源將X射線束(如上圖紅色所示)通過患者的身體發送到探測器上。當患者通過中心孔時,整個放射源/探測器設備圍繞患者旋轉,因此可以在三維空間的多個點上測量患者身體的輻射密度。
最后,CT掃描圖像使用Hounsfield單位對患者體內數百萬個點的放射密度進行編碼,其中空氣顯示為黑色,骨骼顯示為白色。中等密度的組織呈灰色。
放射科醫生如何判讀CT掃描?
CT掃描是一種常見的影像學檢查形式,對許多疾病的診斷和治療非常有用。放射科醫生是判讀醫學放射圖像並撰寫診斷報告的醫生,這些報告供其他醫生在患者的護理中使用。
當一個放射科醫生需要判讀一張CT掃描圖像時,他會做兩件事。首先,放射科醫生必須確定出現了哪些異常,例如肺炎、肺不張、心臟腫大、結節、腫塊、胸腔積液等。接下來,放射科醫生必須在他們的描述中指定出現異常的位置。病灶位置在醫學上往往非常重要——例如,不同類型的肺癌往往位於不同的位置。下表總結了放射科醫生的任務:
CT報告示例
以下是美國國家診斷成像中心的胸部CT報告示例,其中文本是從本份公開報告中復制的:
EXAM: CTA CHEST W W/O CONTRAST
CLINICAL HISTORY: SOB, dyspnea, R/O PE, ILD, possible occupational lung disease
INDICATIONS: 49 year-old patient with shortness of breath. Possible PE. Possible occupational lung disease.
PROCEDURE: Consecutive axial slices were obtained without and with intravenous contrast. Bolus thin slices were performed through the pulmonary arteries.
The pulmonary trunk shows no evidence for thrombus or embolus. There is no evidence for a saddle embolus. The right and left main pulmonary arteries appear unremarkable. The first and second order pulmonary branches bilaterally do not show evidence for embolus. The axillary regions show no adenopathy. The mediastinum and hilar regions show no masses or adenopathy. The included upper abdomen shows splenic calcification which could indicate remote granulomatous disease. There is some focal renal cortical thickening on the right where there may be prior scarring. There is no evidence for pulmonary parenchymal interstitial lung disease. On image 2 series 4 in the left lower lung there is a 3 mm nodule. This could be followed with surveillance CT in 12 months if there is further concern. There is also a small similar nodule on the same series image 49 on the left. There are no infiltrates or effusions. There is no acute bony abnormality seen.
IMPRESSION: No evidence for pulmonary embolic disease. Some small lung nodules on the left could be followed at 12 months with a CT if there is sufficient concern. No evidence for interstitial lung disease.
為什么CT自動判讀饒有趣味又充滿挑戰?
對於放射科醫生來說,為每張CT掃描圖像都撰寫這么詳細的報告是非常耗時的。如果患者接受了多次不同期的CT掃描(例如,首次掃描后的三個月又接受了后續的掃描),這就更加耗時了,因為在這種情況下,放射科醫生還要同時比較兩次掃描,以了解患者的健康狀況產生了什么變化。人們對開發機器學習方法自動判讀CT圖像非常感興趣,因為這可以加速放射工作流程並降低放射科醫生的實時診斷錯誤率(目前為3-5%)。
CT掃描圖像的自動判讀具有挑戰性,原因如下:
挑戰1:患者的解剖結構根據性別、年齡、體重和正常的解剖變異而自然變化。因此,“變異”並不一定意味着“異常”。
挑戰2:胸部CT圖像可以顯示數百種可能的異常。下圖僅顯示了幾個例子,包括嗜酸性肺炎、空洞性病變、囊腫、肺氣腫、氣胸和肺纖維化:
![病例]](http://images.deephub.ai/upload/5c699d90697f11ea90cd05de3860c663.png)
挑戰3:一張CT圖像上常會出現多種不同的異常。平均一張CT圖像包含了10±6種不同的異常。下面是幾個一張CT掃描切片上存在一個以上異常的例子:
挑戰4:此外,在一次掃描中經常出現多個同一類型的異常。下面,我們可以分別看到一張含有多處肺氣腫的圖像,一張含有多個肺部結節的圖像,以及一張含有多個腫塊的圖像:
挑戰5:不同種類的異常可能看起來彼此非常相似。在這些情況下,放射科醫生必須依靠他們多年的經驗和患者的病史來確定異常的性質。下面的圖像分別顯示腫瘤(“TUM”)和肺不張(“ATL”),兩者在這次掃描中看起來十分相似:
挑戰6:同種病變可能在外觀上卻有所不同。例如,同種類型的病變會因嚴重程度不同而在外觀上出現差異,例如下面的肺炎掃描,左邊的掃描顯示整個肺部因肺炎而白化,而右邊的掃描顯示只有一小部分肺部因肺炎而白化:
同樣的異常也可能因其形狀和紋理而看起來不同。下圖顯示了各種外觀的肺結節,這些結節根據其形狀(如分葉狀、尖狀、圓形)和紋理(如磨玻璃狀、固體狀)而不同:
下圖總結了CT圖像自動判讀面對的挑戰:
如何利用機器學習實現CT自動判讀
為了了解如何使用機器學習進行CT自動判讀,首先要考慮用什么類型的數據來訓練模型。
醫療信息系統將CT圖像與相應的CT報告成對保存:
有些病人只有一張CT圖像和報告,如上圖中的病人000000。其他病人將有多個CT圖像和報告。這些多個CT圖像可能是在不同的時間和/或身體的不同部位進行的(盡管本文重點着眼於胸部CT,但也有可能是頭部、腹部、骨盆和其他部位的CT)。
我們還需要考慮哪些數據是無法在醫療信息系統中獲得的:
如上圖所示,一般來說,我們無法獲得:
- 用於分割的遮罩:這些是像素級的標簽(即感興趣的異常病變的輪廓),用於訓練圖像分割模型。關於醫學圖像的分割模型請參閱本文。
- 邊界框:這些是在圖像中的異常病變周圍繪制的邊界框,通常用於訓練目標檢測模型。嚴格來說,放射科醫生有時確實會直接在圖像上畫線或做其他注釋,通過一些額外工作,這些注釋可以變成可用於訓練機器學習模型(例如DeepLesion)的邊界框注釋。然而,放射科醫生肯定不會在一張CT圖像上注釋每一種異常,而且很可能放射科醫生只注釋一種異常類型的一個典型實例(例如,多個結節中的一個結節)。因此,想要獲得所有病變的所有邊界框是肯定不現實的。
- 圖像標簽:這些標簽用於標記整幅圖像的屬性,用於訓練基於整張CT圖像的分類器。有人可能認為醫院會在CT圖像上存儲標簽,例如顯示是否存在腫塊(腫塊=0 vs. 腫塊=1)。然而,醫院並不儲存這些信息,唯一可用的信息則是文本報告。在以后的文章中,我將描述如何從文本報告中獲取結構化的圖像標簽。
可能方案:從CT生成文本
考慮到我們只有成對的圖像與檢查報告,一種直觀的方法是嘗試直接從圖像生成文本。在這一方案中,我們首先將CT圖像處理為低維表示(例如使用卷積神經網絡),然后從該低維表示生成文本(例如使用LSTM):
截至目前為止,我還沒有看到任何關於從CT影像直接生成診斷報告的研究。然而,我倒是發現了幾項關於從胸部X光片自動生成報告的研究,相比之下這一課題看起來更加可行,因為胸部X光片的大小相對CT影像要小得多(小1000倍左右),而診斷報告的長度要短得多(短6倍)。然而,即使在這項更直接簡單的任務中,模型也難以生成准確的報告。我懷疑一部分原因在於模型生成的句子中,有很多是描述病人的某些健康生理指標的句子。生成大量這種語句的模型可能獲得一個不錯的模型分數,然而這個模型卻很有可能在描述病人的病理與異常的時候糟糕得一塌糊塗——而這恰好是醫生最關心的部分!
盡管從CT圖像生成文本可能是一項有趣的學術研究,但是這個課題有很多實際缺陷,包括:
- 文本生成模型必須達到非常可觀的正確率才可能在商業上使用。如果每10個自動生成的報告中就有一個出錯,沒有人敢使用這個系統,因為醫療錯誤的潛在成本太高,而且檢查每個報告的正確性所需的時間比從頭開始生成報告還要多。
- 文本生成模型本身並不能直接體現模型對每一類病變的檢測效果,然而這是放射科醫生需要看到的,這樣他們才能信任這個系統。有些病變比其他病變更難檢測,而放射科醫生想知道模型在檢測不同種類的病變時分別有怎樣的表現。
一個更實際的方法是建立一個機器學習系統,它可以以結構化的方式預測病變類型與位置。然后,我們可以評估模型對每一類病變的檢測效果,同時,我們還可以在原始影像上高亮標記出現病變的位置。這種系統可用於自動分類(例如,“將顯示氣胸的所有CT影像移動到放射科醫生隊列的頂部”),並且結合放射科醫生人工看片,以提高診斷准確性。此外,一個良好的病變類型/位置的預測模型也可以用來生成文本(如果這是人們期望的目標之一)。因為給定影像中出現的病變類型與病變位置的列表,按照特定規則生成基本的文本報告是很簡單的,因為放射學語言是高度結構化的。
單一病變CT分類
由於前一節所列的原因,基於CT影像的病變分類引起了人們的極大興趣。在單一病變CT分類中,一個模型(通常是卷積神經網絡)處理一幅CT圖像,並根據所關注的某種特定病變是否存在產生0或1(即二分類):
這些工作都着眼於於一次預測一種異常或一類異常,它們依賴手工制作的小型數據集,這些數據集已經由人類專家在切塊或切片級別上精心標記。
這是一張我整理的表格,總結了一些先前的工作,這些工作集中於從胸部CT影像預測間質性肺病。此處顯示的模型通常對每張切片指定一個類別標簽,顯示影像中的患者是否罹患間質性肺病:
下面是我整理的另一張表,總結了先前基於CT影像預測其他病變(包括肺癌、顱內出血和氣胸)的其他工作:
訓練基於切塊或切片的模型的一個優點是訓練好的模型可以輕易地在切塊或切片水平上預測病變。而缺點在於,訓練模型自然也需要切塊或切片的模型標注,這在現實的醫療衛生系統中是獲取不到的,這將會導致:
-
數據集中含有的影像數量嚴重受限(除了Ardila與Kuo等人的研究外,其他上文所述研究使用的數據集包含的CT影像數量均不足1200張);
-
可以同時研究的病灶數量受限(所有研究均考慮<8處病灶)。
多病變CT分類
盡管單一病變分類模型可以獲得很高的性能,但是這一研究方向受限於其固有的局限性。要進行全面的CT判讀,需要數百個獨立的二分類器。CT自動判讀的另一個研究路線是多標簽分類,可以實現在一張CT圖像上同時預測多種病變類型。有關多類別分類與多標簽分類的綜述,請參閱這篇文章。
多標簽病變分類如下圖所示:
直到我最近的工作之前,多標簽胸部CT分類的問題還沒有被深入探討。然而,多標簽胸部X光片分類已經被深入研究,這得益於多個公開的大型胸部X光片公共數據集:
受之前胸部X光片多標簽分類的啟發,我最近研究了胸部CT的多標簽分類。我在多標簽胸部CT分類方面的工作分為三個部分:
-
生成19993例患者的36316張胸部CT影像的數據集。據我所知,這是世界上最大的多注釋三維醫學成像數據集。
-
提出一種基於規則的方法,用於從平均F值為0.976的自由文本放射報告中自動提取結構化的異常標簽。這些結構化異常標簽是訓練分類器所必需的。
-
多器官、多疾病卷積神經網絡分類器的訓練和評估,該分類器可分析整張CT圖像,同時預測83類病變。該模型對其中的18種病變實現了高於0.90的平均AUC,而83類病變的平均AUC為0.773。
在以后的文章中,我將更詳細地分別探討我的工作的三個方面:如何准備一個包含成對的CT圖像和診斷報告的大型CT數據集;如何從報告中提取結構化標簽;如何構建一個完整的CT分類器。
基於CT數據的其他任務
基於CT影像數據的其他任務包括:
-
目標檢測,即訓練模型來預測感興趣的病變點的邊界框的坐標。在這一任務中,我們需要感興趣的病變點的邊界框,用於訓練與評估模型。在CT影像的目標檢測這一方面,這項任務的一個例子可以在DeepLesion論文中找到。
-
圖像分割,訓練模型來生成像素級的分割遮罩(也即病變的輪廓)。
-
圖像配准,訓練模型來對齊兩張不同的掃描圖像,使解剖結構處於大致相同的位置。
小結
-
胸部CT是由大約512 x 512 x 1000灰度體素組成的三維醫學圖像,通過X射線源和圍繞患者身體旋轉的探測器獲得。
-
放射科醫生從CT影像中確定病變的種類與數量,這一過程稱為CT的判讀;放射科醫生通常會寫一份診斷報告記錄他們的發現。
-
醫院存儲成對的CT圖像與診斷報告,但是不存儲目標邊界框、像素級別的掩模以及圖像標簽。
-
先前有關CT圖像自動判讀的工作集中於一次識別一種病變,例如間質性肺病或顱內出血。
-
最近,我建立了一個含有36316張胸部CT圖像的數據集,並建立了一個多標簽分類模型,從單張圖像上預測83類病變的數量與位置。
-
基於CT的其他任務包括目標檢測、圖像分割和圖像配准等。
原文地址:https://imba.deephub.ai/p/c13316f0698111ea90cd05de3860c663