新程序员|清华“洗衣机系”学霸,如何在 GitHub 拿下 50000+Star()

【CSDN编者按】无论是学业还是事业,陈恺看起来都一路顺遂。从清华大学本科和香港中文大学博士毕业后,他入职商汤科技,不到两年便成为研究总监,带领近百人的团队。在GitHub上,他负责的OpenMMLab取得了卓著成绩。从研究者到管理者,他的技术人生究竟是如何铺就的?
作者 | 杨阳
出品 |《新程序员》编辑部
陈恺无疑是家长口中“别人家的孩子”。天资聪慧、努力踏实,让他无论在清华大学读本科,还是在港中大(以下简称“港中大”)多媒体实验室读博(直博)都没有遇到太多困难,可以说学业顺遂。
新程序员|清华“洗衣机系”学霸,如何在 GitHub 拿下 50000+Star()
文章图片

博士毕业后,他顺理成章地入职商汤科技,初始岗位便担纲技术管理。而真正让他独当一面的,是将开源项目OpenMMLab做到行业知名。在他的带领下,OpenMMLab成功在GitHub收获了“50000+”Star,他和团队的影响力在开发者中逐渐打开。
从学习者到研究者,再到管理者的十年,还未到而立之年的他可以说是一路小跑。而年少成才的背后,则是他在学业上的矜矜业业,师出名门;也是在工作中的拼搏进取,成绩斐然;更是他对于技术兴趣和信仰的不断坚持,以梦为马。
新程序员|清华“洗衣机系”学霸,如何在 GitHub 拿下 50000+Star()
文章图片

本文节选自《新程序员》004,『纸质书+电子刊』已正式开售 别人家的孩子
清华大学的自动化专业全球知名,自建系以来,已经培养了一万余名优秀学子。他们当中不乏杰出者,遍布在系统工程、自动控制、人工智能等各个领域。深度学习框架Caffe的作者、阿里巴巴集团副总裁贾扬清就是其中之一,他的本科和研究生阶段都是在清华大学的自动化专业度过。
2012年——距陈恺和计算机视觉结缘的前两年,他刚考入清华大学。作为自动化专业学生,他的日常主要是与洗衣机为伴,这是系里长期沿袭下来的调侃:“我们的专业课程是自动控制,老师经常会拿抽水马桶、洗衣机举例子,有时也会动手操作,可能是洗衣机用得太多了,大家就叫洗衣机系了,我们是修洗衣机的。”
当然,调侃归调侃,能考上清华大学的,都是“别人家的孩子”,不仅学习能力较强,更知道自己想要什么。高中时候的陈恺就对未来想干什么非常清楚:“我喜欢理科,接触过一些工程概念,就觉得学工程很好,可以动手操作,看得见、摸得着。自动化专业比较符合我的预期,可以通过软件来实现硬件。而且听起来也炫酷。”
不同于计算机的软件属性,自动化是软硬兼修的。大学期间,陈恺主要学习了四类课程:基础学科;计算机,包括网络、编程、算法;电路,包括模电、数电;自动控制原理,这是自动化科学的特色,用他的话说是“看家本领”。
相较于硬件,陈恺更喜欢软件,尤其喜欢做控制实现。比如,如何将一个倒立的单摆左右摇晃,但又不会掉下来,或者通过编程识别出一个手绘的火柴人,让它翩翩起舞……
进入大三后,在课程和实践的基础上,陈恺也需要思考自己的出路了。清北学霸毕业之后的打算,大概率是出国或留校深造,但陈恺选择了港中大。他的这一契机来自于商汤科技创始人汤晓鸥,因为汤教授在清华大学举办的一场讲座,陈恺认识了这位人工智能界的顶级科学家:“当时就觉得港中大多媒体实验室特别厉害”。
作为行动派,“有想法就做”是他秉持的理念。大三暑假,他就联系到商汤的团队,想去实习。此时的商汤刚从实验室初创,人脸算法的识别准确率高达98.52%,超过了工业化应用标准,意味着国内的计算机视觉技术终于不再纸上谈兵,可以落到实地,商汤科技便在汤教授的带领下应运而生。
学霸中的学霸 计算机视觉并不是新技术,但它的早期落地却颇为缓慢。20世纪60年代,统计模式识别最早应用在二维图形的分析和识别,并在晚些时候实现了立体结构的识别。到20世纪70年代中期,MIT开设了机器视觉课程。后来,这一技术开始从实验室走向产业。最初的成绩还不错,到1988年,包括视觉系统在内的人工智能产业收入达到数十亿美元。
但到了20世纪90年代,机器视觉的热度并没有如料想的那样爆发,倒是互联网走在了前面。当然,互联网的迅猛发展和快速产业化,也给视觉技术的深入研究和落地带来了推动作用。
这一时期,正在MIT攻读博士的汤晓鸥加入海底机器人实验室,开启了人工智能的启蒙之旅。《泰坦尼克号》是电影史上的经典巨作,为了还原最真实的场景,实验室在发现沉船方面起到了非常大的作用。因为亲眼见证了机器人完成发现沉船“泰坦尼克号”的作业,他认定人工智能,尤其是视觉技术将会对未来世界产生不可估量的变革。
【新程序员|清华“洗衣机系”学霸,如何在 GitHub 拿下 50000+Star()】博士毕业后,汤晓鸥回国,在香港中文大学信息工程系任教,并在2001年创办了香港中文大学多媒体实验室。他带领的研究者则成为最早运用深度学习对视觉进行研究的华人团队。
因为听了一场讲座而结识汤晓鸥,陈恺是幸运的。在实验室实习期间他感觉做视觉特别有意思,而且也确实是自己擅长的。毕业前夕,他便申请到实验室读博,做目标检测方面的研究。后在博士期间,他师从同样是MIT博士毕业的林达华,和教授一起编写的多篇论文收录于计算机视觉三大顶会:CVPR、ECCV、ICCV。
2015年底,商汤在当年的ImageNet比赛中夺魁。隔年,实验室入选“世界十大人工智能先锋实验室”,同时入选的包括MIT和斯坦福。
就这样,陈恺博士生涯的前两年和团队共同成长着。到了博三,他开始参与更多的学术实践,在一次目标检测领域知名的学术比赛上,他和团队通过创新算法获得了第一名。“比赛结束后,我们就将这一套目标检测算法框架保留了下来,经过不断复现和调优,MMCV(计算机视觉基础库)和MMDetection(物体检测算法库)就做起来了。”
2018年年中,林达华教授主导发起了OpenMMLab项目,作为牵头人之一,陈恺实际上负责了该项目的后续运营。在2018年10月发布MMCV和MMDetection之后,他和团队正式将这个项目开源了出来。
“先期的两个库做起来后,我们就进行了开源。当时市面上没有系统性的基于PyTorch的目标检测算法库,我们先开源出来就很受社区的欢迎。林达华老师也非常支持这件事,他把更多研究方向的同学纳入这个项目,包括做动作识别算法库的、超分辨率算法库的,这样就慢慢把OpenMMLab做成了一个多算法库的品牌,这是它最初的目的。”
2019年,毕业后的陈恺正式加入商汤,第一份工作便是管理岗,带领团队为公司业务提供算法支持,同时负责OpenMMLab的运营。
回忆求学的八年,在陈恺看来,清华大学将他培养成精进的学习者,港中大则进一步让他蜕变为独立的研究者。“本科期间我打下了很好的基础,包括知识和学业两个方面。因为经过了严格的训练,后来才能顺利进入汤老师的实验室。港中大则把我从学习者进一步塑造成研究者,让我逐渐具备了独立的课题探索能力,包括如何设计选题,以及如何进行研究方式和完成路径的规划。”
除此之外,读博的后两年,陈恺的团队协作能力和管理意识也有了很大提升,这段时间他已不像之前一样单打独斗做研究,而是带一些低年级的同学进行科研工作,有时也组织团队打比赛,这些经历都为他加入商汤带团队打下了良好的基础。
从学习者到研究者,再到管理者,他的成就感源于在顶会上发表论文,源于选对方向并得到验证,更源于团队中每一位成员的成长。
两年晋升总监,带领近百人团队 《新程序员》:你入职商汤时是什么岗位,负责哪些工作?因为哪些突出贡献晋升到总监?
陈恺: 2019年毕业后去了商汤,当时在一个偏业务的算法中台团队,主要为主营业务提供算法支持,也做一些预研性质的工作,最开始我的岗位是副总监。
在和团队的磨合过程中,我发现了当时存在的一些问题,比如大家使用的研发工具不统一,而且研发流程比较低效。针对这两个问题,我主要做了两项工作,第一项是不断提升算法的性能,第二项是研发工具和流程的标准化制定。
后来我们发现标准化的算法库能给业务带来很大价值,就花了很长时间去做开源算法体系,后来这项工作得到了包括我的直属上级在内的多位领导支持,这样一来我也获得了一些资源,就能把这件事做得更大。经过一年多的沉淀,OpenMMLab在视觉领域越来越具有影响力。此外,我在业务上也有比较好的成绩,基于两方面的工作,就在2021年晋升为总监。
《新程序员》:你日常如何规划团队的技术研发和落地转化?可以从团队架构和运营管理角度来谈。
陈恺: 我目前负责的团队接近一百人,我一个人不可能覆盖到团队每位成员的工作。我们按照不同的研发方向分成不同的小组,每个小组会有一个Leader来负责。
我的日常工作主要分为两大部分,一部分是谋事,一部分是聚人。谋事上,负责一些核心的规划,比如在年初进行全年度的安排和对未来计划的承接。定好目标后,对于具体的实现会和每个方向的Leader一起商讨,核心的算法架构和产品设计我都会参与,其他比较细节的事情就主要交给各个Leader,让他们也能有更好的自由度和成长空间。
聚人方面,招聘是比较重要的一部分,要怎么吸引人才,怎么在团队内部培养人,都是我工作的重要组成部分。我们现在已经积累了至少10万字的新人培训文档。
为了把社群建好,我们也需要时刻思考如何能吸引更多的开发者,通过社区或者其他渠道触达优秀的候选人,包括品牌、运营的不定期输出等。开源团队内部也有很多经验和成果,我会定期要求大家对外分享,通过分享、反馈和重构,建立良好的技术品牌。
《新程序员》:从学术到研发,再到做管理,能不能分享一件你觉得最有成就感的事情?
陈恺: 学术方面最有成就感的事是第一篇论文在CVPR上获得了Spotlight(亮点论文),在上千位全球各地的研究者面前分享了我的一些研究成果。第一次在这么多人面前“抛头露面”,很紧张,也很兴奋。即使后来也在一些比赛中获得了冠军,但没有那次激动。
研发方面的成就感来自选对了方向并且得到验证。比如,要进一步推动OpenMMLab项目的时候,我们其实有不同的选择方案,是把不同的方向做到统一的算法库里,还是分成不同的算法库,更加强调模块化。最终选择了后者,找对了方向,这让我们的技术先进性做到行业顶尖。
除了团队规模的不断扩大,管理的成就感主要还是来自团队成员的成长。我期望的团队是在我们在制定好目标后,每位同学都能发挥自己独当一面的创造力,我主要起培养的作用。当然,这是一个长期的沉淀过程。
“50000+”Star之路 《新程序员》:OpenMMLab项目在GitHub上获得了“50000+”Star,这一成绩归功于什么?
陈恺: 我觉得主要是两方面:一方面是时机,我们较早看到了这个领域的潜力;另一方面还是我们的硬实力,OpenMMLab算法库的工程架构是当时开源社区中具有标杆性的。我们发布之后才会有很多人来用,也有很多开发者借鉴和参考。
更多开发者关注到OpenMMLab是在2020年,我们在世界人工智能大会上发布了重要升级,进一步构建出“人工智能算法开放体系”,这应该是项目成立后的第二个里程碑。
《新程序员》:它对开发者有哪些吸引力?
陈恺: 对开发者的吸引力在不同阶段表现不一样,开始主要是单个算法库,现在是基于体系化的架构,不同的算法库可以“组合打包式”应用。比如,一位开发者可能同时需要目标检测和语义分割两种算法,都可以在OpenMMLab上打包使用。如果不采用OpenMMLab,开发者可能在开源项目中找到目标检测算法,但之后假如还想用分割算法,那他需要自己实现,或者得找另一个框架,重新学习和研究。
OpenMMLab提供了覆盖大部分视觉方向的算法,而且是基于相同的架构开发,使用起来非常方便。同时,模块化工程设计让开发者使用更方便,可以很简单地新增或者替换模块。这样一来,很多公司也会采用OpenMMLab作为内部研发工具。
《新程序员》:2021年也发布了不少新的算法库,包括MMGeneration、MMOCR、MMTracking等,它们可以给开发者带来哪些帮助?
陈恺: MMGeneration是生成模型算法库,比如,我们现在看到的一些热门话题,“假人脸”或是“换脸”之类,都以生成模型作为基础,可以达到以假乱真的效果。MMOCR主要是做文字的检测和识别,现在很多手机和电脑软件都有这些功能,我们就提供了这样一个开源工具。
MMTracking主要实现目标跟踪,包括三类:第一类是单目标,在视频里画一个框,MMTracking可以一直跟踪;第二类是多目标,某个图像或某一帧可能会有多个物体或多个人,通过MMTracking可以持续不断地跟踪每个人的位置,并且保证ID不出错。当两个人一起走路,不会把这个人跟踪成另外一个人;第三类是视频中的目标检测。
“好摘的果子大都被摘完了” 《新程序员》:你认为视觉技术在落地方面发展到什么阶段了?未来可能有哪些方向?
陈恺:相较于2012年和2013年的爆发期,视觉在工业应用方面已经到了平台期,或者说瓶颈期。一些“好摘的果子”大都已经被摘完了。目前主要在做数据标注监督,或者模型学习的一些模式。也有很多难题,但应用还不错。
接下来在新的学习方向或者说范式上可能会有更大发展,比如,现在大家都比较关注的,近两年投入较大的大模型、超大模型的训练。通过大模型,可以得到非常好的基准,然后再把它泛化到具体任务层面。这是接下来非常值得研究的方向,有不少大公司会宣传“我们要训练多大参数量的模型”,当然前提是能耗得起资源。
此外,还有一个比较有价值的方向,是“对真实空间的理解”。这么说可能比较抽象,其实像3D,或者最近比较热的元宇宙都可以归为这一类。目前产业界对图像和视频的识别,以及分类都成熟了,未来会逐渐关注和真实空间相关的方面,比如怎么做3D重建、生成、渲染等。
《新程序员》:你日常开发主要用哪些语言?在深度学习上正在研究什么课题?
陈恺:技术语言主要包括Python、C++和CUDA编程。Python是深度学习必备语言,C++和CUDA能够在GPU写一些高性能的算子,做进一步优化。
深度学习正在研究的课题包括目标检测、自监督学习,还有一些分割和3D等。整个团队覆盖到多大范围,我就会把研究课题或者说方向拓展到多大范围。
《新程序员》:想对从事AI视觉的开发者提出哪些学习和实操的建议?
陈恺:除了推荐我们的OpenMMLab外,还推荐多浏览arXiv.org,上面有很多论文,有没有发表的都会放。还有一个比较好的网站是Papers With Code,它会收集不同领域的算法,以计算机视觉和NLP为主。同时也会发一些榜单,相应的代码也会罗列在上面,包括性能如何实现,这些对大家找相关信息都非常有帮助,个人认为是一个很好的检索网站。
《新程序员》001-004 已全面上市
欢迎扫描下方二维码或点击进入立即订阅
即可畅享电子书及精美纸质书。
新程序员|清华“洗衣机系”学霸,如何在 GitHub 拿下 50000+Star()
文章图片

    推荐阅读