专栏首页PPV课数据科学社区学习了哪些知识,计算机视觉才算入门?

学习了哪些知识,计算机视觉才算入门?

本文来自知乎问题“学习了哪些知识,计算机视觉才算入门?需要哪些数学 编程 工具 等知识? 针对这个问题,我们邀请了微软亚洲研究院视觉计算组的高级主管研究员华刚为大家进行解读。

有感于大家对计算机视觉研究的热情,同时对计算机视觉研究认知的局限性,或者说是基本研究方法和思路上的局限性。华刚博士根据最近计算机视觉领域国际权威、加州大学洛杉矶分校的朱松纯老师发表的一篇关于计算视觉的三个起源和人工智能的评论,结合他在计算及视觉领域15年的研究经历,和大家分享如何做好计算机视觉的研究,希望对领域内的学生和年青的研究员能有所帮助。

“如何做好计算机视觉的研究?”

要回答这个问题,我们先要对这个问题的关键词进行分析:如果去掉“计算机视觉”这个限定词,这问题就变成了“如何做好研究?”那么,要回答这个问题,我们就要知道“什么是好的研究?”而要定义什么是好的研究,必须回到根本,先要知道“什么是研究?”

我们的讨论就从这个问题开始。

什么是研究?

一个被普遍接受的对研究的广义定义为:研究是为了产生新的知识或者是为已有的知识设计新的应用的系统性的工作。因为我们今天的讨论其实更多集中在科学研究上,先确定狭义的研究的定义为:利用科学的方法来调查解释一个现象或者获取新的知识。

综合这两个定义,可以看到科学研究从本质上是由三个基本的要素构成:

· 目的:产生新的知识或者是设计出新的应用;

· 手段:科学的方法。缺少这两个要素任何之一都不构成科学研究;

· 成果:新的知识。所谓新的知识,必须是前人不知道的东西。

我们很多同学和年轻的研究员认为研究就是写论文、研究成果就是论文,这其实是在观念上走进了一个误区。论文是系统阐述新的知识、新的应用,以及阐述获取这个新知识或者新应用用到了什么样的科学方法的一个载体。论文,作为阐述研究成果的主要手段,必须经过同行的评议通过才能正式发表和被认可。

在人工智能进入第三个热潮之际,我们看到各种各样关于AI的各种媒体报道层出不穷,一方面,这对大众普及了AI各方面的知识,是积极的。但从另一个方面讲,很多观点没有经过仔细的推敲,也没有同行的评议,一些谬误或者是夸大的观点可能因为广泛传播而被大众接受,结果产生负面的社会影响。这就提醒我们相关领域的研究人员,在对大众媒体去做一些评论的时候,必须仔细斟酌,尽量不传播没有得到检验的观点。

这就谈到第二个问题:

什么是好的研究?

不同领域的研究员对这个问题可能会有不同的看法。

从计算机科学的角度来讲,尤其是计算机视觉的研究,无论是理论的还是实践的,我们的研究成果最终是要解决现实世界的问题的。在这个方面,我印象比较深刻的还是我在西安交通大学读研究生的时候,沈向洋博士2001年在西安交大做报告提到的一个观点:最好的研究员发现新问题;好的研究员创造新方法解好问题;一般的研究员跟随别人的方法解问题——大家在多次这里看到“新”这个关键词,创新是研究的本质。

有了这些铺垫,我们首先定义什么是最好的研究。通常认为一个领域中对于某一个问题最好的研究工作有三种:第一篇论文 (The First Paper),最好的一篇论文 (The Best Paper),以及最后一篇论文(The Last Paper)。这第一篇论文的含义是说这篇论文率先提出了一个好的问题和方向。最好的一篇论文是什么?那一定是开创性地提出了一种解法,启发了最终解决这个问题的途径。至于最后一篇论文,那一定是彻底把这个问题解决了,从此以后这个问题不再需要继续做进一步的研究。

从计算机视觉领域举一个具体的例子来讲,Harris Corner Detector属于最早的一批在图像中检测角点的论文,可以归为第一篇之列。David Lowe博士的SIFT特征检测和局部描述子,可以归为在这个方向上最好的论文之列。那么这个方向的最后一篇呢? 我认为可能还没有出现。具体到我自己的研究工作,在局部描述子这个方向上,我跟我的同事Matthew Brown和Simon Winder在2007年到2009年之间所做的一系列用机器学习的方法来建立描述子的工作,也实际上为提高局部描述子的性能提供了一个新的思路和方法。

对于我们很多研究员和学生来讲,一辈子可能都做不到这三种最好的研究工作之一。那是不是就等于说你不能做好的研究工作或者根本不用考虑做研究了呢?肯定不是这样。科学研究是一个共同体。这些最好的研究工作也是在前面很多很多非常扎实(solid)的研究工作的基础上发展出来的。因此,对于年青的研究员和学生而言,应该胸怀大志,去追求做最好的研究工作,但从实际执行上来讲,还是要把一项一项具体的工作先做扎实了。

怎么做到把研究工作做扎实了?首先,你必须对你要解的问题有一个全面深刻的了解,包括为什么要解这个问题、解这个问题有什么意义呢、以前有没有试图解决同样或者类似问题的先例,如果有,你就要全面了解前人都提出了什么样的解法、他们的解法都有什么样的优势和缺陷……最后,你的解法解决了前面这些解法不能解决的问题呢,或者是你的解法处理了什么样的他们不能处理的缺陷了?这些问题的答案如果都有了,那么,在写论文的过程中要注意的就是:你的假设是什么?你怎么验证了你的假设?这个验证既可以是理论上的证明,也可以是实验的验证。我们很多学生和年青的研究员,写论文的时候没有找到内在的逻辑关系,很多观点都是似是而非。或者说重一点,在论文撰写方面的训练严重不足。你的研究如果到了写论文的阶段,那就必须要有明确的观点提出来。这个观点必须明确无误,只有这样你才能被称为形成了新的知识。你的每一个观点都必须在理论上或者是实验中得到验证。另外,论文的撰写是为了让人看懂,不是让人看不懂,所以我们在撰写过程中必须尽量保证不去假设读者已经拥有了某些方面的知识。做好了这些,基本上你就有很大的可能性能够做出扎实(solid)的研究工作。

然后回到我们讨论的主题:

如何做好计算机视觉的研究工作?

其实,要回答这个问题,将我上面讲的所有观点加上“计算机视觉领域”这个限定词就行了。我这儿结合计算机视觉研究的一些现状及朱松纯老师的一些观点来进一步谈谈我的观点。

首先谈谈我观察到的一些现象。很多年轻的学生,现在讨论问题的时候都用这样的谈话:我发现用FC6层的特征,比用FC7层的特征,在某个图像数据集上比现在最好的算法提高了1.5%的识别精度,老师我们可以写论文了(如果大家不能理解这句话,FC6和FC7是表示AlexNet的两个中间输出层)。我想请问,你在这个过程中发现了什么样的普适的新的知识吗,又或者,在不是普适的情况下,你在什么限定条件下一定能够看到这样的识别精度提高了?

不错,提高识别精度是一个很好的目标,但要注意,计算机视觉的研究是要解决识别的问题,不是解某一个图像数据集。这些图像数据集提供了很好的验证你的假设和方法的手段,但如果你没有遵循科学的方法和和手段去设计你的算法和实验,你也不可能得到一个科学的结论,从而也不能产生新的知识,更不用谈对这个领域做出贡献。朱松纯老师在他的评论中提到,很多学生认为,计算机视觉现在就是调深度神经网络的参数,也就是说的这个问题。

所以,具体到对于刚开始从事计算机视觉研究的学生来讲,要做好这方面的研究,我觉得第一步还是要系统学习一下计算机视觉的课程,全面了解一下计算机视觉这个领域的来龙去脉、这个领域都有哪些基本的问题、哪些问题已经解得比较成熟而哪些问题还在初级阶段……

这里,推荐所有的学生学习两本经典教材《Computer Vision: A Modern Approach》和《Computer Vision: Algorithms and Applications》,可以先读完第一本再读第二本。

只有对这个领域有了一个初步的全面了解,你才能够找到自己感兴趣的那个问题。在众多的问题当中,你是希望做三维重建,还是做图像识别、物体跟踪,又或是做计算摄影呢?做研究其实不是一个完全享乐的的过程,你必须要有足够的兴趣来保证你能持续地走下去,这在你感觉自己当前研究的思路走不下去的时候尤其具有重要意义。

当你确定你感兴趣的问题,你应该首先全面调研一下这个问题的来龙去脉。这就意味着你不能只读过去五年的论文。你可以从过去一年的论文开始,慢慢追溯回到过去很久的相关的论文。有些时候,你会惊讶地发现前人想问题的深度。研究的英文单词是Research,拆开是Re-Search,用中文直译就是重新搜索和发现,而不是直接发现,其实就是说你要首先对这个问题做追本溯源。朱松纯老师提到的我们很多学生现在不读五年以前的论文,说的也是这个道理。

当你做好了这些,你必须钻进计算视觉的一个小的领域。人的精力是有限的,这就意味着你不可能把很多事情同时做好,所以在你选好方向之后,就要把你的精力集中在你感兴趣的一个问题上, 努力成为这个方面的专家。研究是一项长跑,很多时候,你在一个方向上比别人坚持久一点, 你就有机会超越他而成为某个方面的专家。

最后,我也来谈谈深度学习对计算机视觉的影响。在这里,我对马里兰大学Rama Chellapa教授在Tom Huang教授80岁生日论坛上表达的观点非常认可,他认为,深度学习网络就像一个Pasta Machine:你把该放的东西放进去,它能给你产生好吃的Pasta。同时它也是一个Equalizer:无论你在计算机视觉领域有40年的经验还是0年的经验,只要你会用Caffee,你在一些问题,比方说图像识别上,都能产生差不多的结果。他开玩笑说这有点伤自尊 (It hurts my ego!),但我们还是应该把它作为一个好的工具拥抱它。我想,他的言外之意,是我们的研究应该做得更深,要去理解这个工具为什么能够工作得比较好,从而产生新的知识去指导将来的研究和应用。

我认为,对于年轻的学生来讲,从深度学习的方法开始学习没有什么问题,但必须要进一步去了解一下其他的数学和算法工具,像统计贝叶斯的方法、优化的方法、信号处理的方法等等等的。计算机视觉的问题,其本质是不适定的反问题,解这一类问题需要多种方法的结合。这里面有深度学习解得比较好的问题,像图像识别,也有深度学习解不了的问题,像三维重建和识别。

任何研究领域包括计算机视觉的研究,对处在研究初期的学生而言, 更重要的是掌握足够的数学工具,培养一种正式思维(Formal Thinking)的能力,这样,遇到实际的问题就能以一种理论上正确的思路去解决这个问题。

作为结束语,我想对在从事或者有志于从事计算机视觉研究的学生说,计算机视觉的研究处在一个非常好的时期,有很多我们原来解不了的问题现在能够解得比较好了,像人脸识别,尽管我们其实还没有从真正意义上达到人类视觉系统对人脸识别的鲁棒程度。但我们离真正让计算机能够像人看和感知这个世界还有很远的距离。在我们达到这个目标之前,深度学习的方法可能是这个过程中一个重要的垫脚石,同时我们还要将更多的新的方法和工具带入这个领域来进一步推动这个领域的发展。

本文分享自微信公众号 - PPV课数据科学社区(ppvke123)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 3D视觉从入门到精通

    随着我们队伍的不断壮大,目前星球嘉宾及合伙人,主要包括多个大厂的计算机视觉算法工程师、深度学习算法工程师、结构光三维重建算法工程师、资深VSLAM算法工程师、3...

    计算机视觉
  • 个人如何更高效地学习3D视觉?

    很多粉丝在公众号后台留言,不知如何入门3D视觉、3D领域的主线是什么,一些难点该如何解决,有哪些方法,导师新开的3D视觉方向无人指导等等。这些痛点,工坊的许多童...

    3D视觉工坊
  • 适合普通大学生的 Java 后端开发学习路线

    接下来的一段时间,帅地会总结各种技术栈的学习路线,例如 Java 开发,C++ 开发,python 开发,前端开发等等,假如你没有明确的目标,或许可以按照我说的...

    帅地
  • 3D视觉从入门到精通系统学习教程

    随着我们队伍的不断壮大,目前星球嘉宾及合伙人,主要包括多个大厂的计算机视觉算法工程师、深度学习算法工程师、结构光三维重建算法工程师、资深VSLAM算法工程师、3...

    BBuf
  • 零基础小白,如何入门计算机视觉?

    计算机视觉是人工智能技术的一个重要领域,打个比方(不一定恰当),我认为计算机视觉是人工智能时代的眼睛,可见其重要程度。计算机视觉其实是一个很宏大的概念,下图是有...

    用户1150922
  • 【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?

    我公众号里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。框架千变万化,而这些通用的...

    kbsc13
  • 做 AI 老司机跟你聊聊怎么才能入行 DL/ML

    目前,“深度学习”这一词已经变得越来越普及,生活中也是到处都充斥着这一词汇,同时也有越来越多的人开始想要从事这一行的相关工作,尝试着接触、了解这一行业。

    用户1737318
  • 【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?

    在我们用的程序中,99% 都离不开网络,作为一个程序员,我觉得了解计算机网络是必须的,在大学的课程中,一般也都会开设这一门课。

    乔戈里
  • 不知计算机视觉如何入门?推荐这个优质的学习网站

    很多小伙伴都在咨询关于如何学习计算机视觉?看完理论,一脸懵逼,感觉看完了,也感觉完了,好像都没看懂!

    小白学视觉
  • 简单说下帅地是如何学习计算机基础知识的?

    计算机基础的重要性我就不必多说了,「帅地玩编程」这个公众号也是主打计算机基础 + 算法相关知识,学习计算机基础,认准「帅地玩编程」。

    帅地
  • 计算机视觉那些事 | 深度学习基础篇

    随着人工智能尤其是深度学习的快速发展,计算机视觉成为了这些年特别热门的研究方向。在这里我们将开启一个全新的系列【计算机视觉那些事】,来分享我们这些年在计算机视觉...

    数据森麟
  • 计算机视觉如何入门

    目前,人工智能,机器学习,深度学习,计算机视觉等已经成为新时代的风向标。这篇文章主要介绍了下面几点: 第一点,如果说你要入门计算机视觉,需要了解哪一些基础知识...

    zenRRan
  • 如何入门计算机视觉,10条你不能不看的总结

    目前,人工智能,机器学习,深度学习,计算机视觉等已经成为新时代的风向标。这篇文章主要介绍了下面几点: 第一点,如果说你要入门计算机视觉,需要了解哪一些基础知识...

    谭庆波
  • 如何具体学习计算机视觉

    这两年,计算机视觉似乎火了起来,计算机视觉的黄金时代真的到来了吗?生物医学、机械自动化、土木建筑等好多专业的学生都开始研究其在各自领域的应用,一个视觉交流群里三...

    zenRRan
  • 分析一下2020年度中国计算机视觉人才调研报告

    最近闲来无事,老潘以一名普通算法工程师的角度,结合自身以及周围人的情况,理性也感性地分析一下极市平台前些天发布的2020年度中国计算机视觉人才调研报告。

    老潘
  • 适合普通大学生的前端开发学习路线

    接下来的一段时间,帅地会总结各种技术栈的学习路线,例如 Java 开发,C++ 开发,python 开发,前端开发等等,以下是以更新的:

    帅地
  • 【收藏】AI高频词汇 TOP15 -入门版

    极视角科技
  • 计算机视觉系统中图像究竟经历了哪些“折磨”

    如今,计算机视觉(CV)已成为人工智能的主要应用之一(例如,图像识别,对象跟踪,多标签分类)。在本文中,我们将了解构成计算机视觉系统的一些主要步骤。

    小白学视觉
  • 学妹揪着让我推荐一波 Python 视频和书单,为了让她不再烦我,我总结了这些。

    有些标题党了,打我可以但是不可以打我脸,推荐我是认真的,4000 字长文,请慢慢食用

    编程文青李狗蛋

扫码关注云+社区

领取腾讯云代金券