【論文筆記】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.論文地址:https://arxiv.org/pdf/1707.02485.pdf
論文cvpr oral 視頻:https://www.youtube.com/watch?v=DiNUcYi3Oxs
接下里就是正文部分,大致順著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 | 計算機視覺 | 機器學習 |