AI醫療場景化業務:如何用AI技術做食管癌識別和輔助診斷?

AIBigbull2050發表於2019-10-25

AI運用於醫療,通過機器學習的特點,可以輔助診斷。筆者分享了運用AI技術做食道癌識別和輔助診斷的經歷,闡釋了各階段的難點。

影輔助診斷主要做兩件事情:

  1. 醫學知識圖譜構建;
  2. 基於疾病的診斷。

今天我們來分析如何用AI技術做食道癌識別和輔助診斷。

食道癌是世界五大惡性腫瘤之一,我國又是食道癌的高發地區。這個專案的目標是通過影像判別病人是否可能患有癌症。

專案的整體流程如下:

  1. 採集資料集:內窺鏡探頭一般從患者鼻腔進入,然後經過咽喉和食管,最後到達胃。我們採集食管資料的時候,可能會引入大量非食管資料。
  2. 資料標註與模型建立:然後對這些資料做區分,通過食管判別模型,只保留食管資料。然後將食管資料送到下一個模型,這個模型只做一件事情,就是把正常的食管和異常的食管區別開來。
  3. 影像分析:區分之後,再把病變的食管資料送到下一個環節,判斷這個影像代表的是癌症還是炎症。

整個流程大致可以分為這樣三個階段,接下來我會簡單介紹每個階段的難點。

影像資料集少、表現不一

通常的影像分類任務動輒幾十萬、上百萬,甚至上千萬的資料量相比,醫療影像它的資料量是非常少的。同時,由於裝置引數、醫生的拍照手法或拍攝角度、光照的明暗不同,食管的表觀變化非常複雜。

那麼,我們怎樣才能在這樣的條件下得到一個可靠穩定的模型?

採用Feature map。Feature Map是卷積核卷出來的,你用各種情況下的卷積核去乘以原圖,會得到各種各樣的feature map。你可以理解為你從多個角度去分析圖片。而不同的特徵提取(核)會提取不同的feature,模型想要達成的目的是解一個最優化,來找到能解釋現象的最佳的一組卷積核。

在同一層,我們希望得到對於一張圖片多種角度的描述,具體來講就是用多種不同的卷積核對影像進行卷,得到不同核(這裡的核可以理解為描述)上的響應,作為影像的特徵。

他們的聯絡在於形成影像在同一層次不同基上的描述。下層的核主要是一些簡單的邊緣檢測器(也可以理解為生理學上的simple cell)。

在拿到食管資料之後,如何判別這個食管屬於健康正常食管還是病變食管呢?

這個問題跟前面的問題比較類似,也是一個判別模型。

它們的不同之處在哪呢?

當我們判斷一個食管是否異常食管時,只需要找到一個病變區域,就能夠說明這個食管是異常的。

但是反過來,在正常影像中,並不能說找到一個正常特徵,就說明這個食管是正常的。只能說在這張影像中我們沒有找到異常特徵,它可能是見正常的。

因此,在正常特徵和異常特徵之間,我們更傾向於提取病變特徵,抑制正常特徵。

我們是怎麼做到呢?

病變和正常的case都會經過神經網路,以得到特徵向量。對於這個向量,我們希望儘可能凸顯異常特徵,讓正常特徵趨近於0。

我們是如何把這種資訊建模到模型中的呢?

我們對模型進行了重新建模,最後準確率大概在97%左右。

前面的模型相對來說比較簡單,第三個模型主要是區分炎症和癌症,它與前兩個問題不大一樣。

一般情況下,病變的食管影像裡都會伴隨著一些炎症的特徵。

我們對癌症的判斷往往是通過一個紋理特別小的區域得出的,因此需要提取出更加精細化的特徵。比較好的做法就是讓很多專家把病灶區非常嚴謹地標註出來,這樣我們只需要對這個區域進行識別就好了。

這個標註量非常大,因此資料異常匱乏。我們沒有癌症區域的標註資料,但又希望得到非常精細化的特徵,如何解決這個矛盾呢?

幸運的是,我們雖然無法獲取到非常精準的病變區域標註影像,卻能夠相對容易地知道一張影像是否包含癌症,因為只需要跟病例對應關聯起來就好了。這樣一來,我們可以更容易地得到影像全域性的標籤。

如果一張影像包含了癌症,必然會有一個或幾個區域包含了癌症的特徵。也就是說,如果我們把影像切分成幾個patch,必然會有某個或某幾個patch包含癌症特徵。基於這樣一種思路,我們採取了多序列的學習方式。這個方法的內在思想很簡單,就是把影像切分成若干個patch,然後對每個patch建模,判別這個patch發生癌症的概率。

我們最後把所有patch裡面癌症概率最高的那塊,作為影像是否包含癌症的標籤。

做的過程當中,我們會逐漸積累精準標註的資料,這些資料非常少,不足以虛擬一個模型。但影像中的特徵都是最精準的,是經過人為校驗和標註的。

我們怎樣才能把這種少量的、精準的資料強化到癌症識別中去呢?

這是個非常有意思的問題,如果能解決這個問題,即使只有少量標準資料,我們也能不斷提升。

這裡主要採用了多工學習的方法,這個方法需要完成兩個任務:

  1. 基於有病變區域標註的資料建立有監督的學習任務;
  2. 對於沒有病變區域標註的資料,建立前面提到的多序列學習任務。

這兩個模型共享特徵提取網路,特徵提取網路必須同時滿足兩大任務,這樣才能把精準標註的特徵強化到癌症識別中去。

以上是我們食道癌專案的簡單介紹,下面再簡單介紹一下我們在輔助診斷方面做的一些工作。

輔助診斷的目的是什麼呢?

我們希望機器最終能夠像臨床醫生一樣具備診斷疾病的能力。

在介紹輔助診斷專案之前,我們先來看看一個醫生或者一個普通的學生是如何成長為一名專家的:一個學生從剛入學開始,學習了大量專業課程,閱讀了大量專業醫學文獻後,就可以積累一定程度的醫學知識。

當醫學知識達到一定程度之後,就可以去醫院裡面實習,由臨床醫生結合一些真實案例,指導他去學習診斷的技能。

當我們具備了這些技能,就能夠成為一名普通的醫生,醫生可以看到大量的病人,學習 大量經驗,經驗足夠豐富之後就成了專家。

機器成長的過程與人類大致相似。

我們可以將其分為三個階段:

  1. 醫學知識圖譜的構建,也就是機器學習知識的過程;
  2. 有了知識之後學習診斷的能力,也就是建立疾病判別的一些模型;
  3. 讓機器在與專家的博弈過程中,不斷提升診斷水平,逐漸逼近甚至超過專家。

醫療知識圖譜的構建過程中,我們首先要對文字資料進行處理。文字資料分成兩類,一類是半結構化資料,一類是非結構化資料。

這裡我列舉一個例子,說明我們如何把非結構化的文字變成結構化文字,也就是計算機可以理解的形式。

我們可以把病史分為幾個部分:疾病的情況、入院的治療經過、入院的依據等;把病史分為這樣幾部分資訊後,再對每一類資訊進行細化和提取;經過提取之後,非結構化的文字就變成了計算機能夠理解的結構化文字;我們會把這些資訊轉化為醫學知識圖譜存在電腦裡,於是計算機就把這個知識學會了。

以上就是醫學知識圖譜的構建過程。

第二步我們會有一個診斷模型。

診斷的過程是這樣的,首先把一段人類語言描述的病情轉化成計算機可以理解的結構化知識。有了結構化的知識以後,機器就能理解這個人的情況,把知識推送到疾病診斷模型當中,模型將給出一個疾病列表,診斷模型的流程大致就是這樣。

下面我們來看一個病情理解的例項。

通過技術對病人病情的理解可以得到一些基本資訊,其中包含性別、年齡,這個人的主動描述、現病史和既往史等。

主動描述裡會提到症狀以及持續的時間,甚至一些更復雜的資訊,比如說唾沫是什麼樣子的,咳嗽是否帶痰。這些資訊都會詳細刻畫出來,按照前面提到的模式畫出病歷,完成對病情的理解。

理解病情以後,將其輸入診斷模型當中。

診斷的demo包含幾個部分:對病情的人類語言的描述,通過病情理解後得到結構化的病情表示,之後得出機器診斷的結果,按照概率從高到低給出5個結果。

我們還給醫生留了一個介面,醫生可以對診斷結果評分,通過評分將結果反饋到模型當中。

通過醫生和機器之間的互動,可以將模型迭代得越來越好。

我們在實驗室資料裡選擇了大概10萬個真實病例進行測試,TOP1的結果與醫生的一致率大概是92%,TOP3是90%,但這種模型還需要更多臨床病例做驗證。


http://www.woshipm.com/ai/3011824.html



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2661394/,如需轉載,請註明出處,否則將追究法律責任。

相關文章