代码改变世界

计算机视觉方向的博士,如何做到一直follow新技术?

  计算机视觉life  阅读(1046)  评论(0编辑  收藏  举报

原文链接:计算机视觉方向的博士,如何做到一直follow新技术?

大家好,我是小6,计算机视觉领域的新论文、新方法可谓是日新月异,那么作为从业者,如何能最快获取最新的技术资讯?我觉得有以下几点:

1、订阅本领域的技术媒体,尤其是那些能够发布最新动态及解读的机构(比如我们计算机视觉life的公众号及视频平台图片

图片

2、多和同行交流,沟通(比如参加国际会议)。做研究就是在交流中迸发思路,获取新知的,不仅仅是最新的资讯,还有思想火花的碰撞,对于拓展思路,解决难题非常有用。

3、自己查找关注本领域的论文,比如ArXiv 就是不错的渠道。

不知道你有哪些好的渠道?这里我们选取了知乎上的几位答主,供大家学习交流,欢迎留言区讨论。

谢凌曦

链接:

https://www.zhihu.com/question/478158497/answer/2475253379

在阅读下面的回答之前,先明确一点:每个人学习、思考的习惯不可能完全相同,甚至可能有很大不同。下面,我会阐述我的方式,但它不一定适合所有人,要辩证、批判地看待。

首先,我认为以科研为目标的初学者需要做的事情有如下几件(从大到小),缺一不可:

  1. 领域级。构建所属领域的世界观,了解整个社区希望解决哪些问题,它分为哪些子问题,当前的推进状态如何。在此基础上,要不时思考:什么问题能做,什么问题还不能做,做哪些事情就能把不能做的事情变成能做。

  2. 方向级。对于自己研究的方向,要了解它的完整发展脉络,包括当前通用的算法是如何一步步发展出来的,历史上有哪些成功、失败的尝试,等等。

  3. 课题级。找到一个具体的课题,深深地钻研下去,尝试改进现有算法的方方面面,并且最终形成一篇论文。即使论文没能发表在很好的会议或者期刊上,也能够得到很好的锻炼。

以我个人的情况为例,简单说明:

  1. 我从事计算机视觉领域的研究。它是人工智能的一个分支,因此我需要去了解人工智能的大致发展历史,要清楚:人工智能的根本问题是什么;从数学上的形式定义是什么(简单地说,就是给定输入x和输出y,寻找函数使得尽量被满足);为什么统计学习是当前解决这类通用问题的最佳途径(因为问题往往具有复杂性和不确定性,因此需要概率建模);深度学习是如何提升统计学习能力的,它的前提是什么(大算力和大数据);深度学习有哪些缺陷(数据驱动、可解释性差,等等)。有了这些知识,我就不会完全迷信深度学习,从而迷失真正重要的事情。

  2. 我当前研究方向之一,是大规模图像预训练算法。我需要清楚:为什么预训练是必不可少的算法(为什么视觉任务通常遵循预训练+微调的范式);预训练算法需要做到什么(捕捉无标签或者混合标签下的数据分布);需要如何与其他方法配合(提供基础backbone以供下游有监督算法微调);预训练算法的发展史(包括早期基于geometry的算法、后来基于contrast的算法、再后来基于prediction或者generation的算法,等等);这些算法的发展有什么规律(这是重点,预训练算法的发展主要体现了人类对于视觉特征本质的不断认识,特别是哪些情况下视觉特征应该保持不变这个根本问题的回答)。当然,当前的算法还有很多不完美的地方,这就是我努力的方向。

  3. 根据上面的认识,我就可以找到一些课题,最终完成具体的工作。例如,我认为当前的预训练方法大多假设data augmentation后图像与原先图像具有相同的特征,以此来获取学习的动力。这个假设有一定的问题,也造成了当前算法的一些局限性。这样,我就找到了可做的课题,可以在一段时间内仔细研究。

也就是说,初学者需要构建起层次化的知识体系,为此可能需要数年的时间来不断学习、研究、思考,迭代自己的知识库。我提几个具体的建议,以提高follow新技术的效率。和上面的顺序相反,下面的建议是从小到大的。

  • 每天读论文,比如arXiv推送。初学者可以每天花2-3小时读论文,熟练以后可以逐渐缩短到0.5-1小时。一开始读得慢不要紧,学费总是要交的。逐渐地,你会意识到这样一件事:论文分为两类,一类拓展了认知边界,一类在边界范围内把事情做得更好——大部分论文都属于第二类,而这类论文往往不需要花费太多时间去读,除非你特别关心其中的某些细节。每天扫arXiv列表的时候,完全可以跳过其中80%以上的论文,只去读自己感兴趣的论文,接受漏掉一些“可能有用”的论文:如果这些论文真的很重要,你迟早会在其他推送里看到它。说到推送,公众号们推送的文章并不一定是重要的文章,就像当红明星的演技不一定好一样。要有自己的判断力。

  • 维护一个研究方向的重要问题列表,不时审视这些问题,想想最近有没有看到什么能够推进这些问题的文章或者想法。注意,这些问题不应太大(比如深度学习的可解释性)也不应太小(比如某个参数怎么调节才能提升1%的精度),应该是适中的。对于初学者而言,大概就是“有进展了能发一篇论文”这种级别的问题。每周至少花上2个小时,放空自己,就这些问题展开头脑风暴。但是一旦有想法,要写成文字记录下来(如果你想发表英文论文,最好直接用英文写),记录的过程就是不断挑战自己、充实想法的过程。每隔一段时间,找几个同学(或者在组会上)分享自己的想法,哪怕是非常不成熟的思考。

  • 每1-2个月,给自己一个任务,随机找一个感兴趣的其他研究方向(大多数情况下不出领域),调研它的最新进展。比如我的研究方向是视觉预训练和视觉识别的,可以看看最近图像生成或者三维重建有什么进展,了解下最新发表的模型。这个活动,有助于更新你的科研世界观,让你反思自己维护的那个“什么能做、什么不能做”的知识库是否发生了变化。例如,NeRF这篇文章就让我的知识库发生了快速、中等程度的变化,让我了解到“三维表示原来还可以这样做”;反之铺天盖地的Transformer系列文章倒没有给我太大冲击,只是让我知道这种模块(数学函数)可以更好地拟合数据罢了。顺便说一句,我们要正视Transformer模型在统一图像和文本方面的潜力,所以CLIP这篇文章,虽然方法非常简单,还是开创了一个新的方向,缓慢、中等程度地,更新了我的知识库。要说什么文章能够快速而大幅度地更新知识库,怕是要追溯到AlexNet这种具有划时代意义的论文了。

此外还有一个独立的:要多跟不同层次的学者讨论,他们会刷新你不同方面的认知。比较senior的学者可能会让你思考一些从未想过的问题,比较junior的学生可能会跟你讨论很多细节问题,这些都是有益的。如果你口才好,还可以尝试给初学者讲课,接受小白的各种问题的挑战,这样也能提高自己。

写得比较乱,希望有所帮助。总结下来,科研最重要的事情,是构建并维护自己的层次化的知识库。这件事急不得,只能通过点滴积累来完成。加油!

Huang

链接:

https://www.zhihu.com/question/478158497/answer/2205893690

非常能理解这种感受。每次做完一篇工作,我也会有相似的感受。毕竟我们的精力是有限的,当你全身心投入在一篇工作中的时候,的确很容易忽略和这篇工作没有直接联系的其他领域的工作。这也是为什么跨领域甚至跨学科的工作通常都会是非常有影响力的工作,大到AlphaFold用基因序列预测蛋白质结构,小到ViT用transformer做visual recognition。

我个人的解决方案通常是这样的。第一个是积极地和同行交流,不仅仅是同一个实验室的,还可以是不同实验室的connection。一方面是能和不同领域的同学交流,另一方面,即使研究领域相同,在不同实验室的对于相同问题的viewpoint可能也会或多或少的有些不同的地方。像我现在实习的地方,大家都有不同的研究方向,有做self-supervised learning的,有做few-shot classification的,我们有固定的paper reading section,每周会坐在一起由某个领域的同学讲几篇最近自己领域里的发展,不得不说听领域大佬们讲自己领域的文章,还是比自己硬啃会容易follow得多。可能这也是像workshop这类活动举办的重要意义之一吧~

这也让我想到自己大三帮本科的班主任做一个无人机跟踪的项目的时候,已经有很多基于相关滤波甚至有一些基于deep learning的tracking方法了。无奈当时虽然关注到了,但是身边的同学包括老师也都不懂这些技术,没人交流,自己去硬啃又没法meet project deadline,最后无奈只能用orb特征来做前后的一个匹配,幸运的是最终也是达到了性能的要求,成功交差了。但如果当时能够有幸遇到我两年后的另一位做tracking导师的话,或者他手底下的学生的话,很可能在交流之后我能更早更容易地去follow当时的一些热点,做出更加solid的成果。

我的第二个方法是关注一些自己可能没有什么connection,但是产出质量始终很高的大组。比如像基于video的多模态方向,我最近的一个回答也总结了一些我个人常关注的list,我一般没什么事的时候就去刷刷这些组里的大老板的google scholar,一方面可以观察到大佬的引用隔一天都是几十几十的涨,另一方面也是可以最快得关注到和自己领域有一定overlap的组,最近有没有追随什么热点。

两种方法对比,我更喜欢第一种。毕竟第一种方法在很多时候,可以了解到一些别人正在追随而还没有发表出文章的热点,比如最近有一个学弟在我open source我最新的code之前,就通过和我交流,自己reimplement了我的方法,做了修改之后性能很好,准备投cvpr了,而我的文章还在under review...如果是等我的paper和code release之后才去follow的,很可能已经慢了一步了。

其实总结来说,无非就是多和其他人交流,无论是通过面对面的形式,还是看author亲自解读的方式,亦或是直接读对方paper的方式。即使是一个对于所有researcher的biased sampling,始终还是相对自己埋头苦干有那么一些优势吧。

最后祝大家的biased sampling都可以sample到最值得follow的热点,做人不缺paper,做paper不缺人~

电光幻影炼金术

链接:

https://www.zhihu.com/question/478158497/answer/2476320815

搞个思维导图吧兄弟。下面借鉴和扩充了 @谢凌曦 的基本思想。

领域级思维导图

我这里凭理解帮你画一下气泡型思维导图

图片

领域级思维导图

从上图可以看出,计算机视觉主要与很多学科相关,比如人工智能、机器学习、计算机图形学和机器人等。了解与不同学科之间的关系,可以更好地帮你把握计算机视觉的位置。我这里简要概括一下:

  1. 与人工智能的关系:人工智能是计算机视觉的一大起源,也是重要目的。

  2. 与机器学习的关系:机器学习是重要的计算机视觉的方法,也是一大思想来源。

  3. 与计算机图形学的关系:图形学与视觉的多个层面有交叉,技术互补,应用有交叉。

  4. 与机器人的关系:机器人是计算机视觉的一个主要应用平台。上面这个图还可以细化,帮你了解一些不同领域的细分课题。

上面这个图还可以细化,帮你了解一些不同领域的细分课题。

图片

细化的领域级思维导图

有一个好的领域级picture,能够帮你快速判断课题的意义大小,在整个科研世界的位置,以及未来产业链中的地位。科研必须立足长远,领域级的把握是非常重要的。

方向级思维导图

这里主要讲一下计算机视觉的发展逻辑,主要解释一个根本问题:为什么计算机视觉会有这么多论文冒出来?解决了这个根本问题,你就不难在计算机视觉这个大领域有立足之地,同时顺藤摸瓜,逐渐把自己的地盘做大。这里使用流程型思维导图:

图片

计算机视觉的发展逻辑

任何一个计算机视觉的子领域,都满足上述的一个发展逻辑:先有传统任务(就是经典的不能再经典的,图像分类之类的),然后有一些初始的模型。之后随着新概念、新模型的兴起(比如transformer),提出了很多很新的fancy的模型。之后经过大量的实验沉淀,淘汰掉不好用的fancy模型,最后留下来扎实的模型(solid model),最后再产生新的任务(比如跨越领域的、更大规模的等等)。

了解自己领域的发展阶段,能比别人看的更远,是做出跨时代研究的基础。

课题级思维导图

具体要选课题的话,需要了解一下计算机视觉的一些基本任务/热门任务,以及每个任务的前途、SOTA方法、研究多深。新手的话一定要分清什么是课题/任务、什么是模型:课题是一个与模型无关的问题,模型是一种解决问题的手段。我这里主要对任务进行梳理,不涉及模型。

注意现在每个分课题几乎都有群聊,新手可以加入群聊看看大家在聊什么,融入一个好的科研氛围。

这里使用最基本的树状图:

图片

掌握科研与工程的明暗线

计算机视觉是一个典型的工程向领域,提供好的工程进展(包括工具库、工程经验、工程参数)对科研的贡献,远大于几篇灌水的论文!

从科研工作者的角度,把握科研与工程的双线进步,是保持科研进展,发solid论文的不二法门。

这里用鱼骨思维导图来展示:

图片

科研工程双线鱼骨图

鱼骨上方展现的是科研的几个比较重要的特质,比如要有新的概念、发掘新的问题、实现新的框架、或者要有新的应用。

鱼骨下方展示的是工程上比较重要的技术,要有更公平的比较,更好用的开源库,更高效的实现等等。

既要仰望星空,也要脚踏实地。既要大胆猜想,也要小心尝试。把握好科研与工程的平衡发展,也是必要的技巧。

刘斯坦

链接:

https://www.zhihu.com/question/478158497/answer/2047856357

lstm、rnn、transformer这些,是任何一本深度学习教材上都会讲的,属于基础知识哈,不到“新技术”的地步,所以可能还是得先补充基础知识。。。

我一个工程师,都得时不时看有没有新的成果出来,和自己做的方向相关的,更是要紧盯。博士,每天刷新的论文应该算是日常操作吧?

最后要做到自己熟悉的领域扫一眼论文里的图片就大概知道重点在哪里,值不值得看。各种量级的模型在各个数据集上的精确度和推断速度要心里有底。有很多文章,他只和表现比他差的模型去比较,很多模型都是上古模型;疯狂overfit某个数据集,不覆盖大部分数据集,这些一看就知道没什么价值。

告诉你一个办法,如果你觉得一篇文章很不错,那就上知乎搜一下看有没有人提到,有人提,热度不低,基本就算值得一看了。热度高的文章,把各路知友的文章看一遍基本也就差不多了。

楼上有知友提到直接看顶会,顶会当然要看,但绝对是不够的,很多成果等到顶会发表,已经滞后半年了,还是要密切关注arxiv。


以上转自知乎原作者,仅作为学习交流使用,如有侵权,联系删除

不知道你有哪些好的渠道?欢迎留言区讨论。

计算机视觉life

聚焦计算机视觉、机器人SLAM、自动驾驶、AR领域核心技术。系统学习教程官网cvlife.net

352篇原创内容

公众号

独家重磅课程官网:cvlife.net

图片

全国最大的机器人SLAM开发者社区

图片

技术交流群

图片

—   版权声明  —

本公众号原创内容版权属计算机视觉life所有;从公开渠道收集、整理及授权转载的非原创文字、图片和音视频资料,版权属原作者。如果侵权,请联系我们,会及时删除。

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示