「开始写这边总结的时候是三月,纽约成了疫情震中,看着新闻报道里的中央公园,中国城,第五大道,往事浮现,于是开始写这篇回顾。陆陆续续一直没写完,转眼年底了,加州疫情更糟。前几天看新闻说 Cathedral 教堂发生枪击案,震惊。这教堂就在我当时住的学校公寓旁边,每天出门都可以看到。遂又忆起每天上学的时光,于是决定把这篇总结写完,希望疫情早日控制住,一切安好。」
刚上大学时,听过不少学长学姐分享会;申请博士时,读了不少留学申请总结。都收获很大,让当时啥也不懂的我,了解了每场游戏(如何度过一个充实的本科;如何拿到心仪的 PhD offer)的 principles:有啥规则,有啥技巧,等等。
开始读博时候,我也去找类似的读博经历分享,令我收益良多的,如熊辉老师, 田渊栋大牛和李沐大牛的总结,林达华老师的 blog;但可惜只有这寥寥几篇,读博又是一个复杂的事儿,当时的我并不能清晰地看见前面的路,遇到一些事亦因缺乏经验借鉴,走了弯路。于是当时便想着,等我毕业了,也得记下我学到的经历,希望能帮助到刚开始读博,像我当年一样迷茫的科研新人。也借此记录和感恩一路走来,所有帮助过我的人,best of luck。
因为时间有限,文章写的粗糙,还请多多担待;因为篇幅限制,有的问题难以讲得完善全面,还请结合自身情况,辩证地借鉴相关经验;或跟您意见不合,全当看小说,寻个乐子罢了。
1. 万事开头难 (第一学期)1.1 初到纽约
2014 年夏天,在北京国际机场,我安慰我妈说,“没事,明年暑假我就回来啦”,万万没想到,一直忙忙碌碌,一去就是 5 年…… 可能是初次留学的兴奋,十几个小时的飞行,感觉很快就过了,到了 JFK 机场,坐上纽约特色的黄色的士。去学校路上,先是皇后区的平房,后来到了曼哈顿,深砖红色的高楼,跟想象中的国际大都市并不大一样,倒很有历史厚重感,日后想想也是,纽约也不能到处都如时代广场那般呀。
接着,办入住,搞卫生,小憩了一会儿,傍晚出去门口的超市买点吃的;第一次从 112 街,走到 Broadway 上,看着熙熙攘攘的外国人面孔,很傻的竟然笑了出来… 那会儿自然是极开心的,就是一个毛头小子,充满了对未来生活期待的样子(哎,回不去的青春啊);当然了,怎么也没想到,接下来的一年,会如此艰难……
1.2 差距
开学后一系列事情,一下子让我清清楚楚地,看到自己跟师兄们比,各个方面有着很大的差距。且不说核心业务能力了,首当其冲自然是语言环境的变化。
一天路上,一小哥对着我说:How are you?我想,这不是新概念英语上的经典对话吗,难道我真要回传说中的 I’m fine, thank you, and you?从那儿之后,我知道了,how are you 就相当于,吃了么您呐,并不是真的问什么,而是打招呼,跟 say hi 差不多,一般回 good good 就可以了,甚至不回,直接也回对方 how are you 都行。
然后到了第一天来 lab,正好 Y 来面博后,老板让他给个 talk,Y 希腊口音的英语,再加上讲的内容涉及一些专业术语,几十分钟我几乎完全没听懂他说什么;会后跟他一对一 meet,更是尴尬的很… 后来 18 年来 FB 实习,巧了 Y 是我 mentor 之一,第一天带我吃的午饭,我们交流完全无障碍了,他也不记得当年还见过我…… 我有个朋友总结,刚来时候,跟外国人的交流,是三分靠听,七分靠猜…… 现如今,即使是印度口音,只要不是说的特别差的,或者我特别不熟悉的东西,都能通畅交流了。感觉这没啥技巧,首先要敢说,然后多跟不同的人聊天练习,慢慢就好了,倒不必太过担心,徒增压力。但是如果英语不好的话,难以跟外国专家合作,融入核心科研圈子,对长远的发展耽误很大,尽量在 1-2 年内做好这个提升。
1.3 让老板知道你在干活
因为我是本科毕业直博,刚读博那会儿,思维里还是默认,导师是教育培养学生的角色,指导学生做出成绩;明白但没有深刻认识到,博士生与导师还有雇佣关系。第一个学期,我主要是跟着师兄们做,跟导师大概一个月 meet 一次,每周有 weekly report。开学时,老板把我分给一个师兄带,参与他的项目 A,是个很好的学习机会,但是发不了 paper。
11 月,CVPR 投稿的季节,另一个师兄找到我帮忙做项目 B,这个项目准备投 CVPR,做出来的话可以 co-author。于是我那段时间都扑在做 B 上,终于实现了其中一个核心的模块。CVPR 投稿完的那周,正好导师约 meet,我想 B 的事情做完了,下面精力就都是做原本的 A 了,meet 对我来说,主要目的是确定下接下来的 plan 呗。正好搞 CVPR 之前,项目 A 的师兄让我 reproduce 一篇 nips 文章的方法,用到项目 A 的 data 上,于是,我准备的 slides 主要介绍那篇 nips 和怎么用到项目 A 上。结果 meeting 结束,导师很不高兴,觉得我这几周没有 progress。记得那天导师办公室没开灯,冬天下午五点的纽约,天已经黑了,周围一片黑压压的,更显压抑。
我当时挺惊讶的,因为原还以为在导师印象中,是我参与了 B 的 CVPR 投稿,很 impress 呢。我后来仔细反思了下,虽然这几周我对 B 也算是呕心沥血,weekly report 里也有提,但是,一来我只是 coauthor,对于 B 工作整体而言算不上 main contributor;二来导师很忙,不能 assume 对方完全了解并且记得你做过的一点一滴。同时,我也明白了这个 meeting 的目的既是讨论 research ideas,但也是 review progress,我首先得让导师明白,我这段时间有在好好干活。现在的我,不会只提项目 A 之后我想怎么做,会同时准备一页 slide 总结下我对 B 的贡献。
1.4 自己的感受没那么重要
我们系第一个学期末就要博士资格考试。这个考试,各个学校称呼不同,大概就是博士生通过这个考试,才证明有能力,qualify 继续读博士。我们系给大家两次机会,第一学期末第一次考,没通过的第三学期末再考一次,要是还没考过,就只能卷铺盖走人了。而且这考试还真不是走过场,每次大概挂三分之一的人,所以真真切切见到周围有人因为 qualify 没过走人的。
我本科学的 CS,博士因为 fellowship 是 EE 发的,所以在 EE 系。这可愁坏我了,因为考的是 EE 的基础 topics,电路,DSP,网络啥的我大都一窍不通。于是第一个学期的课,我选了门 DSP,准备好好从头学。这是硬课,再加上平常主要精力还得放在 lab 的项目上,第一学期压力巨大。记得有一天,晚上睡觉做了噩梦,梦到不知什么怪物,惊醒,醒来想到各种 tasks 各种 due,顿时只想继续回到梦中,相比而言,还是怪物比较可爱…… 这时候,只好把自己的感受搁置一边,累、苦,想这些又有什么用呢,只能更加平添烦恼。该做什么就去做,告诉自己干就完了,结束后反而发现,过程其实也就那样,有时候我们只是过度看重了自己的感受,夸大了困难的程度,其实自己的感受没那么重要,只要身体本身还撑得住。
qualify 考试在 1 月初。12 中旬,忙完了期末考试,去 Chinatown 吃了顿好的,回家看了部电影,然后跟导师请好假,专心复习 qualify。大概有三周的复习时间,除了 DSP,其他的 topics 完全从零开始学。后来觉得,这考试的目的,不是考的知识本身,而考的是学习能力。复习的过程是很惨了,时值圣诞节假期,朋友圈各式各样在佛罗里达坐游轮的,迪士尼看烟花的,回国火锅小烧烤的;而那年的纽约还尤其的冷,家里的暖气开到最大,还是冷的不行,我只能早出晚归的去图书馆;路面冻得白花花的,公车开过扬起白沙,从家里 112 街到图书馆 114 街只有 5 分钟,但却那么漫长;每天几条裤子叠着穿,有天开始一度冷到零下负十几度,我刚出门一会儿就赶紧回来,在牛仔裤外面又套了件运动裤…… 所幸最后考试通过了,小秘告诉我竟然考了第三,震惊,真是功夫不负有心人讷……
1.5 上课没那么重要
第一学期,选 DSP,纯为了考 qualify exam 修的,跟我日后的研究,基本不搭噶。我第一学期还修了机器学习,机器学习我之前没有系统学过,学完还是受益良多。但为了达到学分要求,我博士期间,被迫修了 14 门课,第四年还在上课…… 我的感觉是,CV 是实践科学,上课没那么重要,很多时候甚至是浪费时间。我觉得值得选课去学的,可能就是机器学习,算法,就够了。搞 CV 方向的,与其上门 CV,还不如自学网上教程,亲身参与几个项目,学的更快,对书上的知识有更深刻的理解。我觉得上课最大的作用,就是去了解这门学科,有哪些基本的概念和算法(所谓把 unknown unknown 变成 known unknown),哪天你要用到他们了,需要把 known unknown 变成 known known 的时候,知道在 Google 里输入啥关键词去搜。
当然如果有时间,上些基础型的硬课,自然没啥;但对于博士生,时间本就紧张,就得做做平衡了,选些 seminar 的课比较好,一般主要就是读论文,做 project。我后面陆陆续续带了很多低年级的学生,很多人学期伊始,觉得要多学些知识,选的都是硬课,学期过半,发现作业做不完,科研没时间,两头耽误,都是后悔不已…
2. 方向比努力重要2.1 PhD 选题
第一学期在课业,科研,qualify 考试,适应国外环境,种种碾压之下,总算过去了…… 虽然痛苦,但只是工作量大,努力使劲就好了…… 第二个学期开始,2015 年于我,关键词是迷茫,努力努力但怎么也使不上劲的那种……
第二学期开始,重心主要集中在 research 上了,跟导师的 meeting 也从一月一次变成了每周一次,有幸得导师亲自调教各种真正做科研的能力了。导师给我定了个新的项目,深度学习下的 incremental learning。这其实是个很难的问题,现在 5 年后来看,都没有被很好的解决;亦没有一个标准的 benchmark,也就是说,其实大家还没有定义好这个问题;记得导师那会儿说,if you can formulate this problem,这个问题就已经解决 70% 了。
结果忙忙碌碌几个月,研究了很多文献,做了很多实验,还是没有太大的进展,就是感觉很迷茫了,不知道下一步该干嘛。幸运的是,到 5 月份,导师让我跟师兄一起参加一个叫 THUMOS 的比赛,这其实又是个新的项目了;开始我还觉得,已经忙不过来了,哪有时间再多一个项目,后来庆幸参与了这次比赛,开始了我做 video 这个方向的科研生涯。
那会儿 video 领域,大家主要做 classification,而且是几秒的短视频;THUMOS 是长视频,而且不光有 action classification task,还要一个 task 是 action detection,检测你所感兴趣片段的开始 / 结束时间。参加比赛时,我跟着师兄主要搞 classification,边做边学,上手了处理视频的模型和框架,收获很大。比赛完后,我发现 classification 大家搞的火热,而 detection,同样很重要的一个课题,却没有人研究过基于深度学习的方法,于是就有了我的第一篇 CVPR 文章,收到了很多 follow-up。我自己也算是找到了自己的研究方向,不再迷茫。
我觉得这段经历,对新手很有参考价值,很多时候光努力不够,方向更重要。新手如何选博士几年的 topic,有两个问题值得思考:
能不能快速上手? 有几个简单的评判标准:
state-of-the-art 的 paper 有没有开源的代码?目的是你能迅速复现 baseline,熟悉整体 pipeline(如怎样预处理,后处理),加深对实现和细节的理解有没有对这个 topic 有 hands-on 经验的师兄,或者 community 里面 approachable 的前辈?目的是,当你遇到实现上的细节问题,可以及时咨询和得到反馈这个 topic 有没有比赛,或者标准的 benchmark?目的是,有大家已经定义好的数据,实验 setup,评价标准;这样,你有可以直接比较的 baseline,outperform baseline 的时候也容易被人认可
能不能有大的 impact? 这里我指的是博士期间的大方向,由一系列单项的工作或者 paper 构成。单篇 paper 通常有三种类型:(1)First work:开创了一个 topic,比如 RCNN 于 object detection(2)Last work:基本解决了一个 topic,比如 Faster-RCNN,YoLo 于 object detection(3)Improve 类型,介于 First 和 Last 之间的。
Last 很难,Improve 常见但影响力不够深远,对于新手而言,博士的早期工作,在有能力做出来和有 impact 之间的 trade-off 比较好的,估计是 First 了,不一定非要是第一篇,只要是某个 topic 里面开创性工作的那一批之一,都是不错的。这个早期工作之后,你会对这个问题哪里要改进,有很清楚的认识,因为 improvement room 大,也会有很多 ideas。同样,早期的时候怎么选这样一个 topic 呢:相关的比赛是这一两年新开的吗,相关的 benchmark 是这一两年出来的吗,上面的结果提升空间大吗(现在是 20% 还是已经 80% 了)?
2.2 单篇 Paper 选题
前面说的 PhD 选题是大方向上的,具体到每一篇 paper,选择的 principle 和重点则不太一样。来 Facebook 后从马爷爷那知道了一个著名的 Heilmeier 问题系列,是指导老师们申项目的,我觉得稍微改改,便很适用于我们考虑,某一篇 paper 的选题,合不合适:
What are you trying to do? Articulate your objectives using absolutely no jargon.How is it done today, and what are the limits of current practice?Who cares? [Support other’s research? Shape research landscape? Power applications in industry?]What's new in your approach and why do you think it will be successful?If you're successful, what difference will it make? [e.g. Contributions in theory/modeling? Improve accuracy by 5% on dataset A, B, C…?]What are the risks and the payoffs? [Further, how would you mitigate the risks? If your proposed method does not work, what could be alternative design? These can end up as discussions such as ablation studies in your paper.]How much will it cost? [e.g. How many GPUs do your experiments require? How long is each training process? How about data storage?]How long will it take? [How many hours are you going to work on this per week? When is the submission DDL? Can you make it?]What are the midterm and final "exams" to check for success?3. 谈谈 Presentation
Presentation 分为做报告,还有就是写 paper
3.1 谈谈做报告
14 年,刚来哥大那会儿,每周五是我们组会,导师让我在组会上 present RCNN,这是我第一次给导师作报告,而且是在全组面前报告,自然想要好好表现。我对 object detection 之前完全没了解过,于是 paper 读了一遍又一遍,文中用到的前人技术不懂,便找到前人的文章去学怎么回事。感觉自己学到好多,自我感动,觉得花了这么大工夫,一定到时候会让导师刮目相看。
结果就是啪啪打脸:导师极其严谨,当我解释了 A,解释了 B,问我已经有 A 了为啥还要 B;我大脑一片空白,尝试着解释了半天,导师表示听不懂,这是可想而知的,因为其实我自己也并没有搞清楚为啥;当时自己读 paper 的思维模式其实只是,memorize 怎么做怎么做,但没有去搞清楚要这么做背后的原理;另外当时 slides 准备的也不够好。总之结果是,这次报告搞砸了。还好事后,师兄们继续跟我讨论,让我对技术原理有了更深刻的认识;有的师兄更用亲身经历安慰我,说当年他刚来的时候,第一次汇报工作连 slides 都没做,干讲,导师自然也是没能听懂。
之后几年,从导师身上学到了很多 presentation 的技巧:
如果可能的话,事先了解你的听众背景,是跟你做同一个 topic 的,还是同一个大领域但不同 topic 的,还是完全其他专业背景的。需要根据听众背景,定制和调整:比如,需不需要多介绍些背景?需不需要更深入技术细节?等等一页 slide 尽可能 focus 在一个点上,不要信息量过大,否则听众很容易 lost尽可能多用图片表达,不要大段大段的列文字,A picture is worth a thousand words上面这两点,其实 principle 都是尽量让要讲的内容简单明了,因为很多时候我们在听 talk,这样被动接受的时候,接受新知识的能力是比主动接受时候(比如看 paper)低的。当听众问问题的时候,If you don’t know the answer, just say don’t know.如果是跟 mentor 日常讨论的 slides,因为会讨论到很细节的东西,有些图 PPT 画起来,很花时间,而且通常这样细节的图还挺多,所以可以就 ipad 上面手画一画,截个图放到 PPT 里就好了;如果是正式一点的 presentation,写 slides 跟写 paper 的 principle 有点像,不要太 focus 在细节上,更重要的是讲清楚 motivation,为什么这样设计,细枝末节的不关键的内容,放在 backup slides 里面。
19 年 CVPR,Doctoral Consortium 有幸 mentor 是斯坦福的一位大牛教授,她也提到了 presentation 的重要性,说她们 lab 有个开玩笑的说法,一份 slides 交给她去改,no pixel left…… 为了分享如何能让报告听起来有兴趣,她画了下面这张图,让听众情感(亦是兴趣高低,注意力程度)随着时间的变化,有三个高潮:首先,介绍你的问题,通常这时候大家都会引发兴趣;但听着听着大家注意力就不集中了,这时候就到了图中第一个低谷,这时候需要指出来这个问题有哪些 challenge,大家的兴趣就又被激发了;等大家兴趣来了,精力集中的时候,介绍你的一部分工作 work 1;等介绍完第一个工作,大家又疲劳了,这时候指出来,即使有这个 work 1,问题还不能被解决,因为有 remaining challenge;接着大家又被调动了兴致,可以开始介绍 work 2。
3.2 谈谈写 paper
在 2.2 里面讲了对某一篇 paper,如何选题和做规划。那真的到了写 paper 的时候,我自己有几点如何让文章写的更好的体会:
先给一个 Talk。写 paper 最难的是构思 storyline,而最好的完成这一步的方法就是先对你的工作做一个 slides,给周围的人 present 一遍。这个过程中,你会梳理好自己的思路,画好文中的 figure,准备好实验结果的 table,周围的人还可以给你提意见,帮助你完善,等这个 talk 给完了,后面写 paper 就会顺畅自然了。其实我现在,如果准备投一个 paper,当做了一段时间后,就会按照最终 presentation 的思路,准备 slides,用在每周给老板们 report 时。开头先快速 review 一下做的 task 和提出的方法,remind 一下 context,然后重点 focus 在那周做的新东西上,所以每周汇报的 slides 可能 80% 都是跟上一周一样的,然后新的方法和实验结果的那几页 slides 是新的,有比较多的细节。用 Google doc 做语法检查。刚写好的 paper 有 typo 和语法错误是很难避免的,但常常会被 reviewer 揪着不放。大家写 paper 如今大都在 overleaf 上,但 overleaf 的查错还是不够好,建议可以写完 paper 后,贴到 Google doc 里面。几年前开始,估计是由于 deep learning 对 Google NLP 的改进很大,感觉 Google 自动改的质量已经非常高了。Rationale 很重要。不光是要讲清楚你怎么做的,更要 justify 你问什么这么做;不光要讲你的结果比 baseline 好,更要解释为什么好;读者看到的不应是一个 “使用手册”。有时候我们写 paper,花了很多篇幅写了很多实现细节,但是更重要的是,解释 “为什么”,这个背后的逻辑和 insights。大部分 paper 都是提出一个新的方法,这类方法型 paper 似乎都可以套下面这个框架:Introduction:可以分为以下几个部分:Problem definitionPrevious methods and their limits简单描述你是提出了什么技术来 overcome 上面的 limits一个图,非常 high-level 的解释前人工作的 limits 和你的工作怎么解决了这些 limits,最好让人 30 秒内完全看懂最后一段如今大都是,In summary, this paper makes three contributions:First work to 解决什么 limits提出了什么 novel 的技术outperform 了 state-of-the-art 多少Related Work:一般三五个 subsection,分别 review 下相关的 topics,同样不光讲 previous work 做了啥,更要讲自己的方法跟前人工作有啥不同Method这是文章的主体,按照你觉得最容易让别人看懂的方式来讲可以第一个 subsection 是 overview,formulate 一下你的 problem 给出 notation,配一个整体 framework 的图,图里面的字体不能太大或者太小 * 看不清,要有些细节,让人光看图就能明白你的方法是怎么回事,但不要过于复杂,让人在不超过 2 分钟的时间看完这张图然后几个 subsection 具体介绍你的方法或者模型;如果 testing 跟 training 不太一样,最后一个 subsection 介绍 inference 时候的不同,通常是一些 post-processing 操作ExperimentDatasetsImplementation details such as pre-processing process, training recipeEvaluation metricsComparisons with state-of-the-artDetailed analysisAlternative design choice explorationAblation studiesVisualization examplesConclusion (and Future Work)Abstract:是全文的精简版,建议在 paper 写完第一稿差不多成型了,有定下来的成熟的 storyline 了,再去写 abstract;大概就是用一两句话分别概括 paper 里面每个 section,然后串起来
另外 paper 提交时候,可以交 supplementary materials,虽然 reviewer 并不被要求强制看这个,但其实给我们机会,去 include 更多文章技术细节、实验结果的好地方;在后面 rebuttal 阶段,通常篇幅有限制,但如果你已经在 supp 里面未雨绸缪,可以省很多空间,refer reviewer 去看你 supp 里面的内容就好了。
说到 rebuttal,我还是比较幸运的,从导师那学到很多。导师已经是功成名就,业界泰斗那种,起初我以为他这个级别会对我们是放养;但我在哥大投自己第一篇一作 paper 的时候,导师可以说是手把手带我入门了。还记得 16 年 CVPR review 出来后,导师找我讨论 rebuttal,我那会儿对写 rebuttal 并没有什么经验,也不知道可以用 R1 代表 review 1 等等。那天 meeting 开始已经晚上 7 点了,估计导师还没吃饭,我两就挨着坐在他办公室里,对着他的电脑,讨论 reviewer 提的一个一个问题。因为很多时候其实 reviewer 表达问题并不准确,他教我分析每个问题背后 reviewer 真正关注的点是什么。边讨论,导师边直接敲下我们讨论的 notes,meeting 完后,我看这 notes 基本上就可以算是个 rebuttal 的初稿了,比我 meet 前准备的 draft 强多了……
4. 记四次开会2016 年,拉斯维加斯。
博士期间我参加了四年的 CVPR,这是我们行业的盛事了。学术会议通常,主会 3-4 天,有 oral 环节,大家可以听台上人轮流做报告,有 poster 环节,一个大场馆列满一排排的 poster stand,每篇 poster 有作者在旁边讲解和答疑,oral 和 poster 环节交替进行。大场馆在 poster 周围有各个公司的展台,一方面展示技术,一方面更多是在招人。主会前后一两天,有 tutorial 和 workshop,通常会有大佬来介绍最新的工作,因为现在 paper 大家很多早就挂在 Arxiv 上看过了,很多人觉得 workshop 比主会更有听的价值。
若用一个词形容 16 年参加 CVPR 的体验,那就是兴奋了。首先 Vegas 就足够让人兴奋了,一座沙漠中建起来的梦幻城市,各式各样的酒店,威尼斯人,凯撒皇宫,艾弗尔铁塔,每换一个酒店就像到了一个新的国家。三年后毕业旅行,我带爸妈来,故地重游依旧是很惊艳。
然后这也是第一次见到许多业界大佬们的真身。当时在湾区实习,候机的时候就发现周围都是同行。第一天晚上跟着师兄逛赌城大道,一个很高的老外来跟我们打招呼握手,我后来才意识到是现在在 Tesla 的 Andrej,之前本科的时候还邮件问过他 DBN 的问题,没想到竟然是他… 后面陆陆续续看到各种在 Paper 上面名字很熟悉的真人,很兴奋了…
这次开会,我才知道了,开会的目的不光是听报告学知识,也是 social 认识人的机会,我们需要融入到这个 community 里去。从优秀的人身上我们可以学到很多;每人各有所长,有机会合作的话,可以双赢;每个人都有盲区,需以他人为镜。而这些的前提就是,你要成为这个优秀圈子的一员,跟他们有交流。当时杜老板刚毕业加入 Facebook,因为我的工作基于他的之前的 C3D,在路上看到他,鼓起勇气跟他打了个招呼,杜老板很 nice 的跟我聊了一会儿,也是从那之后跟他们组有了些合作,我去年毕业后也加入了这个组。
不过那年,我对 social 的认识也就仅限于此了,我甚至不知道公司还有 party。不过好处是认识的人不多,没有太多的招呼要打,可以集中精力开会学习,这一年算是我开会最认真的一年了,基本上把所有 poster 都过了一遍。另外,我也是第一次讲 poster,这个环节一般两小时,站着不停说话其实蛮累的,建议可以备点零食,水在旁边。
2017 年,夏威夷。
感谢组织,第二年又免费去了个度假胜地…… 不过这一年,因为已经入行了,开会过程很忙碌。这年有幸中了篇 oral,导师很重视,前后 slides 改了很多遍,rehearsal 了好几回。为了听众体验比较好,可以看着听众有眼神交流,同时看起来 professional,导师要我脱稿。从西雅图飞夏威夷的飞机上,就一直在背稿子,然后一直反复 rehearsal…… 报告前还是很紧张忐忑的,台下坐着得有一千人,讲 12 分钟,3 分钟 QA,不过上台后似乎因为集中精力在报告本身,反而淡定了…… 话说这种事情,感觉都是第一次很紧张,经历过了,以后就好了;记得第一年只是做 poster 展示,我事前也很紧张,但经历过后,这第二年做 poster 展示时就非常淡定了。
报告给完后,因为最后一天有个 workshop 要给个 talk,slides 还没做,只能继续宅在酒店准备…… 悲催的整个开会期间,很多时间都呆在酒店,都没啥时间出去转转,只能默默给大家朋友圈点赞,也没有机会向第一年一样认认真真看 poster 了…… 所以很佩服大佬们,他们又要到处给 talk,要跟各种人 meet,是怎么安排开会时间的……
前面说到公司 party,在会议期间晚上,一般大公司都会组织自家的 party 供大家 social。虽然很多时候是大型尬聊现场,但公司很多员工会来,为来年招 intern 或者正式员工做宣传;很多学生会来,可以了解不同的组做些什么,有没有 headcount,intern 有没有 returning full-time offer;当然,还有就是有 free food 包晚饭,而且 Party 的场地很多时候是有特色的景点,印象中去年,微软是在一艘大轮船上(感谢张老师 carry),Facebook 是在水族馆。
很多时候这些 party 为了控制人流量,会要求 invitation。会议前公司们会给你发邮件 invite,可能是 HR 看到你要来 present paper,可能是某个公司 researcher 想要跟你面对面聊聊,也可以你直接联系公司的朋友,提前把你加到 list 上。有时候没有 invite,有认识的公司朋友,也可能直接带进去,或者人不多了,就直接不限制了。另外,第一年开会的新人,可能看到别人去 Party 自己没有 invite 会失落,但其实 duck 不必哈,找上落单的小伙伴,去周围景点好好玩玩,这可能是今后所有开的会里,可以自由支配晚上的时间,想去玩啥就玩啥,不用去尬聊的唯一一次了,好好珍惜!
2018 年,盐湖城。
这一年我博士第四年结束,开会的主要任务就是找工作了。前面说到,poster 场馆有很多公司的展台,前两年我也就去拿拿文化衫就走了,这一年则不然,因为展台有 HR 给你介绍公司的招聘流程,当场收简历,也有站台的员工,可以直接了解他们组的情况。当然,这样可能还是比较 general 的招聘,即使有员工,很可能跟你也不是做同一个小方向的,一般来说大公司里面偏 production 的组在这里认识的机会比较多;如果想找偏 research 的组,还是通过你 paper 认识你的同行,师兄弟朋友们的介绍,效率相对高些,可以约他们在展台或者 Party 上见面聊。对于找 postdoc 的同学,很多老师会约在开会期间见面,甚至面试,所以可以提前 reach out 约好。
2019 年,洛杉矶长滩。
洛杉矶也是我很喜欢的一个城市,因为我一直有个影视梦,所以很喜欢好莱坞,这大概就是我为什么坚定做 video 方向的初衷了。长滩其实离 LA 市区挺远的,算是一个度假小城市了,甚至有自己的机场。长滩市最著名的景点就是 literally 的长滩了,有很多游艇一列一列地停着,蛮壮观的。
19 年这会儿我已经毕业了,刚加入 Facebook,不用逛公司了解找工作的情况,倒是又可以认认真真开会了。另外,对于毕业生,会有个 Doctoral Consortium,强烈建议申请,他们会组织毕业生和业界大佬一对一吃饭,是个很难得的学习机会,毕竟除了自己导师,很少有其他老师能花一个小时跟你单独聊各种 research 和 career 上的问题了吧。
5. 记三次实习2016 年,博二暑假,湾区,Santa Clara。
来纽约连轴干了两年,暑假要去师兄在加州的 start-up 帮忙,总算要换一种生活方式了,开心!那会儿对传说中的硅谷还没有概念,还不知道 San Jose(圣何塞)J 发 H 的音。因为纽约就是跟所有国际大都市一样,高楼大厦生活便利,其实没有体验过典型的,所谓美帝乡村生活;湾区则是,住宅区里一栋栋的自家 house 挨着,四层就算是高楼了,每一片儿有个 plaza,聚集各种饭店超市;到湾区第一天,被感叹说像是第一天来美国的……
这次实习很短,两个月,因为是 start-up,工资不高;租的地方没有床,睡了两个月地铺,住家附近有条小河,蚊虫很多,对虫子极度反感的我在地铺上整了个蚊帐;天天上班打车是打不起的,只好买了辆自行车骑车上班,单程半小时还好,天气炎热也还好,最恐怖的是在一个上高速分叉口,得过个马路,没有红绿灯,只能招手示意,过来的车常有大货车,而且车流量大,经常得拦下一列车,每次都胆战心惊……
不过整体工作生活还是充满新鲜感的。工作上是纯 production,了解了很多 prod 的 system design;虽然早九晚七,但不用像在学校搞 research 晚上和周末还要加班,所以觉得很轻松;师兄们人也很好,带着我们去过了优胜美地,三番市区玩。总体感觉就是让我紧绷的科研神经放松了一段时间,也了解了另一种很不一样的美帝生活,习惯了吃早茶,印度菜,越南粉。
2017 年,博三暑假,西雅图,Redmond。
这个暑假是过去几年里,过的最开心也收获很大、非常充实的一个暑假了。这一年在微软,是 research intern;大公司确实流程比较正规,开始的时候有 orientation 带你入门,公司各种 facility 也是不错。
我的 mentor 已经是很 senior 了,是组里的 manager,但还是非常 hands-on,自己还写 code 做实验,所以对技术的见解非常深入;人也很 nice,甚至还有时帮我一起 debug 算法,学习到很多。当时我在一个华人比较多的组,其他的 full-time 也很 nice,我们工作上有问题都耐心跟我们讨论,生活上带我们尝试各个楼不同的午餐。我们在的是 99 号楼,都说 99 很难吃,导致我至今还没尝过 99 的午餐…… 组里每周会有 intern 轮着做 presentation,介绍自己的进展,大家都很自觉,所以,虽然说大家都很 nice,但因为想要在这三个月里做出东西来,自己给自己的压力还是比较大的。这种压力我觉得是好的,积极的压力。
这次实习后,我就习惯了用 Windows 系统,VS 编程,onedrive,自己 macbook 上装着 Windows(这个习惯来 FB 后被打破了,现在又换回来苹果原生系统)…… 微软没发笔记本,而是台式机,所以周末来公司的 intern 还不少,再加上西雅图公交系统发达,去公司很方便,我晚上和周末基本都会在公司;也因此认识了一群小伙伴,因为微软晚上餐厅不开,所以常常坐小伙伴的车,去外面一起吃晚饭,然后再回来干活。夏天的西雅图天气很好很舒服,二十来度吧,晚上九点多天还是亮的,是全年最好的季节,其他时候则都是雨季了。
2018 年,博四暑假,湾区,Menlo Park。
这一年回到湾区,在 Facebook,体验是最 fancy,最累的一个暑假了。
原以为之前我已经了解湾区了,但 16 年其实是在 Sunnyvale,Santa Clara 这块,靠东边,偏热;18 年 FB 在 Menlo Park,公司公寓在红木城,这块靠西边,温度跟西雅图夏天差不多,很舒服,跟 16 年常活动的区域还是有点远的。说 fancy 是因为,17 年在微软,我觉得有免费的咖啡和椰子汁就很不错了;来了 FB,好么,喝的吃的种样繁多,微软就显得小巫见大巫了;FB 楼里各种有个性标识的墙,intern program 组织的活动也多,认识了很多玩得来的小伙伴。在这也学了很多 “黑话”,什么 movefast 啦,什么 what does success look like 啦……
但同时也是最累的一个暑假了,一来因为 open space 办公室,大家都坐在一块儿,业界大佬就在身边,自然也会想向他们学习,做的优秀;二来 FB 有 mid-term 和 final review,一般你的 mentor 们会给你写 feedback,打分,然后有个叫 calibration 的环节,上面的老板们会把所有 intern 放在一起比较,调整分数,要看你跟你的 peers 比怎么样。所以好几次,忙到晚上 3-4 点,早上 8 点就得起来赶班车……
6. 没那么简单的事6.1 Project vs. Paper
刚入学时,我单纯的觉得,好好做 research 就好了;但事实上,能够专心做 research 的时间其实是没有想象的那么多的,是要挤出来的,甚至去开会回来,报销填表准备材料这种杂事,小事,都得折腾掉好几个小时……
但更 tricky 的是平衡 project 和 paper 之间的关系。如果你比较幸运,有国家的 Fellowship/Scholarship,或者系里的 Fellowship/Scholarship(有的是以 TA 的形式),不用做所谓的 RA,再或者 sponsor 你的 project 是纯以发 paper 为 KPI 的,而且并不 care 你做的是什么 topic,那你可能没有这方面的苦恼。
但是,通常老师们申请 grant,很多 grant,尤其是金额大的 project,通常甲方心里都有一个确定的想解决的问题,向老师征求 proposal,即问题的解决方案,proposal 里面会规划好每个半年甚至每个季度做什么 task。当然,这里说的 project 不包括那种纯粹是给外面公司做工程的 project,倒还都是 research project。经常项目开始的时候,因为 proposal 是以前定好的,如今环境、state-of-the-art 都不一样了,跟当下情况不符;或者甲方想解决的问题比较 practical,是个没有 formulate 好的 research problem,或者不是 community 关心的偏基础的 research task。
举个例子,你想做的 topic 是 object detection,community 关心的 dataset 是 VOC,COCO,但你的甲方关心的可能是某个领域的 object detection,比如 detect 某种野生动物,比如 detect 不同微生物。经常遇到的是,你提出的方法在 VOC,COCO 上面很 work,但在微生物的 dataset 上面效果不佳,这样虽然可以发 paper,但是 project 却没有进展。有些项目,在开始的时候会 fund 好几个 team,然后让大家比赛,比如在项目内部有个 detect 微生物的 benchmark,让你们 PK,第一年结束,淘汰掉最差的那个 team,第二年继续 PK,再末端淘汰。你要是 project 没有进展,导致你导师的项目被砍了,就问你怕不怕…… 因此,很多同学就走了另一个极端,花很多精力做项目,hack 这些 project 的上的 number,很多时候涨点最快的方法是,collect 更好的 training data,用更复杂的网络,渐渐变成了解决工程问题,开发了个很牛的系统,但是没有 novelty 发 paper。
这种情况下,人的本性,会觉得麻烦,就偏颇一方。但这其实是偷懒,千万不可。要 align 双方的兴趣,要注意平衡,trade-off,一方面要 project 有进展,对 sponsor 负责,另一方面更要对自己负责,发 paper 做有 impact 的工作 比如,尽量 focus 在模型本身,找到有 novelty,在 project benchmark 和学术界 standard benchmark 上效果都好的方法。以及,通常一个 project 开始的时候有很多 engineering 的活儿,可以暂时放一放纯 paper research,等 system 搭起来了,后面就是不断 improve 核心算法,这个时候精力更多放在 paper 这边。
拿我自己举例子,15 年底,我开始 take charge of 一个新的项目,于是 16 年上半年,基本都在为这个项目搭初步的 system,从前端网站到后台数据库,从设备采购到 system infra,从 object detection 到 multi-modal;等系统差不多搭起来了,我在项目工程上就可以花很少的时间,也有 progress 去每月 report,于是 16 年下半年,基本在做 paper,当然 topic 做的技术是将来能 improve 项目 system 一个核心模块的;到了 17 年上半年,系统要开发新的模块,又是花了三个月在项目工程上;再之后直到博士毕业,都是尽量找到 common interest,一个新的模型,对 project 的 system 效果有帮助,亦有大的 paper research 价值。
6.2 new dataset 和 new task 不是 low-hanging fruit
刚读博时候,受周围人影响,很多人都说 release 一个新的 dataset 没有什么技术含量,轻轻松松发 paper 还能赚一票引用,是个 low-hanging fruit。但当我参与到一个新的 dataset 的创建过程后,才发现这是一个非常 tedious 的工作,有很多的脏活累活,很多细节的地方需要考虑。之前 v1 版本 data,可能因为一个细节没考虑好,需要重新 collect 或者 annotate,费时又费钱,经常要迭代好几个版本。所以 create new dataset 一点也不简单,可能比提出一种新方法的 paper,花的时间还要长。
同样,以前以为提出一个新的 task(所谓挖坑)是个 low-hanging fruit,但真正做过之后才知道,也没那么容易的。17 年底,导师让我做 live detection,也就是,只根据过去和当下,监测当下发生了什么事件。我发现之前的工作都没有很好地 evaluate 这个问题,formulation 上有问题,实际做的是 per-frame labeling 或者 early classification,于是决定提出一个新的 task,专门 evaluate detection 本身。投完 paper 信誓满满,结果被 CVPR 拒了。reviewer 们一方面指出了一个我之前忽略的点,另一方面指出对于有的 application,per-frame 就可以够用,不能直接说 per-frame 用来 detection 有问题,而仅仅是对于有的应用场景,per-frame 用来 detection 有问题。为此,要大改 paper 的定位。过程是痛苦的,但正因这个痛苦让工作更加完善,我们才能成长升华,最后这个工作重投 ECCV 被大家认可了。
对于 new dataset 或者 new task 的工作,怎么样才能做的尽量完善,减少迭代次数呢?我的一个经验是,这种项目,尽可能 involve 多的 experienced experts 参与讨论,及时跟大家沟通,collect 不同人的想法。 每个人看问题角度不同,放在一起就会比较完善,群众的智慧是大智慧。
6.3 没那么难
说了没那么简单的事,再说说没那么难的事。
万事开头难,难在迈出第一步。当开始做 survey 入门时,发现这么多文献要看,会觉得难;当想好 idea 准备去实现,发现要准备 data,要实现的东西一步又一步,会觉得难;当开始写 paper,构思完每个 section,发现这么多内容要写,会觉得难……
但实际上,当我们一点一点去完成的时候,会发现完成的速度远比我们想象的快,文献一个星期可以看完经典从而入门,paper 一个星期可以有个初稿,idea 实现起来一个星期可以 coding 完,甚至跑出实验结果…… 其实没那么难,就是耐下性子,脚踏实地,干就完了。
7. 毕业后何去何从7.1 想清楚
一般大家就是三种选择吧:去公司,去创业,去学校。这个问题经常会被归为,想去学术界还是工业界,但我觉得职业本身的区别,可能没有那么重要,重要的是想清楚:
最想要什么?最喜欢做什么?最擅长什么?未来几年,哪个选择能最大地支持自己的需求?
面对不同的选择,第一步要做的,就是想清楚,未来几年在这个新的岗位上,你的最大的需求是什么?比如说(1)急着用钱,要钱多稳定的工作;(2)家庭压力大,未来几年需要个人时间多的工作;(3)做自己喜欢做的事情,并在自己喜欢的事业上有进展。显然(1)的话是去大公司写码;(2)和(3)的话公司和学校都可以,(2)的话去一些老牌的养老型的大公司,或者压力小一些的学校,(3)的话去发展快速 ing 的公司,或者 top 的学校;但如果是(1)和(2),恐怕都不能选创业(特别牛的大佬除外)。
7.1.2. 最喜欢做什么?
人生奋斗一辈子,最重要的还是要开心,只有做自己喜欢的事情才会开心;也只有如此,才能一直一直做下去,做出有影响力的工作。 让自己开心的事情因人而异:有的人喜欢编程,写一辈子代码是最开心的,在大公司经常看到年纪很大,还在写代码做 individual contributor 的,人家就喜欢这个;有的人喜欢开车,去自动驾驶行业最为开心;像我的话,喜欢看视频,拍视频,剪辑视频,所以做和视频理解与生成有关的工作最让我开心。
通常一份工作,都是由各种各样的 component 组成的,并不只是非黑即白的。比如说自动驾驶公司,跟编程有关,跟车有关,跟视频有关,跟上面三种人都关,只要有 common interest,能最大地满足你的需求就行;试想,对于第一种人(最喜欢的事情是编程)来说,让他在自动驾驶公司写代码可以,但是当 VP 做管理或者搞商业啥的,他可能并不开心。而我的话,一路走来,从哥大读博研究视频算法,到 Facebook 搭建视频工业平台,再到业余生活中,拍片子制作视频… 在视频生态链的每个环节,我都很开心。
总之,不同的人,看重的东西不一样,擅长的东西不一样,选择本身并无好坏之分。所有的选择,总有好的一面,也有坏的一面;只要适合自己,都是最好的选择,开心就好。可能唯一要注意的就是,不同时间段,各种影响你做决定的因素的权重是在变化的,年纪大了我们可能会更看重家庭和稳定;有的事情年轻的时候不做,以后可能就没有机会去尝试了;鱼和熊掌不可兼得,需要取舍。
7.1.3. Long-term vs. Short-term
考虑毕业后这几年选什么样的工作时候,一方面想远一点,你的 long-term 事业,或者说可以一直做一直快乐的事情是什么?另一方面,毕业后这几年 short-term 来说,是不是曲线救国,短期做的不一定是你喜欢的事情,但是长远来说对你 long-term 目标是不是帮助更大?
7.2 如何找教职?
目前来说,毕业直接找到教职的难度还是比较大的,很多人会先做个 PostDoc,可以一方面积累新的 paper,一方面积累新的 connection。同时博后期间,可以有更多时间,准备更充分地找教职。
7.3 如何赚大钱?
最快赚大钱的方式就是创业了,当然 new grad 选择这个的比较少,要考虑你有没有时间,精力,资金上的压力和限制?有没有一个好的 business model?作为技术出身的我们,有没有好的商业合伙人,mentor?
另外一条路,最多人选的,就是在公司做 production,升职加薪,最终财富自由的。经常有人问要不要读博?我觉得,如果是想走公司这条路的,其实读两年的 master 可能就够了,save 下来的三年,在公司里面选个发展前景好的组(整个 org growth 快,从而 headcount 多的组),可能升职加薪的速度更快。当然读了博士,手握几篇 paper,是工作能力的证明,找工作更容易,是个敲门砖,否则简历关可能就被刷了;博士大家庭的师兄师姐,做相同 topic 的 peers,都是将来有用的资源;这个问题也很复杂,我这里就不展开聊了。
但是,想走公司一路快速升职这条路的,尽量不要抱着又搞想 research,又想做出大的 product impact,早期公司里都没有用 deep learning 的时候是可以大展手脚的,但公司已经解决了 deep learning 从 0 到 1 的局面后,再抱着这种思路,可行,但可能升职速度不是最快的,尤其在是未来这十年。大佬们总结这是 “拿着锤子找钉子”,更应从 product 的痛点出发,找到最有价值的钉子,而不是最适合你锤子的钉子。
当然 research 对于大公司,一直也是不可或缺的一部分,不光是 branding,吸引人才储备人才;更有一些 long-term, high impact 的难点技术攻关,可能需要 3-5 年长度的持续研发投入,毕竟 product 关注的是短期半年内的效益,很多 high impact 的东西,在半年内看不到价值,但 3-5 年后则有巨大的商业价值;另一种普遍的模式,就是 research scientist 自己,因为喜欢,有搞研究的热情,通常会选择跟学校合作,带 intern 做纯 paper 的工作,然后自己负责将 paper 转化落地到产品里;亦或,公司出数据和算力,学校出人才,合作双赢。
说到升职,再给大家科普一下,比如在 Facebook,硕士毕业是 3,博士毕业是 4,往上升 5,6,到 6 后可以转 manager。朋友打趣说,工业界升职路线就是,技术(engineer)—— 产品(manager)—— 销售(business)-—— 投资(chao gu,划掉,capital)。这个路线将来也是要做选择的,某一天可能你觉得赚的已经够了,没兴趣再赚了,就提前退休养老了。在湾区 plaza,你看着一个中年人,穿着简朴,平平凡凡,但经常可能就是超级富翁……
但如果不退休的话,不管是在学校还是公司,四五十岁估计都是比较 senior 了,需要负责的事儿多,压力大,经常晚上周末要加班;像我导师这种功成名就的,还是时常收到他晚上 1 点,或者早上 7 点发的邮件。当然,有的人退休了又觉得无聊,这就回到开头说的,想清楚,想要什么,喜欢什么,擅长什么了。
8. 杂七杂八Change topic every 5 years
毕业那会儿,导师说他刚毕业来哥大时,师爷跟他说,you need to change topic every 5 years。感觉很有道理。如果在博士开始那会儿,开始做一个 topic,做了 5 年,基本这个 topic 就会饱和了,很难再有大的 impact。这个时间点,差不多刚毕业参加工作:如果还是 research 岗,我们就需要像刚开始读博士一样,重新选一个新的有 impact 的 topic 开始做;如果是转 production,转 business,那本身就是很不一样的 topic 了。树挪死,人挪活,大概就是这个道理。
Work vs. Life
这也是个复杂,需要具体问题具体分析的议题,就不展开聊了。我就简单分享一下,我所得到的一些 advise 和一些自己的浅薄体会。
(1)三选二:还记得博士入学典礼上,院长跟我们分享说:未来几年的生活将由三件事组成,工作 / 学习,睡觉,social / 玩;但是,在某个具体的时间,通常只能三选二,因为时间和精力是有限的。像我自己的话,博士第一学期,以及每段实习期间,选择的是工作和玩,放弃睡觉时间;博士第二学期开始,则是工作和睡觉为主,常常宅家不怎出去。就是按照自己的需求,在每个特定的时间段,在这三者中做出你的选择,对你自己负责,不会后悔的选择,然后该学学,该睡睡,该玩玩。
(2)身体会变的:最近前浪后浪的话题很火,其实很有道理,真的很多有影响力的工作,就是人在年轻时候,精力充沛,琐事不多情况下,才能做出来的。刚来哥大的时候,课业负担和科研任务都很重,还要参加些 social 活动,好几次晚上参加完活动,回到家通宵写代码,7 点半天亮了睡两小时,然后 9 点半啥事没有地去上课。。现在想想那会真的是年轻,现在让我通个宵,第二天工作效率绝对超低。。
(3)做你喜欢做的工作:公司里面经常提到所谓 work life balance,以前我以为这就是对应工作与娱乐,但现在意识到,其实 work 也分 work input 和 work fun,life 也分 life input 和 life fun,其实 input 才是工作,fun 才是娱乐。input 需要我们付出精力,疫情期间注意消毒洗手,这就是 life 里多出来的 input;fun 就是带给我们的快乐和开心,工作中做成一件事,带来的成就感也是 fun。如果要让自己过的更快乐,也就回到上一章说的,尽量做自己喜欢做的事情,增加 work fun 吧。
谈谈灌水
有的时候,经常听到有人评价一个工作,太水了。诚然,有些工作是水,但如果被顶会接收了,我相信它还是有它的价值。有的时候,减一减戾气,多看到事物好的一面,这样我们看这篇 paper 的时间,才没有浪费,而是学到了东西,不是吗?然后,有的新手刚入门的时候,发的第一篇文章虽是顶会,但可能比较 naive,不过只要这篇文章,能给读者带来一些 insights,让人学到东西,我还是支持这样的新手之作的,因为确实积累是需要时间和过程的,中间这样被顶会认可,其实能很好地激励新手去 continue 科研之路。
常怀感激之心
一路上得到很多前辈帮助,非常感激。在来到 Facebook 后,学会心怀感激,感觉是个很明显的公司文化:每个月组里的 all hands 有 shoutout session,让大家在全组面前,表达对工作中帮助了自己的人的感谢;公司有 #thanks hub, 可以给帮你的人写感谢 note,而且这个 note,对方的 manager 会看到;而且,很多时候,感觉是很小的事情,大家也会互相道谢;每次开完会,大家也会互相道谢。简单的一句 thank you 真的可以让人幸福感增加不少,毕竟很多时候别人并没有义务非要帮助我们,这让大家更愿意互帮互助,感觉是个特别好的文化。
庚子年・岁末
Mike 于 旧金山
「后记:惭愧在各位老师、大佬面前班门弄斧了;若是对于有的同学有点帮助,我就很高兴了;但不可避免的,因为时间有限,文章写的粗糙,还请多多担待;因为篇幅限制,有的问题难以讲得完善全面,还请结合自身情况,辩证地借鉴相关经验;或跟您意见不合,全当看小说,寻个乐子罢了;顺祝大家新春愉快,平安喜乐,万事胜意;希望疫情早日过去,世界和平…」
「代码随想录」原创算法手册开放下载!我已经将「代码随想录」中的二叉树、回溯算法、贪心算法、背包问题等等各个专题都整理成PDF,绝对精华,绝对通透!
先预览一下部分截图:
无套路,直接给出下载地址:
http://pan.baidu.com/s/1smqn0f6xhQNV3NAWw61SHg 密码: vjqw