精华内容
下载资源
问答
  • 如何规划自己的人生未来
    千次阅读
    2019-02-02 13:58:47

    自这个竞争日益激烈的时代,人人都想做出自己的一番事业,人人都想成功。不规划自己的人生,自己的未来,谈何取得成功实现自己的人生理想。今天小编就来谈一谈如何规划自己的人生。

    了解认识自己

           老子曾经说过“知人者智,自知者明。胜人者有力,自胜者强。”规划人生之前首先要做的工作就是要对自己有一个透彻深刻的自我剖析与认识。搞清楚自己的优点、不足、兴趣爱好等。问五个问题:我要去哪里?我在哪里?我有什么?我的差距在哪里?我要怎么做?了解别人远比了解自己更加容易,想对自己有一个客观清晰的认识并不容易。

    志当存高远

          燕雀安知鸿鹄之志哉?一个人的志向至关重要,决定他一生的发展。古往今来凡是成大事者,无不有远大的志向。遥想三国,刘备一开始也不过只是一个卖草鞋的,正是有了兴复汉室的伟大志向,才成就了后来一番伟业!如果刘备理想只是做一个小买卖在乱世养家活口,那么想必也不会有后来的三分天下。理想是指路灯,没有了理想就失去了奋斗目标,必将无法成功。

    信念

          有了远大的志向之后,要给自己确立一个坚定不移的信念。家喻户晓的西游记里的唐僧就是一个再好不过的例子了。他立志西天取得真经,不管遇到什么样的危险与困难内心也绝对不会有一丝一毫的动摇。如果是孙悟空一个人去西天取经的话走不了几天就不知道跑哪里玩去了。所以没有坚定的信念就算本事再大也没有用处。

    大战略与小计划

          大战略就是制定一个实现理想的总体方案,不停的按照这个战略计划想自己的伟大人生理想靠近。小计划就算是把这个大战略分成一个阶段一个阶段的来完成。任何人都不可能一步登天,分生小的计划来完成有更有成成就感。比如你决定要考英语四级,那大战略就是不停的学习英语,小计划是就是每天坚持背几个英语单词、做几篇阅读理解。完成小的计划以后也更容易增加自己的自信

    行动

          这是所有步骤中最艰难的一个步骤,因为要求你停止梦想而切实地开始行动。我们知道良好的动机只是一个目标得以确立和开始实现的一个条件,但不是全部。如果动机不转换成行动,动机终归是动机,目标也只能停留在梦想阶段。要想实现人生的终极目标,有两个方面的"陷阱"需要谨慎避免,一个是懒惰,另一个是错误,哪怕是小的错误。懒惰是事业成功的天敌。很多人不息地奋斗一辈子都没有能够完美地实现自己人生目标,更不用说懒惰者了。要想有一个无悔的人生,除了认准目标外,还要集中精力全力以赴。在实现人生终极目标的过程中,难免受到各种妨碍或各种诱惑,任何的闪失或偏差都会使你远离你的既定目标。

    爱情

          爱情是人生规划中必不可缺的一部分。俗话说“一个成功男人背后肯定有一个优秀的女人。”一定要把自己心爱的女人当作人生的一部分规划进来。这样当你成功也好失败也罢,总会有一个人陪在你的身边一起分享你的快乐与悲伤,并且激励着你不断前进,再苦再累的日子也过过的很甜。

    注重长期的发展

          自己未来要干的一番事业要做一辈子,我们不能只注重眼前的金钱与利益。不赚钱当然是不可以的,但也不能只注重金钱。财富往往是伴随着兴趣而生的,把一件事情干的足够用心足够完美的时候金钱自然会随之而来。万丈高楼平地起,平时不断积累经验,慢慢的你会发现离自己的目标也来越近。

    8

    不断地修正和更新人生职业目标

          经过深思熟虑定下来的人生目标自然不会轻易说变就变,要改变和修正的是实现大目标里的小计划。在经过不断的学习和有一定的人生经历后人会变的更加的成熟,思想上也会有很大的进步。及时调整以前不够完善的小计划能够更好的实现目标,要知道这个世界上从来没有一成不变的东西。

    注意事项

    • 不要因为地位卑微而自弃,当压力重重袭来,才能迸发出巨大的能量

    • 做一个有心人,经常思考自己的前途,策划每个阶段的发展模式,更不要因为白白虚度了几年光阴 而放弃追求。当一个人开始有所计划的时候,他永远都不会晚!

    • 善于借助他人的力量,建立良好的人际关系,为将来发展时得到别人的帮助打下良好基础

    • 如果喜欢的话就请投上你们珍贵的一票吧,小编在此十分感谢!

    更多相关内容
  • 也许,我是也许,未来我会离开这个程序员岗位,但不是在今天,也许未来我会觉得开发干着太卑微了,每天就是与机器打交道,但也不是在今天。 至少现在,我既然做了,那么就先把这件事情给做好,接受生活带来的挑战...

    大家好,我是 Chocolate。

    ​就在本周,终于达成了一万粉的成就,虽然不是公众号哈,但说不定公众号也会有的,在 CSDN 这个社区我应该算是写了比较久的了,今年是第 4 年了,现在社区也在不断改善,看着看着一批优秀的人加入,他们的粉丝数都好几万几万的。

    部分博主可能是今年年初才开通的账号,内容也许就 30-40 篇样子,粉丝数却好几万,属实羡慕,不过他们文章内容和运营思维或许不错。

    而我当初最开始没想那么多,就是总结大学里的一些学习笔记,所以我写的文章数量有很多,而且会比较广泛,不比一些新人博主,以面试总结或者某个技术领域的知识专栏来写。

    在过去那会 CSDN 推荐还没现在这么大扶持,过去写文章基本上没啥流量,虽然过去我并不知道这些哈哈哈,就想着备份笔记来着,​别人看到就看到呗,能够帮助一下也不错。

    在羡慕的同时也驱动自己得多思考多总结啦,还是比较开心能​突破一万粉。

    ​一万粉就来聊聊对于自己未来工作内容的考虑吧​:

    这篇文章是对于之前文章 工作半年前端的一些思考 | 共勉 收尾的后续哈。

    关于珠海之旅的文章排在下期哈(照片正在精心挑选中),没想到上一篇文章 这个 bug,硬是让我折腾了一周 阅读反响不错,还挺多人阅读的,这里就引用 @兴趣使然的草帽路飞 大佬的一句话吧:

    技术是大家努力的目标,生活和成长是大家前进的历程呀,多分享一些鸡汤吧。

    日常闲聊

    对于我自己而言,平常也喜欢看看优秀的人成长历程,我觉得能够“偷时间”,学习他们的一些方法,尤其是当我感觉自己有点迷茫,不知道自己该干啥的时候,看看大佬们过去的一些想法与思考,我有时候会有一定的触动,也鼓舞我更有动力,总之,受益很多。

    那么,我也希望我目前乃至今后的内容也能鼓舞到大家,通过分享一些我的工作与生活历程,总结自己现阶段的想法,也是一个时间节点,当这些许多个成长的节点联系起来,或许就是大的进步了!

    对未来工作内容的考虑

    回归主题,本文就来聊聊自己在当前公司对于未来工作内容的一些考虑吧。

    首先,我是在一个运营部门,这个部门会有三大小组,一个小组是有由一些产品运营经理组成,还有一个小组是解决方案相关的,比如售前售后咨询,架构师等等,而我在的小组就是开发组,比如前端后端呀,主要是给其它两个小组提供技术上的服务。

    想起那会在秋招过程中遇到的一个问题,当时还和面试官探讨了对于工作中业务和技术方面的选择,当时面试官回答说在我们这边,技术是服务于业务的

    而在运营部门,会更多的与产品还有设计打交道,前端也算是处于设计与后台的中间环节。对于前端的话,也得培养一定的产品思维,产品提及的需求有时会考虑不足,我理解的开发并不是说给了具体需求去做,达到效果就好了,比如某些页面可以考虑下是否可以做成配置项,某些做法是否可行,也可以主动去提及讨论。

    因为有时候会觉得产品提的需求感觉不太合理,虽然能够实现那个效果,但感觉有时候会花费很多时间或者可以但是没必要…(说出来可能不太好,小声 bb)

    学会与他人沟通也是在工作中成长的一部分,接下来,是我在工作作为一位前端开发对于未来发展的想法。

    首先,来到这家公司,在前辈们的介绍以及这段时间工作,能够感受到对于技术的沉淀,技术方向都是比较前沿的。

    因此,我考虑的会有几个方向:

    第一点,继续研究前端开发:前端发展也是越来越火热,构建工具迭代,框架架构等变化,可以继续研究这些原理,对于公司技术升级是比较有帮助的。

    最近也收到通知会成立一些技术组,那种专门调研一些新技术啥的,还有为公司提供一些技术方案的小组,我觉得这个还是比较看重个人对于技术上的沉淀的,还是得有好几年的开发经验才行。

    因此,我想着如果继续研究这块,说不定以后就是小组成员之一了。(加入小组也是有比较不错的福利的,对于晋升啥的肯定是有帮助的)

    第二点,锻炼产品能力,能够成为一个既懂开发又懂设计的产品,专注用户体验与交互设计,很能体现前端的价值。

    我觉得这个可以一试,就拿这个场景举例吧,开发人员觉得产品这个设计不合理,如果我是产品应该这么想,那么既然决定不了,那就由我自己来做产品好了…

    开个玩笑哈,之前听公司一位高级产品经理和我们交谈过,也说明了公司比较想招,但又比较难招既懂技术又有产品思维的产品,这是比较难得的,因为这一批人大多比较优秀,许多都是原本开发逐渐转岗来的产品。

    那么,锻炼自己的产品能力,说不定会在以后多一份创造力呢?

    第三点, 全栈方向,公司的技术算是业界前沿,技术说话,在这里能够涉及的领域挺多的,作为一名前端来说的话,也得掌握后台相关的技术,这样对于技术方案的选型挺有帮助,也能在工作中遇到问题及时解决,偏向前端地架构师,这个或许是大家在校招面试的时候会提及的吧,比如未来考虑就是当架构师,而往往在工作之后现实又会与当初想法不一样。

    结尾

    对于我自己的话,希望能够在公司先做好本职工作,至少我的前两年会专注于技术层面,保持一个积极向上的心态,自我驱动。

    也许,我是说也许,未来我会离开这个程序员岗位,但不是在今天,也许未来我会觉得开发干着太卑微了,每天就是与机器打交道,但也不是在今天。

    至少现在,我既然做了,那么就先把这件事情给做好,接受生活带来的挑战,星辰大海等着我探索。

    本篇文章就到此结束啦,每隔一段时间写写随笔,如果你有触动的话,可以帮我点点赞,这样我就知道有一批默默关注着我的小伙伴啦。

    喜欢我的文章可以点点关注,下次我们还能遇见,关注就是最大的动力啦。

    我是「一百个Chocolate」,一位狮子座的程序员,坚持写博客的第 4 年,座右铭:学如逆水行舟,不进则退。

    自从上次珠海玩水回来之后,就感冒了,这一周学习时间会比较少,随笔也就许久未更新了,周末就多更一更,逃~

    展开全文
  • 未来5-10年计算机视觉发展趋势

    千次阅读 多人点赞 2020-05-21 09:35:50
    为了进一步推动计算机视觉领域的发展,CCF-CV组织了RACV 2019,邀请多位计算机视觉领域资深专家相关主题的发展现状和未来趋势进行研讨。我们将研讨内容按专题实录整理,尽最大可能以原汁原味的形式还原观点争鸣...

    未来5-10年计算机视觉发展趋势

     

    https://mp.weixin.qq.com/s/al58JbrJbVQabdE15Ca-8g

     

    来源:CCF计算机视觉专委会

    引言

    计算机视觉是人工智能的“眼睛”,是感知客观世界的核心技术。进入21世纪以来,计算机视觉领域蓬勃发展,各种理论与方法大量涌现,并在多个核心问题上取得了令人瞩目的成果。为了进一步推动计算机视觉领域的发展,CCF-CV组织了RACV 2019,邀请多位计算机视觉领域资深专家对相关主题的发展现状和未来趋势进行研讨。我们将研讨内容按专题实录整理,尽最大可能以原汁原味的形式还原观点争鸣现场,希望有助于激发头脑风暴,产生一系列启发性的观点和思想,推动计算机视觉领域持续发展。

    本期专题为“未来5-10年计算机视觉发展趋势”。各位专家从计算机视觉发展历程、现有研究局限性、未来研究方向以及视觉研究范式等多方面展开了深入的探讨。

    主题组织者:林宙辰,刘日升,阚美娜讨论时间:2019年9月27日发言嘉宾:查红彬,陈熙霖,卢湖川,刘烨斌,章国锋参与讨论嘉宾[发言顺序]:谢晓华,林宙辰,林倞,山世光,胡占义,纪荣嵘,王亦洲,王井东,王涛,杨睿刚,郑伟诗,贾云得,鲁继文,王亮文字整理:阚美娜,刘日升

     

    开场:山世光、林宙辰

    山世光:上次计算机视觉专委会常委会上,在谭院士的倡议下这次RACV尝试一下相对比较小规模的、以讨论未来与问题为主的这样一种形式。这次的RACV希望所有的发言人,都不是讲自己的或已经做的工作,而是围绕着每一个主题讲一讲自己的观点和看法。大家在发言的时候可以无所顾忌,可以争论。我们会有记录和录音,但最后的文字会经过大家的确认之后才发布。

    林宙辰: RACV是希望大家有一些深入的研讨,互相挑战,以达到深入讨论的目的。第一个主题是未来5-10年CV的发展趋势。希望我们这次研讨会尤其是CV发展趋势这个主题能够类似达特茅斯会议,产生一些新的思想。

     

    嘉宾主题发言

    1. 查红彬

    未来五年或十年CV的发展趋势是很难预测的,有时候想的太多,反而容易跑偏。所以,今天我主要从自己认识的角度说说后面我们该做些什么样的事情。

    首先,说说什么叫计算机视觉?我这里给了一个比较严格的定义,即使用计算机技术来模拟、仿真与实现生物的视觉功能。但这个定义并没有将事情完全讲清楚,这里把计算机和视觉两个概念揉到了一起,但到底什么叫计算机、什么叫视觉并没有说。什么叫计算机大家是能够公认的。但什么叫视觉,其实在计算机视觉领域里还没有一个大家都认可的定义。

    我们不妨先看看现在计算机视觉领域里有哪些研究内容。先来看看今年ICCV各个分会的关键词,其中最大的几个领域是deep learning;recognition;segmentation, grouping and shape等。这些领域是视觉吗?说是图像处理、分析与理解也能说的通。关键问题在于,我们讲来讲去到底是不是真的在做视觉?这点有必要再想想。举个例子--人脸识别:人脸识别现在能识别大量的人脸图像与视频,几十万、几百万人都能够识别。它是用大数据驱动的方式来达到目的的,而且是离线学习的。但识别算法在实际应用中对光照、遮挡等的鲁棒性比较差。我们回过头看看人的人脸识别有些什么样的功能呢?我们人识别人脸的功能很强,但只能识别很少数量的人脸,如亲戚、朋友、同事等,超过一定范围之后人是很难识别出来陌生人的人脸的,我们能看到有差别但分不清谁是谁。第二个,人是在生活情景当中进行主动性的样本学习。我们之所以能够认识亲属,是因为我们在日常生活当中与他们生活在一起,建立了各种各样的关系。我们主动地用样本来学,利用了不同层次的特征。所以,尽管我们识别人脸的数量少,但是我们对抗干扰的能力很强。所以我觉得这是人的人脸识别和现在机器的人脸识别之间的差别。也就是,人的视觉中的人脸识别有它明显的特点,它能很好地应对现实环境中的视觉处理任务。

    那么现实环境中的视觉处理应该考虑哪些因素呢?我们有计算机、机器人这些智能机器,同时还有其它两个关键的部分。第一个部分是要通过视觉这个接口来同外部世界建立联系,同环境进行互动;第二个是我们讲视觉的时候,生物的感知机理给我们提供了很多依据。这其中,我们要应对的是现实环境的开放性,以及三维世界的复杂性,我们要面对场景当中很多动态的变化以及层次性结构的多样性。


     

    另一方面,生物的感知机理有什么呢?它是一个学习过程,但这个学习是柔性的,并不是我们现在这样的离线学习并固定的方式。我们现在的机器学习用起来就只是测试。但我们人的学习中测试和学习过程并不是严格可分的,它有结构上的柔性,也需要层次化的处理。此外,它有主动性,能够根据它的目的和任务主动地进行学习。同时,我们日常生活当中所需要的是一种时序数据的处理,是一种增量型的处理过程。从这样的角度来看,我们将来的计算机视觉研究需要考虑把真实环境的特点与生物的感知机理融合进来。这样就会更接近“视觉”这个词本来的意义。

    那这其中有哪些事情我们可以去考虑呢?首先是学习的问题。现在,深度学习用的很多,但它只是我们人的模式识别当中的一部分功能,对于视觉研究来说,还有很大的挖掘空间。也就是说,我们考虑计算机视觉中的机器学习的时候,不仅仅是深度,还要把网络的宽度、结构可重构性与结构柔性结合起来。我们要把不同的结构层次研究明白,同时把不同模块之间的连接关系考虑到网络里来。我们人的大脑就是这样的,大脑从视觉的低层特征抽取往上,它具有很多不同的功能性结构在里面,而且这个功能性结构是可塑的。其次,除了通常讲的识别功能之外,我们要把记忆、注意等一些认知机制通过学习的方式实现出来。目前已经有一些这方面的工作了。将来这些机制在计算机视觉里面可能会作为学习的一个核心目标,融到我们现在的整个体系当中。另外,还应考虑通过环境的交互这种方式来选择需要的样本进行自主学习等。所以,这种学习方式上的结构柔性应该是我们追求的一个目标。

    另外一点,我们现在的计算机视觉还比较缺乏对动态场景的处理。我们现在很多工作是在静态场景里面,像人脸识别也是在静态场景里面来做。尽管有时候我们用视频来做,但并没有深入考虑整个场景的动态特性。现在动态目标的跟踪、检测、分析、行为的识别与理解等这些工作都有在做,但还没有上升到一个系统化的水平。我们也应该把更多的注意力放到像移动传感器的定位、三维动态场景的重建与理解等一些事情上面来。所以,我认为动态视觉是未来的另一个重要研究方向。

    还有一个是主动视觉。主动视觉是把感知与运动、控制结合起来,形成一个闭环。计算机视觉里很早就有一个研究课题,叫视觉伺服,是想把控制和感知很好地结合起来。我们的感知一部分是为任务目的服务,另外一部分是为感知本身服务,即从一种主动控制的角度来考虑感知功能的实现,以提高感知系统的自适应能力,迁移学习、无间断学习或终身学习等都可以应用进来。此外,还应当考虑常识、意识、动机以及它们之间的关系。也就是说,我们要把视觉上升到有意识的、可控制的一个过程。


     

     

    如果我们把前面提到的时序与动态处理等结合起来之后,应该更多考虑在线学习。我们不应该全部依赖目前这种离线学习、仅使用标注数据,而是应该在动态的环境当中,根据运动与动态数据流本身的特性来做预测与学习。这样可以把前面提到的记忆与注意力等一些机制结合起来,最终实现一种无监督的在线学习系统。这样一来就能把现实环境中的一些特点与变化考虑进来,形成一套新的理论。而这个理论,跟现在的深度学习、图像处理分析与理解等相比,会更接近我们讲的视觉这个概念。


     

    2. 陈熙霖

    预测可见未来是一件风险极大的事,对于这个命题作文我只能说个人的观点。我更愿意从历史的角度来看这件事情。首先,我们回顾一下计算机视觉的发展历程。我把过去几十年的过程分为以下几个阶段。第一个阶段我称之为启蒙阶段,标志性的事件是1963年L. Robert的三维积木世界分析的博士论文(Machine Perception of Three-dimensional Solids)和1966年夏天Minsky安排几个本科生做的手眼系统。这个阶段对计算机视觉的估计过于乐观,认为这事太容易了,很快就可以解决,正如S. Papert的报告中写到的“The summer vision project is an attempt to use our summer workers effectively in the construction of a significant part of a visual system”。启蒙阶段的重要启示就是发现这个问题远比想象的困难。

    从七十年代初期开始进入第二个阶段,我称之为重构主义,这是以D. Marr的视觉框架为代表的。这个框架在Marr的总结性著作“Vision --A Computational Investigation into the Human Representation and Processing of Visual Information”中有很好的阐述。其核心是将一切对象恢复到三维表达。其基本过程是:图像à基本要素图(primal sketch)à以观察者为中心的三维表达(2.5D skecth)à以观察对象为中心的3D表达。这个过程看起来很漂亮,但却存在两方面的问题——首先是这样的过程是否是必须的,其次是如果都试图恢复三维,这样不论对感知测量还是计算是否现实。我个人认为三维在计算机视觉中的作用也是有限的。这个阶段的工作也导致了上世纪90年代初对计算机视觉研究的反思和争论。有兴趣的各位可以看看1991年CVGIP: Image Understanding第53卷第1期上的讨论文章。

    第三个阶段我称之为分类主义,反正只要能识别就好,不管白猫黑猫抓住老鼠就好。人脸识别、各种多类物体识别等都在这个阶段大行其道,研究者们采用各种各样的方法,从研究各类不变算子(如SIFT、HOG等)到分类方法(如SVM、AdaBoost等)。这个阶段推进了识别问题的解决,但似乎总差最后一公里。

    最近的一个阶段我称之为拼力气比规模阶段,其核心是联结主义的复兴,这得益于数据和计算资源的廉价化。这类方法在各种分类问题上似乎得到了很好的解决。但这些方法背后缺少了很多研究需要追求和思考的东西,过去我们都在讲找一个美妙的办法。如同我们希望瞄准目标,以最小的代价击中目标。现在这类方法更像是炮决,今天我们似乎进入了这样的炮决时代。

    那么未来会是怎么样的?从前面的发展历史来看,计算机视觉经过几十年的发展进入了野蛮人的时代。什么叫进入野蛮人的时代了?今天大家说人工智能热,可几乎所有拿来验证人工智能的例子都是和计算机视觉相关的。而今天很多所谓的计算机视觉研究就是拿深度学习训练一个模型,所以说这是个野蛮人的时代。那么野蛮人时代有什么问题?我们看上一个和野蛮人时代相关的历史——罗马帝国。罗马帝国是被野蛮人消灭的,罗马(更具体的是指西罗马)从建国到被灭亡,中间大概有500年。而且西罗马被灭了以后,还有一个叫神圣罗马帝国,按照尤瓦尔·赫拉利《人类简史》上的说法后者既不神圣也不是帝国。当年罗马帝国也是所有的东西都讲究漂亮美丽——斗兽场、引水渠以及打到哪修到哪的条条大路(通罗马)。计算机视觉早年的研究者也是天天追求漂亮,要数学上美、物理上美等等,就和当年罗马帝国一样。现在也真的和罗马帝国一样了,我们遇到了蛮族人。这个蛮族人是谁?就是深度学习,和过去罗马人关心文明,蛮族人关心财富一样,在计算机视觉的研究上,我们也面临着如何选择的问题。当然,历史也会惊人地相似,蛮族人占领罗马以后也不是什么都没干。后来他们建立神圣罗马帝国,到后来导致文艺复兴。今天计算机视觉的研究在我们看来也需要一个文艺复兴。什么是我们的文艺复兴?我们当下的计算机视觉就处在这么一个需要思考的时期。而不是一味地倒向深度学习。现在有些研究走向比蛮力的阶段,就跟打仗比坦克、大炮的数量一样,靠拼GPU的规模和计算能力。下一步,我们需要往哪里走?这是现在这个野蛮人时代需要思考的。

    预测未来五到十年这是一个风险极大的问题。所以我只能通过前面讲的历史和我的一点思考谈谈对未来的一些可能。

    首先,一个值得关注的未来趋势是从识别到理解,套用古人的说法就是从知其然到知其所以然。过去十多年计算机视觉在识别方面取得了显著的进展,但是现在的识别远远不是我们所期望的识别。例如你教它识别一个杯子,它不会想到杯子和水有任何关系,不会想到杯子有任何的其他功能,因而完全是填鸭式的。今天的识别远远不是可解释的。谈到可解释,我认为在计算机视觉领域的可解释应该是对结论的解释,而不是解释网络行为,前者应该更有价值。那么要解释这一切靠什么?应该是靠某种形式的逻辑关系,这种关系可以通过语言表达,语言应该起到桥接作用。这里的语言和自然语言有关系也有区别,可以是独立于我们自然语言的,是机器自己对世界理解的语言。换句话说,我们把世界的物体重新编码起来,然后把物体和物体,物体和环境的联系建立起来就好。有了这样的从基本属性到对象直至环境的关系,就有可能实现从知其然到知其所以然。所以我觉得未来最重要的趋势就是从无需知识支撑的识别到需要知识支撑的理解,或者说从单纯的Bottom-up的识别到需要知识启发的具有反馈、推理的更广义的计算机视觉,这也是我自己这几年特别关注的研究方向。

    其次,值得关注的一个趋势就是对空间感的有限需求。关于为什么动物需要视觉,主要是两方面的需求——首先要保证寻找食物和不被天敌吃掉——识别能力;其次是保证不会因为对空间的错误判断而造成意外伤害(摔倒或者撞击等)。视觉最重要的就是解决这两件事情。那么为什么讲对空间感的有限需求?我们的三维空间感,只是在相对比较近的时候,才需要很精确。在距离稍远一点的情况下,大多数时候其实不关心精确的空间位置,而可能关心一些如遮挡、顺序等关系。另外,如果你试图把一切对象都用三维来表示的话,不管是从计算的代价还是从可实现性来讲都很难。试想恢复一个一米远处的对象,可以做得很精确,而对于一百米或者更远的对象,如果希望保持相同的量化精度,对深度值的量化就会成问题。这就是说的有限需求的含义,但是我觉得这件事情一定很重要,特别是在较近的时候。

    第三个值得关注的趋势就是不同模态的结合,即所谓聪明合一,人的聪明离不开耳聪目明。这里的模态不仅仅限于视听觉,还可以包括不同的二维、三维的视觉传感信息等。生物的感知从来不是仅靠单一模态的。在多模态中需要解决好的一个问题是不同模态间的对齐与因果问题。如果同时存在从多个模态获取的信息,时空对齐是非常重要的挑战。与时空对齐相关的另一个问题是因果关系,虽然我们希望获得因果,但绝大多数时候得到的仅仅是关联,两个现象之间可以是第三个因素导致的,如同云层间放电导致电闪和雷鸣,这两件事是关联的,但绝不是电闪导致雷鸣。在绝大多数情况下我更倾向于去探索关联而不是因果,特别是在数据驱动的模型下,离开机理试图发现因果是困难的。但在未来的计算机视觉研究中不同模态的结合和关联是一个重要的趋势。

    第四个需要关注的趋势是主动视觉,所谓主动就是在视觉系统中纳入了反馈的机制,从而具有选择的可能。视觉如果仅仅以独立的形式存在,则不论是从感知所需的精度、分辨率以及处理的能力都需要成指数规模的增加,生物视觉由于有了主动选择的机制,因而在视野、分辨率、三维感知与能量消耗方面得到了很好的平衡。当计算机视觉的研究不仅仅是为了验证某个单一的功能时,上述生物视觉的平衡一样需要在计算机视觉系统中考虑,实现从感知、响应到行为的闭环。从被动感知走到主动的感知,这是从算法到系统的一个重要趋势。将视觉的“看”与“响应”和“行为”构成广义的计算机视觉系统,通过有主动的“行为”进行探索,实现“魂”和“体”的合一。这对视觉应用系统是至关重要的——例如一个经过预训练的服务机器人,可以通过在新环境中的主动探索,实现整体智能的提升。所以我认为这是未来视觉应用系统的重要趋势。

    我没有讲具体的算法哪些是重要的。我想说一件事情,就是关于深度学习,我觉得未来深度学习就会像今天计算机里看到的寄存器、触发器、存储器乃至CPU一样,成为基本构件。关于趋势,延续前面的划分,计算机视觉将进入一个知识为中心的阶段。随着深度学习的广泛应用,计算机视觉系统将不仅处理单一任务。在复杂视觉任务的处理中,主动视觉将起到重要的作用。通过主动的响应和探索,构建并完善视觉系统对观察世界的关联(因果)关系并借此理解空间对象的时空关系、物理属性等。这算是我对今天讨论问题的个人预测。


     

    3. 卢湖川

    刚才前面两位老师已经提纲挈领的提了一些观点,我可能有一些和他们是相似的。

    从理论方面来讲,我觉得目前深度学习的理论好像有点走不太动了。具体来说,从Backbone的发展来看,网络结构的设计,基本上没有更多新的内容。另一方面,某些领域还是比较热门的,发展比较快。比如说自然语言处理(NLP)和视觉的结合,这几年取得了很多进展,特别是聊天机器人等相关的实际需求,驱动着VQA等技术都有较大的进展。尤其是基于图的方法和视觉结合在一起可能会越来越热。以知识图谱为例,如果知道一些先验知识,知道一些知识图谱的话,可能会更好的去理解图像或者视频。例如,给定一幅图像,里面有一只猫和一个鱼缸,猫用爪子抱住了鱼缸,还盯着鱼缸里面的鱼,如果我们知道知识图谱里猫和鱼的关系, 我们就能很好的描述出猫想吃鱼缸里的鱼,从而更好的帮助视觉理解图像或视频里目标和目标之间的关系。所以说,我觉得基于图或图谱的方法和视觉结合在一起未来几年会有更大的发展。

    第二方面,我觉得三维视觉会继续快速发展。从前两年开始冒头,到现在已经较为火爆,不仅仅局限于三维场景重构等领域,最近基于三维视觉的检测与分割等都有一些优秀的工作涌现。随着基于各种各样的嵌入式设备和手机端的需求,像华为手机已经有三个背面的摄像头,甚至多个摄像头(它的三个摄像头的定义,一个是超广角的,一个是广角的,另外一个是高精度的摄像头,不同的分辨率,可以更多的去模仿人的视觉方式)。由于人观测世界本身是三维的,所以移动端的这种大量的应用会牵引着三维视觉在这方面越来越走向更深入的发展。

    第三方面,最初我们提到深度学习时,通常都会说手工设计的特征(handcrafted feature)有各种各样的不好,而深度学习是一个端到端的网络。实际上,深度学习的网络结构也是手工设计的(handcrafted)。目前,网络结构搜索NAS兴起之后,我觉得在这方面可能会有更多的一些改善,能够把一些常规的操作,包括一些常规的模块都融入进去,来不断优化网络结构而不是手工设计(handcrafted design)。我觉得未来几年在这方面,甚至包括网络结构的压缩和裁剪方面都会有更多的进步。

    第四方面,深度学习兴起之后,我们看到诞生了一大堆的数据集,并且都是有ground truth标注的数据,在其驱动下,深度网络达到了一个比较好的性能,目前绝大多数的数据集在性能方面基本上也趋于饱和了,但是距离实际问题仍然有较大的距离。另一方面,人对世界的认知基本都是小样本学习的结果,和目前的大数据驱动的模式不太一样。所以能否将当前大数据驱动的方式和人参与的方式结合起来?现在也有很多这样的论文来研究人主动参与的或者是human in the loop的学习方式,可以把人对ground truth的主动标记结合起来,引导快速的学习,甚至把性能提高到一个更高的高度。

    第五方面,视频理解在前几年开始有初步的发展,特别是到这几年有更多的需求和深入的趋势。因为现在基于图像的所有任务做到一定程度之后可能都做不动了,或者说没有更多的花样了,那么对视频的各种理解越来越多,包括视频摘要、视频场景分类、广告识别、台标识别等等,很多这方面的应用,我觉得未来几年会有更长足的发展。

    我觉得在主题(topic)方面,未来会有更多的发展领域。随着刚才陈老师说到野蛮人的时代来了,大家参与视觉研究的热情很高,不光是学术界,产业界对这种需求也是非常巨大的。因此我觉得目前深度学习领域,视觉会在各个行业纵深发展。举个例子,这两天有一个公司提出这样的一个需求,即鞋印踩上去之后,希望能识别是哪个犯罪嫌疑人来踩的,这个就是足迹识别。进一步,他们想通过这个足迹来判断这个鞋的鞋面是什么样的,是什么牌子的。然后通过这些线索进而去库里搜索比对,搜索完了之后,再去视频里面去找犯罪嫌疑人,即穿这种鞋的人到底是谁。这个过程中,一步一步的从源头开始到后面,形成了一系列的视觉问题,行业的这种纵深发展需求是无限巨大的。视觉里面还有很多之前没有想到的事情在不断进步,两天前我参加了工业机器人展,看到有一个捡包裹的机器人。我们都知道快递小哥要送了一大堆包裹,各种各样的包裹都有,能否在包裹车拉来一车包裹后,让机器人去分类呢?我在展会上看到就有这么个机器人,它会自动的去识别是什么样的包裹,而且知道它的三维的曲面是怎么样,因为包裹放的角度都完全不同,它会调整机械臂,适应包裹的三维曲面的法线方向,去吸附它。我感觉在不同行业实际需求下,像分割、三维建模等视觉技术都会快速在各个行业里得到深入的发展。

    另外,我觉得在医疗图像方面也会有很大的进展。医疗图像现在更多的是各个疾病的检测。昨天跟一个医疗单位在一起交流,他们提供了一个很大的平台,它的最终目标是通过病人的不同模态的信息,来最后综合判断病人到底是什么样的病。不仅仅是关注医学影像信息的,还有一些其他的一些检查结果,其实是一个跨模态的融合,包括图像标注、病案标注等等,他们都使得医疗图像未来和视觉的结合会越来越紧密。

    目前5G不光是速度快容量大,它其实给计算机视觉AI带来了一个更广阔的前景,特别是无人车方面,刚才几位也提到了三维的地图等。跟中国移动交流了之后,发现他们的高精度地图,可以通过5G带宽实时传输,是可以看到马路崖子这种厘米级的精细度。所以我觉得5G+AI会为我们视觉相关领域的发展带来巨大的机会。以上就是我对未来5-10年视觉发展趋势的一些理解。 


     

    4. 刘烨斌

    我主要围绕三维视觉、虚拟现实和人工智能的发展谈点想法。虚拟现实是2016年火了之后一直发展比较平稳。2018年XISHUJI有过关于虚拟现实的重要性的指示,虚拟现实技术改变了未来的交互方式,主要是这种人与环境、人与人之间的交互方式可能会变得更加自然简单,并且取代键盘、手机触屏等现有的功能。

    三维视觉的趋势是做视觉信息的重构,提供三维的内容给虚拟现实,这个是三维重建,三维虚拟现实通过真实渲染能够产生很多数据,为视觉问题服务。很多视觉问题皆有数据驱动,数据如何得来,越来越多的部分时通过三维引擎来得到。计算机视觉的研究对象有好几类,室外的、室内的、包括人体人脸还有手,还有一些医学和生命对象。以人为本是计算机视觉的核心,所以我主要以人作为视觉研究对象,举例说明计算机视觉的发展趋势。

    从人为研究对象的角度,虚拟现实有三个目标,也即三个I,一个Immersion,一个Interaction,一个Imagination。三者都是虚拟人(AI、机器等)和真实人之间的作用关系。首先,虚拟人在视觉外观上是真实的,未来的虚拟人不管是真实做出来的机器人还是存储在计算机中的,都有逼近真人的发展趋势,使得交互更加友好。而这个目标,本质上就是人体的三维重建。第二个要素是人机的交互,虚拟人一定要能感知真实人的行为,包括手势识别,行为识别,情绪等这样的一些理解。最后,虚拟人需要对场景有反应,能够智能化,他能够根据你的行为智能地做下一步的处理,保证产生一个真实的虚拟人。

    总体来说,虚拟现实的智能建模技术被列为新一代人工智能发展规划里的八大关键共性技术,重点突破虚拟对象智能的行为建模技术,提升虚拟现实中智能对象行为的社会性、多样性、交互逼真性,实现虚拟现实和增强现实等技术与人工智能的有机结合和高效互动。上述定义中的重点是行为建模,行为必须是接近人的智能的行为,才能有交互的逼真性等等。围绕这个人体的建模,目前的目标一个是要精准的重建,第二是要规模化的采集,第三是要便携式(手机单图像也能做),第四是速度足够快,能够响应交互的要求,第五就是现在一个大的发展趋势,建模的结果含有语义信息,即语义化建模,包括服装,人脸,头发等。最后第六就是智能生成,即重建结果能真实动画展示。现有的三维视觉重建技术很难满足这六个方面的要求,所以围绕这些目标还有很多研究需要做。

    人体重建主要目的之一是全息通信。这里展示微软做的holoportation系统,它实现实时的,多相机下的人体动态三维重建。但这个系统的缺点是,它要求具有主动光,导致系统复杂度高,实时性和便捷性成为矛盾。实现实时高精度三维动态重建,也是未来的一个学术研究趋势。我们研制的单个深度相机实时的重建,虽然速度和便捷性都趋于完美,但精度还有待提高。单图像人体三维重建,虽然现在的质量还不算完美,但我觉得这是一个很实用的技术应用趋势。通过单个图像我们就可以来简便地重建它的三维模型,未来肯定是能大放光彩的。单图像人手动态三维重建,通过单个RGB监控相机就可以来实现实时性,可以看出三维重建输出了语义信息,已经取代了传统二维计算机视觉识别问题成为发展趋势。

    服装产业占据国民生产总值的6%,数字化服装是一个非常重要的计算机视觉应用之地。这个是展示我们最新做的一些事情,通过单个视频,可以网上的视频,就能通过语义的建模来实现比较高质量的服装三维建模,对一些VR、AR都可以应用,它是通过对人体和服装的解耦,语义信息的加入,包括光照和纹理的解耦来实现。这种东西未来可以产生一些应用,包括改变体型,包括增强现实的模拟,右边就是一个互联网视频的重构,它可以改变服装的颜色等等。我觉得这种便携实时的三维重建的趋势就是从低层次的三维建模,包括体素的、网格的,逐渐走向高层次的三维建模,包括部件级的重建、物理信息分离、感知物理动力学、特征空间的提取。这些高维信息能够智能地建模和生成,响应环境,控制和预测。包括图形学里做的一些研究,好玩的比如能让一个人去动的虚拟对象的这种物理的约束,包括我们自己去爬山这种增强现实的技术也会引入进来,把物理、智能响应引入进来。

    最后再谈谈更有广泛意义的一些动态三维重建问题。例如,医疗方面的比如外科手术的术野场景的三维感知,就是个非刚性复杂动态场景的三维建模问题。这是展示肝脏手术的视频,能够动态跟踪它的形状,三维扫描的CT可以在动态的场景下实时非刚性映射,辅助医疗和手术。还有就是在生命科学领域的动物行为三维重建,我觉得动物是未来视觉的一个很大的可以应用的点,我们叫计算行为学,也叫神经行为学。它研究的是行为跟神经活动的映射关系,通过采集动物行为数据来进行分析。行为学上对人进行分析非常难,因为人的基因差别非常大。但对于动物来说,可以做到每个小鼠基因都是一样的,像譬如在猪、猴子上也比较容易控制一些其他的差别的因素,所以对医疗,包括基因控制都会有帮助。在Nature子刊、Nature methods、Neural Science上都有一些相关的文章。它这里面其实有很多问题,包括群体对象自然环境下的交互,非刚性的捕捉,高层语义检测,互遮挡三维恢复,时间序列分析,有很多研究发表在Nature上。动物行为三维重建研究趋势就是希望动物更加自由地在实验环境里去生活,被记录,药物干预后提早发现行为差别。这样的研究还是很多的,包括可以提取维度更高的特征。我们也是在做这样一些研究,这里面有四个小猪,有两个是有渐冻症的,我们通过多视点拍摄,希望重构三维小猪的动作,通过重建动作来识别渐冻症小猪的行为特点,对未来的基因调控和药物治疗带来帮助。


     

    5. 章国锋

    几位老师已经从计算机视觉大的层面对未来5-10年发展趋势做了展望,我从我熟悉的三维视觉和AR方面对未来5-10年的发展趋势发表一下自己的看法。

    我的研究方向主要是SLAM,所以我就先从SLAM的角度做一些发展趋势的展望。我们都知道视觉SLAM是很依赖特征的,未来SLAM技术的发展趋势必然会从以前的底层特征比如点、线、面,向高层特征比如语义、文字、物体等趋势发展。并且,现在已经有一些提取运动规律的工作比如人的步态规律、机器人和无人车的运动规则等等,来进一步提高定位的稳定性。

    有一个趋势是朝着多传感器融合的方向发展,其实每个传感器都有着它的优点和缺点,那么最好的方法就是把这些传感器的信息都融合起来,比如说随着深度相机的流行,一些手机上都安装了深度摄像头,还有Wifi、蓝牙、地磁信号等等,把这些信号都融合起来肯定可以提升定位的稳定性。未来还会有更多类型的传感器出现,比如这几年新出来的事件相机、偏振相机,相信未来5-10年还会有一些新的传感器出来。通过多传感器融合,我相信SLAM技术会做的越来越精准和鲁棒。

    还有一个趋势就是随着5G时代的到来SLAM会朝着云和端结合的趋势发展,比如说现在高精度地图的构建是放在云上,并且支持动态的更新。这就很自然地涉及到移动端上的SLAM和云上的高精度地图如何做紧耦合,如何利用语义地图的信息来更好地定位,不同终端如何协同来做SLAM。

    现在主要是深度学习的时代,对于SLAM来说,目前已有不少基于深度学习的工作,相信未来还会有更多这方面的工作涌现出来,比如如何学习一个更好的特征,如何学习更好的策略去解决SLAM中手写规则的困境,可能还会有做得很好的端到端的位姿学习。还有一个非常重要的就是语义信息的融合,比如说,结构的信息怎么跟语义信息做更好的融合,就像人眼一样看世界。我觉得这是未来的一个发展趋势。

    以上是关于SLAM方面的。然后,三维重建,刘老师前面已经讨论得很多了,尤其是动态场景的重建,我这里稍微再做一点补充。我觉得未来物体的三维扫描方面,一些便携式、移动式的RGBD传感器会越来越流行,比如说基于结构光和ToF的深度传感器,未来我相信还会有一些新的传感器出现,可以帮助实现实时高效的三维重建。这里重建的不只是几何和纹理,还包括材质、语义等等。基于照片/视频的三维重建技术未来几年也还会有一些进展,比如实现更高的几何精度和纹理,能得到更细粒度的语义,并且结合分布式平台的算力实现更高效的重建。

    在大规模场景的三维扫描方面,目前基于相机拍摄的视频或者照片已经可以做到城市级场景的三维重建。一般都是通过无人机航拍,然后重建出来。如果进一步结合深度传感器(比如Lidar),相信可以实现更高精度的场景构建。再结合分布式平台的计算能力,实现整个城市甚至整个地球的完整三维地图的重建将不是问题。当然只是静态场景的重建还不算太难,更难的是怎么实现动态物体的重建和场景的动态更新,因为真实的世界不是静态的,而是动态变化的。我觉得未来可能会通过相对低成本比如多传感器融合的方式来实现四维的场景地图的动态更新。包括前面讲的通过三维扫描获得的物体模型可以注册到真实世界的三维地图中,来实现三维信息的共享和传递。


     

     

    然后,我想谈一下识别和重建的关系。识别和重建未来5到10年会往更深层次的融合。目前三维重建基本上是bottom-up的方式,对先验知识的利用不够充分,未来5-10年可能会诞生top-down的方式,比如说先识别后重建,或者两者同步进行。识别能够提供更高层次的结构先验,反过来重建能够帮助做更好的物体识别,因此未来会更加紧密的融合。另外,也还需要深度学习和几何优化算法的融合,才能最终构建出兼具几何外观、语义信息、结构化的、可动态更新的3D场景表示。

    另外,因为我本人一直在做AR方面的应用,所以也想谈一下关于AR/VR、AI和三维视觉协同发展的趋势。其实AR主要是AI和三维视觉的应用。这三者如果能够紧密协同发展,那么我相信未来五到十年就可以实现一个地球级的现实世界的数字化。左边这个图是华为前不久提出的Cyberverse数字现实技术,它主要是通过相机、Lidar等传感器对真实世界进行扫描并构建高精度地图,然后基于高精度地图来实现室内外精准的定位和导航以及各种AR效果。Cyberverse实际上也不是一个完全新的概念,Magic Leap在2018年就提出过类似的概念Magicverse,旨在将大规模物理世界和数字世界持续地融合在一起。如右图所示,Magicverse包括好几个层,主要两种类型,一类是叫做基础层(包含物理世界和数字世界),还有一类叫空间应用层。基础层最底下是物理世界,然后在物理世界上构造一个对应的数字世界,然后再上面就是空间应用层,包括流动性、能源与水、健康与保健、通讯、娱乐等。

    要实现这样一个数字化的现实世界,最关键的一点就是对物理世界进行三维数字化,也就是如何对高精度地图进行采集、构建和更新。我相信未来必然是朝着多模态、多传感器采集和融合的方式发展,因为每个传感器都有着它的优点和缺点,需要融合互补。这里最难的问题可能是怎么进行动态更新。我相信众包式的采集和更新是实现这个目标的有效方式,可以实现低成本、高频次的更新。高精度地图除了三维还应该包括语义信息,因此语义信息的提取也是非常重要的,而且需要满足不同应用的语义信息,比如说定位、AR/VR的展示、行为分析等等。这就要实现不同粒度语义信息的提取,这里面的粒度可以大到整个商场,再到一个门店,再小一点就是一个商品。除了物理世界的三维数字化,还需要对人的行为进行数字化,运动行为、消费的行为、社交行为等等。

    对于这样构建的人的行为也好、三维空间也好,再结合SLAM、AR技术,我们可以实现地球级的AR应用。当然,这里首先需要解决云端的高精度地图怎么与终端SLAM紧耦合,这样才能够实现长时间大范围的精准定位和高品质虚实融合。松耦合模式会有一些缺陷,误差累积会很快,稳定性也不够好。基于这样的一种方式,我们可以实现室内外的分米级甚至到厘米级的定位和导航。

    另外,我们知道5G时代很快就要到来了。目前的AR计算还主要是在终端,比如手机、AR眼镜等。未来有5G的情况下很多计算都可以放到云或边上,对终端的计算要求相对弱化,终端未来更多的是提供数据采集、连接和显示的能力。因为有云端算力的加持,高品质的AR效果可以得以实现,比如高逼真的物理效果模拟,准确的遮挡效果和虚实交互,精准的光照估计和电影级的真实感绘制与虚实融合效果就成为可能。在5G时代,一方面传输速度非常快,另一方面有云端算力加持,未来应用APP甚至都不要预装,我们打开一个APP就像在浏览器上输入网址或电视机上切换频道一样便捷。

    以上是我对三维视觉和AR方面未来发展趋势的看法,供大家参考。

     

    专家讨论发言

    谢晓华
     

    我感觉我们是不是忽略了一点,就是硬件发展。例如我们之前做超分辨率,做了很多,但是后来高清相机一出来,很多工作就白做了。那会不会在未来的十年范围内视觉传感器这一块会有比较大的突破,然后刚才提到的一些工作就没有必要去做了。


     

    林宙辰

    我想说一说什么样的计算体系适合做计算机视觉?现在我们都是基于冯诺依曼体系,但是人的视觉处理过程跟冯诺依曼体系有很大的差别。如果是在新型的计算平台上面,是不是很多计算机视觉的问题能更好或更高效的解决,我觉得是可以探讨的。另外一个,我赞成主动视觉和在线学习。我觉得现在的视觉系统触碰到了一点是,每个人都是from scratch,这样的话精力有限你就只能做一个非常简单的任务。我觉得将来可以做一个像wiki一样的项目,全世界都可以贡献,这样的话大家都在共同构建一个统一的系统,而且这个系统可以利用网络上的所有数据,可以自我进化(evolution)。然后这个系统大家都可以公用,这样就可以解决每个人的系统不停的从头学习的问题,因为单个人做的话只能做很小的一部分。


     

    林倞

    我想谈一谈关于benchmark或者关于AI的评价系统或者CV评价系统的好坏的基准。因为我认为我们很多的研究是受这个基准所驱动的,或者说是跟这个benchmark是相互驱动的。现在CV的趋势是融合、协同等,那么未来我们可能会需要一种新的评价体系来看CV的状况,可能不需要在一个特别的识别问题或者分割问题上达到特别高的精度,但是我们同时接入理解、分析、可解释性等,这样才能评价一个AI或者CV系统的鲁棒性,更像人一样的而不是把它归类为一个分类问题或者重建问题,我觉得这个可能是我们要很具体的去讨论和去发现的问题。


     

    山世光

    我们讨论十年后视觉可以发展到一个什么样的水平,可是我们并没有定义清楚,我们该如何从总体上度量视觉智能的进步,比如说现在视觉智能水平是60分,十年后我们可以做到80分,这个没有明确的标准。包括什么是视觉理解、图像理解,怎么定义呢?比如我们做人脸识别,很清楚,就是以某个数据库上的识别率为准。可是作为一个general的视觉我们好像没有这样的一个标准。

    另外,作为一个标准的benchmark的角度来说的话,是不是人的视觉也是分两种,一种是通用的视觉,一种是专用的视觉。比如我们普通人看不懂医疗影像但专业医师就可以,但是我们都有通用的视觉的能力。这两类视觉实现的路径是一样的还是不一样的?

    还有一个就是刚才提到的十年后我们可能把地球都数字化了,但是这个数字话不见得是个简单的数字化,比如是地图化的,那地图化的话对我们做视觉的有什么样的帮助呢?我觉得是不是类似于出现了一个视觉智能测试的“靶场”,我们的很多东西都可以在这个“靶场”里去测试。例如很多做自动驾驶的系统初步的训练都是用的合成的模拟数据。那么也许我们有了一个很好的关于地球的数字化模拟的时候,我们就有了一个很好的视觉的“靶场”,这个“靶场”既可以做训练也可以做测试。

    此外,要不要做视觉常识?大家都在说知识,我觉得知识这个体系如果没有常识,感觉有些空中楼阁。我们做视觉先得有视觉常识,有常识才有可能有所谓的理解,我不知道是否正确,我觉得这个问题可以讨论。


     

    陈熙霖

    关于理解的评价问题,我们可以想想人是怎么做的。对于人类形成体系的知识我们确实有benchmark,确实有考题。可是对人类探索中的知识是没有考题的。大家理解的知识最后形成一个公共认可的交集,最后逐步拓展。所以,我个人认为在未来的推动理解的研究中,benchmark不能没有,但是不能唯Benchmark。如果说过去近30年中Benchmark推动了计算机视觉的发展,今天可能成为束缚了计算机视觉发展的一个因素。我经常跟学生为此争论,一些学生认为离开可评测数据集的工作就不是研究。而对真正智能的研究可能就是没有Benchmark——没有最聪明,只有更聪明。对于场景理解一类的任务而言,一个机器可能发掘出100组关系,另一个机器可能发掘出300组关系,那后者的理解能力可能就超越了前者,如果前者的关系是后者的真子集,那后者就一定具有更强的理解能力。当然更多的是两者可能具有互补性,如同人类的三人行必有我师。

    第二件事情是说通用视觉与专用视觉,我的观点是对于医疗判读这类的所谓专用视觉其实远远超越了视觉本身,它不仅仅是视觉,医生的判断是在视觉现象基础上的知识/逻辑推理。


     

    胡占义

    这个观点我有点不大同意。我最近十多年一直在研究生物视觉,视觉绝不是说就是感知,视觉包含认知。仅仅视觉物体识别这个具体问题,人类就有约三分之一的大脑皮层参与。当然,某个大脑皮层区域参与视觉问题,绝不能说该皮层就是视觉皮层。大脑的大多数高级皮层,都在于加工多种感觉信息融合后的信息,进行认知决策和行为规划。所以说视觉问题,它涉及真个大脑,包括皮层和皮下组织的联合加工,绝不是完全由大脑的视觉皮层完成。视觉皮层是指主要对视觉信息进行加工的皮层,很多皮层参与视觉信息加工,但不是视觉皮层。

    我先说第一个观点,人的视觉和计算机视觉是有区别的,如果说把人类视觉的脑加工机制完全解释清楚,我觉得和搞清楚宇宙起源的难度没有区别,我研究了差不多十五六年生物视觉,据我所知,神经科学领域目前对视觉V1区研究的比较清楚,V2区已不太清楚,更不用后面的V4和IT区,以及前额叶(PFC)等高级皮层。视觉问题处理基本涉及到大脑皮层的各个区域。所以说研究计算机视觉我觉得我们要弄清楚到底什么是计算机视觉,什么是计算机视觉的核心科学问题,我们不能够把什么东西都往上加。我觉得我们要好好讨论讨论,五到十年内我们到底主要是研究视觉感知还是视觉认知?如果研究视觉认知那是一万年的事。我目前不怎么研究计算机视觉了,我主要关注生物视觉了,也许我说的不对,但我觉得大家还是聚焦一些,目标可实现一些。

    我们讨论五到十年的计算机视觉研究方向,不是指具体的算法,我们十年前也不知道深度学习能达到今天这样的一个高度,我们要讨论到底哪些方向是值得研究的,我自己觉得有三个需要关注的方向:1.基于神经生理的计算机视觉,估计在五到十年以内是一个重大方向;2.视频理解;3.涉及中国特色的全球战略相关的视觉研究:如卫星数据理解(全球战略),深海水下视觉信息处理(深海战略)。


     

    纪荣嵘

    我自己觉得我从博士毕业到现在大概10年的时间,我认为计算机视觉是远远超过了我当时读书时的任何方向,比如说自然语言理解,信息检索等等。我觉得一个重要的原因是深度学习带来的收获。但另一个方面,我们的这些系统太大太厚重,有没有可能把这个系统做的小一些,做的开销更小一些,这里面有几个维度。大家能马上想到的维度就是把系统做小,做小就可以把它放到端上,放到嵌入式设备上。第二个就是把系统做快,现在自动驾驶或者端上的设备的计算,有可能需要系统处理数据要远远快于实时。

    第三点,现在我们很多时候都是在做单点的系统,每个摄像机执行的功能都是一个完整的闭环,花了很多的计算代价做了很多重复的事情,未来的视觉系统有没有可能由点到面进行大范围系统之间的协同。就是说有没有可能由专到广的,为什么是由专到广,现在每个模型只能解决一个任务,为了解决目标识别用的是目标识别的模型,为了解决语义分割用的是语义分割的模型,为了解决人脸而用人脸的模型,我觉得我们的人脑并没有分得那么清楚。one by one或者 1 v 1的我个人感觉太消耗资源了,有没有可能有一种更灵活的机制,网络结构可以由不同的形式组合在一起,比如说一套模型的backbone,它往上的话既可以做识别又可以做分割还可以检索,还可以做相关的理解。这样的话就可以把整个计算量给降下来。我相信人类进化到现在这个阶段,我们用我们的大脑实现了多任务的,高效能的,并行而且只占用极小的存储开销,我们每天只用吃三碗米饭,我们能完成这个计算机系统消耗多少的计算量来完成的事情。

    第四个观点,我觉得我们的系统现在“吃”数据“吃”的太厉害。我觉得我们人类自身真的没有用到这么多的数据进行学习,我们用了大量的数据复用,比如说我识别消防车,只需要在车子上加一些特殊的部件,我就能识别消防车,我们人是很智能的。但是我们现在的计算机系统太吃这些硬性的资源,所以我觉得在计算资源的消耗上和训练数据消耗上我们也应该探索更多的机制。

    然后,从我自己的感受来说,过去的时间我们看到世界往前发展,我特别希望未来的五到十年里面,计算机视觉的发展是由我们中国的学者去引领的,因为我们现在有巨量的市场,这个市场有我们能马上可以看到的技术痛点,这痛点就在我们身边,应该是我们来做,而不是让外国人来做我们的痛点,我们应该去引领它,所以我觉得未来的五到十年有很多是我们这些中国计算机视觉的学者应该去做的事情。


     

    林宙辰

    在手机上要越做越小,我觉得这不是正确的方向。将来的视觉系统应该越做越大,不是越做越小。所有的运算通过5G放在云上面运算是未来的一个趋势。我们大家都在云端上建立一个大系统,这样的话能够解决多样性的问题。因为要用一个小系统来解决各种各样的问题,我觉得这个概率上讲是不可能的,就是要建立一个跟人脑一样复杂的一个系统,它才能够解决各式各样的问题,这个系统肯定只能放在云上面,手机端愿意多算就多,少算就少算,不要把所有的计算都挤到一个小的手机上面来。


     

    纪荣嵘

    我觉得不一定完全正确。我觉得端上可以做一些轻量级的计算,云上做更重量的计算。而且端上的计算可以使数据的传输由重量级变轻量级。比如说原来传图像,现在可以只传特征,原来要传所有的区域,现在只要传特定的区域。因为手机只用作摄像设备感觉太浪费了,手机其实是一个很好的计算设备。


     

    林宙辰

    我们并不矛盾。我是说想在手机上解决所有的问题这一点我是反对的。一开始你说要在手机上做小网络这个东西,肯定是越小功能越差。


     

    胡占义

    对于这个问题我提个建议,5G对我们计算机视觉影响有多大,其实就是小终端和大终端的问题。如果5G网络很快,终端干脆就可以很小,不需要在这里处理,直接放到云上。我觉得5G对计算机视觉的影响确实要好好理解。


     

    王亦洲

    你俩说的没有矛盾,在专业任务上一定要压缩。处理是与任务相关的,只要满足任务的需求就行。视觉是一个ill-defined problem。什么是视觉这个概念太大了,但如果局限到图像,又太小了。所以怎么去把握它呢?我们丢这个阵地,就丢在了问题的复杂度上面。现在已经被深度学习占领了,我们再漂亮的理论、性能都不行。 然后我们丢在哪儿了呢?视觉问题是不是深度学习就解决了?视觉并不仅仅是一个学习问题,刚才说视觉可以很大,它可以是个认知的问题,top-down、bottom-up、然后各种任务,我们定义的视觉问题的复杂度不够,系统的复杂度也不够。所以我们要把系统的复杂度给加上去,把任务的复杂度也加上去,但是在每个具体的专项的任务上面, 我们要尽量让它简洁(compact), 让它适合于任务(fit for task)就够, 所以怎么去拿回这个阵地,我觉得要在这两方面,复杂度上面加大,然后才能够有可能把这个视觉的东西给拿回来。但视觉其实不单单是视觉问题,应该是视觉主导的任务完成的一个问题。所以,以后CVPR它有没有存在的意义,或者说是不是还是那个趋之若鹜的东西都不一定。


     

    山世光

    我们值得讨论的问题是,怎么撇清计算机视觉与机器学习的关系?我们在未来几年是不是就认怂了,是不是计算机视觉的问题就是机器学习的问题。这个我觉得我们年轻人还是特别困惑,比如说有什么问题是机器学习肯定搞不定,只能靠计算机视觉理论和方法来去搞定的呢? 


     

    陈熙霖

    是现在很多东西都被划到机器学习了。可以对比一下30年前机器学习的书和30年前模式识别的书,再拿今天机器学习和模式识别的书,看差别就行。


     

    胡占义

    我觉得机器学习这个东西,是一种手段,它可以用于计算机视觉,也可以用于自然语言处理。模式识别和数学没有区别,我比较理想,我觉得一个是一种解释手段,一个是说要解决什么科学问题。


     

    王井东

    接着刚才山老师提到这个问题。现在计算机视觉这么火,有多少是机器学习能做出来的东西。像alexnet也是做视觉问题,其实根本没必要担心。我自己也做过机器学习,可以举个例子,早先做过加速、大规模等,在Matlab上面做,这怎么能证明这是个大规模的问题,所以说同样根本不用担心这个问题。

    刚才讨论到一个问题,就是说计算机视觉5到10年怎么走。现在遇到一个状况,不管是中国还是美国,今年年视觉方向的工作机会(opening)特别少,从2012起视觉火了8年,应该怎么继续走。计算机行业外的人给予CV很高的期望,比如超越人类。其实这件事情不靠谱,根本没有超越人类。但是不做计算机视觉的人总觉得计算机视觉的人应该做些什么东西。但是现在到这个阶段,也许这跟当年神经网络一样,像过街老鼠一样,说计算机视觉的人吹牛皮。其实不是我们吹得,是别人吹的。我们要思考,我们视觉如果继续往前走,科学研究方面是一个问题,另一方面是如何去得到持续关注真正做一些能够work的系统出来。尽管我们今天已经在很多方面做得不错,但坦白来讲还没真正work。计算机视觉是不是应该纯粹从视觉的角度解决,其实多模态是一个很好的方向,单单靠视觉这一点,在监控系统里面还是很大的一个问题。从方向上来讲我比较看好多模态这个方向。


     

    王涛

    关于未来计算机视觉发展的趋势很多。我感觉一个最重要的趋势应该是主动视觉。Imagenet竞赛能识别很多的物体,但是图像分类真正在实际场景中就不管用。真正管用的是基于物体检测,然后再进行识别的像人脸识别这种技术。为什么人脸识别成功了,图像分类系统还不成熟。输入一张图像,你必须得按不同的区域不同的粒度进行分析,比如在会场我们拍张照片,识别人,那我们去数人头。但是如果要识别投影仪设备,必须定位到这个投影仪图像才能找到。第二个问题是投影仪的信息有多种层次,比如说有人想知道牌子,那你必须再细看到那个Logo,但是另外有人想知道怎么操作这个投影仪,那你必须得识别它的各种接口,你才能把它的功能识别出来。我感觉最近的Imagenet和ActivityNet行为识别竞赛,大家现在做的这两类竞赛都是用图像分类的竞赛做。用图像分类做竞赛,实际中都不能用,为什么呢?它没有像人一样主动去识别,你得看到这个人,看到那个人真正发生动作的那一帧,这才能把它识别出来,所以我感觉主动是非常重要的。

    第二个,要有层次。层次就是不仅要识别出一些基本的要素,还要把里面的不同层次关系能够结构化的提取出来。我们实验发现把东西拿在一起学的效果会很差,但是如果把这个东西分成两个部分,先固定解码器学编码器,然后再固定编码器学解码器,系统就学出来了。我们的学习得有一些像搭积木一样的层次,先把基本的比如人脸、水杯、花识别出来,然后拍一张照片能把物体之间的关系给识别出来。

    第三个,应该怎么研究。视觉研究很广,想要做成功,得针对具体的应用。人脸识别系统很成熟,但是用在自动驾驶上识别行人就不行,得一类一类来,在不同应用场景中,需要看到不同的数据和不同的性质。所以我认为针对具体应用,未来除了在深度学习基础上主动视觉,发挥层次融合推理应该是一个比较好的趋势。


     

    胡占义

    我觉得主动视觉很重要,但5-10年主动视觉不可能取得巨大进展。这涉及到生物里面反馈(feedback)的高层知识,但反馈很难短期内取得进展。关于视觉的目的1994年CVGIP组织了一个专刊,曾经有过一个辩论。从1994年到现在,可以说主动视觉没有任何的进展。在生物神经系统里面有大量的反馈,但不知道反馈是什么东西。如果神经科学很难给出一点启示的话,那么我们计算机视觉就很难把它做成。这是我的一点个人观点。


     

    王涛

    我觉得以前主动视觉不成功是因为研究方法不对和技术限制。


     

    胡占义

    Recurrent有两个,一个是同层的抑制,一个是高层的反馈,而高层的反馈在生物视觉里面大家知道有大量的反馈,但是反馈的是什么东西还不清楚。所以说根据我的理解,我觉得3-5年内生物视觉很难有较大进展。


     

    王亦洲

    我补充一下,回到学习上,学习是视觉的核心。视觉其实是个伪问题,但学习是一个永恒的本质问题。没有学习,视觉存不存在都不太重要了。与其叫计算机视觉还不如叫computational visual intelligence. 视觉是一种智能,智能的核心是学习怎么去获得知识,反馈只是学习和推理的一个环节。学习是什么?是简单的模式识别,还是高级学习,这可能是学习下一步应该走的,给学习起一个俗的名字叫元学习,如果要和计算机视觉对应,我们叫元认知。核心就是学习,不搞学习是不行的。


     

    杨睿刚

    我觉得机器视觉与生物视觉应该有区别,不一定机器视觉要学习生物视觉。举个例子,比如说看全局我要大照片,然后看局部我要小照片,但是如果你有一个摄像头,可以一下子拍10亿像素,或者有一个摄像装置能把光场记录下来,那active learning与passive learning就没有区别了。这种硬件区别至少在二维图像上,将来我觉得十亿像素应该是很快到来的事情。


     

    陈熙霖

    这个地方我补充一句,这里的主动不仅指分辨率,其本质是通过主动的“行为”进行探索,从而达到有限资源的最大化利用。


     

    杨睿刚

    你说的是一种主动感知的explore,还有一种不改变环境不改变物体的。


     

    陈熙霖

    即使是不做改变,比如从一个角度看和从另一个角度看,光场相机并不解决这类问题,我们无法获得对象背后的光场。


     

    杨睿刚

    光场相机阵列。


     

    林宙辰

    杨睿刚的意思是说干脆把所有的信息都采集了,这个机制还是有点不一样。

     

    王亦洲

    主动学习有一个停机问题,有一个选择的问题。就是说,你所有信息都在这儿,你什么时候停下来,你决定采哪一块,这是最重要的。所以主动学习,它并不是你把所有东西都拍上去,你也得要选择。


     

    杨睿刚

    选择的问题肯定要在里面,但是现在做主动学习肯定涉及到机器人等问题,超出了计算机视觉的范畴。


     

    王亦洲

    所以就不要抱着计算机视觉了,这个就是我的意思。


     

    胡占义

    主动学习这里面有两个概念。第一个是要有探索和注视,否则的话就没有主动性。第二个是记忆,主动视觉是从生物来的概念。在计算机视觉里面,主动视觉这个概念太大了。


     

    查红彬

    我想这里可以将主动视觉与深度学习进行对比。深度学习的问题在于要有标注数据库,需要事先整理好的数据。而视觉系统在实际场景中工作时,需要自己选择对自己有用的样本。这样,将样本选择与视点选择,结构重构,计算优化等策略结合起来,就能有效地发挥其主动性,而不需要让人把所有的数据都收集好喂给它。


     

    郑伟诗

    学习对视觉很重要。Benchmark推动也束缚了目前计算机视觉的发展,ReID做到97%,大家就想不到该做什么,但问题本身并没解决。数据库太有限,采集的东西没有完全反映整个问题,比如说行人的遮挡问题,各种各样的问题。在有限数据的时候,学习可能不能完完全全地解决它。有限数据下的学习,有没有可能受到3D方面的启发?把一个人整个3D的信息,还有行人整个行为的3D信息都能捕捉到的话,我们就可以去掉开放环境下所受到的这些影响,然后我们就可以重构。像我们可以构造一个靶场,这个靶场很重要,无论我们做任何的系统都要做测试,但如果只在有限数据上或片面的数据上做测试的话,我们在真实应用的时候可能就会有受限。因此如果我们能够把3D这种因素嵌入到现在以2D图像为主导的计算机视觉里面的话,可能会对我们整个计算机视觉在未来3到5年的发展能有另外一个维度的推动作用。

    那么为什么做3D?另外一件事情就是现在可能在全世界都在谈的数据隐私问题。数据采集的隐私问题越来越重要,如果你用的是一个虚拟的靶场的话,这种隐私问题就完全不存在。所以,在未来包括可能在国外人脸识别、行人识别,甚至一些行为识别都有可能会受到严重的法律因素的滞后的影响的话,那么我们更需要从3D的角度,从另外一个维度去考虑,是不是在这方面可以拓宽计算机视觉的发展方向,这是我的观点。 


     

    贾云得

    我们做视觉很早了,早先把它作为一条小河,我们流那么多年,突然下大暴雨,现在是洪水猛兽(深度学习)来了。五年以后估计这个模式都过去了。我觉得那条河还会在。因为,从视网膜到视皮层这条通路在那摆着呢,非常高效。因此,还会有好多人研究,五年十年以后我们中国实验室做什么?肯定还是小河里面。

    我看好两个方向。第一个是三维视觉,三维视觉不会很热,也不会很冷,会一直往下走。第二,就是胡老师说的视频理解。这个好几个老师也说了,多模态,就像我们看电影也是一样的,看会儿画面看字幕,看会儿字幕看画面,来回互相理解,现在好像挺热的。原来我们遇到的是数据-语义的鸿沟。后面我们在识别结果和意识间的鸿沟也会出现,一旦有鸿沟就变成热点,因为里边主观加的东西太多了。我觉得视频理解应该是一个热点。


     

    鲁继文

    我觉得我们现在用了很多机器学习的知识。下一步,我自己更愿意做一些特别的工作,就是从机器学习到机器推理。比如给你一幅图像,你一看就知道这个图像未来应该怎么样发展,但对于计算机再强的网络都不行。我觉得现在计算机视觉里面很多时候性能之所以好,是在于我们对这个问题的定义,在这种定义基础上已经基本上可以解决。现在我们可能要再去找一些更能够描述或者更能够匹配人类视觉能力的计算机视觉任务。现在比如说检测、分割、检索、识别,都是单独的视觉任务,这种单纯的视觉任务还是有点简单。当然有的老师可能有不同的观点,就是说他们的变化这种东西可能比较难。但实际上人的视觉更多的时候可能不是这样子的。所以,我觉得在计算机视觉里面一个很重要的问题是怎么样找到这样的任务,能够更好的与我们人类的视觉任务匹配起来,这样的任务既不能太难也不能太简单。这样的任务我觉得还需要我们多花时间去思考讨论,我自己也不知道是什么任务。


     

    王亮

    未来5到10年的CV发展趋势这个主题的主要目的是希望听听我们国内视觉界专家们的新见解。今天听了各位讲了很多,方方面面都有。如果说个趋势的话,每一个方面可能都会有一定的趋势,但大家的意见有不相同,也有相同的地方。这个主题的定位是希望通过这次的深度研讨梳理几个视觉领域中最重要的大家都认可的这样一个发展趋势,有不同的意见没有关系,而且这个讨论也是有交叉的。


     

    查红彬

    这种讨论我觉得挺好。讲一些发展趋势,然后大家能够有一些思想上的碰撞和火花。做视觉研究,大家在发展趋势上,如果有完全一样的看法会很奇怪。要整理出比较明确的发展趋势也很难。为什么呢? 谁要想做出很好的工作,他就应该有一些与别人不一样的看法,如果大家都是同样的看法,这事情就很难往下做。所以我觉得,我们更多的是通过交流各自的想法,启发我们自己能有一些新的思路,或者在我自己的这些想法上能找到一些更多的理由、依据,然后把这个事情做下去。所以我想通过这些讨论,更多的是咱们能不能将来在国际会议上,在研究成果方面,我们也有自己的一些特色在里边。到目前为止,我们写文章是在拼什么?就拼数据库测试上性能提高了百分之几,而且大多数是在别人方法上改进一下,然后做个实验说我提高了百分之多少。但是我们很少有说你的想法跟别人在什么地方不一样,然后你这个不一样的东西在某个地方用起来会有一些效果。一开始你可能效果会比较差,而且你也不容易轻松地打动别人,但是在你的带领之下很多人都会来做这个事情的时候就不一样了。所以我想说,能不能将来不是只盯着这个数据库上的数据去拼,而是有更多的比较好的创意出来。


     

    山世光

    是不是可以倡议建立一个只评价idea、方法原理,不评价在benchmark或者数据库上的好坏的审稿机制?


     

    陈熙霖

    胡老师刚才提到的1994年CVGIP组织的一个专刊中,当年提出了三个需要改进的方面,今天真正实现的只有一件——就是benchmark。那场讨论中说我们这个领域里的工作缺乏比较,自说自话,之后就产生了各种各样比较的数据集。所以我刚才有一句话,在过去近30年中Benchmark推动了计算机视觉研究的进步,就是指的那场讨论开始的。


     

    查红彬

    我同意你的观点。现在回过头来看看,计算机视觉研究了这么多年,也许就是在那些文章出来之后,我们再没有看到什么新的主意、新的理论出来了。在那之前百家齐放,好像有很多新的说法出来。在那个benchmark出来之后大家都在做同样的事情,最后整个领域就变得不怎么活跃了。


     

    胡占义

    我们既然研究计算机视觉,我建议大家读一读Marr的书。


     

    卢湖川

    刚才说到的benchmark,我觉得至少计算机视觉这个benchmark的存在,使得计算机视觉有别于纯粹的机器学习,而且特别是起到了该有的历史作用。现在大家对它的诟病最主要的原因就是它还是一个单一的benchmark。那只能说这个benchmark并不像人一样,那如果有人再去定一个更复杂的benchmark,它是多维的,也许这个benchmark就能够驱动下一个时代的发展,也许就能够完成像人一样的学习或者识别等等。我觉得benchmark本身并没有太大问题,因为人从小受教育的时候就是教他这是什么那是什么,只是人是一个综合的智能体。现在的benchmark如果再往更高的维度发展,也许能够有更好的收获。


     

    杨睿刚

    现在的benchmark太多了,哪些benchmark重要,哪些benchmark不重要,还有随之而来的各种各样的比赛,哪些是重要的,哪些不重要。在某种意义上是不是也跟大家说,我又拿了个世界第一,但可能这个世界第一里面只有十个人参加。那有没有一种方法可以有这样的一个更加好的量化机制,可以给benchmark一个benchmark。


     

    王井东

    Benchmark现在有个很大的问题是很多人做不了。Imagenet很多人做不了,那做不了从我们研究人员的角度来讲,就是文章可能出不去,这是一个可能不好的地方。 但从另外一个角度来讲benchmark挺重要的。视觉的任务目的很多,我们做视觉还有一个重要目的就是培养学生,那至于视觉培养学生这个功能可能是区别于其他的,比如Multimedia。Multimedia从培养学生的角度上我觉得是很好的。但它有个很大的缺点,是没有benchmark。从这个角度来讲benchmark还是需要的。只是现在审稿人对数据集的规模期望更大了,这对很多人来讲尤其是学校里面是很有挑战的,现在可能就少数几个公司比较强。这是我对benchmark的观点。


     

    王亦洲

    建议PRCV单开一个track,鼓励创新性。单开一个不看性能的track。


     

     

     

    展开全文
  • 个程序员未来5年的自我规划

    万次阅读 多人点赞 2016-11-08 15:59:30
    个问题:阿里面试都问什么? 社招面试如何准备 对于Java程序猿学习的建议

    引言

      

      其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。

      但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。

      其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上,而且会尽量写出一些干货。

      

    第一个问题:阿里面试都问什么?

      

      这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题。

      说实话,LZ只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小。

      甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。

      LZ参加的是阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司,而是因为这种公司,大部分情况下只招一些比较资深的开发和应届生,而不招那些处于中间阶段的人。而1-2年经验的同学,往往就刚好处于这个尴尬的阶段。

      对于能有3-5年经验的这部分人中,每个人的经历又都不同,所擅长的点也不一样,因此这就会导致每个人的问题和范围都不太一样。

      很少说有哪个知名的互联网公司,比如BAT、京东、360、搜狐、网易等这些公司,其社招面试还有固定的问题和模式,让你可以像应届生面试一样,在面试前靠临时抱佛脚度过这一关。

      大部分公司在社招的时候,不光是阿里,其它公司也都一样(因为LZ在一年多前也参加过很多其它知名互联网公司的面试,详情见《记录2015年年初跳槽的经历!》),基本上都分为两个阶段的提问。

      第一个阶段是主语言本身以及它的高级特性,第二个阶段是讲述自己的项目,并在中间穿插着问题。

      所以,LZ不妨就这两个阶段,谈谈社招面试的准备,而不是去把阿里面试的过程背一遍。说实话,LZ也确实记不住,所以不要再问LZ阿里面试都会问哪些问题了,你看看上面那个连接里的文章,也会发现,LZ里面也基本上没有写具体的问题,原因是一样的,真的记不住啊。(就是因为记忆力的问题,导致LZ从小偏科,文科成绩一直堪忧,-_-)

      

    社招面试如何准备

      

      LZ会分为四个部分来谈论这个问题,由于LZ本身是Java出身,因此关于主语言的问题,都是与Java相关,其它语言的同学可以选择性忽略。此外,面试的时候一般面试官的问题都是环环相扣,逐渐深入的,这点在下面大家可以更明显的感受出来。

     

      1、主语言本身以及它的高级特性。

      主语言当然就是你平日里拿来赚钱的家伙。不要告诉LZ你没有主语言,你会N多种语言,或者是你精通N多种语言,你要非这么说的话,你可以来杭州试试,LZ保证不打死你,最多打残。

      LZ的主语言很显然是Java,那么对于Java来说,它的语言本身以及它的高级特性,都有哪些比较容易在面试中问到呢?

      一般情况下,主要有以下知识点很容易被问到。(PS:以下所列举的,都是一些Java相对而言比较高级一点的知识点,因为这里谈的是社招,而不是校招)

      1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。以下简单模拟一个数据结构的连环炮。

      比如,面试官先问你HashMap是不是有序的?

      你肯定回答说,不是有序的。那面试官就会继续问你,有没有有顺序的Map实现类?

      你如果这个时候说不知道的话,那这个问题就到此结束了。如果你说有TreeMap和LinkedHashMap。

      那么面试官接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?

      如果你回答不上来,那么到此为止。如果你依然回答上来了,那么面试官还会继续问你,你觉得它们两个哪个的有序实现比较好?

      如果你依然可以回答的话,那么面试官会继续问你,你觉得还有没有比它更好或者更高效的实现方式?

      如果你还能说出来的话,那么就你所说的实现方式肯定依然可以问你很多问题。

      以上就是一个面试官一步一步提问的例子。所以,如果你了解的不多,千万不要敷衍,因为可能下一个问题你就暴露了,还不如直接说不会,把这个问题结束掉,赶紧切换到你熟悉的领域。

     

      2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面一样,咱们也简单的模拟一个并发包的连环炮。

      比如面试官可能会先问你,如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?

      这个时候你可能会说可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?

      如果你继续回答的话,面试官可能会继续问你,你还知道其它的实现方式吗?

      如果你还能说出很多种实现方式的话,那么继续问你,你觉得这些方式里哪个方式更好?

      如果你说出来某一个方式比较好的话,面试官依然可以继续问你,那如果让你来写的话,你觉得还有比它更好的实现方式吗?

      如果你这个时候依然可以说出来你自己更好的实现方式,那么面试官肯定还会揪着这个继续问你。

      为什么说面试的时候要引导面试官,原因就在这了。因为面试官的提问很多时候都是有迹可循的,你如果抓住了他的轨迹,能够猜到他下面很可能会问什么,那你在回答的时候就可以往你想要谈的方向去说。这样面试时就会显得更加从容,更加的游刃有余。

      

      3)IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。

      IO包和NIO包的内容相对来说不是很多,首先NIO模型要熟悉,特别是其中的selector一定要非常清楚它的职责和实现原理。其实NIO的核心是IO线程池,一定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为什么要这样设计?

      有的面试官还会问你有没有更好的设计,这个时候如果你不知道请果断说自己现在的水平有限,想不出来更好的设计,千万不要信口开河,随意YY。

      

      4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。

      一个GC部分简单的连环炮。

      面试官可以先问你什么时候一个对象会被GC?

      接着继续问你为什么要在这种时候对象才会被GC?

      接着继续问你GC策略都有哪些分类?

      你如果说出来了,继续问你这些策略分别都有什么优劣势?都适用于什么场景?

      你继续说出来了以后,给你举个实际的场景,让你选择一个GC策略?

      你如果选出来了,继续问你,为什么要选择这个策略?

      下面是关于类加载机制的简单连环炮。

      首先肯定是先问你Java的类加载器都有哪些?

      回答了这些以后,可能会问你每个类加载器都加载哪些类?

      说完以后,可能会问你这些类加载之间的父子关系是怎样的?

      你在回答的时候可能会提到双亲委派模型,那么可以继续问你什么是双亲委派模型?

      你解释完了以后,可能会继续问你,为什么Java的类加载器要使用双亲委派模型?

      你回答完以后,可能会继续问你如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?

      再来一个关于内存的连环炮。

      首先肯定就是问你内存分为哪几部分,这些部分分别都存储哪些数据?

      然后继续问你一个对象从创建到销毁都是怎么在这些部分里存活和转移的?

      接着可能会问你,内存的哪些部分会参与GC的回收?

      完事以后,可能还会问你Java的内存模型是怎么设计的?

      你回答了以后,还会继续问你为什么要这么设计?

      问完以后,还可能会让你结合内存模型的设计谈谈volatile关键字的作用?

      你在谈的时候,肯定会提到可见性,那么接着可见性这三个字,还可以继续问你并发的内容。

      

      基本上Java语言本身以及语言稍微高级点的内容就是以上部分,如果你能把以上四部分了解的非常透彻,那基本上Java这部分就没啥问题了,因为光以上的内容就够你跟面试官聊很久了。你聊这些聊得久了,自然问你其它问题的时间就会短点。

      你从LZ写这些问题的过程也应该能感受出来,很多时候,面试官都是顺着一条线一路问下去的,如果你觉得这条线你不熟悉的话,就要及时拐弯,引导面试官去问其它方面的问题。千万不要一直往下深入,直到自己跳不出来为止,那就尴了个尬了。

      

      2、讲述自己的项目,并在中间穿插着问题

      这一部分是面试过程中必问,也是聊得最久的一个阶段。除非你前面的语言部分非常扎实,扎实到面试官问了一两个小时,依旧没有探出你对语言本身的了解到底有多深。否则的话,你一定逃不过自己的项目这一关,而且一般情况下聊得时间不会太短。

      这一部分内容,一般的模式就是你自己去讲你做过的项目,然后面试官会冷不丁的让你去解释其中某一部分,比如让你解释当时为什么要这么做,或者问你现在觉得有没有更好的办法。而这些穿插的问题,大部分与你的项目所用到的技术有关。而你需要做的,就是充分、再充分的去总结自己做过的项目(尤其是最近的一两个项目),挖掘出一个甚至N个亮点,以备于到时候可以让面试官产生眼前一亮的感觉。如果你能达到这种效果的话,基本上离你成功就不远了。

      这部分内容由于和每个人自己的经历息息相关,因此这里也没法列举可能问到的问题。这篇文章《程序员面经:面试前到底该不该刷题以及面试前该如何准备》是LZ之前写的,里面大概讨论了下如何在面试前总结,有兴趣的可以去了解一下。

      

      3、额外的加分项

      上面两个阶段基本上是必问的,还有一些加分项。这些加分项中,有些内容面试官也会问你(比如TCP/IP协议、算法),但更多的是会先问你了解不了解,你了解的话再继续聊,不了解的话就直接略过了,不至于因为这种问题而直接把你打入地狱。

      下面LZ列举一下这些加分项,如果可以的话,这些加分项还是要争取一下的。

      1、计算机系统原理。

      2、网络通信协议(TCP/IP,HTTP等)。

      3、数据结构与算法。

      4、著名开源项目的源码。

      5、你自己有很棒的开源项目。

      6、你的个人博客。

      7、待评论区补充。

      这几项当中,对于前1-3项,如果你之前就比较了解,只是由于时间问题忘记了的话,还是可以临时抱佛脚一下的。至于后面4-6项,就需要你日常的积累了,不是一时半会儿能做到的。如果你平日里没有积累,那么后面这三个加分项只能抛弃了。

      

      4、与你职位相关的内容

      其实这最后一项是对前面三项的补充,你应该尽量去主攻和你面试的职位相关的内容。比如你面试一个实时计算的职位,那么你的算法最好要厉害,对于著名的实时计算开源项目要熟悉,最好阅读过源码,而且还要对分布式系统有一定的见解。

      因此,这个第4部分没有具体的内容,只是提醒你,如果你很明确自己的面试职位,最好在面试前准备的时候,尽量朝职位的需求方向靠拢,这样成功的可能性更大。

      

    对于Java程序猿学习的建议

      

      这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是LZ你是如何学习Java的,能不能给点建议?

      今天LZ是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学。

      在大家看之前,LZ要先声明两点。

      1、由于LZ本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线,非Java Web和Java后端开发的同学请适当参考其学习思想即可,切勿照搬。

      2、下面对于【第一部分】的推荐内容,目的是让你尽快成为一个可以参加工作的Java开发者,更适用于处于待业状态,准备转行Java的同学。如果你是在校学生,务必要在学好基础(比如计算机系统、算法、编译原理等等)的前提下,再考虑去进行下面的学习。

      

      第一部分:对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学。

      一、Java基础

      首先去找一个Java的基础教程学一下,这里可以推荐一个地址,或者你也可以参照这个地址上去找相应的视频,地址为http://www.runoob.com/java/java-tutorial.html

      学习Java基础的时候,应该尽量多动手,很多时候,你想当然的事情,等你写出来运行一下,你就会发现不是这么回事儿,不信你就试试。

      学完以上内容以后,你应该对Java有一个基本的了解了,你可以用Java语言写出一些简单的程序,并且你用的是最简单的编辑器,比如记事本。

      这个时候,不要急于进入下一部分,留下几天好好写一些程序,尽可能熟悉这些基础内容。

      二、Web开发

      等你写上几天程序以后,你往往会比较迷茫,因为你写的东西似乎看起来毫无用处,比如实现一个简单的计算器,读取一个文件等。这个时候你就应该去学着写一些让你觉得有意思的东西了,所以你应该学习更多的知识。

      这些内容主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识。

      它们的学习顺序应该是从前到后,因此最先学习的应该是HTML/CSS/JS(前端页面),这部分内容你可以去上面的那个runoob网站上找。你可以试着自己写一些页面,当然,你可以尽你最大的努力让它变得最漂亮。这部分内容对于后端Java来说,理论上不是特别重要,但至少要达到可以自己写出一些简单页面的水平。

      接下来,你需要学习的是Servlet/JSP(J2EE)部分,这部分是Java后端开发必须非常精通的部分,因此这部分是这三部分中最需要花精力的,而且这个时候,你要学会使用开发工具,而不能再使用记事本了,可以选择eclipse。

      当你下载安装好eclipse以后,请视频中的教程一步一步去学习,一定要多动手。关于Servlet/Jsp部分视频的选择,业界比较认可马士兵的视频,因此推荐给大家。当然了,LZ本人并没有看过他的视频,所以不好说的太绝对,如果大家自己有更好的选择,可以坚持自己的,不要被LZ干扰。

      原本LZ也是打算出教学视频的,但是由于时间问题,还是决定放弃了。但是如果你看视频的过程中遇到了问题,欢迎来LZ的交流群提问,或者去斗鱼观看LZ的直播提出你的问题,直播地址和群号都在LZ的个人博客左侧。

      最后一步,你需要学会使用数据库,mysql是个不错的入门选择,而且Java领域里主流的关系型数据库就是mysql。这部分一般在你学习Servlet/Jsp的时候,就会接触到的,其中的JDBC部分就是数据库相关的部分。你不仅要学会使用JDBC操作数据库,还要学会使用数据库客户端工具,比如navicat,sqlyog,二选一即可。

      三、开发框架

      当你学会以上内容以后,这个时候你还不足以参加工作,你还需要继续深造。公司里为了提高开发的效率,会使用一些Java Web框架,因此你还需要学习一些开发框架。

      目前比较主流的是SSM框架,即spring、springmvc、mybatis。你需要学会这三个框架的搭建,并用它们做出一个简单的增删改查的Web项目。你可以不理解那些配置都是什么含义,以及为什么要这么做,这些留着后面你去了解。但你一定要可以快速的利用它们三个搭建出一个Web框架,你可以记录下你第一次搭建的过程,相信我,你一定会用到的。

      还要提一句的是,你在搭建SSM的过程中,可能会经常接触到一个叫maven的工具。这个工具也是你以后工作当中几乎是必须要使用的工具,所以你在搭建SSM的过程中,也可以顺便了解一下maven的知识。在你目前这个阶段,你只需要在网络上了解一下maven基本的使用方法即可,一些高端的用法随着你工作经验的增加,会逐渐接触到的。

      关于学习SSM框架的地址给大家推荐一个,这里面有视频,大家可以去观看,地址是http://edu.51cto.com/lesson/id-76468.html

      四、找工作

      当你完成开发框架的学习以后,你就该找工作了,在校的找实习,毕业的找全职。与此同时,在找工作的同时,你不应该停下你的学习,准确的说,是你在以后都不能停下学习。

      上面这些内容你只是囫囵吞枣的学会了使用,你可以逐步尝试着去了解更多的东西,网络是你最重要的老师。

      

      第二部分:对于参加工作一年以内的同学。

      恭喜你,这个时候,你已经拥有了一份Java的工作。这个阶段是你成长极快的阶段,而且你可能会经常加班。

      但是加班不代表你就可以松懈了,永远记得LZ说的那句话,从你入行那一刻起,你就要不停的学习。在这一年里,你至少需要看完《Java编程思想》这本书。这本书的内容是帮助你对于Java有一个更加深入的了解,是Java基础的升级版。

      这本书很厚,当初看这本书,LZ花了整整三个月。正常速度的话,应该可以在半年左右看完。LZ这里不要求过高,只要你在一年以内把这本书看完即可。当然了,LZ所说的看完,是充分吸收,而不是读一遍就完事了,因此有些内容你可能会看不止一遍。

      总而言之,这个阶段的核心学习思想就是,在工作中实践,并且更加深入的了解Java基础。

      

      第二部分:对于参加工作1年到2年的同学。

      这部分时间段的同学,已经对Java有了一个更加深入的了解。但是对于面向对象的体会可能还不够深刻,编程的时候还停留在完成功能的层次,很少会去考虑设计的问题。

      于是这个时候,设计模式就来了。LZ当时看的是《大话设计模式》这本书,并且写了完整版的设计模式博客。因此,LZ要求大家,最多在你工作一年的时候,必须开始写博客,而设计模式就是你博客的开端。

      请记住,LZ所提的基本都是最低要求,因此不要有任何松懈的心理,否则五年后,你不要去羡慕别人高于你的工资,也不要去羡慕别人进入了某公司。

      这一年,你必须对于设计模式了如指掌,《大话设计模式》可以作为你的开端。当然了,你也可以去看LZ的个人博客去学习,地址是http://www.cnblogs.com/zuoxiaolong/p/pattern26.html

      此外,设计模式并不是你这一年唯一的任务,你还需要看一些关于代码编写优化的书。比如《重构 改善既有代码的设计》,《effective java》。

      总而言之,这个阶段,你的核心任务就是提高你的代码能力,要能写出一手优雅的代码。

      

      第三部分:对于参加工作2年到3年的同学

      有的同学在这个时候觉得自己已经很牛逼了,于是忍不住开始慢慢松懈。请记住,你还嫩的多。

      这个阶段,有一本书是你必须看的,它叫做《深入理解Java虚拟机》。这本书绝对是Java开发者最重要的书,没有之一。在LZ眼里,这本书的重要性还要高于《Java编程思想》。

      这本书的内容是帮助你全面的了解Java虚拟机,在这个阶段,你一定已经知道Java是运行在JVM之上的。所以,对于JVM,你没有任何理由不了解它。LZ之前有写过JVM系列的知识,可以去看一下,地址是http://www.cnblogs.com/zuoxiaolong/category/508918.html

      另外,在过去2年的工作当中,你肯定或多或少接触过并发。这个时候,你应该去更加深入的了解并发相关的知识,而这部分内容,LZ比较推荐《Java并发编程实战》这本书。只要你把这本书啃下来了,并发的部分基本已经了解了十之六七。

      与此同时,这个阶段你要做的事情还远不止如此。这个时候,你应该对于你所使用的框架应该有了更深入的了解,对于Java的类库也有了更深入的了解。因此,你需要去看一些JDK中的类的源码,也包括你所使用的框架的源码。

      这些源码能看懂的前提是,你必须对设计模式非常了解。否则的话,你看源码的过程中,永远会有这样那样的疑问,这段代码为什么要这么写?为什么要定义这个接口,它看起来好像很多余?

      由此也可以看出,这些学习的过程是环环相扣的,如果你任何一个阶段拉下来了,那么你就真的跟不上了,或者说是一步慢步步慢。而且LZ很负责的告诉你,LZ在这个阶段的时候,所学习的东西远多于这里所罗列出来的。因此千万不要觉得你已经学的很多了,LZ所说的这些都只是最低要求,不光是LZ,很多人在这个时间段所学习的内容都远超本文的范围。

      如果你不能跟上节奏的话,若干年后,如果不是程序猿市场还不错的话,你很可能不仅仅是工资比别人低,公司没别人好,而是根本就找不到工作。

      总而言之,这个阶段,你需要做的是深入了解Java底层和Java类库(比如并发那本书就是Java并发包java.concurrent的内容),也就是JVM和JDK的相关内容。而且还要更深入的去了解你所使用的框架,方式比较推荐看源码或者看官方文档。

      另外,还有一种学习的方式,在2年这个阶段,也应该启用了,那就是造轮子。

      不要听信那套“不要重复造轮子”的论调,那是公司为了节省时间成本编造出来的。重复造轮子或许对别人没有价值,因为你造的轮子可能早就有了,而且一般情况下你造出来的轮子还没有现存的好。但是对别人没有价值,不代表对你自己没有价值。

      一个造轮子的过程,是一个从无到有的过程。这个过程可以对你进行系统的锻炼,它不仅考察你的编码能力,还考察你的框架设计能力,你需要让你的轮子拥有足够好的扩展性、健壮性。

      而且在造轮子的过程中,你会遇到各种各样的难题,这些难题往往又是你学习的契机。当你把轮子造好的时候,你一定会发现,其实你自己收获了很多。

      所以,这个阶段,除了上面提到的了解JVM、JDK和框架源码以外,也请你根据别人优秀的源码,去造一个任何你能够想象出来的轮子。

      

      第四部分:参加工作3年到4年的同学

      这个阶段的同学,提升已经是很难了,而且这个阶段的学习往往会比较多样化。

      因为在前3年的过程中,你肯定或多或少接触过一些其它的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等等。这些技术,你能精通任何一项,都将是你未来面试时巨大的优势,因此如果你对某一项技术感兴趣的话,这个时候可以深入去研究一下。这项技术不一定是你工作所用到的,但一定是相关的。

      而且在研究一门新技术时,切忌朝三暮四。有的同学今天去整整大数据,搞搞Hadoop、hbase一类的东西。过不了一段时间,就觉得没意思,又去研究分布式缓存,比如redis。然后又过不了一段时间,又去研究分布式计算,比如整整Mapreduce或者storm。

      结果到最后,搞得自己好像什么都会一样,在简历上大言不惭的写上大数据、分布式缓存、分布式计算都了解,其实任何一个都只是浮于表面。到时候面试官随便一问,就把你给识破了。

      一定要记住,作为一个程序猿,平日里所接触的技术可能会很多,但是想要让一门技术成为你的优势,那么一定是你对这门技术的了解强过绝大多数人才行。

      因此在这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习如果还不够深入的话依旧要继续,但这个时候你应该更多的考虑建立你的优势,也可以称为差异性。

      差异性相信不难理解,就是让你自己变得与众不同。你前面三年的学习足够你成为一名基本合格的Java开发者,但你离成为一名优秀的Java开发者还有很大的距离。

      所谓优秀,即能别人所不能。而你前三年所学习的内容,是很多做过几年的Java开发都能够掌握的。那么为了让自己有差异性,你就需要另辟蹊径,找一个方向深入研究下去,以期在将来,你能够成为这个领域的专家,比如分布式计算领域的专家,大数据领域的专家,并发领域的专家等等。

      此外,你除了建立你的差异性之外,还要去弥补你基础上的不足,直到现在,LZ都没有提及基础知识。原因是基础是很枯燥无味的,学的太早不仅容易懵逼,而且懵逼的同时还容易产生心理阴影,以至于以后再不想去研究这些基础。但基础又是你深入研究一些领域时所必须掌握的,比如你去研究分布式计算,你不懂算法你玩个毛毛?比如你去做分布式缓存,你对计算机系统的内存不了解,你如何去做缓存?

      如果你的基础本来就非常强,那么恭喜你,相信你在之前的工作中已经充分体会到了这些基础对你的帮助。但LZ相信大部分人的基础都很薄弱,哪怕是科班毕业的人,很多人也不敢说自己当初的基础学的多么强大,比如算法、计算机系统原理、编译原理这些。

      但是每个人时间都是有限的,而且这些基础的书籍每一本读下来,没个一年半载的,还真拿不下来,因此还是要有所抉择的。虽然艺多不压身,但问题是艺多是有代价的,是需要你付出时间和精力的,而LZ个人更赞成在同等代价的情况下获取最大的收获。

      首先,LZ比较推崇的基础书籍有三本,分别是《深入理解计算机系统》,《tcp/ip详解 卷一、二、三》,《数据结构与算法》。其中TCP/IP有三本书,但我们这里把这三本看成是一本大书。

      这三本分别适合三种人,《深入理解计算机系统》比较适合一直从事Java Web开发和APP后端开发工作的人群。《tcp/ip详解 卷一、二、三》比较适合做网络编程的人群,比如你使用netty去开发的话,那么就要对TCP/IP有更深入的了解。而《数据结构与算法》这本书,则比较适合做计算研究工作的人,比如刚才提到的分布式计算。

      另外,LZ要强调的是,这里所说的适合,并不是其它两本对你就没有用。比如你做Java Web和APP后端开发,《tcp/ip详解 卷一、二、三》这本书对你的作用也是很大的。这里只是分出个主次关系而已,你要是时间足够的话,能把三本都精读那当然最好不过了。但如果时间有限的话,那么就先挑对你帮助最大的书去读。

      理论上来讲,这一年你能把这三本其中一本精读下来,就已经非常厉害了。有了基础,有了前面的工作经验,你就可以去开拓属于你的领域了。

      在这一年里,一定要规划好自己的领域,建立好自己的优势,制造出差异性。如果你对自己的领域不够清晰的话,随着你工作的时间日益增多,你接触的技术会越来越多,这个时候,你很容易被淹死在技术的海洋里,看似接触的技术越来越多,会用的也越来越多,但你毫无优势。

      有的同学可能会问,“LZ,我也不知道我的领域是什么啊?怎么办呢?”

      对于这种人,LZ只想说,“卧槽,这还问我?要不干脆我替你学习得了,好不好?”

      

      第五部分:参加工作4年到5年的同学

      经过前面一年的历练,相信你在自己所钻研的领域已经有了自己一定的见解,这个时候,技术上你应该已经遇到瓶颈了。

      这个时候不要着急提高自己的技术,已经是时候提高你的影响力了,你可以尝试去一些知名的公司去提高你的背景,你可以发表一些文章去影响更多的人。当然,你也可以去Github创建一个属于你的开源项目,去打造自己的产品。这次的开源项目不同于之前的造轮子,你这个时候是真的要去尽量尝试造出来真正对别人有价值的轮子。

      技术学到这个阶段,很容易遇到瓶颈,而且往往达到一定程度后,你再深入下去的收效就真的微乎其微了,除非你是专门搞学术研究的。然而很可惜,大部分程序猿做不到这一步,那是科学家做的事情。

      这个时候提高影响力不仅仅是因为技术上容易遇到瓶颈,更多的是影响力可以给你创造更多的机会。程序猿在某种程度上和明星很像,一个好的电视剧和电影就可以成就一批明星,程序猿有的时候也是,一个好的项目就可以成就一群程序猿。

      比如国内几个脍炙人口的项目,像淘宝、支付宝、QQ、百度、微信等等。这每一个项目,都成就了一批程序猿。LZ敢说,这里面任何一个项目,如果你是它的核心开发,光是这样一个Title,就已经是你非常大的优势。更何况还不止如此,Title说到底也是个名头,更重要的是,这种项目在做的时候,对你的历练一定也是非常给力的。

      而你如果想要参与这样的项目,除了靠运气之外,影响力也是很重要的一个手段。比如你在分布式计算领域有一定的影响力,那么如果有什么好的关于分布式计算的项目,对方就很可能会邀请你。就算人家不邀请你,你自己主动去面试的时候,对方如果知道你在这个领域的影响力,也肯定会起到很大的作用,而这个作用,甚至可能会超过你现在的技术能力。

      所以,在这个阶段,你最大的任务是提高自己的影响力,为自己未来的十年工作生涯那一天做准备。如果你能够靠你的影响力和以前积累的技术,参与到一个伟大的项目当中,那么你后面的五年也就有着落了。

      当然了,LZ现在满打满算,做程序猿也就4年半不到,因此关于4年到5年这一部分,LZ的见解不一定是对的,就算是对的,也不一定是适合任何人的。所以,希望大家自己有的判断力,去决定到底该如何度过这一年。

      

    结语

      

      本文到此就基本结束了,整篇文章很长,但其实主要就说了两部分内容,一个是社招面试的准备,一个是Java生涯的学习。

      关于这两部分,LZ已经给出了自己的见解,但是还是那句话,每个人吸收知识的时候,都要有抽取精华,去除糟粕的能力。LZ所说的,可能有些是对的,有些是错的,有些是适合你的,有些是不太适合你的,你要自己能够判断。

      其实你在生活和工作当中也是一样的,你身边的人形形色色,有的人你喜欢,有的人你很讨厌。但其实你喜欢的人也有缺点,你讨厌的人也有优点。你要学会从你讨厌的人身上学会他的优点,千万不要一棒子打死,这只会让你失去很多学习成长的机会。

      好了,说了这么多了,就到此为止吧,希望本文可以帮助到作为程序猿或即将成为程序猿的你。


    摘自HackerVirus的博客园文章,http://www.cnblogs.com/Leo_wl/p/5437059.html

    展开全文
  • 个普通专科生,拿什么拯救你的未来?(精简版)

    万次阅读 多人点赞 2021-03-09 17:05:00
    个普通专科生,拿什么拯救你的未来?(精简版) 总有人要赢,为什么不能是我!————— 科比-布莱恩特 原文地址:www.dushunchang.top 此文为小Du博客原创出品 转载,复制请注明原文出处 近来看到则知乎头条,...
  • 成都一诊一分一段表2021,一诊算是高三学子长时间复习以来的第一次大型考试,目的就是让考生能够切身的感受到高考的氛围。所以今天小编特意整理了关于成都一诊分数线最新消息的相关信息,有需要的朋友随可圈可点网小...
  • 名程序员眼里中国量化投资的未来

    万次阅读 多人点赞 2019-09-02 14:12:31
    首先,预测中国量化投资的未来个办法就是看一下美国老师的现状。美国的资产管理有两个趋势:个是共同基金的逐渐指数化,另外个趋势是对冲基金的逐渐走向量化。国外的对冲基金,相当于中国的证券私募。最初的...
  • 每天我们那么多,其中到底有几句是我们完之后,会自己找个空当,把那几句放在心头玩味一番的?“我为什么出这句?我为什么会用这个态度?”如果没事就想想这样的事,就会发现我们心里其实藏了很多...
  • 因此,在你改变职业之前,或者决定使用人工智能扩展业务时,让我们首先人工智能做个鸟瞰,以帮助理解我们所处的位置以及未来走向。 人工智能的三个阶段 我们倾向于把人工智能看做新事物,尤其是新技术以及和...
  • 读大学的几年,一直保持着写生日寄语的习惯,复盘一年的得失,憧憬一下美好的未来。2010年读研前买了个如下截图的笔记本,手写记录研究生的生活、求职经历、恋爱结婚、工作经历、生活琐事,每年都会...
  • 职业规划和未来发展的一些思考

    万次阅读 多人点赞 2013-10-21 12:17:54
    本文较为全面地阐述了,作为个一线城市的IT技术人员,我职业规划和未来发展的一些思考。 首先从生活中的困惑迷茫谈起,然后简要介绍了我婚姻和事业的一点看法,接下来深入阐述了我一些核心价值观和实践, 需要...
  • 抄袭-写给未来自己

    千次阅读 2019-12-12 17:15:15
    版权声明:本文为CSDN博主「冯晓东技术博客」的原创文章,遵循 CC 4.0 BY-...写给未来自己 自努尔哈赤入主中原,历经康乾盛世,上有传承扭转体系文化,下有礼仪百姓信仰相呼应,正是王朝巅峰,我努力回想,处在同...
  • 区块链治理:用编程迎接未来

    万次阅读 2019-05-10 10:28:51
    这篇文章讲述了为什么区块链治理设计是急需解决的问题之,介绍了区块链的关键组成部分,当前解决方法,未来潜在方法,并为整个区块链社区的发展提出几条建议。 为什么区块链治理至关重要 像任何生命体一样,成功...
  • 未来人工智能人类的影响的利弊

    千次阅读 2019-06-27 13:38:53
    霍金曾经警告过我们,我们未来最大的威胁就是外星人和人工智能。 根据霍金的说法,人工智能技术在发展的最初阶段确实为人类生活带来了便利,但机器可能会以不断加快的速度重新设计自己。然而,人类却受制于生物进化...
  • 然而,需求来了,问题也来了,如何快人一步提高自身技能,让自己在日益激烈的技术挑战中不断增值、脱颖而出? 今天,我们将锁定MySQL数据库,通过韩锋、虢国飞、杨奇龙、杨建荣、张青林、李辉、贺春暘、李...
  • 彻底搞懂状态机(一段式、两段式、三段式)

    万次阅读 多人点赞 2017-11-11 23:16:10
    实例:FSM实现10010串的检测 ... 下状态S1,a = 1,z = 0.如果检测到0,跳转到S2。  下状态S2,a = 0,z = 0.如果检测到0,跳转到S3。  下状态S3,a = 0,z = 0.如果检测到1,跳转到S4。
  • 爆裂:未来社会的 9 大生存原则

    千次阅读 2018-04-12 10:41:39
    内容介绍 今天的世界比我们历史上的任何其他时候都更加复杂和充满不确定性。现代社会目前使用的工具...复杂性和不确定性碰撞时,将释放出种爆炸性极强的力量,冲击和改变社会的各个方面,从商业到文化,从公共领...
  • 也就是个元学习器需要能够评估自己的学习方法,并根据特定的学习任务对自己的学习方法进行调整。   看趋势:把握机器学习的未来   机器学习虽然取得了长足的进步,也解决了很多实际问题,但是...
  • 在房间的前面,个热心的未来主义者或企业家正在建立未来融资的场景,所有的钱都是数字化的,银行越来越多。无论是在fintech会议还是类似活动,这个想法是在我相信是个关于货币和银行起源的有巨大缺陷的民间...
  • 奉劝各位学弟学妹们,该打造你的技术影响力了!

    万次阅读 多人点赞 2021-04-27 14:21:11
    CSDN 的学弟学妹们,大家好呀,我是沉默王二。放在一年前,打死我也不相信,这四个平淡无奇的字组合在一起竟然...与其白日做梦,不如脚踏实地,换句浅显易懂的,就是,与其想着理财,不如想想怎么攒钱。如果连原
  • 职业规划-IT方向(超详细,超具体)

    万次阅读 多人点赞 2019-06-21 21:30:13
    前天写了篇博文《出我的故事,献给正在迷茫的你》(https://blog.csdn.net/weixin_44135121/article/details/92841610),不少读者留言不知该如何做职业规划,于是继续拖着忙碌了周疲倦的身体,坐在电脑前,吹...
  • ToolWiz Photos,款颠覆你安卓市场上修图产品认知的APP,几乎囊括了PS的核心功能,好用到根本停不下来。 200多种精美拼图,300多种专业相框,4000多个特色贴纸,150万张壁纸,125种专业滤镜,磨皮祛痘、智能...
  • 为什么flutter是未来移动技术的发展趋势

    万次阅读 多人点赞 2018-07-02 21:11:28
    其实我也并不认为flutter一定是移动技术未来的发展趋势,但是可以确定的,flutter的方向是没有问题的。即使它不会是成为下个跨平台技术,也会有个相似的技术来统治移动平台的发展.下面来阐述为什么flutter是...
  • Jupyter Notebook把一段很长的代码分成多行的解决办法 使用Jupyter Notebook时经常会遇到一段代码很长 导致代码块向右边延伸了很多 感觉 很! 不! 方! 便! 所以就想把这种长的代码分成几行就整洁很多了 ...
  • IT行业未来发展前景如何?

    千次阅读 2022-02-21 15:36:15
    其实IT行业对于广大就业者来,是个相对公平且充满机遇的市场,要想在其中闯荡出一番事业,大家就需要理清IT行业的未来发展前景会是什么样子。 对于IT行业未来发展前景的看法,很多人有着不和谐的声音,认为它...
  • 利用LSTM预测时间序列未来........

    万次阅读 多人点赞 2019-05-24 11:12:16
    最近在做个东西,用到了LSTM时间序列预测。。。 网上搜索吗,比如别人做过的比较典型的有: 1.https://blog.csdn.net/aliceyangxi1987/article/details/73420583 2....
  • 未来最重要的三个能力

    万次阅读 多人点赞 2017-02-22 11:59:08
    我绝不是随口一说,编程绝对是未来最重要的能力之,如果说未来的人才只能具备三个能力的,那么我会选择:编程、写作和英语。1.首先,说说编程。看看这几年我们生活的改变,5 年前的生活跟现在绝对是天壤之别,...
  • 万字长文,解析 Visual Studio 与 VS Code 的未来走向。
  •  1、趋势:物联网 物联网:“句式”理解物联网 把所有物品通过信息传感设备与互联网连接起来,进行信息交换,即物物相息,以实现智能化识别和管理。 物联网是新一代信息技术的重要组成部分,也是“信息化”时代...
  • 大龄程序员的未来在何方

    万次阅读 多人点赞 2015-12-16 07:36:25
    当程序员老去……有人这是程序员最怕的事,然而,老程序员的将来究竟怎样……

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 522,383
精华内容 208,953
关键字:

对未来的自己说一段话