0
本文作者: 楊曉凡 | 2017-08-12 10:14 | 專題:CVPR 2017 |
雷鋒網(wǎng) AI 科技評論按:計算機視覺盛會 CVPR 2017已經(jīng)結(jié)束了,雷鋒網(wǎng) AI 科技評論帶來的多篇大會現(xiàn)場演講及收錄論文的報道相信也讓讀者們對今年的 CVPR 有了一些直觀的感受。
相對于 CVPR 2017收錄的共783篇論文,即便雷鋒網(wǎng)(公眾號:雷鋒網(wǎng)) AI 科技評論近期挑選報道的獲獎?wù)撐摹I(yè)界大公司論文等等是具有一定特色和代表性的,也仍然只是滄海一粟,其余的收錄論文中仍有很大的價值等待我們?nèi)ネ诰颍镝t(yī)學(xué)圖像、3D視覺、運動追蹤、場景理解、視頻分析等方面都有許多新穎的研究成果。
所以我們繼續(xù)邀請了宜遠智能的劉凱博士對生物醫(yī)學(xué)圖像方面的多篇論文進行解讀,延續(xù)之前最佳論文直播講解活動,此次是第2篇。
劉凱博士是宜遠智能的總裁兼聯(lián)合創(chuàng)始人,有著香港浸會大學(xué)的博士學(xué)位,曾任聯(lián)想(香港)主管研究員、騰訊高級工程師。半個月前宜遠智能的團隊剛剛在阿里舉辦的天池 AI 醫(yī)療大賽上從全球2887支參賽隊伍中脫穎而出取得了第二名的優(yōu)異成績。
在 8 月 1 日的直播分享中,劉凱博士為大家解讀了「Joint Sequence Learning and Cross-Modality Convolution for 3D Biomedical Segmentation??」(用于三維生物醫(yī)學(xué)分割的合并序列學(xué)習和多形態(tài)卷積)這篇論文,它主要解決了一個三維生物醫(yī)學(xué)圖像分割中重要問題:如何綜合使用多種形態(tài)的 MRI 數(shù)據(jù)進行區(qū)域分割。以下為當天分享的內(nèi)容總結(jié)。
劉凱博士:大家好,我是深圳市宜遠智能科技有限公司的劉凱,我們的官網(wǎng)是 yiyuan.ai。這里也有我的微博ID,我經(jīng)常會發(fā)一些跟人工智能相關(guān)的資料和文章,大家可以關(guān)注一下。今天講的也是關(guān)于生物醫(yī)學(xué)圖像的應(yīng)用,是結(jié)合序列學(xué)習和交叉模態(tài)卷積的3D生物醫(yī)學(xué)圖像分割。其實在醫(yī)學(xué)圖像方面,分割,英文是segmentation,是非常重要的工具或者應(yīng)用。
我先講一下這篇文章的主要內(nèi)容,它講的是對核磁共振圖像中的腦部腫瘤部位進行切割的例子。右邊的圖給出來的就是什么叫“對腫瘤部位進行切割”。我們通過MRI拍出來圖片,如果有一些跟正常的大腦皮層細胞不太一樣的部位,這些部位就很有可能是有腦部腫瘤,所以要把它切出來,切出來之后再做相應(yīng)的研究。比如這三個例子可以看到大腦中有一些病變的位置,要達到的就是最右邊一列的樣子,把它們切出來。這個工作其實不算太容易,主要有幾個方面的原因。
首先比較難定位到哪些是腫瘤部位,因為腫瘤部位的形狀千奇百怪,沒有固定的形狀,不像人臉識別的時候,每個人的五官都差不多,位置區(qū)別也不會很大。比如說神經(jīng)膠質(zhì)瘤和膠質(zhì)母細胞瘤的形狀兩種就就很不同,就是不同的腫瘤形狀也不一樣。然后腫瘤的分布很廣泛,可能分布在大腦的任何區(qū)域,那跟人臉也不一樣了,就跟剛才我說一樣。
那怎么去實現(xiàn)、怎么去解決這些難點呢,這篇文章提出來一個思路就是交叉形態(tài)卷積的方法做一個 encoder-decoder 的網(wǎng)絡(luò)結(jié)構(gòu),然后同時用LSTM對2D的切片序列建模。
這里有個概念,因為MRI也是跟CT一樣斷層掃描的過程,就是它一層一層,一層掃出來的就是一個2D的圖片,然后多層累計起來就是3D的,但是其實切割是要切割出3D的腦部腫瘤位置,這樣就需要把2D的變成3D的,把2D的切片之間的關(guān)系通過LSTM描述出來,最后把多模態(tài)卷積和LSTM網(wǎng)絡(luò)結(jié)合在一起,達到3D切割。
剛才提到多模態(tài)的概念,就是因為這個是MRI特有的特征,因為CT里面并沒有。這里有四個模態(tài),就是通過四種方式掃描腦部得到MRI數(shù)據(jù),這是這里列出來的四個的名字,我們先不用管它這四個具體是什么意思,只是知道它有四種模態(tài)就行了,這四種模態(tài)對最終切割的結(jié)果是有直接的作用的?,F(xiàn)在大多數(shù)的3D圖像切割方法只是用了一個模態(tài),或者把多個模態(tài)分別來做,然后再堆積起來。
這個方法的framework大概是這樣的,從左到右看。
首先每一個腦部的MRI數(shù)據(jù),他都是通過四種模態(tài)切出來的,這里用四種不同的顏色來表示,相當于每一個slice就是我說的那個2D的圖片。
切完之后他會把四個模態(tài),就是到圖b這個階段了,四個模態(tài)交叉在一起做一個multi-modal的encoder,這個encoder就是用一個神經(jīng)網(wǎng)絡(luò)來實現(xiàn)的。
四個模態(tài)encode到一起之后,在這一步就用神經(jīng)網(wǎng)絡(luò)把四個模態(tài)下的腦部切割出來了,這是2D的情況下。
然后再加上convolution LSTM把2D的切割、2D和2D之間的dependency描述出來之后就形成了3D的切割,然后再做一下decoder,展現(xiàn)成最后這種形式。在最中間有一個切割出來的東西,其他沒被切割到的background。
這就是一個大體的流程,然后對具體對每一個細節(jié)的過程,我再詳細介紹一下。
第一個模塊就是multi-modal的encoder,這里的網(wǎng)絡(luò)結(jié)構(gòu)最主要的幾個方面是用四個卷積核,通過batch-normalization,然后加一個非線性變換,在后面有四個最大池化層。這就是先簡單介紹一下,如果要詳細了解這個網(wǎng)絡(luò)結(jié)構(gòu)是怎么設(shè)計的,可以去讀一下這篇論文。
另外一個嗯比較重要的部分就是多模態(tài)交叉卷積。四個模態(tài)的數(shù)據(jù)進入到這個卷積網(wǎng)絡(luò)之后,他就會把每一個模態(tài)下面的cross在一起,然后通過一個三維的卷積,卷積的大小里有個C×4,就是因為他每個channel里面有 c 個slice,就是說它是一個立體結(jié)構(gòu)了,一個長寬是H、W,高是C的這種。四個模態(tài)弄到一起就是C×4×H×W,有大小。
然后在這里,是用4×1×1的一個卷積核,做卷積之后得到每一層的切割出來的特征。切割出來之后,然后就進入了后面的convolution LSTM。
這個convolution LSTM跟普通的LSTM有一個區(qū)別,就是把原來的矩陣相乘替換為一個卷積操作,就是普通的乘法變成卷積層,這樣它就能夠在把之前狀態(tài)的空間信息保留著。其實它的目的就是,卷積LSTM會描述一個2D切割邊緣的趨勢,比如說這一張中切片它的形態(tài)是這樣的,然后到下一張它會有一個輕微的變化,要把這種變化描述出來。
因為剛開始有一個圖像的encoder,還是要把它解析出來。最后就有一個soft-max的分類,也是一個兩分類的,就是每一個像素是前景還是背景的概率。是前景的話,就是我們要切割出來的部位;如果是背景的話就不是我們感興趣的地方。
它的實驗部分做了兩個,第一個跟醫(yī)學(xué)沒有關(guān)系,這個通用的場景就不講了。我講一下跟醫(yī)學(xué)相關(guān)的那個,他有一個公開的腦部MRI的數(shù)據(jù),就叫BRATS-2015。
他切的是神經(jīng)膠質(zhì)瘤這個疾病,它的嚴重程度分為五種,0 就是非腫留,1 是腦細胞壞死,2 是水腫,3 是非增強性腫瘤,4 是增強性腫瘤,數(shù)字從低到高,它嚴重程度會越來越高。臨床上是從三種不同的方面去評價切分的效果:
第一種,完全把四種嚴重程度的病都切割切割出來,相當于區(qū)分腫瘤和非腫瘤;
第二種,部分切割,只關(guān)注 1、3、4 這三種。2 的水腫,其實也是比較容易混淆的,就是它不是真正的腫瘤
第三種,只關(guān)注增強型的腫瘤,就是最嚴重的那種
最右邊是一個圖例,看這幾種方法哪一個切的好一些。第二列是就是ground truth,第三列是U-Net,是一個提的比較早、比較通用的一個benchmark的方法,來做數(shù)據(jù)切割;然后第四列的CMC,cross-modality convolution,這個也是這篇文章提出來的;然后CMC+convolution LSTM,就是描述了切片與切片之間的dependency的算法??梢钥闯鰜?,最后一個跟ground truth是比較接近的。
這里有從三個方面看的評價結(jié)果,三個指標。其實都是算它切割得跟ground truth重合的部分的比例,第一種“Dice”就是它的 overlap 部分,除以他們兩個面積交集和并集的一個平均,這里的P就是predict出來的區(qū)域,然后T是ground truth的區(qū)域。PPV是positive predicted value,那是他的交集部分除以預(yù)測的區(qū)域;sensitivity就是交集的面積除以ground truth區(qū)域。這里也是跟U-Net比較了一下。
我下面補充一下這個U-Net的概念,如果沒有醫(yī)學(xué)圖像切割的一些知識背景的話,可能不太理解它。其實U-Net就是一個網(wǎng)絡(luò)結(jié)構(gòu),參考文獻在最下面。這種網(wǎng)絡(luò)結(jié)構(gòu),就是畫出來長得字母U,然后所以叫yU-Net。
它之所以長成這樣,是因為這個圖像進來,最左邊可能大家看的不是很清楚,圖像里其實是一個一個的細胞,它們都連在一起,但是邊緣是有一些線割開的。網(wǎng)絡(luò)的目標是把這些細胞一個一個地切開,就像最右邊的這種情況。網(wǎng)絡(luò)剛開始的時候用的卷積就先是3×3的卷積,然后加上ReLu這個非線性變換,然后一步一步做下去。其實這個網(wǎng)絡(luò)結(jié)構(gòu)還是挺深的,如果有興趣可以去看一下這篇文章。其實這個算法對大物體小物體的切割都是做得還不錯的,就是因為這種U結(jié)構(gòu)的,先對大物體切割,然后再去對小物體切割。
這里面還有一些trick,就是在BRATS-2015這個數(shù)據(jù)上來,因為這個數(shù)據(jù)量其實不大,好像正例一共只有60多個,負例兩百多個。這里也出現(xiàn)了一個數(shù)據(jù)不均衡的問題,它是用median frequency平衡法,這個很簡單,這個算式里有一個除法,就是分子式median frequency,就是每一個類的平均frequency,除以這一類總的出現(xiàn)的次數(shù)。如果出現(xiàn)次數(shù)越多,那它這個權(quán)重就會越小,就是賦了一個比較小的權(quán)重,就在 loss 函數(shù)里對這一類的數(shù)據(jù)設(shè)定了一個權(quán)重,相當于下采樣的過程。
在這個學(xué)習過程中使用了two-stage training,第一個階段是只采用了包含腫瘤的切片,然后用median frequency減少大類的權(quán)重。第二階段是降低學(xué)習率,然后把median frequency這種限制去掉,它的分布就是接近你的真實的分布,因為如果使用median frequency,它的分布是會變的,但是真實數(shù)據(jù)中那個大類的確實會存在,還是要去描述這個問題,先保證了這個模型第一部分不收斂到大類這個問題之后,然后第二個階段去再去慢慢的學(xué)習真實的分布。
在第一階段的時候避免采樣到空的序列,就是先去采樣了有腫瘤問題的,然后再在訓(xùn)練LSTM的時候也用了正交初始化的方法處理梯度消失的問題。這種方法其實都是可以用的,不一定非得這個問題上去用。
我讀到最后就發(fā)現(xiàn)一個不太好的一個地方,就是他在前面后面都提到了這個KU-Net,它說了跟它的方法模型是最相關(guān)的,其實這個KU-Net就是用U-Net+RNN,他用RNN也是去描述2D切片之間的dependency。
這篇論文里方法的不同就是,它用的交叉模態(tài)的方法去代替U-Net的那一部分,然后用LSTM去代替RNN那一部分。從直觀上來講應(yīng)該會比這個KU-Net效果要好,但是他說因為沒有公開代碼不進行實驗對比,我覺得這個理由不是特別充分。其實寫文章的時候既然他都給了U-Net的比較了,然后這種跟他更相關(guān)的、而且思路上也挺像的,應(yīng)該更要比較一下才對。
(先上一次論文講解中的問題開始)
Q:Sequntial learning的時候有沒有用move-and-average,就是有沒有移動平移法
A:這個那篇文章里面并沒有講,但是我覺得這個移動平均法在sequntial的學(xué)習的時候還是可以用的,就是相當于你在不同的步驟的預(yù)測值都做一個平均,還是有一定的推廣性的。
Q:關(guān)于醫(yī)學(xué)圖像數(shù)據(jù)不平衡的問題
A:其實不平衡的問題,解決方法有好多種,最簡單的就是上采樣和下采樣。如果那些大類的數(shù)據(jù)特別多,做一下下采樣,然后小類的做一下上采樣。這個比較簡單,然后我在實際問題中有一些經(jīng)驗,其實不是這一類多就一定要下采樣,這一類少就一定要上采樣,其實要看它具體的分布。
有的時候,比如說我們在做肺結(jié)節(jié)檢測的這個過程中,通過肺CT或者X光去看那個肺部有一些會癌變的結(jié)節(jié),去找這些病變的點。其實在這里面小結(jié)節(jié)會比較多,大結(jié)節(jié)會比較少。在這種例子里,大家直觀的很可能覺得要下采樣小結(jié)節(jié),那實際上并不是的,我們這反而是上采用了上采樣的小結(jié)節(jié),就是把它的數(shù)據(jù)要增多。因為小結(jié)節(jié)比較難分,它其實很小,跟background非常像,然后就容易被忽略掉,然后大結(jié)節(jié)就很明顯,即使只有少量的數(shù)據(jù),它也能分出來的。
所以這個跟實際的應(yīng)用有關(guān)系,一般情況下做模型之前一個很大的步驟是要去處理數(shù)據(jù),有的時候一些trick是從數(shù)據(jù)得到靈感,就應(yīng)該去怎么去實現(xiàn)。包括數(shù)據(jù)增強也好,怎么解決數(shù)據(jù)偏移也好。這是預(yù)處理的部分。
然后在實際訓(xùn)練中解決數(shù)據(jù)不平衡的問題可以通過一個叫hard negative mining的方式,就比如剛開始的數(shù)據(jù)不平衡,有的傾向于分到大類那一部分。而且你這個模型在分的時候,前期會有一些分錯的,分錯了就說明這個模型分的效果還不太好。比如說把小類的分到大類里面去了,明顯是分錯了,然后就把這些分錯的小類的找出來,做一下增強,比如說做兩倍的增強,然后再放到模型里面、再去學(xué),這樣持續(xù)下去,就會有針對性的把小的數(shù)據(jù)去增強,慢慢把數(shù)據(jù)變平衡了。這個思路其實是跟剛才的數(shù)據(jù)預(yù)處理是一樣的,但是更靈活一些,因為在訓(xùn)練之前,直接把小的類做增強,這種是比較主觀的,實際上不一定小類的就難分,最好先去模型試一下,看哪些比較難分,然后就專注于這種數(shù)據(jù)去做數(shù)據(jù)增強。其實上一篇論文講解直播的時候,論文里面也提到這個思路。
然后數(shù)據(jù)增強的時候其實也挺有意思的,上一篇論文里面提到要根據(jù)泛化能力比較強的做增強,而不是統(tǒng)一形式的增強。我們在實際在做的時候,也還是以肺結(jié)節(jié)為例子,我們在做hard negative mining的時候,因為在肺結(jié)節(jié)檢測里面少,就是發(fā)現(xiàn)肺結(jié)節(jié)在跟常規(guī)思路的機器學(xué)習方式有一些相反的現(xiàn)象。其實正例跟負例相比,本身是偏少的,因為他那個肺里面有很多部位結(jié)節(jié)是很少的。但是實際模型去訓(xùn)練,然后訓(xùn)練的時候就會發(fā)現(xiàn)好多并不是結(jié)節(jié)的預(yù)測成結(jié)節(jié)了。這個需要hard negative mining,就是要把negative的sample要增強一些。原來我們心想的通常情況下是應(yīng)該把少的那一部分增強,那肺結(jié)節(jié)檢測是實際上是相反的。在腦部切割的時候也會有這個問題。
然后最近關(guān)于一個segmentation的一個新的方法,目前還沒有用到在segmentation里面,我只是有一個想法,提出目標檢測Fast-RCNN這一系列的何愷明發(fā)了一篇文章,是Fast-RCNN的延續(xù),叫做Mask-RCNN,就不光是把那個目標能檢測出來了,還能把目標的輪廓給畫出來。這樣的話就非常像這里,比如說把病變的位置detect出來,其實是在這個地方畫了一個rectangle,這是找出它的位置了。如果我們要把病變區(qū)域切出來的,就要沿著它的輪廓,把它做一個mask。我覺得這個方法是可以試一下的,就相當于把目標檢測和segmentation結(jié)合在一起了,所以還是一個挺好的思路。
(等待問題過程中順便插播一則公司介紹)
我們宜遠智能位于深圳,也是一個初創(chuàng)公司,主要是做人工智能在醫(yī)學(xué)圖像處理上的應(yīng)用,然后做一些基于醫(yī)學(xué)圖像的輔助診斷,大家有興趣的話可以去我們官網(wǎng)看一下。我們現(xiàn)在也在招人,如果有興趣的話可以在微博里面艾特我或者發(fā)郵件給我,郵箱地址是 kennethkliu@foxmail.com。加我的微信也可以,但是微信的話我也不會發(fā)太多東西。微信號是 kenneth_liukai。
Q:這個問題有人問,我重復(fù)一下。也是數(shù)據(jù)不平衡的問題,當positive和negative不平衡的時候可以做hard negative mining。那么假如第一次分類有部分數(shù)據(jù)分錯了,那么增強的權(quán)重是重采樣權(quán)重還是梯度的權(quán)重?
A:這個是兩種都可以,我們實際中一般是數(shù)據(jù)重采樣。如果增加梯度的權(quán)重,其實不知道是針對哪一種。只是說這個權(quán)重的話,就把數(shù)據(jù)重新放進去。增加權(quán)重也可以,但是你增加這個權(quán)重的時候,學(xué)的時候就不只針對分錯的那些了,會對所有的數(shù)據(jù)都增加了權(quán)重。那么還是重采樣來得更直接一些,就是分錯的那個數(shù)據(jù)再重新放進去,或者是加倍重新放進去,再去訓(xùn)練,這個都是可以的。
其實在圖像上面做數(shù)據(jù)增強,不光是重采樣,還有一些時候為了增加它的泛化性,會做一些偏移、切割、平移這種操作,也是很有效果的。
Q:除了重采樣,還有其他辦法解決數(shù)據(jù)不平衡的問題嗎?
A:重采樣跟數(shù)據(jù)不平衡,其實是同一個思路。因為數(shù)據(jù)不平衡,你為了能達到平衡,那就是要打亂原來的數(shù)據(jù)分布了。除非這個模型對數(shù)據(jù)不平衡的狀況不敏感,就是說即使數(shù)據(jù)不平衡,也能學(xué)出來,大類就大類的學(xué),小類就小類的學(xué)。這種就是要考驗?zāi)P偷哪芰Φ?,有些模型即使類別比較小的也是能夠?qū)W出來的,要看這個模型的區(qū)分能力了。
Q:如果數(shù)據(jù)圖像label有時標錯的比較厲害,標錯的比例甚至達到1/3,有沒有什么數(shù)據(jù)清洗的辦法?
A:對這個這個問題非常好,因為在醫(yī)學(xué)圖像里面這個問題特別嚴重。
其實醫(yī)學(xué)標注數(shù)據(jù)是有很強的背景知識要求,一般都是要比較高水平的醫(yī)生標的才會比較準確。
對普通的醫(yī)生來說,比如說有一些結(jié)節(jié),或者一些腦部的MRI上病變的位置,其實在那里,但他就看不到,因為他知識水平有限,他就沒見過這種東西。我們也曾經(jīng)試過要用好幾個醫(yī)生然后去標,水平不一樣,指標的差異還挺大的,跟ground truth差距就更大了。
當然了這個ground truth也不是標準的ground truth,只是三個專家級的醫(yī)生標的共同的結(jié)果。這種方法可以這么來,就是說你的模型也可以去標一下。如果這個模型是完全基于現(xiàn)在這種“臟”數(shù)據(jù)學(xué)出來的,那么它真的是沒辦法能夠?qū)W得好,那它就是去擬和這個“臟”數(shù)據(jù)了。如果有另外一個好的模型,就可以transfer過來,它去把這個數(shù)據(jù)標一遍,跟達到1/3標錯的那個數(shù)據(jù)一起,相當于兩個專家會診一樣。它會有一個統(tǒng)計分布,這種情況下能夠一定程度上把那些“臟”數(shù)據(jù)給剔除掉。這是一種思路。
另外的話,有一些如果他標錯了,就會出現(xiàn)同樣的圖像、非常相近的圖像,得到了不同的label。這種就是標注相沖突的,這也是一個問題。我們就可以拿一個ImageNet pre-train的model去看兩個圖像的差異。假如說真的差異很小,然后label標注的截然相反,就可以做一定形式的過濾。
這個問題我不知道回答的好不好,我就是以我的經(jīng)驗來說。這其實是一個開放性的問題,可能有很多的方法去實現(xiàn)。其實做機器學(xué)習,ground truth就相當于一個先知,告訴你哪些是真的標注數(shù)據(jù),那才是真正的標注數(shù)據(jù)。那實際上很多都是人標的,人的知識水平就限制了標注質(zhì)量的好與差。
雷鋒網(wǎng) AI 科技評論整理。感謝劉凱老師帶來的分享。
相關(guān)文章:
ICML 2017最佳論文:為什么你改了一個參數(shù),模型預(yù)測率突然提高了|分享總結(jié)
CVPR 2017精彩論文解讀:顯著降低模型訓(xùn)練成本的主動增量學(xué)習 | 分享總結(jié)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。
本專題其他文章