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

6 評論 4008 瀏覽 13 收藏 12 分鐘

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

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

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

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

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

項目的整體流程如下:

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

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

圖像數據集少、表現不一

通常的圖像分類任務動輒幾十萬、上百萬,甚至上千萬的數據量相比,醫療影像它的數據量是非常少的。同時,由于設備參數、醫生的拍照手法或拍攝角度、光照的明暗不同,食管的表觀變化非常復雜。

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

采用Feature map。Feature Map是卷積核卷出來的,你用各種情況下的卷積核去乘以原圖,會得到各種各樣的feature map。你可以理解為你從多個角度去分析圖片。而不同的特征提?。ê耍崛〔煌膄eature,模型想要達成的目的是解一個最優化,來找到能解釋現象的最佳的一組卷積核。

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

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

在拿到食管數據之后,如何判別這個食管屬于健康正常食管還是病變食管呢?

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

它們的不同之處在哪呢?

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

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

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

我們是怎么做到呢?

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

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

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

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

一般情況下,病變的食管圖像里都會伴隨著一些炎癥的特征。

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

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

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

如果一張圖像包含了癌癥,必然會有一個或幾個區域包含了癌癥的特征。也就是說,如果我們把圖像切分成幾個patch,必然會有某個或某幾個patch包含癌癥特征?;谶@樣一種思路,我們采取了多序列的學習方式。這個方法的內在思想很簡單,就是把圖像切分成若干個patch,然后對每個patch建模,判別這個patch發生癌癥的概率。

我們最后把所有patch里面癌癥概率最高的那塊,作為圖像是否包含癌癥的標簽。

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

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

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

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

  1. 基于有病變區域標注的數據建立有監督的學習任務;
  2. 對于沒有病變區域標注的數據,建立前面提到的多序列學習任務。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

本文由 @pms-rolia 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 想請教下,建模是程序員寫的還是產品經理負責的?

    來自北京 回復
  2. 非常棒,在智慧醫療領域知名產品經理

    來自廣東 回復
  3. 要考慮召回率,I類錯誤和II類錯誤

    來自北京 回復
    1. 是的,這里忘記寫了,感謝

      來自廣東 回復
  4. 非常棒,很有意思,我也是CV方向的PM,歡迎交流 :mrgreen:

    來自廣東 回復
    1. 哈哈哈可以相互交流,相互學習 vx:bluebless

      來自廣東 回復