關於文獻閱讀和尋找新的科研題目

本文轉載自: http://mmcheng.net/paperreading/ 

歡迎大家去原博發現更多有價值的內容!

自從2007年一月去我即將讀研的清華大學計算機圖形學組做本科畢業設計開始,我就陷入了一個困擾我許久的問題之中:如何閱讀文獻,如何尋找科研題目?之後長達三年的時間,我一直被這個問題深深困擾,直至2009年底首次以第二作者發表論文(Sketch2PhotoResizing)才稍微有緩和。在之後的很多年,我也一直試圖總結相關的經驗教訓,期望有一天這些經驗教訓有一天也可以幫助和我一樣飽受困擾的同學,特別是低年級同學。近期我時常收到類似的求助郵件,因此今天決定將這些經驗和教訓寫出來,並儘量提供詳細的link,指向那些易讀易擴展的工作,方便大家學習論文和相關源代碼。

1. 機遇與挑戰

基於與挑戰總是並存的。這一點很多時候被作爲政治口號說的太多,以至於我們很多時候都對此感覺有些麻木,甚至在重要問題上容易忘記這一點。就閱讀論文和尋找新的題目而言,幾乎在任何時刻,如果我們去閱讀之前的論文,都會覺得幾乎每個學科都發展到一定程度(有無數的重要工作以至於想通讀一遍都很困難),容易做的都被人做光了,剩下了一堆難啃的硬骨頭。但是當我們從某個時間點往後看,又總是有太多的工作讓人覺得異常興奮,振奮之餘又陷入了那個問題,貌似僅剩的容易工作又被人做了。只恨自己比別人晚出生幾年。要是真的能夠早生幾年,我們就能夠做出哪些工作嗎?我想如果抱着這種心態,這種假設大概只會一直回退到遠古時期,回退到那個大家都在爲食物而拼命的年代。

與其抱怨已有工作浩如煙海,無從入手,感嘆我們怎麼會不幸的出生在一個“科技發展的後噴發時代” ,不如認真的換個更加客觀的角度重新思考問題。假如我們是一個計算機處理器設計行業的新從業者,當我們剛進入這個行業的頂級公司,看到無數的已有工作和成績,我們很可能也會發出類似上述情況的感慨。但是,身爲一個外行,和無數的外行一樣,我非常有信心 ,計算機的處理能力在未來很多很多年還會繼續快速增長,比這個世界上幾乎所有其他行業都要快的速度繼續增長。所有的局外人都明白其中所蘊含的機遇。對於我們所從事的領域,很多時候我們的迷茫,我們的“不識廬山真面目”,都只源於我們“身在廬山中”。

任何的科學創新,都是基於已有工作基礎之上,不存在空中樓閣。激發創新工作的要素很多,新的數學理論,新的算法工具 ,新的軟件分析平臺,新的設備,…。其中任何一種新的東西,都有可能激發一個偉大的工作。我們不用擔心可做的事情被做完了,我們所能夠訪問到的新的理論、工具、平臺、設備,比歷史上任何時間點都要多很多。我們應當清楚的認識到,機會不是即將耗盡的資源,而是會隨着時間的增長,變得越來越多。就像你站在過去的每個時間點上看後來的CPU計算能力一樣,那將是持續的超乎任何人想想的增長。

在從事這些領域的過程中,我也曾經經歷了迷茫、失望、探索、發現、振奮的各個階段。雖然迷茫和失望在時間跨度上佔了我短短几年科研經歷的明顯多數,但現在更多的是信心和對未來的憧憬。 當我們擺脫之前的悲觀情緒之後,一個現實的問題是,如何尋找這些機遇,如何從海量的文獻中找出適合我們的科研題目?關於這一點,我想從自己比較熟悉的幾個領域出發 ,用具體的實例來總結我的一些經驗和教訓。

下面主要通過時間順序,分析一些領域的一些代表性工作是如何一個接一個涌現出來的,是什麼基礎啓發了這些工作?這些想法是如何轉化爲實際的成果。對於新的科研工作者,特別是一二年級的學生,不妨假設我們也是曾經的“當事人”。如果能夠順着這幾條脈絡走下去,在每個論文出來之後,想一想如果我是當時從事這些工作的人,我會從之前的工作中得到什麼啓發 ?我會如何開展下一步研究?對於低年級的新手,開始的時候這種鍛鍊會非常辛苦。最初的“啓發”很可能是“又一個軟柿子被人捏過了”,“貌似能做的都已經被做了”,“貌似只剩難啃的硬骨頭了”,“這傢伙從事科研的時間點怎麼這麼幸運”。我們可以想想如果是自己,站在當時那個位置,會做什麼後續工作。當確實充分的思考完一個工作之後,我們可以看一看下一個同領域的重要工作。如果你發現自己很多時候可以“預測”這些發展了,那麼非常恭喜你,這篇小總結可能對你沒太大用處了。如果我們又一次陷入那個覺得只恨又一個容易做的工作被別人做掉了的怪圈,那麼還是再認真鍛鍊,仔細琢磨這些新的工作是怎麼一個接一個在在相似的topic上層出不窮的。

注:以下主要分析一些引用數特別高的論文。每一個引用通常意味着有人受到這篇論文的啓發,做了一些新的工作,並且發表了相關的論文。在無數的論文中,閱讀這種論文通常“性價比”更高一些。另外看法純屬個人意見,可能有所疏漏,歡迎批評指正(可在帖子下面留言)。

2. 系列工作分析之Saliency Detection

1998 PAMI: A model of saliency-based visual attention for rapid scene analysis (Matlab Code, 5000+ citations)

這篇論文雖然只是個short paper,但是在這個領域有着不可磨滅的絕對重要性。其最大的貢獻在於將Visual attention的問題用計算模型表達出來,並展示出來這個問題可以在一定程度上得到有意義的結果。其中提到的Center-Surround difference在後續的很多工作中都被以不同的形式表現出來。除了生成saliency map (後續的很多方法只生成saliency map),這篇文章也探討了注視點的轉移機制。總之,說這篇論文是saliency Detection computation的開山之作也不爲過,此文對後續工作有着深刻的影響。體現了最牛的一種創新境界“提出新問題”。

建議在繼續閱讀別的論文之前,先仔細讀一下這篇只有區區6頁的短文,想想還有什麼可做的嗎? 我第一次讀完這篇論文之後,第一感覺是:i) 這篇論文對該考慮的問題都考慮到了,應該沒有太多可以接着做的了, ii) 這麼簡單的東西怎麼就沒輪到我去發現,那個時候的人太幸福了,這麼簡單的想法也可以發IEEE TPAMI。當然,這些初始的想法是像我一樣小菜鳥最常見的想法。但是真的回到1998年,那時候我還在讀初中,我們在農村飯都吃不飽(現在還清楚的記得當年由於營養不良,我的體重只有24kg),哪有現在這麼方便,Google Scholar搜索一下什麼該有的條件都有了。即使是在美國,當年也只有這一個人把這個方向做的這麼細緻,我相當年的美國也有很多博士生,但是絕大部分人沒有像這樣有影響力的工作。

再繼續往下讀之前,不妨使勁去想到底有多少種可能可以擴展。我想,在沒有閱讀後續論文的條件下,常人能想到的擴展不會超過兩三種,可謂少的可憐。但是,要是你點擊一下Google Scholar的鏈接,那5000+的citation中,有一半以上都是接着做saliency detection的!也就是說有2000+種可能可以接着做,並且成功的發表了論文,其中不乏優秀論文。

再往後讀這個系列中的別的論文,你會發現,idea越做越多,而非越做越少。等讀到最後一個的時候,你通常會發現自己輕易就能想出幾十種可能發表新論文的想法。

2007 CVPR: Saliency detection: A spectral residual approach, (Matlab Code, 1000+ citations)

在1998年PAMI的論文發表之後到這篇論文之前其實有很多做saliency detection的文章。這裏不一一介紹了,因爲太多了,以至於很多我自己也沒看。我直接跳到這篇很有“性價比”的論文。之所以這篇論文影響力很大,一個重要的原因是簡單,出奇的簡單!這篇論文一共5行matlab代碼,比一般論文abstract中的字符還少,作者直接貼到論文中了。具體方法我不分析了,自己看論文吧,5行代碼的方法,不用花太多時間就能看完。

特別簡單的方法通常意味着有無數種方案可以改進。最直接最容易想到的創新莫過於“組合創新”。有興趣看這些改進的讀者可以通過Google Scholar查看引用這個論文的其它論文。還是繼續上面的風格,我我每次都跳到下一個很有“性價比”的工作(也就是簡單可擴展的工作)。

2007 CVPR: Learning to detect a salient object, (Dataset, 680+ citations)

2009 CVPR: Frequency-tuned salient region detection, (C++ code, 700+ citations)

一篇2009年的工作,能在短時間內,受到如此關注,實數罕見。該文同樣具有幾乎所有高引用論文的重要特徵:簡單!比上面的CVPR 2007的那個還簡單。你可以寫一個2行的matlab代碼就搞定。代碼字符數可以比很多論文的題目字符數還少。

這種論文容易擴展的特點是毋庸置疑的。如果能發表在高水平的會議期刊上,這種論文會有很大的影響力。問題在於,如果是我們當年想到了這個方法,怎麼sell這個方法,讓他能夠被大家所認可。看了方法的人都會感嘆,這樣也行?!!

這篇論文之所以被大家認可,特別是被CVPR的review認可,很大原因在於作者看到了一個機遇“The true usefulness of a saliency map is determined by the application”。之前的很多saliency detection方法都在follow 98年pami那篇,試圖去預測注視點。恕我愚昧,我到現在爲止,我也不是很明白這些注視點是怎麼在實際應用中使用(在我所熟悉的領域salient object region的應用要廣泛的多,例如這張圖總結多種實際應用中怎麼可靠的利用顯著性物體檢測結果。Fixation的應用可能包含recognition,但是我瞭解的不多)。Saliency的機制很重要,但是很多的應用需要知道整個saliency物體的區域(例如圖像中一匹馬對應的所有像素),而不是這個物體上的若干個點(例如馬的眼睛)。這篇文章之後,很多工作的評價標準就從傳統的對注視點預測的評價,轉移到對物體區域二值圖的預測上了。從某種意義上講,這篇文章對Saliency detection的問題做了重新的定義,讓問題定義更加回歸實際應用。

這篇文章的方法之所以能在一個當時最大的數據集(1000個image的binary segmentation)上做到比其它方法好的結果,很大的原因在於,別的方法不是針對這種評價體系設計的。在新的評價體系下,用圖像中每個像素顏色值,和圖像的平均顏色值,在三維彩色空間中的距離,作爲saliency value,就能得到比之前方法“更好”的結果。這個工作的最大特點是從新的角度提出問題,怎麼formulate都是次要的,不用太糾結於此(後來我們也利用關鍵詞搜索得到了很多圖像,並標註了2個更大數量級的數據庫)。後來無數種方法都在他們的數據庫上取得了更好的結果。

2010 CVPR: Context-aware saliency detection, (Matlab code, 400+ citations)

雖然“組合創新”有時候容易被認爲是minor improvement,但是如果論文寫得好,實驗做得充分,也可以做出具有影響力的工作。而且貌似大部分論文都是組合創新。這篇CVPR 2010的工作就是Saliency detection中“組合創新”的一個典型。聽到組合創新這個詞,大家或許就能對這個paper的整體結構有個猜測。其實就是把face detetion, pixel level saliency map,region level saliency map簡單組合起來。

2011 CVPR: Global Contrast based Salient Region Detection, (C++ code, 400+ citations)

可以說1998年的PAMI和2007年的CVPR是我2007剛開始接觸科研時就看過的paper。當時看了只有佩服和震撼,感覺能做的都做了,貌似沒我什麼機會。上面提到,我是在圖形學組讀博的,主要關注的是CV方法的應用。2009年春季學期的時候,我們組加上外面訪問的學生,一共有10個project,後來這些project中了一篇ACM TOG和6篇Pacific Graphics(所有論文收錄圖形學中影響因子第三高的期刊CGF,第一是ACM TOG,第二是IEEE TVCG)。這些應用經驗,讓我心裏比較清楚那種saliency map是我更需要的。但是根深蒂固的偏見(看了之前fixation point prediction系列paper之後覺得saliency map就該長的像那些paper中那樣),讓我即使在擁有如此多應用經驗的情況下,依然沒能及時的意識到,要想在實際應用中發揮更大的作用,這個問題的定義方法和evaluate方法應該改!

2010年6月份的時候,一個偶然的機會,我看到了CVPR 2009的論文。現在還記得是某一天中午十一點多的時候看到的,論文粗看了一下,就到了吃飯點,和同學去食堂吃飯了。整個吃飯過程各種不淡定,心裏那叫一個激動呀。因爲我知道更多的saliency detection應用確實需要這樣的問題定義和評價標準。而作者在論文中用到的方法,其實只是一個適用這種應用需求的最最簡單的方法。這種簡單的方法太容易被超越了!激動過後,趕緊吃完午飯,回到實驗室驗證我吃飯時心裏想到的幾個可能的改進。那天下午,我花了不到1個小時的時間,就得到了比CVPR 2009論文中方法明顯好的結果(就是我CVPR11年論文中的HC方法)。不久之後,得到了一些老師和同學的反饋,進而提出了論文中的RC方法,和SaliencyCut方法(值得注意的是,雖然很多後續方法號稱得到了更好的Saliency map,但是我一直沒看到更好的根據這些Saliency map得到的segmentation結果,可能跟我們堅持不在Journal版本錄用之前放出SaliencyCut部分代碼有關係吧)。

2012 CVPR: Saliency Filters: Contrast Based Filtering for Salient Region Detection, (C++ code, 90+ citations)

2012 ECCV: Salient object detection: A benchmark, (50+ citations)

2013 CVPR: Salient object detection: A discriminative regional feature integration approach, (Matlab code)

2013 CVPR: Hierarchical Saliency Detection, (Executable software)

2013 ICCV: Efficient Salient Region Detection with Soft Image Abstraction (C++ code)

Salient Object Detection: A survey. [pdf]

 

 (今天寫累了,先把準備談的工作列表弄出來,後面有空的時候接着寫這些工作是怎麼一步步相互啓發的)

3. 系列工作分析之Content Aware Image Resizing

2007 SIGGRAPH: Seam carving for content-aware image resizing, (800+ citations)

2008 SIGGRAPH: Improved seam carving for video retargeting, (400+ citations)

2008 SIGGRAPH Asia: Optimized scale-and-stretch for image resizing, (300+ citations)

2008 Pacific Graphics: Shrinkability Maps for Content‐Aware Video Resizing (70+ citations)

2009 Pacific Graphics: A Shape‐Preserving Approach to Image Resizing (C++ code, 90+ citations)

2013 SIGGRAPH: Rectangling Panoramic Images via Warping

2013 ICCV: Content-Aware Rotation

 

4. 系列工作分析之Object Level Image Editing

2007 SIGGRAPH: Photo Clip Art, (150+ citations)

2009 SIGGRAPH Asia: Sketch2Photo: internet image montage, (180+ citations)

2012 SIGGRAPH: Interactive images: cuboid proxies for smart image manipulation, (20+ citations)

2014 ACM TOG: ImageSpirit: Verbal Guided Image Parsing, (Project page)

5. 系列工作分析之Objectness proposals

2010 CVPR: What is an object? (Matlab code, 200+ citations), journal version published in IEEE TPAMI 2012

2010 ECCV: Category Independent Object Proposals (100+ citations), journal version published in IEEE TPAMI 2014.

2011 CVPR: Proposal Generation for Object Detection using Cascaded Ranking SVMs (10+ citations)

2011 ICCV: Segmentation as selective search for object recognition, (C++ code, 60+ citations), journal version published in IJCV 2013.

2014 CVPR(oral):  BING: Binarized Normed Gradients for Objectness Estimation at 300fps, (C++ code)

 

6. 一些顯而易見的趨勢和機遇

Objectness,

Learning with 3D information

7. 相關鏈接

我相信每個領域都有這樣的系列工作。那些對這個領域特別熟悉的人如果能花點時間總結一下並分享出來對剛入門的學生會非常有幫助。如果您有相關的總結,請發一個鏈接給我,和大家一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章