探討醫療人工智慧之眼科AI的真實應用場景(肽積木CEO柏文潔)丨硬創公開課
雷鋒網(公眾號:雷鋒網)按:目前全球範圍內大約有 4.15 億的糖尿病患者,單是中國就有 1.1 億左右,而糖尿病視網膜病變致盲問題也愈發受到人們的關注。
據悉,只要在發病初期定期進行眼底檢查,失明風險可下降 94.4%。但由於眼底病灶微小,部分醫生經驗不足等原因,使得診斷中可能出現漏診、誤診的情況,因此,藉助 AI 輔助診斷是未來的一大趨勢。
那麼如何將人工智慧應用在眼底檢測當中,雷鋒網邀請醫療影像公司肽積木CEO柏文潔做了一期以《探討醫療人工智慧之眼科AI的真實應用場景》為主題的公開課,從演算法、工程、產品、業務等多個角度進行剖析。
柏文潔,肽積木科技 CEO。畢業於中國科技大學,香港浸會大學訪問研究助理。共發表論文 12 篇,1 作 4 篇,引用次數過千次。AI 演算法工程師,研究方向主要集中在演算法、非線性科學領域,擅長數學建模,獨創的 LP-NET 演算法在病灶識別方面取得國際領先水平。
此外,柏文潔還是大數據領域的連續創業者,是大數據公司信柏科技、時趣互動運營核心創始成員,在大數據、人工智慧產品、運營、推廣等業務環節有豐富經驗。柏文潔創立的醫療人工智慧公司肽積木科技,已推出醫療影像診斷機器人與醫療大數據人工智慧訓練平台。
本次公開課包括以下內容:
糖網眼底篩查為什麼成為了熱點
應用於眼底判斷的機器學習和深度學習技術
當前的分類演算法在實際解決眼底判讀問題時面臨的挑戰
工程化解決眼底應用判讀
眼底產品運營環節遇到的挑戰以及推進思路
以眼底為代表的篩查類型AI判讀發展趨勢 探討醫療人工智慧之眼科AI的真實應用場景_騰訊視頻 https://v.qq.com/x/page/n0504f1b858.html
(註:本次雷鋒網硬創公開課中,柏文潔展示大量的案例,並回答多位讀者的精彩問題,所以推薦優先觀看視頻。)
今天有機會來跟大家一起探討一下醫療人工智慧在眼科AI的真實應用場景。我是來自肽積木的柏文潔,肽積木是專門致力於醫療影像和AI結合的公司,今天我向大家詳細介紹一下AI醫療影像的現狀與總結。
糖網眼底篩查為什麼成為熱點
首先其實跟大家聊一聊,為什麼糖網眼底篩查成為當前的熱點,其實我們知道最有名的人工智慧公司——DeepMind其實已經在做糖網的相關工作,Google前一段時間和學術機構聯合發布了在糖網篩查糖網分級診斷成果。
國內就我們所知道的情況不下十家在做這塊的內容,首先想給大家簡單解釋一下為什麼它會這麼熱。
我們先來看一張眼底圖,給大家做一下簡單的科普,我們看到這張眼底圖就是從瞳孔拍過去的,從視覺里能夠看到的情況,中間圓圓的部分是我們的視盤,也就是眼部神經集中的出口,旁邊相對暗一些的是黃斑區域,它是眼部接受神經視覺最敏感的區域。我們這張圖選擇了最典型、有各種各樣病灶類型的一張眼底,也就是有糖網問題的一個眼底。首先包括了硬性滲出,像右上角它其實是有蛋白質的產生,右邊有棉絮斑,下方有出血點,左邊也有一些微動脈血管瘤。
在醫生的實際診斷過程當中,醫生一方面需要能夠看出病人的病灶到底在什麼區域,同時需要告訴病人大概的病程。初步病程可能只會看到一些微動脈血管瘤,再往後發展會發現滲出,包括棉絮斑,甚至到出血等比較嚴重的問題。
實際我們在做眼底篩查過程當中最核心的問題其實是分級,同時包含能不能把病灶給標出來,讓大家知道處於什麼樣的狀態。
回到剛才那個問題,為何眼底這麼熱?
核心原因在於眼科醫生資源極度匱乏,因為只有匱乏的地方,AI才能夠幫助到大家,才有可能產生巨大的市場機會。這一點上,中國是擁有最多糖尿病高血壓慢病人群的國家,我們國家有2.8億的高血壓患者和1.1億的糖尿病患者。1億多的糖尿病患者中80%以上其實都有可能患有糖網病,其中3000萬患者患有糖網病。
目前我們差不多有3000萬的糖網病患者,而其中1100萬已經發展成為視力受損的糖尿病患者。
這些糖尿病群體都應該定期去做眼底篩查,尤其已經發展出來的可能每隔三個月就得做一次糖網篩查。中國目前的眼科大夫只有3萬多人,眼科門診量有8000萬人次。在這麼大的市場需求下,我們只有很少的眼科大夫資源,這中間存在著嚴重的不對稱。
我們前段時間通過市場調研,看到基層一些社區醫院甚至沒有相應的眼底設備進行篩查,有著巨大的資源缺口。
應用於眼底判斷的機器學習和深度學習
眼底受到如此大的關注,還有一個很重要的原因是相對而言,它有比較豐富的物料,國際上各種各樣的公開數據集上均有著比較多的數據,如X光、CT在內的學習物料。
最著名的其實是Kaggle比賽,之前一次有8萬張片子的比賽數據集,而且包含不少分類。除了Kaggle之外,其他比較知名的包括ADCIS、DRUVE、STARE、HRF、DRIONS、DIARE資料庫,也在做相應的整理。
可以看到整個公開市場和行業內找到的數據集也接近有十萬張片子。這其實為我們很多深度學習或者說人工智慧提供了一個相對好的數據集,而且我們可以直接將我們的技術應用在環節中。
所以我們解釋了為什麼眼底是一個比較熱門的點,我們接下來看一看應用在眼底判斷當中的機器學習和深度學習到底是一個什麼樣的狀態。
通常來講,它沒有非常大規模的物料,在kaggle的數據集出現之前,其實在眼底方面很難去做比較好的分類,就包括國際的一些公開標準,整個分類的過程可能都是我去數對應病灶的數目,然後數大概會在幾個象限有相應的病灶分布,所以在傳統方裡面解決的通常都是病灶識別。
這裡面包含了二維高斯的濾波識別血管、Canny運算元識別視盤,應用最典型、也最多的是拓撲學的方法。拓撲學方法我們會用多個形態學去找出血點和微動脈血管瘤。
不久前研究者開始用拓撲學去找血管,但對於眼底圖片來講,雖然人眼看過去差不多,但它其實是有一個非常大的分布。實際我們看到拓撲學找血管這塊,在局部它可能會有比較好的效果,但是換到另一維度上效果可能就不是很好。
我們可以看到之前有學者利用傳統方法做精度統計,從2000年以後這些學術結果都發布在相關的Paper上,我們整體看到大家也會比較投機取巧,很少有同時去彙報精度Accuracy和Sensitivity或者Specificity。通常都是偶見精確度,基本上沒有超過90%的。
在另外一個維度,它的召回率也普遍只有80%,難以達到實際工程化的水平。
上圖右側是之前在學術文章中發表的統計圖,我們可以看到基本上在80%左右待定的區間搖晃。事實上我們看到它一些針對性的結果,通常也都是針對比較小的數據集。像Adcis其實也只有幾十到一百張的量級,實際上我們在真實使用的場景里很難達到工程化的水平和效果。
接下來我們看看在實際商用情況下,國內一些軟體企業的應用進展。
根據我們之前調研的情況來看,國內軟體的功能其實也基本上以滲出或者以出血點判斷為主,做診斷的比較少。當然因為最近整個發展過程可能相對來講會有一些診斷,但之前基本上都比較一致,以判斷滲出和出血點為主。沒有標記的平時基本上耗時在半分鐘左右,有標記的處理時間差不多在三分鐘到五分鐘之間,實測下來針對特定的場景比較有效,但依然依賴於醫生的判讀。醫生的判讀時間大約耗時五分鐘,這其實也取決於我們實際拍攝的情況和環境到底會是一個什麼樣的狀態。
上圖是我們之前看到的對接基層醫院的友商的截圖,可以看到基本上在滲出和出血點這兩塊。這是另外一個,也是在講出血點,包括他的這個像素、佔比之類的相關信息。
傳統的分類方法基本上是利用傳統方法識別出病灶數量的多少,然後利用一定的閾值直接來做回歸,判斷我到底如何去做分類。沒有Kaggle數據集之前因為沒有足夠的物料,所以基本上沒有人用深度學習的方法在做這塊的東西,有了Kaggle數據集後大家才開始用深度學習,也在該過程當中取得了較好的效果。
當前分類演算法在實際問題中面臨的挑戰
剛才我們首先展示了眼底到底是一個什麼樣的問題,然後我們看到傳統的機器學習方法或者其他傳統方法它其實解決了哪些問題,但是它又存在怎樣的現狀?
我們看到當前的分類演算法在實際問題當中會遇到一些挑戰,即使我把剛才的演算法本身做得很好,但是我在實際解決實際問題,在解決工程問題的時候,它又會有哪些不一樣的挑戰和變化。
舉一個簡單例子,因為肽積木在做這件事情的過程當中,從基層醫院收集了大量的眼底數據。我們可以看到,基層醫生包括社區醫生拍出來的片子實際上和大家看到像教科書一樣的片子其實有非常大的差異。
如何在過程當中解決掉這些問題?我們首先得來看一看它們到底會是什麼樣的情況。
我們現在看的是同一個人在同一個時間拍出來的不同的眼底照片。第一張很明顯,大家可以看到欠曝,就是它沒有曝光到位,基本上到下半部就已經變得相當的模糊,而且上半部分反而又有點過曝。
第二張圖片顯然沒有對準焦,而且整體上右偏就沒有對得很清楚。
第三張圖片這個人在拍攝的過程中眼珠轉了一下,它其實沒有拍在一個比較正位的位置,因為沒有視盤作為參照系,所以基本上不知道它在拍什麼。
第四張照片是很典型的過曝。所有的這些場景在我們實際工程化處理的過程當中必須把它清掉,要不然對實際的判讀會有非常大的影響。
另外一個維度,我們也找了其他的片子,即使看到一個人都可能拍出不同的這種感覺和效果之外。基層大夫很有可能幹的事情我沒有把這個相機推到足夠的眼底深處,所以我拍出來是一隻眼睛,就是我們左上角第一張圖的這個效果。
第二張圖就很明顯看到這是一張拍糊了的眼底;左下角這一張它的整個右下角,其實是出現了偽影,而且出現了比較大面積的鏡頭不幹凈。右下角的就直接乾脆就過曝了,這個過曝和剛才那個完全不一樣,它是漏光漏了好大一塊。
像剛才那一類片子我們還能勉強進行判讀,但是對比這幾類片子,我們必須在實際的篩查過程當中就能把它去掉。
除了這些會造成我們在演算法應用過程當中的一些問題和困難之外,不同的眼底設備也會出現不一樣的效果。這裡我們選擇了三家三個典型的眼底圖片,第一個是國產的,可以看到顏色比較灰暗,這個是縮小的效果,把它放大之後看,整體就不是很清楚。
第二張是台灣生產的手持設備,整體偏黃,當我們把它放到比較大的時候,會有比較明確的噪點,而這些噪點,容易干擾機器是不是微血管瘤或者其他的效果。
最右邊是佳能相機,是醫院裡面用的主流設備之一。
拍出來這些結果相對來說效果會比較細膩完整一些,我們在公開數據集里獲取的圖像都會是右邊這一類組成的。
所以在這個過程中,我們要把眼底診斷的圖片做成一個能夠工程化應用的邏輯,同時應對幾種場景。
另外,像我們看到Kaggle數據很典型:左眼一隻,右眼一隻,然後組合起來做一些分級診斷。目前的實際情況,在基層醫院大夫能拍好就已經很難得了,基本上是拍正位的眼球。
實際上大家可以想像一下,人體眼球是一個球形物體,透過瞳孔看進去的時候,只能看到一個區域。而整個眼底其實都應該被觀察到,在這個過程當中一些有經驗的大夫,會讓你同時上下左右來看前方,他就能夠透過瞳孔看到你全部的眼底情況。
按照嚴格標準的眼科大夫去拍圖的話,他是要能夠從多個維度去進行拍攝,最後拼成一張像我們看到的左邊這張圖,由右邊四張圖拼出來的圖景,用這樣的方式我們就能夠看到完整的情況。這一點我們看到有些醫院做了,有些醫院沒有做,而且有些醫院可能照出來的情況它也是一張圖,但它只有一個側位,因為它會有重點地去往邊上看。
在這個維度上我們如何去整合這些數據其實也一樣,也在實際過程當中需要去解決的一些問題。
總結一下我們在實際工程應用場景過程當中遇到的這個數據問題已經包含了很多種。第一個就是的拍攝範圍是不是只是兩張正對視盤的圖片,還是說我有多張照片的組合,還是說有實際情況,我根據他這個去調整,這會對我們的結果產生什麼樣的影響。
還有在醫生手法上,因為他手法的不足,可能造成模糊或者過曝或者曝光不足等等,這一系列方法到底要怎麼樣去解決。包括鏡頭的問題、包括偽影、包括噪點這一系列的問題。在這個過程當中,簡單來講,我們可以最簡單最粗暴的方法,把不合格的都去掉,同時演算法能夠把它在整個過程當中能夠有足夠的泛化效果。
不能像我們傳統做法那樣做,只能接受局部的,或者說比較少量的情況。
除了我們所面臨數據問題之外,其實在標註上也有非常多的問題。
我們在醫療或者醫療影像這個判讀過程當中標註的問題要遠遠大過數據的問題。
第一,像最知名的Kaggle的數據集,它的標註其實有非常多的差異性。另外一個DIARE資料庫能夠看到的醫生標註的差異性其實是非常大的。
國內的醫生其實沒有特別統一的標準,實際上我們有時候通過各種各樣方式獲得醫生的標註往往是年輕大夫,而這點上不夠充分。
包括我們之前在一些醫院做測試,這家醫院可能表現已經超過95%了,但是換到另外一家醫院可能只有80%多。仔細來看,實際上是因為中度和重度、輕度和中度兩可之間的結果會發生一些判讀上的異常。
在這一點上,對我們實際機器學習的過程其實會增加一定的難度,因為我們學習的對象本身就有一定誤差的,另外我們到底用什麼樣的方式去做標註其實也非常關鍵。
就拿眼底來看,有幾類型的標準方式,第一個醫生直接拿著這個眼底圖進行判讀,然後分類。但是這裡面一般有經驗的大夫會在拍眼底照之前就已經用眼科的專用鏡片,看到眼底的實際情況之後,再對眼底照片下結論,這個過程會有一些差異。
同時在眼科判讀,尤其是糖網的判讀過程當中有一個精標準,我用FFA也就是熒光造影去看結果,最終它可能和我們實際獲取的眼底照片會有非常顯著的差異。
這點差異會在我們剛才提到的kaggle數據集或者DIARE數據集裡面都會有一個明確的體現。
整體上來講,第一我們在目前這個維度上如果是用醫療上的手法、診療上的手法經後期確診之後的結果來進行前期的判讀,雖然嚴格意義上來講它是準確的,但是它會導致一個問題,當醫生並不是只用於一個方法進行判讀的時候,會造成我過度在可能不存在這個特徵的照片上進行學習。
如果我完全依賴這張照片醫生對他的分析,那又會導致因為醫生本身就有一定的不確定性,或者說有一定的判斷誤差。甚至會出現一個醫生前後看兩次都會有不一的特點。
但是可能對眼底圖會稍微好一些,不過整體上來講這個標註非常非常的難拿,所以我們接下來也是想給大家分享一下,因為這些數據大家都能下得到,也是想跟大家分享一下,像Kaggle數據集和DIARE的資料庫,我們在這個過程當中實際看到的情況是什麼樣子。
DIARE的數據集,左邊這張圖大家應該能看得很清楚,左邊這張是原圖,右邊是醫生的標註結果,DIARE資料庫挑了很多類別、很多種病灶,會同時讓四五個大夫來標,右邊其實會把每個大夫當時在這張圖上畫的框都框出來。我們選擇的是出血,出血就是圖片上這些偏紅色成片的,基本上可能就是出血。
大家可以兩邊對照著來看,比較典型的是視盤正下方的區域所有大夫都給它標出來了,這塊就比較典型,包括右下角也是好多大夫都在標註。
可能對於這些明顯的區域來講,大夫可能會比較好辦一些,但是我們看到右邊一些零零散散的地方,可能只有一個大夫或者兩個大夫給他標出來。所以在我們獲取標註的過程當中,我們其實需要非常準確和靠譜的判斷機器才能夠學,但是實際能夠看到的這個情況我們會有比較大的一個差異。
所以大夫之間的意見首先就是不同意的,而這個資料庫說白了顯然是比較資深的幾位大夫一起來判讀,但依然會有一些差異:包括大夫的一些方式方法、行為特點都會在裡面顯示,對於同樣兩塊區域可能有些大夫一筆就畫過,但有些可能就不是。
我們回到即使是Kaggle數據集,我不知道觀眾朋友們看到這三張片子會是一個什麼樣的感受。這三張片子都屬於非常嚴重的,糖網發生嚴重病變的這三張圖例。
但從這圖片像我們做了這麼多眼底、看這麼多眼底之後,其實依然不能很明確的判讀這幾張就是有問題有病,尤其到第三張,我們看到基本上是一團黑,Kaggle其實有不少這樣類型的片子,這些他們能給出一個明確的判讀說這個是重度病變甚至是增殖性病變,基本上我們可以判斷Kaggle一定是用了其他的判讀依據來進行判讀,而不單單是這一張照片。
所以這樣的結果其實會出現我剛才說的那種問題,我可能藉助了其他的特徵,而這張圖片上的特徵並不足以讓我判斷,所以就會導致機器去學習一些不必要的特徵。
我舉個簡單例子,如果我們在這個健康圖片里這種黑色圖片少一些,而在這種增殖性病變或者重度病變的圖片里這種黑色圖片多一些,機器很自然地就會認為偏黑的圖片可能會是有增值性的體現,但其實它可能是曝光不足的原因造成的。
而且這裡頭當然也可能有其他的一些原因,就好比說如果我的眼睛已經發生嚴重性問題了,眼部的水晶體已經不太透光了,或者說白內障那種直接就被擋住了。但是整體上因為像kaggle這種公開數據集我們是找不到任何周邊資料的,所以就沒有辦法去針對他進行進一步的細化。實際上我們看到包括在Google前一陣子發表在JAMA的數據分類核心演算法,其實就是從我們看過去,包括它也公開了網路結構。重點是他集合了54位大夫,雖然不是每張圖都是由54位大夫同時讀,基本上每張圖片在訓練集上有7到8位醫生,在測試集上可能會更多一點。
但整體上我相信它能取得那麼好的結果是對這個數據集本身做了非常多的處理和非常多的精挑細選,所以在結果上效果非常好。整體上針對於這些數據,我們的標記其實是一個非常非常大的問題。
我們講了數據問題,講了標註問題,然後在實際應用場景當中當然也有技術問題,技術問題的話就是我們能看到的,像傳統的方法淡化的效果非常差。
今天給大家介紹了非常多不一樣的問題包括不一樣的設備拍出來場景、不一樣的醫生拍出來不一樣的場景。我們能夠看到傳統問題它針對的都是好大夫、好設備出現各種各樣的情況。
一旦涉及到問題比較差的可能就得再去調整參數,這一定是我們不能接受的,我們還是得能做出比較通用化的結論出來。
在另外一個點上,我們也能看到在用深度學習來做這件事情的過程當中也有一些有趣的點,我不能叫它是難點,但我認為它們是一些比較有趣的點。
第一個是分類數據集不足, Google整理大概是4萬的數據,Kaggle的數據集是8萬的數據集。我們看到ImageNet或者其他的世界上比較公開的大型數據訓練集基本上都是在百萬量級的。
而且我們要注意的是像ImageNet都是非常小的圖片,眼底其實很大,雖然比病歷還要小一些,但它已經比普通處理圖片要大。所以它其實包含的特徵會更加多,包含特徵越多,就需要更多更大量的數據集才能夠學得更好。
我們看到分類數據集不足,在這個過程當中其實眼底沒有必要用那麼深的網路,但是我們還是需要主要的數據才能夠把特徵學習出來。
另外一個點是我們看到的物體的識別,它其實是不適用的,我們之前也有FCN的方法,在圖片裡面能快速定位物體,包括像汽車、樹、人,但是這種方法基本上在醫學圖片裡面都不太適用,因為醫學的病灶說實話長得比較「自由奔放」。所以它不會像樹木、汽車有一些比較明顯的這種形態特徵。所以在這個過程當中,我們更多是通過經驗來看你和正常的差異到底是多大。
傳統的物體識別那一套方法其實不太適用的。另外一塊,既然物體識別不適用,那我們是不是就用圖像切割的方法,Image Segmentation其實也是我們目前深度在這塊用的比較多的一個內容。但事實上我們看像FCN會有一些比較通用的一些問題,包括識別的邊緣不是很清晰,這個點我們可以看到很多這種FCNN網路做出來的都是看到邊緣,不是很成規則和清楚。另外,它缺少足量的標記。因為像包括像ImageNet這一塊就是用來做Image Segmentation學習的,基本上數量要少很多。
對於醫療圖片來講,我們假設說想要用Image Segmentation來做的話,我們看到學習的物料非常少。如果讓醫生非常精確地給你標記出來病灶,不僅是標註病病灶這個區域,而且要把它整個連邊緣帶描繪出來其實是非常困難的一件事情,而且當圖片放大到一定範圍之內,其實有一些邊緣本身就是我們學習對象本身邊緣也不清晰,所以其實在這個過程當中我們可以看到技術在這一塊還是有一些問題需要去突破需要去解決。
當然這和CT或病理切片有一點不一樣。我們簡單舉幾個例子,病理切片因為它圖像比較大,我可能縮成每一小塊,每一小塊去做分類就好了,我最後能拼出來的就像一個圖像切割的圖。
但是眼底不能,因為它就是一張圖,所以它不能再切,它再切其實就看不出來整體的特徵。因為它是一個完整構成的圖像,而不像說病理我單獨一塊拿出來,是可以單獨做判讀的,就是沒有特別明顯的位置特徵,而眼底有明顯的位置特徵。而CT目前大家的研究重點是能不能把一些結節先初篩出來,而不是落實在判讀維度上。
回過來說在眼底,雖然大家直觀地看過去它是一張二維圖,但是在這個維度上我們還是有很多可以判讀的點去參照和思考。
工程化解決眼底應用判讀
接下來來看一看我們怎麼應用工程化的方法實際來解決眼底應用判讀問題。
首先,在切入實際用深度演算法改進技術的同時,我們第一步要做的是優化數據。
我們肽積木收到公開數據集10萬的邊緣,然後包括我們在基層醫院和三甲醫院獲取到差不多10萬的數據源,對於這些數據如何進行預處理,然後加工標記,其實在過程當中非常重要。
剛才看到的那些問題圖片,這部分目前我們沒有看到對應的醫生,標註是可用還是不可用的邊緣。
所以在實際過程當中我們會先去做一些聚類的處理,把這些有問題的先篩出來,把明顯過曝或者明顯過暗的這些片子篩出來。
在這個過程當中,需要收集到足夠多的基層數據,然後在基層數據的基礎之上獲得我們有價值的數據。第二,我們肽積木在這個過程依託於醫療這個大數據平台,構建了一個標記平台。
目的是為了讓大夫更好地幫助我們進行標記,然後進行一些補充和輔助以及人工參與的輔助標記,具體怎麼來操作我會給大家簡單介紹一下。
這是我們的標記平台,簡單的來講,我會把眼底圖片放在這個屏幕的中央,大夫可以藉助於上面有一個十字,它可以用來畫出病灶的區域,可以比較快的在圖片上畫病灶,同時給張圖片貼上我們想要的一些標籤。標籤包括說明圖片可用不可用、到底處在哪個病程、還有哪些其他的問題和特徵。
這樣的好處是我們能夠收集和獲取更大量的醫生的標記,在該過程當中,我剛才其實也提到像這種病灶類的標記,或許是非常困難的。如果真的讓大夫給你打標籤可能還OK,但如果讓大夫真的手動不停的給你去做一些病灶的標記的話,那難度會非常大。
所以我們在實際過程當中會採用第一種方法是讓機器而先做一層判讀,就像我們現在展示的這張圖片,它其實是一個很典型的有滲出的情況,我機器會先跑出來一輪,然後醫生在進行校準。我圈出來這塊區域還是有的,然後那塊區域其實沒有。這麼一個處理的方式和方法,會大規模地降低醫生的工作量,然後我們能夠快速獲取更多病灶標記類的片子、邊緣。
第三種,這張圖大家可能有點眼熟,就是剛才那張我在講DIARE資料庫有醫生標註差異的一個片子,我們在這個維度上相當於先獲取醫生的標記,在這個過程當中,因為基本上當醫生圈出出血點後,普通的醫生或者說經過訓練的實習生也能夠看得出來這塊其實是出血部分。
醫生的時間成本會比較高,他給我們圈出大概範圍,我們再找相應實習生或者我們內部的員工再對這個數據進行精標註,然後獲取更大量的數據集,這個數據集我們可以用在對於原有數據集的加工上,包括像我們剛才說的DIARE數據集,我們用這樣的方法就已經經過一輪精加工。在這個維度上,通過一系列標記平台,以及在標記平台上進行各種輔助操作,以及引入第三方人力的方法,我們就獲得了更大量的有精細邊界,比較精確的病灶標記,以及對應到比較大量的標籤。這樣才為接下來的訓練提供了非常好的物料基礎,這是整個過程當中的一個核心和關鍵。
我們接下來看一看,在實際過程當中對於病灶標記我們採用的是一個什麼樣的網路,以及如何選定網路?
首先是FCN網,給大家簡單介紹一下FCN網路以及眼底病造的應用以及U-net網路構建的過程。
首先深度網路應用在圖像分割和識別過程當中,實現像素級的識別就是Semantic Segmentation,也是Fully convolutional network,我在下面貼了兩個非常典型的網路結構,基本的思路是說我之前的深度網路是一層一層地把特徵往高層提取,在高層我最終利用這個全連接我做了一個分類器,然後判斷在每個分類上的概率是什麼樣子,如果把這一層全連接拿走,那相對應地會得到一張縮小的圖。看能不能再把它逐步放大,這樣子就得到一張和原圖等大的圖,能夠實現對每一個像素的判斷。
右面其實是一個更加漂亮的網路結構。就是conv-conv-pool,conv-conv-pool,其實一層一層的把圖縮到一個比較小的維度上,然後這個時候我們再來up-sampling,然後conv,然後往上層走。所以input的是一張RGB的圖片,出來的就會是一個Segmentation的圖片。實現了每個像素點上的區別,每個像素點上的特徵標記。其實這張例子也能體現我剛才說的,FCN網路的邊緣有點像『狗啃的』這種感覺。右邊它會把一些高層信息再落回到低層信息當中來,雖然左邊這個結構沒有右邊結構那麼優美,但它其實在實際工程當中用的效果會更好一些。
在這個維度之前我們看到大家很自然地會想到說FCN應該是可以直接用於眼底病灶的切分和處理的,這是我們在一篇理論裡面看到的效果,左邊是原圖,中間是Background,右邊是用FCN做出的結果,我相信這應該是他挑的自己做出結果最好的一張圖,因為這張圖的病灶區域比較大。可以看到說它優點其實非常明顯,它比傳統方法要快很多,基於整圖的識別,所以它速度非常快。
對於前期的信息把握得非常好,但是問題就是說雖然這是它最好表現的一張圖,但它局部特徵信息提取的精度其實非常不足,而且對於一些微小點,尤其到了一些邊緣處,它其實識別得非常不好。
同時,對於病灶領域,另外一個非常有名的網路叫U-net,其實它大致的原理與FCN是一致的。是它有一點,它認為對於特定病灶的區域的判讀和分割,其實依賴於周圍的信息,所以它實際上在構建這個網路的過程當中,我最終可能希望判讀的是中間255×255這塊區域的圖像的分割結果,但是我輸送進去的是一個388×388的圖片,也就是我一個大圖,然後生成一個中間這部分小圖的結果,所以在他一層一層往下down的過程當中,它會不斷的去掉切掉周圍的一些,因為靠它邊緣的這些它會捨棄,然後當它回來的時候,它會選擇原圖中間那部分來進行合併。
這樣子的網路結構第一是看上去很優美,但第二個很重要的原因是它其實參考了周圍的信息。我們看到它底下的切割結果用來做Tissue Segmentation其實效果還是蠻不錯,整個它其實做了一個很典型的切分,但是我們實際在應用U-net來做我們眼底的時候我們可以看到它這個網路還是比較適合於大片的圖像切割。
就像我們看到它當時最典型的問題其實是用於淋巴結的,它其實每個區域都有相應的組織,所以它會把整個圖做一個明確的區分。但是用到眼底過程當中,因為我們的病灶數量太小,分布範圍太少,所以我們會有大量的全黑圖,或者大量沒有病灶的圖,所以導致的結果就是U-net通常訓練就成了一張全黑的結果,然後它這張全黑的圖依然可以取得比較好的準確率。
因為我全黑了,它剩下來的只有少量的判決錯誤,所以U-net其實也不能完全直接應用於眼底圖片。回顧了我們在用深度學習方法或者深度網路來進行圖像切割常見的做法和方法之後,肽積木提出了一個LP-Net的運算元,核心是基於局部信息的深度神經網路運算元,這個核心的原理是利用基於局部信息的fcn網路構建針對單個像素點計算的分類運算元。
核心就是,第一它其實還是一個基於fcn為基礎的深度技術,因為看到的就是fcn還是有它非常明顯的優點的,第一個學習能力很強,適應不同的場景,就像剛才我們實測的情況,不同的設備對於我們的訓練結果不會有特別大的影響和差異,所以它泛化能力很小很好,而且運算速度會非常快。
在這個過程當中還是把它的局部深度學習方法整合成了這個對應的分類運算元,這樣的好處就是說我其實是作為一個像素級的區分避免了傳統fcn的邊緣模糊以及小病灶難以識別的問題,
也就是說我其實是一個像素、一個像素看過去的,而且這裡面其實在某種程度上也應用了U-net的一些核心思想,這些核心思想就包括說我要參考周圍的信息,但是周圍信息其實也是利用局部信息來進行自我學習,對於醫生的描述性依賴語言會比較低,然後結合結合周圍的場景,也不僅僅只看像素點的特點,所以泛化能力整體上還是呈現一個非常好的一個效果。
這是肽積木LP-NET運算元的運行結果,其實就能夠看到我們的效果還是不錯。這個結果是針對Accuracy數據集的一個測試結果,包括說像Accuracy到0.91,Sensitivity是在0.85,然後整個AUC值會非常的高,差不多是0.99。
我們基本上是針對到因為差不多一張原理圖大小可能有不一,我們把它統一在1024×1024的情況之下的話,它的運算時間差不多在13秒到15秒之間。
我們用的GPU大致情況會在下面體現,這個是我們在實際用LP-NET的運算元在標記過程當中樣張的一些呈現,我們可以看到它不會像傳統的FCN方法,周圍的邊緣會非常的不清晰。而整體上它還是比較清晰,還可以看到一些非常小的點,它都能夠準確無誤的給它找到相應的結果。
除了這些還有包括像這個,剛才那個是大面積病灶,我們翻下來的這張圖,這張圖其實它的病灶的範圍不會特別多,而且這裡面有一個非常典型的混淆點,視盤右下角有一塊黃色的區域,這個其實是棉絮斑,實際在傳統方法的判讀裡面經常會把它誤認為滲出。我們用這樣的一個運算元,用深度學習的好處就在於說它各方面各維度的特徵都會統一參考,而不僅僅是看我形態特徵或者色彩顏色特徵,它不僅僅是這樣的一個邏輯。
所以在這個過程當中我們最終選擇了一個工程化的路徑。
雖然看上去只是一個簡單的眼底圖,但其實也是需要經過一系列的判讀。首先是包括我是否是眼球,如果不是眼球的話,我們會放到VGG裡面去判讀你到底是什麼,以前有一個笑話說有人去測智商,然後機器告訴他你不要放一個石頭過來測試,我覺得它們這個雖然很蠢,但是它們也是應該用了這樣的一個模式,我首先看看你是不是人的眼球,你不要騙我,所以如果是眼球的話我們再去判斷你是不是健康的眼球,然後生成相應的描述。
這樣的一個好處是我的速度會非常快,就尤其在我們實際選擇工程應用場景裡面去做篩查這個邏輯,如果你是健康的,那其實我不需要花太多時間在你上面,直接得到健康正確的結果就好了。
如果你不是健康的眼球,我們在進行相應的分級演算法,包括去判讀你的視盤黃斑區域,然後進行位置標記明確病灶到底在哪,根據這所有的信息,再去生成對應的描述文件。
這是肽積木用眼底生成技術做的一個C端 APP——DOCE,大家可以去測一測,至少目前你們拿一個桔子去測試應該是不會有什麼好的結果的。我們基本上就是利用眼底圖片能夠快速的定位我們的病情,然後自動生成報告,診斷結果清晰、可讀操作也比較簡單,反正大家在自己手機上也都可以試一下。然後用AI機器人自己自動識別等級,包括標記我都可以給你標註出來,所以準確率高。基本上我們是用的三甲提供的一些資料庫,機器的準確率基本上能持平頂尖的醫生。
眼底產品運營環節遇到的挑戰以及推進思路
最後我給大家簡單講一講,眼底產品運營環節遇到的各種各樣的挑戰以及推進的一些思路。
實際上我們看到的應用場景來講,其實主要還是包含兩個層面,第一個是診療,第二個是篩查。對於診療來講,是整個我們能夠納入到三甲大夫的操作流程當中,同時也觀察說基層大夫的應用情況,它們兩個會有比較明確的一個差異。
三甲大夫都是會先拿病歷自己去看一遍,然後對有價值的病例再進行相應的操作,而且更多的時候是為了留底。因為說實話比較有意思的一些案例,他拍照片留下來自己以後作為學習或者作為作為教學案例來講會比較有意義一些。
另外一塊我們看到實際基層大夫,他們的拍攝情況之前也給大家做了一個詳細的介紹,其實還是會比較千差萬別。然後篩查領域其實我們可以看到,因為以前有一個眼科大夫一直跟我講眼底是人能夠直接看到的唯一大腦組織,所以它對於一些比較早期的像血管疾病,甚至包括一些特定的疾病包括一些糖尿病,能夠看到比較早期的一些病變,所以用來篩查糖尿病,前期都能夠得到比較好的結果。
我們在整個糖網的這個邏輯體系裡面,大家之所以關注和熱衷,其實還是因為它的應用場景非常的廣泛,所以在這個過程當中,我們其實希望第一,要建立標準。現在其實更多的就是大家通過各種各樣的技術方式和方法都能夠學出一個還不錯,當然這個裡面工程化實際應用會有比較大差異,但是核心是能夠建立一個大部分醫生都認可的眼底篩查的標準會非常重要。
然後在面向基層的重點是實際落地過程當中,要平衡醫療資源,所以我們會面向基層面向社區。在這個過程當中除了這些以外,還可以為提供年輕醫生的學習和培訓的相應的工作。
以眼底為代表的篩查類型AI判讀發展趨勢
最後簡單講一講,以眼底為代表的像這類篩查類型的AI的判讀的一個發展趨勢到底是什麼樣子。
整體上來講,篩查類型的這個AI判讀可能和輔助分級,可能和做病理切片的判讀不太一樣,它並不核心體現在雖然它也部分地體現在這個診療過程當中,但它並不是作為最終診療判讀的標準和依據,所以我們在這個過程當中更多的是實現和幫助他來進行分級診療。我通過AI能夠做第一層的預篩查,節省醫生大量的時間,有問題的、有針對性的再重新進行引流和配比。
然後第二個就是能夠輔助進行醫生資源的再分配。
我們一直在說AI要學習醫生,那學習醫生出來之後,其實就是製作醫生的分身能夠重新把這些醫生的分身放在一些以前可能醫療資源極度缺乏的一個應用場景當中,同時最核心的一個點就是目前我覺得,包括我們看過去很多的AI醫療公司其實並沒有完整的實現商業化場景,而在這個過程當中,大家只有實現真正的商業應用場景才能夠真正地實現長久的發展。
這是我對整個篩查類AI的發展趨勢的判斷,基本上核心就落在三點:分級診療、資源和資源的再分配、以及產業化。
雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。
推薦閱讀:
※有人用語音識別寫作嗎,如果沒有,為什麼?
※在人工智慧上落後太多的蘋果,可能重蹈黑莓的覆轍?
※使用深度學習(CNN)演算法進行圖像識別工作時,有哪些data augmentation 的奇技淫巧?