本文转载自程明明老师博客:https://mmcheng.net/paperreading/
对于论文的阅读和研究脉络的梳理很清晰,特别是在于找研究方向的建议上:从开山文献开始,会到当事人的角度去思考,然后逐步阅读后面的文献再思考,现有研究的优点、不足和可能的方向。不仅能够充分梳理某一个点的研究脉络,更能带来对研究的深入思考。idea是越研究越多的~~
关于文献阅读和科研选题
欢迎转载。本文将随时根据新的经验教训进行更新,因此转载时请附带原始链接: https://mmcheng.net/paperreading/
自从2007年一月去我即将读研的清华大学计算机图形学组做本科毕业设计开始,我就陷入了一个困扰我许久的问题之中:如何阅读文献,如何寻找科研题目?之后长达三年的时间,我一直被这个问题深深困扰,直至2009年底首次以第二作者发表论文(Sketch2Photo和Resizing)才稍微有缓和。在之后的很多年,我也一直试图总结相关的经验教训,期望有一天这些经验教训有一天也可以帮助和我一样饱受困扰的同学,特别是低年级同学。近期我时常收到类似的求助邮件,因此今天决定将这些经验和教训写出来,并尽量提供详细的link,指向那些易读易扩展的工作,方便大家学习论文和相关源代码。
1. 机遇与挑战
机遇与挑战总是并存的。这一点很多时候被作为政治口号说的太多,以至于我们很多时候都对此感觉有些麻木,甚至在重要问题上容易忘记这一点。就阅读论文和寻找新的题目而言,几乎在任何时刻,如果我们去阅读之前的论文,都会觉得几乎每个学科都发展到一定程度(有无数的重要工作以至于想通读一遍都很困难),容易做的都被人做光了,剩下了一堆难啃的硬骨头。但是当我们从某个时间点往后看,又总是有太多的工作让人觉得异常兴奋,振奋之余又陷入了那个问题,貌似仅剩的容易工作又被人做了。只恨自己比别人晚出生几年。要是真的能够早生几年,我们就能够做出哪些工作吗?我想如果抱着这种心态,这种假设大概只会一直回退到远古时期,回退到那个大家都在为食物而拼命的年代。
与其抱怨已有工作浩如烟海,无从入手,感叹我们怎么会不幸的出生在一个“科技发展的后喷发时代” ,不如认真的换个更加客观的角度重新思考问题。假如我们是一个计算机处理器设计行业的新从业者,当我们刚进入这个行业的顶级公司,看到无数的已有工作和成绩,我们很可能也会发出类似上述情况的感慨。但是,身为一个外行,和无数的外行一样,我非常有信心 ,计算机的处理能力在未来很多很多年还会继续快速增长,比这个世界上几乎所有其他行业都要快的速度继续增长。所有的局外人都明白其中所蕴含的机遇。对于我们所从事的领域,很多时候我们的迷茫,我们的“不识庐山真面目”,都只源于我们“身在庐山中”。
任何的科学创新,都是基于已有工作基础之上,不存在空中楼阁。激发创新工作的要素很多,新的数学理论,新的算法工具 ,新的软件分析平台,新的设备,…。其中任何一种新的东西,都有可能激发一个伟大的工作。我们不用担心可做的事情被做完了,我们所能够访问到的新的理论、工具、平台、设备,比历史上任何时间点都要多很多。我们应当清楚的认识到,机会不是即将耗尽的资源,而是会随着时间的增长,变得越来越多。就像你站在过去的每个时间点上看后来的CPU计算能力一样,那将是持续的超乎任何人想想的增长。
在从事这些领域的过程中,我也曾经经历了迷茫、失望、探索、发现、振奋的各个阶段。虽然迷茫和失望在时间跨度上占了我短短几年科研经历的明显多数,但现在更多的是信心和对未来的憧憬。 当我们摆脱之前的悲观情绪之后,一个现实的问题是,如何寻找这些机遇,如何从海量的文献中找出适合我们的科研题目?关于这一点,我想从自己比较熟悉的几个领域出发 ,用具体的实例来总结我的一些经验和教训。
下面主要通过时间顺序,分析一些领域的一些代表性工作是如何一个接一个涌现出来的,是什么基础启发了这些工作?这些想法是如何转化为实际的成果。对于新的科研工作者,特别是一二年级的学生,不妨假设我们也是曾经的“当事人”。如果能够顺着这几条脉络走下去,在每个论文出来之后,想一想如果我是当时从事这些工作的人,我会从之前的工作中得到什么启发 ?我会如何开展下一步研究?对于低年级的新手,开始的时候这种锻炼会非常辛苦。最初的“启发”很可能是“又一个软柿子被人捏过了”,“貌似能做的都已经被做了”,“貌似只剩难啃的硬骨头了”,“这家伙从事科研的时间点怎么这么幸运”。我们可以想想如果是自己,站在当时那个位置,会做什么后续工作。当确实充分的思考完一个工作之后,我们可以看一看下一个同领域的重要工作。如果你发现自己很多时候可以“预测”这些发展了,那么非常恭喜你,这篇小总结可能对你没太大用处了。如果我们又一次陷入那个觉得只恨又一个容易做的工作被别人做掉了的怪圈,那么还是再认真锻炼,仔细琢磨这些新的工作是怎么一个接一个在在相似的topic上层出不穷的。
注:以下主要分析一些引用数特别高的论文。每一个引用通常意味着有人受到这篇论文的启发,做了一些新的工作,并且发表了相关的论文。在无数的论文中,阅读这种论文通常“性价比”更高一些。另外看法纯属个人意见,可能有所疏漏,欢迎批评指正(可在帖子下面留言)。
二. 系列工作分析之Saliency Detection
2.1 [98PAMI]: A model of saliency-based visual attention for rapid scene analysis (Matlab, 9000+ 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越做越多,而非越做越少。等读到最后一个的时候,你通常会发现自己轻易就能想出几十种可能发表新论文的想法。
2.2 [07CVPR]: Saliency detection: A spectral residual approach, (Matlab, 2600+ citations)
在1998年PAMI的论文发表之后到这篇论文之前其实有很多做saliency detection的文章。这里不一一介绍了,因为太多了,以至于很多我自己也没看。我直接跳到这篇很有“性价比”的论文。之所以这篇论文影响力很大,一个重要的原因是简单,出奇的简单!这篇论文一共5行matlab代码,比一般论文abstract中的字符还少,作者直接贴到论文中了。具体方法我不分析了,自己看论文吧,5行代码的方法,不用花太多时间就能看完。
特别简单的方法通常意味着有无数种方案可以改进。最直接最容易想到的创新莫过于“组合创新”。有兴趣看这些改进的读者可以通过Google Scholar查看引用这个论文的其它论文。还是继续上面的风格,我每次都跳到下一个很有“性价比”的工作(也就是简单可扩展的工作)。
2.3 [07CVPR]: Learning to detect a salient object, (Dataset, 1800+ citations)
这篇论文最大的贡献就是将saliency detection从以fixation prediction占绝对统治地位的时代,引导到了以salient object detection为主的时代,对该领域贡献非常大。此外,这篇文章贡献了一个含有2万个图片的数据集MSRA数据集,并给出了Bounding Box级的标注。这篇文章的主要不足之处是没开源(当然那个年代大部分文章都不开源)导致重现比较麻烦。此外,Bounding Box级别的标注精度不能满足很多应用需求。
2.4 [09CVPR]: Frequency-tuned salient region detection, (C++, 2400+ 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个更大数量级的数据库)。后来无数种方法都在他们的数据库上取得了更好的结果。
2.5 [10CVPR]: Context-aware saliency detection, (Matlab, 1600+ citations)
虽然“组合创新”有时候容易被认为是minor improvement,但是如果论文写得好,实验做得充分,也可以做出具有影响力的工作。而且貌似大部分论文都是组合创新。这篇CVPR 2010的工作就是Saliency detection中“组合创新”的一个典型。听到组合创新这个词,大家或许就能对这个paper的整体结构有个猜测。其实就是把face detetion, pixel level saliency map,region level saliency map简单组合起来。
2.6 [11CVPR](15PAMI): Global Contrast based Salient Region Detection, (C++, 2100+ 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部分代码有关系吧)。
2.7 [12CVPR]: Saliency Filters: Contrast Based Filtering for Salient Region Detection, (C++, 800+ citations)
这篇文章从一个非常新颖的角度去看待显著性检测的问题,把显著性检测问题,特别是全局对比度计算问题,转换为一个高维的高斯滤波问题。进而使用了一个新出现的“神器”进行求解。这个“神器”就是Eurographics 2010的Best paper runner up “Fast High-Dimensional Filtering Using the Permutohedral Lattice”。之所以称之为神器,是因为这个技术成就了一批具有很高影响力的论文。将这种快速高斯滤波应用到Conditional Random Field (CRF)领域,一下子就让这个领域内两大主流方法之一的mean mield解法打了一个翻身仗。之前大家提到CRF, 就很容易提到2类解法,graph cut和mean field,然后就来一句由于计算效率问题,我们选择基于graph cut的解法…。有了上述神器,Philipp Krähenbühl等人先是展示了Mean field的快速解法(在全连通CRF情况下把以前需要36个小时计算还没最终收敛的算法,直接0.2秒解掉)。这个神器在crf里面的应用,也一举摘得了NIPS 2011的best paper award。小试牛刀之后,Philipp Krähenbühl等人又在CVPR 2012刷了一把saliency,并在ECCV 2012刷了一把optical flow。这个神器。就连现在语义分割类Deep Learning方法中的crf layer,也采用这个神器来加速(例如著名的DeepLab)。我自己也在Pacific Graphics 2015上,利用这个神器做了一个DenseCut的工作。
2.8 [13ICCV]: Efficient Salient Region Detection with Soft Image Abstraction (C++, 300+ citations)
受到Saliency Filter的启发,我结合自己CVPR 11年Global contrast那篇论文中用到的Color quantization和Gaussion Mixture Model的已有工作完成了这个工作。这个工作现在令我最印象深刻的是一个字“快”。一方面是算法快,cpu版本就能每秒处理90个image。另一方面是编程快,deadline前2周注意到saliency filter这篇文章后想到的,当天下午就写完程序(在自己已有工作基础上新的程序很短)并在当天晚上完成了paper里面的全部实验。
2.9 [17IJCV] (13CVPR): Salient object detection: A discriminative regional feature integration approach, (C++, project, 490+ citations)
这个工作差不多可以认为是显著性物体检测领域Deep learning时代到来前的最后一个高潮。在此之前的几年里,包括上述的几个工作,虽然每年CVPR等顶会上都会出几个工作刷刷performance,但是绝大部分工作有点过于“拍脑袋”想出来的,让这个领域里的主流工作背离了机器学习的大背景。如何将影响salient object detection的上述常见因素,以一种principled的方法利用起来,特别是利用机器学习领域的正规方式对不同特征进行集成,就是这个paper的核心idea。具体实现吗,就是做了很多feature,然后用Random Forest用principled的方法学习如何组合这些feature。我们在下面马上要介绍的2015年IEEE TIP论文中对当时主流的方法做了一个benchmark,DRFI在各个数据集中都排名第一。
2.10 [15TIP]: Salient object detection: A benchmark, (C++ & Matlab, 650+ citations)
在2014-2015年这段时间,我们对显著性物体检测这个领域的研究做了一个总结和比较性评测,对方法的演化特别是所有方法在一个统一的评价体系下的综合表现进行了对比性实验,讨论了各种方法的优缺点,并探讨了这个领域可能的发展方向等。由于这个时间点刚好处在显著性物体检测领域从传统方法过渡到深度学习方法的交接点,因此这篇文章中对几乎所有主流的非深度学习方法做了全面的总结。一些再这个数据集上表现较好的方法,如:DRFI,DSR,QCUT,RC等方法,就逐渐沉淀为非深度学习的显著性物体检测方法的代表。
2.11 [15IJCV]: Supercnn: A superpixelwise convolutional neural network for salient object detection (code, 40+ citations)
这是深度学习类的显著性物体检测的早期代表性工作。这块的发展脉络和第三节Edge Detection系列的发展脉络极其相似。说明到一定时候,英雄所见略同。由于我先写Edge detection那部分,再写的基于深度学习的显著性物体检测部分,这部分就不打算想Edge detection那块一样把发展写的那么细了。感兴趣的读者可以参考我们CVPR 2017年DSS论文中的相关工作进行梳理,如果在梳理过程中和这篇文章第3节中的Edge detection系列对比着看,你回发现Idea层面惊人的相似之处。同edge detection领域刚过渡到深度学习系列方法初期相似,早期的深度学习也是从super-pixel层面提取特征并直接判断目标(saliency/edge)值的。开始使用新的杀手级工具时,往往单刀直入就可以取得比较好的进步了。
2.12 [15CVPR] Saliency detection by multi-context deep learning (code, 200+ citations)
这边文章除了有super-pixel level的local context之外,也加入CNN最擅长的对Global context的建模。除了直接应用CNN提取super-pixel特征并预测显著性值,CNN自身获取全局信息的优势也得到一定程度的发挥。
2.14 [17CVPR] Deeply Supervised Salient Object Detection with Short Connections(code, 19 citations)
在做这个工作之前,我们注意到了edge detection, semantic segmentation, salient object detection几个领域的一些共性和最新的趋势: 1) 从局部分析逐渐过渡到End-to-End的全局(Holisticly)分析,2) 类似于15年Marr奖Runner up论文(Holistically-Nested Edge Detection, 简称HED)中的skip layer结构对高质量的输出很有帮助,3) 显式的让高层语义信息去指导和帮助低层语义信息更好的定位显著性物体位置的同时精确的确定其范围很有帮助。因此,我们在HED的基础上,增加了一种高层信息指导低层信息的Skip Layer结构,从而构建了一种简单,有效,快速的End-to-End的显著性物体检测网络结构。
方法很简单,大家可以通过我们的论文和代码进一步了解细节。这里跟大家分享一些论文里没有的东东。我们对于显著性物体检测技术的研究已经持续很多年了。除了常见科研选题的技巧(如利用相似领域的知识、提出新的问题、利用新的工具等)之外,支持我们一路走来还有一个更重要的动力。任何一个研究领域蓬勃发展,都不是因为要发表paper,也不是因为研究生要毕业,更不是因为科研人员想自嗨。这种蓬勃发展需要一股强大的潜在动力:Killer App。在做显著性物体检测算法的过程中,这些年我也一直持续在做Salient object detection的下游应用。正是对这些下游应用比一般视觉领域里做salient object detection更精准的把握,才让我们更容易清楚地把握一个好的salient object detection算法最缺什么元素。建议各位关注显著性物体检测算法的朋友,也关注一下相关的应用,一定能够受益不少。
图1:DSS方法(CVPR17)用于智能拍照,并在华为Mate 10慕尼黑发布会和荣耀V10发布会上重点介绍。背后的一些故事和经历在一个报道采访中我给予了详细介绍。
图2: 利用显著性物体检测技术自动为深度学习算法生成训练数据。17PAMI: STC
图3: 用显著性物体检测技术分析图像中的结构信息,并用于图像检索、合成、和互联网图像分析。这个工作的详情请参考Sketch2Photo项目。
图4: 内容敏感的图像缩放也是一个研究很广泛的领域。高质量的结果需要对显著性物体的鲁棒定位。详见:ImageResizing项目。
2.15 [14arXiv]: Salient Object Detection: A survey. (pdf, 150+ citations)
这个工作第一版放在arXiv上之后,我们进行了持续的更新。最新一版也包含了对上述工作的更详细的总结。
三. 系列工作分析之Edge Detection
边缘检测在计算机视觉的很多领域中都有非常重要的应用。图像边缘检测能够大幅减少数据量,在保留重要结构属性的同时,剔除弱相关信息。在深度学习火起来之前,传统的Sobel、Prewitt、Laplacian等滤波器,Canny检测器具有广泛的应用,这些检测器只考虑到图像局部的急剧变化,特别是颜色、亮度等的急剧变化,通过这些特征来找边缘。但是这些特征很难模拟较为复杂的场景,例如在伯克利的分割数据集(Berkeley Segmentation Dataset, BSD500),仅通过亮度、颜色变化并不足以把边缘检测做好。后来,开始有人使用数据驱动的方法来学习怎样联合颜色、亮度、梯度这些特征来做边缘检测,并且产生了一些流行的方法,比如Pb, gPb, Sketch Tokens, Structured Edge。但是在很多场景下,仅凭颜色、亮度、梯度等low-level特征很难做到鲁棒的检测,我们需要用一些high-level 比如 object-level的信息才能够把中间的细节纹理去掉,使其更加符合人的认知过程(举个形象的例子,就好像画家在画这个物体的时候,更倾向于只画外面这些轮廓,而把里面的细节给忽略掉)。传统的基于手工设计特征的方法,最好的结果只有0.7(用正确率和召回率的调和均值F-Measure来度量,BSD500数据集上多个人工标注者之间的F-Measure=0.8),这很大程度上是因为传统的人工设计的特征并没有包含高层的物体级别信息,导致有很多的误检。因而研究者们尝试用卷积神经网络CNN,探索是否可以通过内嵌很多高层的、多尺度的信息来解决这一问题。近几年,有很多基于CNN的方法的工作。这里从2014 ACCV N4-Fields开始说起。
3.1 [14ACCV]: N4-Fields: Neural network nearest neighbor fields for image transforms (80+ citations)
如何从一张图片里面找边缘?顺着传统方法局部邻域计算的思路。我们会想到计算局部梯度的大小、纹理变化等这些直观的方法。其实N4-Fields这个方法也很直观,图像有很多的patch,用卷积神经网络(CNN)算出每个patch的特征,然后在字典里面进行检索,查找与其相似的边缘,把这些相似的边缘信息集成起来,就成了最终的结果,可以看到,由于特征更加强大了,结果有了较好的提升。
3.2 [15CVPR]: DeepEdge: A multi-scale bifurcated deep network for top-down contour detection (100+ citations)
发表在CVPR 2015的DeepEdge对上述工作进行了扩展,首先使用Canny edge得到候选轮廓点,然后对这些点建立不同尺度的patch,将这些 patch 输入两路的CNN,一路用作分类,一路用作回归。最后得到每个候选轮廓点的概率。
3.3 [15CVPR]: Deepcontour: A deep convolutional feature learned by positive-sharing loss for contour detection (代码, 100+ citations)
这是CVPR2015中的另一个工作,该工作还是基于patch的。首先在图像中寻找patch,然后对patch 做多类形状分类,来判断这个边缘是属于哪一类的边缘,最后把不同类别的边缘融合起来得到最终的结果。这篇论文算是对2014年的N4-Fields的一个扩展,对training数据中patch的edge类型进行聚类,然后设计了更强大的网络判断某个patch的edge属于哪一个类别。
3.4 [15ICCV]: High-for-low and low-for-high: Efficient boundary detection from deep object features and its applications to high-level vision (代码, 40+ citations)
ICCV 2015的工作High-for-Low (HFL)也用CNN对可能的候选轮廓点进行判断。作者使用了经过高层语义信息训练得到的VGG Net,在一定程度上用到了高层语义信息;使用更精确的Structured Edge来生成候选轮廓点;因此取得了不错的结果。此外,和DeepEdge需要对每个候选轮廓点对应的patch都做CNN前馈不同,HFL只需对整幅图像做一次CNN前馈,这大大减小了计算量,处理一张图片所需的时间从1000秒减小到0.83秒。从这个意义上来说,DeepEdge的想法和R-CNN类似,而HFL的想法和Fast R-CNN类似,我想作者也是受了R-CNN和Fast R-CNN的启发分别做出了这两篇论文,这说明我们平时做研究的idea不仅可以从正在做的task上去找,也可以从其他的task上去想。
这些工作虽然取得了一些进展,但是离人类的表现还有很大的差距。 这些方法的缺点在于大部分方法都是基于局部策略所做的结果,每次只看一个区域,即只针对一个patch,并没有很充分的利用高层级的信息。HFL使用了全局的卷积特征,所以结果比之前有了较大的提高;但是它依赖Structured Edge产生的候选轮廓点,不能实现整体的end-to-end的训练。
3.5 [15ICCV]: Holistically-nested edge detection (代码, 300+ citations)
HED 是屠卓文教授课题组在ICCV 2015 Marr Price提名的工作。该工作最大的亮点在于,一改之前边缘检测方法基于局部策略的方式,而是采用全局的图像到图像的处理方式。即不再针对一个个patch进行操作,而是对整幅图像进行操作,为高层级信息的获取提供了便利。与此同时,该方法使用了multi-scale 和multi-level, 通过groundtruth的映射在卷积层侧边插入一个side output layer,在side output layer上进行deep supervision,将最终的结果和不同的层连接起来。加上deep supervision后,该方法可以在不同尺度得到对应抽象程度的边缘。该方法在伯克利分割Benchmark上的结果较之前有了很大的提升。HED在论文中详细对比了语义分割中著名的FCN算法,我推测作者是从FCN开始尝试的,将不同尺度上的side output进行融合,最后又加上了deep supervision,使得结果有了较大的提升。
3.6 [17CVPR]: Richer Convolutional Features for Edge Detection (代码)
RCF是我们课题组CVPR2017的工作。其实想法很简单,一句话就能概括,由于不同卷积层之间的信息是可以互补的,传统方法的问题在于信息利用不充分,相当于只使用了Pooling前最后一个卷积层的信息,如果我们使用所有卷积层的信息是不是能够更好的利用卷积特征,进而得到更好的结果?使用所有卷积层的信息,而不是池化之前的最后一层,这样一个非常简单的改变,使得检测结果有了很大的改善。这种方法也有望迁移到其他领域。实验结果表明,虽然卷积神经网络自带多尺度特征,但显式地使用多尺度融合对边缘检测结果的提升依然有效。该方法操作简单,且不明显增加计算时间,虽然代码量少,但在BSDS500数据集上的结果甚至超过人类标注者的平均表现水平,而且能够达到实时检测速度(30fps)。RCF是第一个实时的并且精度超过BSD500数据集上人类标注水平的边缘检测算法。
图5: 各种边缘检测算法在BSDS500数据集上的评测结果 (画图所用的代码、数据和相关说明已经公开在这里)
(今天写累了,先把准备谈的工作列表弄出来,后面有空的时候接着写这些工作是怎么一步步相互启发的)
四. 系列工作分析之Content Aware Image Resizing
07SIGGRAPH: Seam carving for content-aware image resizing, (800+ citations)
08SIGGRAPH: Improved seam carving for video retargeting, (400+ citations)
08SIGGRAPH Asia: Optimized scale-and-stretch for image resizing, (300+ citations)
08PG: Shrinkability Maps for Content‐Aware Video Resizing (70+ citations)
09PG: A Shape‐Preserving Approach to Image Resizing (C++ code, 90+ citations)
13SIGGRAPH: Rectangling Panoramic Images via Warping
13ICCV: Content-Aware Rotation
五. 系列工作分析之Object Level Image Editing
07SIGGRAPH: Photo Clip Art, (150+ citations)
09SIGGRAPH Asia: Sketch2Photo: internet image montage, (180+ citations)
12SIGGRAPH: Interactive images: cuboid proxies for smart image manipulation, (20+ citations)
14TOG: ImageSpirit: Verbal Guided Image Parsing, (Project page)
六. 系列工作分析之Objectness proposals
10CVPR: What is an object? (Matlab code, 200+ citations), journal version published in IEEE TPAMI 2012
10ECCV: Category Independent Object Proposals (100+ citations), journal version published in IEEE TPAMI 2014.
11CVPR: Proposal Generation for Object Detection using Cascaded Ranking SVMs (10+ citations)
11ICCV: Segmentation as selective search for object recognition, (C++ code, 60+ citations), journal version published in IJCV 2013.
14CVPR: BING: Binarized Normed Gradients for Objectness Estimation at 300fps, (C++ code)
七. 一些显而易见的趋势和机遇
Objectness,
Learning with 3D information
八. 相关链接
我相信每个领域都有这样的系列工作。那些对这个领域特别熟悉的人如果能花点时间总结一下并分享出来对刚入门的学生会非常有帮助。如果您有相关的总结,请发一个链接给我,和大家一起分享。