作者 | 叶小飞 编辑 | 自动驾驶之心
原文链接:https://www.zhihu.com/question/478158497/answer/3553334949
点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
本文只做学术分享,如有侵权,联系删文
我血战CV界8年,从传统的SIFT+SVM开始我的职业生涯,一直转到今天的大模型、diffusion,基本一直紧跟时代潮流,follow新技术并没有感到多吃力。在此, 我将这八年经验凝结为了十二字要诀,分享给大家 -- 由深到浅,积少成多,转入为出。
由深入浅
每当一个新领域火起来,一定会有很多类似这样题目的爆款博客 -- 《十分钟教会你Transformer》, 《零数学搞懂diffusion》。
我的建议是,离这样的文章越远越好。因为开始接触一个新领域时,对经典之作的深度理解非常关键,它直接决定着你是否能轻松follow这个领域的各种衍生作品,以及是否有自己的insights。也许你只花了十分钟对transformer就有了个似懂非懂的理解,但以后你看的每一篇这方面的论文可能都要花数个小时才能理解其精髓,这也是为什么很多小伙伴觉得follow新技术难的根本原因。
拿我自己做个反面教材。有段时间我想好好了解下diffusion, 但那个时候我因为在准备面试十分浮躁,就走捷径看了些讲的很浅的博客,对里面的数学和原理有了个似懂非懂的认知。结果后来我每次读diffusion的论文都是云里雾里,面试和人家谈这个也是讲的一塌糊涂。后来我就沉下心来,花了整整一周时间把经典的DDPM里所有的数学公式自己推导了一遍,然后把代码的每一行都仔细阅读,最后又好好思考了一番为什么Diffusion可以这么强。再这之后,我发现自己再读diffusion相关的文章轻松了很多,甚至还第一次作为指导老师给出key insights, 发表了了一篇Diffusion相关的CVPR2024论文:
Light the Night: A Multi-Condition Diffusion Framework for Unpaired Low-Light Enhancement in Autonomous Driving(https://arxiv.org/abs/2404.04804)
所以我将这一要领叫做深入浅出--最开始时如果对经典之作有个深度理解,后面阅读其他论文哪怕只是浅浅阅读,也能很快领悟其精髓。这就好比金庸小说里的内功,内功足够深厚,学什么招式都是事半功倍,威力加倍。
那么怎么样才算是对经典之作有深度理解呢?个人认为要达成以下几点:
对文章的Motivation, 关键贡献处,和超越前作的地方有着清晰的认知。譬如Mamba和之前的SSM比有什么进步,和Transformer比有什么优势等等,深度理解之后应该对这类的问题有着自己的总结。
对文章里出现的数学推导不能说了如指掌,也至少要仔细过上1-2遍。尤其CV大部分论文背后的数学其实都不复杂,这一点并不需要花很多功夫。
十分清楚代码层面是如何实现文章里提出的idea和数学公示的。
经典虽是经典,但一定仍有许多改进的地方。真正的理解一定是在膜拜至于还能看到它的不足之处。
当你对一个大火领域经典之作有了一个深度理解后,下一步要做的就是积少成多。
积少成多
Follow新技术最好的方式永远是阅读最新的高质量论文。这种论文怎么找我就不多赘述,很多大佬已经提到了多种方法。这里我想强调的是,读论文切忌一口吃个胖子,应该是细水长流,养成好的习惯,每天拿出固定的时间来阅读,甚至工作繁忙时半个小时也可以,积少成多。
曾经有段时间,我总是告诉自己,等忙完手上这些工作,我就去看看论文。结果我发现,工作永远是忙不完的,如果真的忙完了,可能也没精力读了。
所以后来我给自己规定,无论工作有多少,都会在每天一个特定的时间段,哪怕只有半小时,速览一下最新的论文。这个习惯让我受益很大,一年下来在家里的读过的论文都可以堆成一作小山。
转入为出
Follow新技术的最高境界是什么?那就是把你的输入转化输出。当你能以各种形式将自己学习到的知识转化为输出时,基本就代表你对这个领域有了新阶段的认识。
这种输出有多种形式,我曾经尝试过以下几种,效果都很不错:
1)最一箭双雕的,就是把你新学的技术直接用在自己工作或者做学术的主要项目上。这种属于既有了实战经验,又满足了自己当前的KPI。这种属于最理想状态,有时候可遇不可求。
2)做一些或者参与一些有意思的开源项目。给一个非常经典的例子:https://github.com/lucidrains/vit-pytorch
这个18k star的项目其实就做了一件看起来很简单但非常了不起的事:它把各种ViT相关的新算法用pytorch以最简单、直接的方法复现核心代码。如果你能成功贡献到类似的项目,那基本说明你不仅仅是follow, 更是master了这些新技术。
3)如果前两者对你来说都很难有时间或者条件做到,那么另外一种更简单易行的方式就是分享你所学到的知识。这一招我经常用,而且发现效果奇佳。我在刚读博时曾经学习过一段时间carla,我为了加固印象,便一边学一边在知乎分享教程,结果不知不觉发现自己对carla的理解变得特别深刻,还因此收获了许多粉丝:叶小飞:史上最全Carla教程 |(一)Carla的基本架构(https://zhuanlan.zhihu.com/p/338641593)
我最近还常做的一件事,就是读完一篇新出的论文后,把它浓缩成一个两分钟就可以阅读完的report,然后分享给大家。这就逼着我对论文有一些更深度的思考和总结,而不只是浮于表面。
写在最后
还有一点非常重要,对于做CV/AI的人来说,follow新技术永远不该是一项任务,而是一种娱乐。这件事最大的收获不应当是你发了多少论文或者做出了多少项目,而是在follow过程中体会到的那种独一无二的乐趣。
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
网页端官网:www.zdjszx.com② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵