【論文筆記】CVPR 2017 ORAL --MDNET

最近一直在看的一篇論文,因為要做的方向基本和他類似,並且我們做的一些工作也是在他的基礎上實現的。所以這篇文章我會看的很仔細,也做了大量的思考筆記,但我想,畢竟醫療圖像領域的做的人會少一些,所以看的人也估計不是太多,anyway,也算是自己思路在重新梳理一遍。

MDNET: 他實現的主要功能,主要就是三個部分:IMage_model,attention_model,language_model .這三個model是被集成在一個網路中的(end to end )。實現了由cnn提取特徵,然後分屬性標籤送入lstm,得到對於一張病理圖片的診斷報告以及診斷結論,並且在圖片上可視化注意力區域,對於病理圖像的診斷報告給予可解釋性視覺支持。並且儘可能的提高診斷結論的判斷。


首先,我覺得讀懂這篇論文基礎是建立在:

1. xu (2015)的show and tell 以及show attent and tell 這兩篇論文是讀懂這篇論文的關鍵,這兩篇論文在csdn上已經有很多解釋了,這裡我就不在詳細複述了。

2 由於我們的復現此篇論文的相關工作是建立pytorch基礎上的,所以採用的基礎代碼是交大的若天學長 @羅若天 復現的的show tell 代碼,這裡是github 地址:ruotianluo/ImageCaptioning.pytorch 這裡再次感謝學長了,hhhh

3.論文地址:arxiv.org/pdf/1707.0248

論文cvpr oral 視頻:youtube.com/watch?


接下里就是正文部分,大致順著MD論文的行文思路來解釋下整篇論文。

Abstract:

這裡主要是大致解釋了下MDnet 的論文功能: MDnet 在病理圖片以及診斷報告之間建立了多重的映射關係,這個網路可以讀圖,然後產生相應的診斷報告,並且可以產生注意力區域,為診斷過程提供相應的視覺可解釋性。並且整個網路是端到端的進行,他們建立了自己的數據集,基於膀胱病理學的圖片和診斷報告,並且誇自己的模型取得了「國家級的藝術表現」在cifar數據集上。

1 / Introduction/

大致介紹了下目前深度學習的應用場景以及現狀(雖然都是廢話,不過還是得說)。

然後指出現在給出診斷模型的常用的是分類,但是呢,分類存在缺點:1)這種分類模型掩蓋了得到結論的根本邏輯性,並且缺少對他們下診斷結論的支持過程。所以呢,在醫學上,最重要的還是語義解釋以及視覺解釋並存的方式是比較好的。

然後解釋了下,病理圖像和自然圖像的區別,這樣的話,我們只能採用MDnet的方法去實現相關的病理診斷。同時,他們介紹了下相關的數據集:細胞核的改變,密度的改變,以及xx的改變都會導致癌變的發生。 但是呢,對於醫生來說,就算是很專業的醫生,他們也無法明確的描述他們怎麼診斷的相關過程,(makaay內心OS:原來醫生的診斷過程也是黑箱操作啊,哈哈哈,不過從我們和上海相關醫院的聯繫了解來看,這個確實可信,都是基於大量的經驗來判斷的)。所以我們需要用機器學習的方法,來儘可能支持醫生的診斷結論,MDnet在於挖掘最具有判別力的信息(從診斷報告中挖掘),而且這些特徵,在診斷報告中是隱含的,不明確的。(makaay內心:可能他是想說,數據集是沒有bbox等位置信息的標註的)。

接下里是介紹具體的模型,cnn部分使用的的是resnet 然後語言模型部分採用的是LSTM,這裡都是些常規的模型操作,和ruotian學長復現的模型都是一樣的。但是他們在lstm的部分進行的相關的變化,這個後面我會詳細的結束。

2 /Related Work/

在這裡,作者就介紹了現在大家基本都是採用images和language的模型進行操作,然後介紹了相關了一些網路,比如cnn部分的Googlenet,以及語言模型的RNN等等。同時,作者也提到了,在自然圖像領域,使用預先訓練的CNN模型,能夠提高相應的表現,但是在病理圖像領域,這種預先訓練的模型並不能帶來相關的表現提升。然後又解釋了下注意力區域的必要性,並且,給出了to date,病理領域就只有放射線的那個(數據集公開了好像)。接下里又解釋了下,resnet的skip-connection的作用,反正就是表現很好,(當然我們實驗室的師兄復現的時候也採用了相應的操作。)

3 /Image model/

主要介紹了resnet的相關過程,然後在描述了他們在resnet上進行的更改,直接後面的直接進行全連接,也就是文章中提到的ensemble-connection。

(makaay註:因為這裡從文章中得到,採用這樣的更改,只在數據集上取得大概1%的提升,所以我們師兄在復現做的的時候並沒有採用他們的思路,而是直接使用的resnet,這裡不做太多的贅述)

4/Language modeling and network training /

語言模型中,我們常常採用LSTM來進行輸出診斷報告,這裡輸出的時候採用的是 輸出的單詞在單詞表中的概率。

(makaay:就比如若天學長復現的代碼中,採用的coco數據集,共有9867個單詞,而我們會得到一個1x9867的向量,裡面分別填寫了每個單詞的概率。當然這已經是從512維的向量映射到詞空間以後的事情了)

接下來作者提到了show attent and tell 這篇論文,他們採用的了其中的「soft」方式。就是我們從會從image中的特徵和相應的權重相乘,會得到一個Zt,這裡面包含了圖片特徵,然後我們會把這個和單詞信息進行連接,和h一起作為輸入,然後送到LSTM進行訓練。

但是呢,作者在這裡也發現了show attent and tell 的問題,發現很難訓練,因為和結論並不相符,於是呢,他們就提出(AAS)模塊,也是就是CNN輸出的特徵能夠更加靠近最後的結論,然後取出這個單獨的代表最後結論的向量(假如結論分為4類,從全連接層取出第三類的向量),然後在進行LSTm的操作,這樣的話,我的結論會會更加靠近最後的診斷結論。

經過這麼操作以後,作者給出了最後的與show attent and tell 的相關對比,確實變得更加準確了,這個全是因為ASS。

然後作者又對LSTM輸入的順序進行了相關的操作,對每一個屬性輸入的時候提前告知LSTM,我現在輸入的是屬性1還是屬性2,這樣的話,使的報告輸出的話能夠更加接近屬性類別的順序。

並且在4.3中,作者提到了聯合訓練的過程,就是使用兩個部分的loss合併,然後一起進行反向傳播,並且給每一個部分的loss 設置參數,使得前期的時候,模型更加專註的是提取特徵,然後後期的時候,專註得到最後的診斷結論。

5/Experimental Result/

由於作者更改了resnet,所以他們使用更改的resnet在cifar10以及cifar100進行測試,發現自己的模型牛(hhhh,這個是肯定的,我沒具體關注,可以看作者在cvpr上的oral報告,裡面講了怎麼操作)

然後呢,就是在他們自己數據集上的測試結果,是跟語言模型 netualtalk2進行對比,發現自己的比較牛。

並且給出了兩種展示模式。一種來自AAS的模塊,一塊來自最後的語言模塊。


以上便是論文的關鍵部分的解釋,差不多就這樣了,我們對此進行了大部分內容的復現,復現的內容建立在若天學長 @羅若天 的show attention and tell 代碼 。是github 地址:ruotianluo/ImageCaptioning.pytorch 這裡再次感謝學長了,hhhh

下面是大概的思路圖,不會給的很詳細,畢竟還有很多工作是沒有完成的。有問題可以多多交流。

這篇論文是我最近看的比較仔細的一篇文章了,還請各位多給我提提意見什麼的。

/紙上得來終覺淺,絕知此事要躬行/

以上。


推薦閱讀:

機器學習基石筆記1:基礎概念
譯文:如何為機器學習索引,切片,調整 NumPy 數組
機器能像人一樣思考嘛? 金句領讀137
機器學習+AI技術,碰撞出什麼你不知道事
過擬合與正則化

TAG:深度學習DeepLearning | 計算機視覺 | 機器學習 |