花钱150 叮的冒险岛品克缤角色奖励 有专业奖励吗?

后使用百宝箱没有帐号?
查看: 3219|回复: 2
翊麾副尉[10级], 积分 57567, 距离下一级还需 32433 积分
参加活动: 0
组织活动: 0
  深圳2017年度产业发展与创新人才奖申报工作已启动,申报时间为日至6月30日。创新人才奖按照自愿申报、严格审核的原则进行评审,每年评审一次,对获奖人员给予最高不超过150万元的奖励。  为兼顾申报单位与个人贡献,在原有政策奖励高管和中层管理人员的基础上,今年继续设置企业年度自主申报名额。在深圳市登记注册的企业和相关机构连续工作1年以上,依法缴纳个人所得税,在经营管理与技术创新等方面有突出贡献的下列个人,可申报创新人才奖:
  (一)属于深圳战略新兴产业、未来产业、现代服务业等鼓励发展产业的企业高层管理人员;
  (二)经认定的总部企业中层以上管理人员;
  (三)所在企业属于经认定的总部企业或我市鼓励发展的产业、尚有年度自主申报名额的,在企业发展和技术创新中作出突出贡献的其他人员;
  (四)高等院校、科研机构中担任一级学科带头人或市级以上在研重大纵向课题负责人;
  (五)经国家、省、市认定的高端专业人才和经市政府批准可以申报的特殊高端专业人才。
  申报单位范围、岗位要求等具体条件、申报方式、自主申报名额分配方式、申报材料等要求请登录市人力社局网站(http://www.szhrss.gov.cn/通知公告栏)查询。
宣节校尉[9级], 积分 30953, 距离下一级还需 19047 积分
参加活动: 5
组织活动: 0
华为不参与上述申报。
陪戎副尉[2级], 积分 902, 距离下一级还需 98 积分
参加活动: 0
组织活动: 0
高管退税,鉴定完毕。
快速回复主题
今年的夏天真的很热呢,晚上在家里叹空调,还不如出!来!吃!小!龙!虾!价值156元5种口味30个试吃名额,快点来申领!
逛了这么久,何不进去聊聊?
&下次自动登录
用其他账号登录:
Powered by
111返回顶部帖子很冷清,卤煮很失落!求安慰
手机签到经验翻倍!快来扫一扫!
B150那些事儿2,DDR3会拖Skylake后腿吗?
4432浏览 / 14回复
在预算允许的时候,大家都希望配置能够高一点。然而,很多时候,就要考虑预算挪到别的地方,比方说,显卡,SSD或者I3换I5.那么,合理利用原有硬件,就非常有必要了很多人以为Skylake就是支持DDR4的HaswellSkylake升级的可不仅仅是工艺以及对DDR4的支持,性能还是有提升的同时,Skylake也不是仅仅支持DDR4,DDR3同样是支持的同样一块B85&combo,既可以支持DDR4,也可以支持DDR3六条内存槽,四条是DDR3,两条DDR4受限于芯片组,DDR4能支持到2133,DDR3能支持到1866考虑到,不少人手头的DDR3还是1600的,就来试试,如果用DDR1600,会不会给Skylake拖后腿吧这bios更新速度,点赞和往常一样,Intel的市场细分,必须要最高级别的桌面芯片组才能支持高频内存,因此H170,B150同样是支持DDR4&2133和DDR3&1866而Z170的话,可以支持DDR4&3866(需要超频)以上,DDR3可以支持到2133预算足,当然是一步到位,Z170搭配高频DDR4最好。如果,手上DDR3内存多,预算分到显卡去了,Skylake会不会受到影响呢?先来看看,测试平台信息Z170下面,搭配的是DDR4&2400内存,时序是16-16-16-39B150下面,搭配DDR4&2133,时序是16-15-15-36B150搭配DDR3&1600,时序11-11-11-28,bios貌似对黑武士不大友善那么来看看成绩对比。为方便阅读,从左到右,分别是Z170搭配DDR4&2400,B150搭配DDR4&2133,B150搭配DDR3&16001.superpi&100万位&单核浮点性能以及内存性能测试,越低越好讽刺的是,居然最快的反而是DDR3&1600,无语,不过,也就是误差范围2.cpumark99&单核浮点性能测试,越高越好Z170是701,B150无论搭配DDR4还是DDR3,成绩几乎一样,但是差距不大3.wPrime&1024万位质数运算,多核多线程浮点性能测试,越低越好Z170的成绩是276秒,B150都在300秒左右4.国际象棋&多核心多线程测试Z170是12184,B150无论是DDR4还是DDR3都是112xx左右可以看到,B150搭配低频内存,对于多核多线程测试有点影响5.aida64&内存带宽测试Z170的内存读取性能是34000,B150搭配DDR4&左右,DDR3的话是24500左右可以看到,虽然内存带宽差距有点大但是跑基准测试,DDR3其实也不惨嘛也就是说,DDR3搭配Skylake5其实也并无不可的。当然了,预算允许,当然是买新不买旧了
哈,经常发现新手买了d3版b150,回去ddr4装不进去。
硬件是一门学问 发表于
哈,经常发现新手买了d3版b150,回去ddr4装不进去。
新手还是别乱折腾的好
既可以支持DDR4,也可以支持DDR3,不错嘛
其实我也想买新不买旧的。但预算不够呀
6条内存槽?这么给力
挺有特色嘛这 板子
还是入DDR4好些我觉得
合理利用原有硬件,就非常有必要了,很赞同呢
这板子很 适合我呀。升级老平台。
合理利用。。我还真不懂呢。来见识下
现在DDR4不贵还是入DDR4好
B150系列的主板现在挺优惠的呢
用户名/注册邮箱/注册手机号
其他第三方号登录从事互联网也有几年了,技术做过,HR也做过,前前后后面试了有几百人吧。&br&希望年轻人少走点弯路,学校出来,倒年轻,但IT培训机构那笔钱,恐怕你拿着没感觉,你父母拿着感觉就颇大了。当然,让你去贷款,学了出来后晚上经济压力大,睡不着觉可以打10086客服妹子,看她会不会温柔的安慰你。&br&【以下内容部分转载】&br&我是一个公司技术主管,日常技术面是也是我负责,跟你们叨叨几句。想看的就往下看,不想看的就绕道走。&br&达内培训就是看视频,几个班配一个所谓的辅导老师。视频你自己看,看得懂就跟着看,看不懂就自己想办法解决。说是有在线老师解答,你想想跟QQ聊天一样能解答个啥技术问题?还有辅导老师,技术怎么样我不清楚,不过根本顾不上你,到处都是问问题的。&br&为啥视频教学?因为扩张太快,不想花那么钱请那么多老师面授,搞个视频统一教学省钱。&br&
北大青鸟,是什么人都敢收,也不管你是高中的初中的学历,最后让你花点钱考个什么远程教育大学学历。你问问看达内,北大青鸟这些出来能有几个就业的?&br&
我一天面试一沓从这些响当当培训机构出来的学生,一问三不知。你想花接近两万块钱去看个视频那没人拦你,具体效果去问问那些从达内,青鸟出来的吧,别听网上这些托儿瞎哔哔了,如果在达内看看视频都能像他们吹的进微软,腾讯,阿里巴巴那让我们这些干了八九年开发的老程序员也是醉了,这些你们也敢信。我提倡你们都在家自己看视频自学成才吧。我宁可你们选小一点的培训机构,起码他们会少糊弄你们,起码他们把就业和名声看的更重一些。&br&还有拜托什么达内,青鸟,尚学堂的老师们少给孩子一些不切实际的承诺,少吹点niu逼吧,学完之后屁都不会的孩子你敢让他们开口就要6千7千,开口闭口送他们进微软、腾讯,是以为你们真的教的有多好?还是学的有多好?你们可别坑这些孩子了。&br&【转载内容来自&a href=&//link.zhihu.com/?target=https%3A//zhidao.baidu.com/question/2947460.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&zhidao.baidu.com/questi&/span&&span class=&invisible&&on/2947460.html&/span&&span class=&ellipsis&&&/span&&/a&】&br&
针对转载内容,说说我的感受,这两家出来的,基础部分的确有好的(3个吧),但真要说干事,几乎一个都没有,简历很花哨,案例一大堆,实际谁会信你一个4个月出来的,把一个商城写出来了。一看,我去,ECSHOP,真厉害。&br&
最后奉劝想学互联网技术的,少去大培训机构,超过1万就别去了,不能一对一,也别去了,一个老师带的学员超过10个(差不多等于一个学员带三天每个月),别去了。你要自学,如果手头有点钱,可以少量费用去培训,不是培训技术,说白了是要学习经验,刚进行业少走弯路、效率高,一个月工资的事情,自己折腾几个月,既浪费时间,也效率不高。&br&
有其他想问的,可以问我。
从事互联网也有几年了,技术做过,HR也做过,前前后后面试了有几百人吧。 希望年轻人少走点弯路,学校出来,倒年轻,但IT培训机构那笔钱,恐怕你拿着没感觉,你父母拿着感觉就颇大了。当然,让你去贷款,学了出来后晚上经济压力大,睡不着觉可以打10086客服…
&p&大家好,我是尹艳荣,我之前在这个帖子里写了一篇文章,意外中顶到了第一名的位置,被男友发现命令我删掉而且向我提出与我分手,我们从高中在一起到大学差不多6年了,不想因为这个事情被影响。目前我认为自己并没有错,我只是可能语言过激,但是我不想他日渐沉迷于游戏还说Java学不会,我可能稍微会有些强势,这是我以前写的帮他找培训班写的文章,现在再发出来,如果是因为这篇文章我侵犯他的尊严的话,我会给他道歉。如果没有,希望大家能帮我伸张正义。&/p&&p&附文章:&/p&&blockquote&男朋友烟台大学大三还未毕业,现在同样也是很纠结。现在的java培训机构我目前认为真的是有好有坏,但是还是看我们怎么选择了。再往上看了培训机构基本上有三个月了,还是感觉特别迷茫。不过既然真的决定选择走java这个方向,那就坚持下去吧,说实话,还是为了未来的发展。Ios与安卓培训机构也看过很多,但总感觉不是自己的方向,而且听学长说过现在ios与安卓就业面越来越窄。 &br&现在Java培训学校太多了,不过能让人相信的学校太少了考虑了很多,那就坚定不移的继续走这条路吧,这三个月,基本上一天一个想法,但都是帮助迷茫的男友如何选择培训机构,而不是如何选择方向。 &br&深入了解的培训机构有五六家了,现在我们还是处于省吃俭用的阶段,双方父母都在农村不可能给我指导性的建议与任何出去大学学费之外的任何赞助的。现在打算的培训也是用的我自己的奖学金,只有八千元,感觉真的来之不易,听说现在有很多培训机构都学不到东西,非常害怕自己的钱拿去打水漂。目前已经有两个方向了,一个是让他去北京学,一个就是在郑州学。我学长也给我了很多建议也推荐了一些机构,希望有人可以与他一起组队去学习。但是前提是,我只有8000元,包括住宿费用。 &br&&b&达内科技:&/b&大班培训,全国校区。这家机构是从广告上了解的,但是看到他们的招生老师,真的很烦人,我留下个电话后,1个月基本每周都会跟我打电话,各种弹窗让我头疼,而且最重要的是,听说他们是疯狂招生,初高中生通通都要,这一点我真的没办法接受。&br&&b&黑马程序员:&/b&大班培训,这家机构是我们学长推荐我的,与传智有关系,听说还要考试之类的,过了之后才能去学。这家机构我比较向往的,但是,网上口碑听说争议很大,有人说也有视频教学,北京价格又太贵了。&br&&b&千峰教育:&/b&大班培训,网上查的那里负面评价较少,而且听说就业率蛮高的,但是网上又说他们学员就业简历造假,还反映说他们课程体系有些固化陈旧,有些学员听到一半就不学了,这一点也让我很纠结。&br&&b&尚学堂:&/b&小班培训,听说有学的好的,培训完半年后月薪拿到10K以上,但也有学得不好的,培训完去做销售,客服,运营等等,甚至有的培训完直接回家。不过我认为凡是都要有一些自制力,想要找到工作应该还是很有希望的。&br&&b&尚马教育:&/b&小班授课,这家机构是我大学老师给我介绍的,他们的讲师在北京互联网做技术总监,费用的确非常低,而且还给配电脑,宿舍环境也不错,招生也有门槛,而且想这创业公司想生存下来也肯定会用心教的,担心唯一的顾虑是由于他们都是刚下来创业第一次教学,会不会被当小白鼠给实验了,如果是后面几期有其他学员评价就好了。&br&&b&小码哥:&/b&听说李明杰本人创办的,但他是90后,还是传智的老员工,对他本人授课有些期待。而且听说好多培训机构现在都是视频教课,这一点感觉还是蛮良心的。&br&&br&都是个人寻找的经验总结,PS:本人还没有找到培训机构,而且还没有开始学,所以大神们不要问我哪家培训机构好。希望和我一起在找培训机构的同学们私信我,我们一起寻找。 &/blockquote&&p&避免广告嫌疑,我隐藏掉了3月多月来所有我收集到的有关机构相关信息,希望大家能帮我评下理,谢谢。&/p&
大家好,我是尹艳荣,我之前在这个帖子里写了一篇文章,意外中顶到了第一名的位置,被男友发现命令我删掉而且向我提出与我分手,我们从高中在一起到大学差不多6年了,不想因为这个事情被影响。目前我认为自己并没有错,我只是可能语言过激,但是我不想他日…
&p&用我的真实经历说话,不吹不黑。&b&大学考试,大部分课程我都能通过考前两天的突击拿到90+的成绩(985工科)。作为一个几乎不怎么听课的学渣,我的绩点还能达到保研的中上水平,甚至拿过几次奖学金,下面这些方法是功不可没的。&/b&&/p&&p&关于高效学习,我不是来写论文论证记忆曲线和记忆方法的。&b&只运用结论,分享最接地气的,能直接用的干货给你。没有高大上的方法论,没有玄学,只有干货、福利和黑科技!&/b&&/p&&blockquote&本文约7.4k字,读完约需6分钟。&/blockquote&&p&&br&&/p&&p&&b&首先,高效学习的本质其实就是时间管理!&/b&&/p&&p&&br&&/p&&p&为此,我精选了一份书单。这里面的十本书,在各大推荐榜上都名列前茅,豆瓣均分8+,从心理学、大脑、时间管理方法多个方面告诉了我们如何高效学习。&b&文末有电子书领取方式,想看的直接带走。&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-7c258baacbcf_b.jpg& data-caption=&& data-rawwidth=&1090& data-rawheight=&529& class=&origin_image zh-lightbox-thumb& width=&1090& data-original=&https://pic2.zhimg.com/50/v2-7c258baacbcf_r.jpg&&&/figure&&p&在掌握时间管理这个技能之前,就算掌握了一百种学习方法也是枉然,&b&如何做笔记、如何练习、如何理解记忆不过是一些关于学习的小方法,小技巧。在掌握小方法,小技巧之前,先清楚怎样进行时间管理,做好第一步。&/b&&a href=&//link.zhihu.com/?target=http%3A//www.nuanshi100.com/course/670/play%3Fspid%3Dinvite%3D& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&掌握高效学习的方法之前,先开启心智&/a&&/p&&p&&br&&/p&&p&接下来说说,如何从时间管理,做到高效学习,看完别忘了点赞哦。&/p&&p&&br&&/p&&p&&b&一、走出时间管理的误区&/b&&/p&&p&&br&&/p&&p&在很多人心目中,时间管理就是管理时间,学习时间管理,就是学习在相同的单位时间内做更多的事情。——不是吗?哈哈。当然并不是这样子的,举个栗子&/p&&p&以前一天能做6件事情,现在你一天做了8件事情,所以就可以判断自己时间管理更上一层楼了吗?&/p&&p&然而事实并不是这个样子的,&b&学习时间管理的目的并不是要在相同的单位时间内做更多的事情,而是在单位时间内能够轻松自如地创造最大的价值。&/b&所以最终判断的标准不是事情的多少,而是价值的多少。&/p&&p&同样是微信小编,A每天写五篇文章,B每天写一篇文章,但是在同样的粉丝数量下,A五篇文章加起来的阅读量是10000,带来了5个人咨询产品;B一篇文章的阅读量就是10000,并且还带来了10个人咨询产品。显然,B对时间管理的运用显然更加得心应手。&/p&&p&现在所说的低水平勤奋就是这个道理。我们现实中看到很多同学实际上学习非常用功,也经常在看书,但往往是还没有弄明白其中的道理就开始行动。&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-d109b34d8a32ca753ddb_b.jpg& data-caption=&& data-rawwidth=&600& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/50/v2-d109b34d8a32ca753ddb_r.jpg&&&/figure&&p&比如在学习过程中,还没有懂一个知识点的原理,就花大量的时间去研究习题,用所谓的题海战术,显然是相当不科学的。&b&避免时间管理的误区,就要从我们的潜意识入手——也就是《蜥蜴脑法则》当中所说的自动式思维系统——无意识思维方式。&/b&&/p&&p&&br&&/p&&p&&b&二、读懂大脑的真正需求&/b&&/p&&p&&br&&/p&&p&&b&《蜥蜴脑法则》这本书中提到:我们每个人的大脑当中,其实都有一个内在蜥蜴的存在。&/b&它脱离于我们的意识之外,所以被称为无意识思维思维系统。&b&我们的内在蜥蜴总是倾向于得到快乐,避免痛苦&/b&,虽然人类自诩为理性动物,但事实上,我们在做大多数决定时,其决策过程与低等脊椎动物蜥蜴并无太大区别。&/p&&p&比如我们谈一场恋爱,实际上并不会列出很多选择对象进行理性分析;我们选择今天晚上吃什么,也不会把每家餐厅都做详细分析;别人在看热闹的时候,其实我们的潜意识是希望自己也去看看发生了什么。&/p&&p&要想改变自己固有的思维模式,我们首先就要打破学习能给自己带来什么好处这个问题。就算我们清楚知道学习能够给自己带来很多好处,我们的大脑也并不会立即做出决定去学习。相比未来的好处,我们的无意识思维更喜欢当前的好处和享受。&/p&&p&&b&这时候你不如告诉自己,今天看完这本书,就奖励自己去吃一顿大餐,这种可见的奖励和反馈,才是我们内心所希望看到的。&/b&没有谁希望自己一直苦逼地学习下去,这个时候不如给自己一些能够获取的,足够吸引自己的利益。&/p&&p&&br&&/p&&p&&b&三、重复建立“我可以”的态度&/b&&/p&&p&&br&&/p&&p&&b&我们总是在面临艰难的学习任务时本能地选择逃避,这没什么丢脸的,每个人都是如此。&/b&当我们面对一件艰巨的任务时,我们下意识的反应很可能会是:卧槽,这TM的是什么鬼?或者说我真TM不想干了。但实际上我们大脑的理性阻止了我们说出这样的话,理性思维在很短的时间内就会说服我们把这件任务继续下去,尽管他很艰难。所以,在面对一件看似很艰难的学习任务之前,告诉自己,我可以做到的。&/p&&p&上大学在大学物理实验理论考试之前,我只有一个晚上的时间来看书和复习,但最终结果是我拿到了95分。我们不逼自己一把,你真不知道自己到底行不行,所以千万别说自己不行。&b&在大脑里重复主动地建立这样一个“我可以”的概念,远强于被动接受。&/b&&/p&&p&&br&&/p&&p&&b&四、建立一些优秀的习惯&/b&&/p&&p&&br&&/p&&p&习惯是指一个人在无意识的状态下根本不需要经过思考就开始的重复性行动,&b&一个行为经过多次的重复就会变成潜意识&/b&。这种潜意识使行为不需要经过认真的思考和逻辑的分析,就会不断地重复。&/p&&p&如何建立好的习惯呢?&/p&&p&——答:大量的重复和刻意练习。一个习惯的养成至少需要21的坚持,比如你关注了罗辑思维的公众号,每天固定听罗胖60s,你会发现自己每天起来的第一件事情就是听听罗辑思维,这恰好是罗辑思维在培养你的使用习惯。&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-a25bfff2adba2_b.jpg& data-caption=&& data-rawwidth=&1920& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic4.zhimg.com/50/v2-a25bfff2adba2_r.jpg&&&/figure&&p&但事实上,我们自己要建立习惯,这个过程会很艰难,比如每天早上6点起床,如果不是外部因素影响:如读书、工作,我们是很难长期坚持的。所以我们需要分解步骤,一步一步地完成,首先告诉自己早起能够得到什么?——不要试图劝说自己早起应该去干什么,直接想,早起之后能得到什么?可以去吃楼下最好吃的包子,可以去跑步的时候看帅哥/美女......&/p&&p&然后,不断地把自己起床的底线往前靠,从7点,到6点半,再到6点。&/p&&p&最后,实在做不到就找个朋友,和自己比一比,甚至可以设置一些条件。比如晚起的人每天给对方发个红包或者给对方买早餐。&/p&&p&建立自我学习、运动、做事复核的好习惯,一步步向着想象中的生活状态进发。下面这张图,作为参考(图片来源网络,侵权删)&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-87cfd925ebe2b824baa0d2f_b.jpg& data-caption=&& data-rawwidth=&1060& data-rawheight=&462& class=&origin_image zh-lightbox-thumb& width=&1060& data-original=&https://pic1.zhimg.com/50/v2-87cfd925ebe2b824baa0d2f_r.jpg&&&/figure&&p&&br&&/p&&p&&b&五、脱离舒适区&/b&&/p&&p&&br&&/p&&p&我最开始上大学的时候喜欢在寝室复习,设想着自己想用什么姿势复习就用什么姿势复习。后来,架不住小伙伴们都去自习室,我才开始喜欢上去自习室看书。我自认为自己还算一个比较自律的人,在寝室也能比较静得下心来看书,但我还是不得不承认,我还是会开电脑,会忍不住看一集动漫,或者干脆玩下手机。但在自习室,尽管我偶尔会翻看一下手机,但这并不会十分影响我的效率。&/p&&p&我是后面才知道舒适区这个概念,现在把我知道的告诉你,也算起点作用。&/p&&p&&b&每一个人都有自己的舒适区,在这个区域里你会感到很舒服,离开了这个区域你就不舒服。&/b&舒适区就是令人感到舒适的区域或令人感到心情舒畅的时刻,比如大热天躺在家里吹空调、晚上睡觉前玩个一个小时手机,这都是自己的舒适区。&/p&&p&很多人形成一定的习惯以后,习惯的行为也就成了他的舒适区。他的行为也就会被习惯制约住,不愿再脱离现有的舒适区。一个人要改变习惯最大的难题就是,怎么样下定决心离开现有的舒适区,以养成更好的习惯?&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-d57faf3a971ccd51deaf_b.jpg& data-caption=&& data-rawwidth=&529& data-rawheight=&392& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic3.zhimg.com/50/v2-d57faf3a971ccd51deaf_r.jpg&&&/figure&&p&&b&给自己制造危机感,告诉自己如果不走出这个舒适区会有什么后果。我们很多时候学习效率不高不是因为学习方法不好,而是把自己固定在了舒适区,总是希望利用目前已知的东西就解决所有的问题,遇到问题前没有经过深入的思考就去询问别人。&/b&而实际上,这样的学习方式并不能给我们带来本质上的突破和进步,例如学习英语,一味地背单词是不能给我们带来多大价值的,最好的方法是不断练习,写句子、写文、阅读英文文章、和外教交流,跳出一味背单词这个低水平努力圈。&/p&&p&不管是人还是说一个企业,在成长进步过程中会遇到一个又一个的不舒适区,但是这种不舒适会一步一步地使企业走向成功,随着成功人们就会感到越来越舒服。&/p&&p&要成长和学会学习,那必定是一个痛苦的过程,但得到反馈的快感又是其他事情无法比拟的。&/p&&p&&br&&/p&&p&&b&六、学会优先管理的方法&/b&&/p&&p&&br&&/p&&p&&b&第五代时间管理方法将时间的管理根据紧急和重要的标准分为四个象限&/b&。&/p&&p&第一象限是紧急并且重要的事情,第二象限是不紧急但是重要的事情,第三象限是紧急但不重要的事情,第四象限是既不紧急也不重要的事情。&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-bd3832de06eda39af8df7b0_b.jpg& data-caption=&& data-rawwidth=&884& data-rawheight=&636& class=&origin_image zh-lightbox-thumb& width=&884& data-original=&https://pic1.zhimg.com/50/v2-bd3832de06eda39af8df7b0_r.jpg&&&/figure&&p&&br&&/p&&p&&b&第一象限的事情是紧急而重要的事情,是一定要优先去做的事情。&/b&&/p&&p&有些人做事不分轻重缓急,遇事就赶紧去做,不加考虑,他们似乎看起来都很忙,实际上是陷入了时间管理的误区,其实是对第一象限紧急而重要的事情的错误理解。并不是所有的事情在任何情况下都会成为紧急而重要的事情。只有在极少数的情况下,各种因素在同一个时空出现,相关条件具备时,这件事才可能成为第一象限中的事件。&/p&&p&比如:&b&明天马上就要考试高数了,我连书都还没有翻过啊!!&/b&&/p&&p&&br&&/p&&p&&b&第二象限,也是最有价值的一个象限,也就是那些不紧急但重要的事情,而这些事情往往被人们所忽视。&/b&&/p&&p&比如,你在意识到自己的学习效率低下而不去尝试提高学习效率,那么可能就会一直活在学习效率低下的阴影当中了。事实上,这时候我们最好立即着手去提高自己的学习效率,否则等三分钟热度一过,这件事情就会变成一个事实。&/p&&p&这也是我告诉很多想要转行的同学一样,当你已经有了强烈想要转行的意愿的时候,这时候还在原来的岗位上得过且过实际上是非常可惜的,这个可惜可能会一直伴随着你。这时候真正考虑的是自己的真实目标和方向,以及应该为转行做哪些准备。&/p&&p&未雨绸缪是对第二象限事件管理的形象描述。很多重要的工作,都需要在事件出现之前做好准备,这就是制定计划的原因。制定计划的目的是把那些重要而不紧急的事情,按部就班地高效完成。因此要学会怎么样制定计划,怎么样做准备。&/p&&p&&br&&/p&&p&&b&第三象限,紧急不重要,处理这些事情并不能给你带来直接的价值。&/b&&/p&&p&所以做这种事情的方法就是,用最快的速度做完。比如要做个与学习无关的表格,或者说与你直接业绩无关的工作,不用想,用最短的时间做完这件事情。&/p&&p&很多人时间一直花在处理紧急不重要的任务和工作上,其实是对这个象限的误读。&/p&&p&&br&&/p&&p&&b&第四象限,在这一象限内包含的是既不紧急也不重要的事情,用通俗一点的话说那些是消磨和打发时间的事情。&/b&&/p&&p&当然这一象限花的时间越少越好。&/p&&p&&br&&/p&&p&&b&所以,第五代时间管理理论给我们的建议是:投资第二象限,走出第三象限。&/b&&/p&&p&学习也是如此,我在学习的时候,会花大量的时间去解读一本书或者说一门课程的知识点。尽管这看起来很傻,但其实最终的结果是,那些草草看了好几遍,把所谓的重难点背了好几遍的人还没有我考得好。&/p&&p&其实这就是在投资第二象限,尽管是突击复习(或者不要脸一点说是学习吧),我仍觉得有必要了解整本书的知识结构和解读知识点,因为只有你自身理解了如何去运用之后才能用在答题和实践上,事实证明我这样做是对的。&/p&&p&在工作以后,我花了三个月的时间就让自己的专业水平达到了别人工作一年以上的层次。&b&投资第二象限,才是学习的重难点,别人看五遍书,看的内容有三遍是重复的;而你要学会的是,看两遍书,两遍都不是重复的,在把书读薄之前,先把书读厚。&/b&&/p&&p&&br&&/p&&p&&b&七、走出“压力越大,表现越好”的误区&/b&&/p&&p&&br&&/p&&p&有一部分同学认为,压力越大,表现会越好。事实上,几乎没有人会在压力很大情况下表现得最好。压力越大,紧急程度就越高,就会迫使人们加快办事的速度,加快办事速度就会增加犯错误的几率。&/p&&p&&br&&/p&&p&你得感谢自己,曾经没有在压力很大的时候出现过重大的错误。&b&适度施压,要让自己觉得有那么一丢丢紧迫感就可以了。&/b&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-79a6fc2221cef44e7bf142eab58ed63f_b.jpg& data-caption=&& data-rawwidth=&400& data-rawheight=&300& class=&content_image& width=&400&&&/figure&&p&&b&墨菲定律&/b&提到:&b&事情往往不会像人们所想像的那么轻松,很多事情往往比想像的更加复杂和困难,往往需要投入比想像更多的时间和精力。&/b&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-6b79613dcaf81f5998eea_b.jpg& data-caption=&& data-rawwidth=&529& data-rawheight=&421& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic4.zhimg.com/50/v2-6b79613dcaf81f5998eea_r.jpg&&&/figure&&p&&b&所以尽量提前计划和安排学习计划&/b&,不要等到六级考试只有十天时间了才开始准备,这个时候自己真的就手忙脚乱了。尽管我有过多次靠前突击和裸考的行为,但我仍然建议想要好好学习的同学不要学我,这只适用于考试,并不适合知识储备。当然,我也很乐意把自己的学习方法分享出来。如果有兴趣的知友可以作为参考。&/p&&p&&br&&/p&&p&&b&八、一些浅薄的学习方法和工具分享&/b&&/p&&p&&br&&/p&&p&&b&(一)学习方法篇&/b&&/p&&p&&b&1、在开始学习之前,先明确自己的目标并分解目标&/b&&/p&&p&&br&&/p&&p&比如你是一名高二学生,你的目标是考清华,但目前你的分数离清华还有100多分的距离,怎么样合理地分解目标呢?&/p&&blockquote&分析自己目前的现状,明确自己的目的:清华&&明确自己的各科优势弱势&&制定策略,保持优势科目成绩,提高弱势科目成绩&&阶段目标:本学期总分达到距离清华50分,各科达到多少分左右的水平&&通过阶段目标,分析目前单科知识存在的弱势&&短期目标,本阶段重点抓某某区域弱势知识,争取该区域知识能够熟练掌握。&/blockquote&&p&举个例子,仅用于说明,在学习之前,先确定一个清晰的目标。比如你准备读研,那么学习成绩应该达到什么水平?准备工作,学习成绩有应该达到什么水平?&/p&&p&没有清晰的目标指引,学习只是在给自己打发时间。我进入大学后,给自己定的目标就是四年以后工作,所以我直接放弃了保研,上课虽说基本都去了,但实际学习听得最多的是通识教育课和人文选修课。基本上我给自己的目标就是:多参加活动、多参加比赛、多去学校外面搞搞事情,成绩过得去,大学毕业去央企上班。这些目标基本也都实现了,尽管我现在已经从央企辞职了。&/p&&p&在复习前,我不管三七二十一,先给自己定一个90分的目标。因为很多情况往往是这样的——目标90,考试80;目标60,考试不及格。然后翻开书分析,要考90分,需要把哪些知识掌握到什么程度——&b&这个活是最最重要的,基本百试不爽&/b&。&/p&&p&&br&&/p&&p&&b&2、制定计划和复盘&/b&&/p&&p&只有两天就要考试了,这个时候别慌,还是得给自己制定几个计划。这个计划包含这样几个东西:1、事件;2、时间;3、结果&/p&&p&即明天的计划是:明天一天,看完一遍《大学物理》的理论知识,能够达到60分的水平;&/p&&p&不要试图把自己的一天安排得十分规整,比如6点起床,7点吃饭什么的~你只需要明确,一天的时间,看完一遍,能考到60分?不能,那就再巩固一下。不要在自己都觉得危险的情况下就放弃复习。最后,晚上完事过后,对自己今天的学习成果进行一个简单的复盘,比如做一个知识框架的导图或者只是简单地回想一下今天的学习成果和得失。&/p&&p&尽管这一开始很难,但我建议你坚持21天试试,复盘是对你所学知识有效的复习。&/p&&p&&br&&/p&&p&&b&3、试着去理解和联想&/b&&/p&&p&吸收一个知识,第一遍我们可能需要十分钟,第二遍只需要一分钟,到最后可以信手拈来。关于艾宾浩斯的记忆曲线,我就不重复了,大家肯定也都听说过,也都用过,至于效果如何,我想这是分人的。&/p&&p&先说说理解,像政治这种东西就不好理解,所以这个方法不适合政治。但及其适用于理工学科,不论是针对一个公式,还是说一个结论,我们更应该关注这个结论和公式的内在联系。想明白公式的推导过程,亲自推导一遍有助于增加你对知识的理解。就比如高中物理,高中物理解题有很多方法和套路,但我们学1000种方法但可能考官有一万种方式来考我们。但唯一不变的是初始的定理,其实再多的方法运用也不过是从定理上面衍生出去的,把这些定理立足的过程推导一遍,并试着找出他们的内在联系,然后你会发现,那些出题的套路不过是在上面变一些花样而已......&/p&&p&当然,这些公式和定理并不是什么复杂的东西,更不要你绞尽脑汁去想怎么推导,因为书上都有。掌握这个方法,能够绊倒你的东西已经不多了。&/p&&p&然后说说联想,说到联想就不得不首推思维导图了。相信不少看过思维导图丛书的小伙伴都知道,思维导图的构建其实跟我们的神经元很相似。思维导图让左右脑得到了联动,更适合于知识框架的构建。关于思维导图的丛书,可以关注公众号——小强职场说,回复【时间】领取。&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-e40cd0de2ce17b5b194b1_b.jpg& data-caption=&& data-rawwidth=&842& data-rawheight=&804& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&https://pic3.zhimg.com/50/v2-e40cd0de2ce17b5b194b1_r.jpg&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-526fecf2d5ed3fce626cfc_b.jpg& data-caption=&& data-rawwidth=&779& data-rawheight=&476& class=&origin_image zh-lightbox-thumb& width=&779& data-original=&https://pic2.zhimg.com/50/v2-526fecf2d5ed3fce626cfc_r.jpg&&&/figure&&p&当然了,直接用右脑将文字转化为图形,把关键信息在图形上表示出来是种不错的方法。之前在看TED演讲的时候,演讲者称,这样的记忆效率是纯文字的两倍。我不是记忆大师,但看过最强大脑的伙伴们应该知道,里面记忆力惊人的选手们实际上都是通过后天训练将右脑的记忆功能得到了开发。所以思维导图值得你一看,当然了,我也推荐几款用于制作思维导图的工具。&/p&&p&&b&手机App——思维导图&/b&&/p&&p&这是非常简便的一款手机App,分分钟就可以做出一份导图。页面简洁,没有广告,只是导图功能有限,只能制作最简单的版本。&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-449efbca44acdb_b.jpg& data-caption=&& data-rawwidth=&1080& data-rawheight=&1920& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic3.zhimg.com/50/v2-449efbca44acdb_r.jpg&&&/figure&&p&&b&电脑端:Xmind、百度脑图&/b&&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-f455fea9398_b.jpg& data-caption=&& data-rawwidth=&2560& data-rawheight=&1454& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&https://pic1.zhimg.com/50/v2-f455fea9398_r.jpg&&&/figure&&p&Xmind是一款非常强大的思维导图制作工具了,支持各种形式的导图绘制,高级功能收费。&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-bdec4e55ffb_b.jpg& data-caption=&& data-rawwidth=&1108& data-rawheight=&681& class=&origin_image zh-lightbox-thumb& width=&1108& data-original=&https://pic2.zhimg.com/50/v2-bdec4e55ffb_r.jpg&&&/figure&&p&百度脑图的优点是在线制作,随时分享保存,而且页面非常简洁明了。当然功能强大丰富比Xmind略有不如,但并不影响它超棒的体验。&/p&&p&&br&&/p&&p&&b&4、用好番茄时间管理法&/b&&/p&&p&25分钟,专注做一件事情,再休息5分钟,这就是一个完整的番茄。&/p&&p&起初我也只是听说番茄,但其实我或多或少用到了它。&/p&&p&在学习的时候,我一般会保持长期专注,大约40分钟(比番茄长),这个要看个人,理论认为25分钟效率最高,但我觉得40分钟也不差。专注学习后,一般会出去打一下望,透个气,或者就没心没肺地玩下手机。然后继续~中途基本不碰手机,这样学习下来效率真的很高,不信的小伙伴可以试试。我不推荐直接扔掉手机,哈哈,手机不背这个锅。&/p&&p&不过,我以前在自习室看很多小伙伴就复习着复习着就开始看手机,这就是之前说的,人潜意识总是倾向于满足现在的快乐。这时候,如果不是特别想就把手机放在一边。如果不能抑制,那还是玩吧,今天就不要学习了。&/p&&p&&br&&/p&&p&&b&5、不建议一天投入大量的时间学习&/b&&/p&&p&人一天的精力是有限的,我们应该学会的是怎样高效利用有限的时间。&/p&&p&之前我有过一次经历,有一门课,复习到深夜2点多,结果由于大脑长期保持兴奋,一直无法好好睡觉,到了第二天精神很差,考试完全是懵逼的。&/p&&p&所以后面我改了,没必要每天都花十几个小时一直去复习。把自己认为最高效的时间利用起来就可以了,其他时间该干嘛干嘛,没有谁规定学习就不能愉快地玩耍了。长期压抑的心情会导致效率变得很低很低。&/p&&p&至于那种每天睡4个小时,学习像打了鸡血的大神请自动回避。&/p&&p&&br&&/p&&p&&b&6、做笔记做笔记+经常复盘&/b&&/p&&p&笔记应该怎么做已经有答主总结了,我是自愧不如的,起码我在做笔记这上面一直就没有起到表率作用。&/p&&p&但我还是有个小小的建议——不仅把笔记坐在本子上,还要做到自己的心里。从解读书中的知识点,到最后构建知识体系,就是我们读一本书的过程。最后刻在我们心里的是一本书的框架和核心,这个框架和核心我是这样找的:先看书,理出来一个初稿;再看笔记,这遍就很清晰了;再看书,这本书的框架就形成了,当然后面你可以继续添加一些细节。&/p&&p&一般在考试前一个小时,我都不会再系统去看书了。而是回忆整本书的知识框架,然后去进行填充,确实不知道的就看看书,补上去。&/p&&p&起码到现在为止,这个技能还是非常有用的。不论是在工作中还是在学习中,知识体系就是树干,知识只是小树枝和树叶。&/p&&p&&br&&/p&&p&&b&7、给自己一点反馈和奖励&/b&&/p&&p&学也学完了,今天的目标也完成了,这个时候还是不要亏待了自己。学习是一个目标——执行——反馈的过程,没有反馈迟早会失去激情。所以,给自己一点奖励,比如今天晚上,给自己放个小假,看场电影什么的。不要把学习搞成了一件很苦的事情,这样我们的大脑会抗议的呢。&/p&&p&&br&&/p&&p&&b&8、分享一下书籍和App&/b&&/p&&p&&b&我试过很多了,所以给你筛掉了很多其实并没有什么卵用的App。只推荐两个精品&/b&&/p&&p&&b&(1)笔记类&/b&&/p&&p&印象笔记、随笔记、为之笔记功能都非常全面了,你随便选择一款,用来做笔记、收藏都是体验不错的。&/p&&p&&b&(2)时间管理类&/b&&/p&&p&滴答清单(TickTick)、专心App,这两款可以结合使用,一款是清单类,一款是番茄时间管理工具。&/p&&p&&b&(3)相关书籍&/b&&/p&&p&以下十本书外加一个第五代时间管理方法指南送给你(支持手机直接阅读)。&/p&&p&&b&领取方式:关注微信公众号——小强职场说,回复关键词【时间】即可领取。&/b&&/p&&p&&b&点个赞再走好吗? ^ ^&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-ddb24fefb3f83f81eeec787_b.jpg& data-caption=&& data-rawwidth=&647& data-rawheight=&271& class=&origin_image zh-lightbox-thumb& width=&647& data-original=&https://pic2.zhimg.com/50/v2-ddb24fefb3f83f81eeec787_r.jpg&&&/figure&
用我的真实经历说话,不吹不黑。大学考试,大部分课程我都能通过考前两天的突击拿到90+的成绩(985工科)。作为一个几乎不怎么听课的学渣,我的绩点还能达到保研的中上水平,甚至拿过几次奖学金,下面这些方法是功不可没的。关于高效学习,我不是来写论文论…
&h2&我越来越担心我作为一个Java程序员的未来。&/h2&&p&恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述,在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人…他很诚恳地告诉我,你还年轻,真的应该好好地静下心来,深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。个人感觉,这也算是国内大部分程序员最让人悲哀的地方了,当然这也与外界浮躁氛围的蔓延不无关系。不了解这一行的人总觉得程序员都是代码民工,如果自己也认为自己是敲代码的机器的话,我诚恳地建议您尽早转行吧,也许我这么说会得罪伤害一些同行,毕竟转行对任何一个人来说都是有相当的风险和挑战的。不过这绝对应该是善意的忠告。相反,我强烈地认为,程序员应该是最有活力和最有思想的一个群体,只要你不肯让自己浮于表面,更重要的是,必须勤于思考。如果你认可我这句的话,就请您继续往下看看我的感慨,否则,那就希望您好好利用好自己的时间做您最需要做的事吧。&/p&&p&由于面试中被问到Spring,MyBatis的时候,让面试官问得人仰马翻,哑口无言,所以回来之后洗心革面,下决心要把Spring,MyBatis好好研究个明白,再也无法容忍自己只知其一不知其二了。&/p&&h2&&b&清醒的认识自己&/b&&/h2&&p&我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕。&/p&&p&当年纪越来越大后,我开始变得不能加班。我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨)。我在本地教育委员会社区里提供一些帮助,还组织开源兴趣小组参加活动。&/p&&p&我在思考,为什么以前会把如此多的时间全部用在编程上。大量的编程。那是我渴望深入研究一个类库,一个框架或一门技术。&/p&&p&现在的技术的学习曲线的增加,让我的忍耐性越来越低。各种新技术,因为新奇让人兴奋,但最终变成一场场争论。我越来越无法忍受这些充满市场宣传气息的喧嚣。我对技术看重的是稳定,清晰。&/p&&p&据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线图。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f34f755fc0c3a55f458d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&796& data-rawheight=&475& class=&origin_image zh-lightbox-thumb& width=&796& data-original=&https://pic4.zhimg.com/v2-f34f755fc0c3a55f458d_r.jpg&&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-7bef9a092771ecbd498dc1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&793& data-rawheight=&514& class=&origin_image zh-lightbox-thumb& width=&793& data-original=&https://pic3.zhimg.com/v2-7bef9a092771ecbd498dc1_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-56ca3b5d03ac2fd2b749705_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&789& data-rawheight=&488& class=&origin_image zh-lightbox-thumb& width=&789& data-original=&https://pic4.zhimg.com/v2-56ca3b5d03ac2fd2b749705_r.jpg&&&/figure&&p&我特意整理了一下,有很多问题不是靠几句话能讲清楚,所以干脆找朋友录制了一些视频,很多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。如果想学习Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Netty源码分析的朋友可以给关注我,另外分享一篇关于Java开发以及大型互联网面试总结文章&a href=&https://link.zhihu.com/?target=https%3A//www.toutiao.com/i7220877/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?》&/a&&/p&&p&喜欢的可以点个关注,给个赞哦!&/p&
我越来越担心我作为一个Java程序员的未来。恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫折。详细过程我就不再叙述…
&figure&&img src=&https://pic3.zhimg.com/v2-da6e908fbff06e8e14c60d86d776d225_b.jpg& data-rawwidth=&768& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&https://pic3.zhimg.com/v2-da6e908fbff06e8e14c60d86d776d225_r.jpg&&&/figure&&p&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-abd42bbb61ee_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&558& data-rawheight=&315& class=&origin_image zh-lightbox-thumb& width=&558& data-original=&https://pic1.zhimg.com/v2-abd42bbb61ee_r.jpg&&&/figure&&p&作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章。这篇就介绍利用生成式对抗网络(GAN)的两个基本驾驶技能:&br&&/p&&p&1) 去除(爱情)动作片中的马赛克&/p&&p&2) 给(爱情)动作片中的女孩穿(tuo)衣服&/p&&p&&br&&/p&&h2&生成式模型&/h2&&p&上一篇《&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&用GAN生成二维样本的小例子&/a&》中已经简单介绍了GAN,这篇再简要回顾一下生成式模型,算是补全一个来龙去脉。&/p&&p&生成模型就是能够产生指定分布数据的模型,常见的生成式模型一般都会有一个用于产生样本的简单分布。例如一个均匀分布,根据要生成分布的概率密度函数,进行建模,让均匀分布中的样本经过变换得到指定分布的样本,这就可以算是最简单的生成式模型。比如下面例子:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d11b5fb26d3cc8e942f841bafe010cd8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1021& data-rawheight=&443& class=&origin_image zh-lightbox-thumb& width=&1021& data-original=&https://pic1.zhimg.com/v2-d11b5fb26d3cc8e942f841bafe010cd8_r.jpg&&&/figure&&p&图中左边是一个自定义的概率密度函数,右边是相应的1w个样本的直方图,自定义分布和生成这些样本的代码如下:&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&kn&&from&/span& &span class=&nn&&functools&/span& &span class=&kn&&import&/span& &span class=&n&&partial&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span&
&span class=&kn&&from&/span& &span class=&nn&&matplotlib&/span& &span class=&kn&&import&/span& &span class=&n&&pyplot&/span&
&span class=&c1&&# Define a PDF&/span&
&span class=&n&&x_samples&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&arange&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mf&&3.01&/span&&span class=&p&&,&/span& &span class=&mf&&0.01&/span&&span class=&p&&)&/span&
&span class=&n&&PDF&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&empty&/span&&span class=&p&&(&/span&&span class=&n&&x_samples&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&)&/span&
&span class=&n&&PDF&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&&/span& &span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&round&/span&&span class=&p&&(&/span&&span class=&n&&x_samples&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&&/span& &span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&+&/span& &span class=&mf&&3.5&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&mi&&3&/span&
&span class=&n&&PDF&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&=&/span& &span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mf&&0.5&/span& &span class=&o&&*&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&cos&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&pi&/span& &span class=&o&&*&/span& &span class=&n&&x_samples&/span&&span class=&p&&[&/span&&span class=&n&&x_samples&/span& &span class=&o&&&=&/span& &span class=&mi&&0&/span&&span class=&p&&])&/span& &span class=&o&&+&/span& &span class=&mf&&0.5&/span&
&span class=&n&&PDF&/span& &span class=&o&&/=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&sum&/span&&span class=&p&&(&/span&&span class=&n&&PDF&/span&&span class=&p&&)&/span&
&span class=&c1&&# Calculate approximated CDF&/span&
&span class=&n&&CDF&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&empty&/span&&span class=&p&&(&/span&&span class=&n&&PDF&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&)&/span&
&span class=&n&&cumulated&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&n&&CDF&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]):&/span&
&span class=&n&&cumulated&/span& &span class=&o&&+=&/span& &span class=&n&&PDF&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span&
&span class=&n&&CDF&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&cumulated&/span&
&span class=&c1&&# Generate samples&/span&
&span class=&n&&generate&/span& &span class=&o&&=&/span& &span class=&n&&partial&/span&&span class=&p&&(&/span&&span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&interp&/span&&span class=&p&&,&/span& &span class=&n&&xp&/span&&span class=&o&&=&/span&&span class=&n&&CDF&/span&&span class=&p&&,&/span& &span class=&n&&fp&/span&&span class=&o&&=&/span&&span class=&n&&x_samples&/span&&span class=&p&&)&/span&
&span class=&n&&u_rv&/span& &span class=&o&&=&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&random&/span&&span class=&o&&.&/span&&span class=&n&&random&/span&&span class=&p&&(&/span&&span class=&mi&&10000&/span&&span class=&p&&)&/span&
&span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&n&&generate&/span&&span class=&p&&(&/span&&span class=&n&&u_rv&/span&&span class=&p&&)&/span&
&span class=&c1&&# Visualization&/span&
&span class=&n&&fig&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&ax0&/span&&span class=&p&&,&/span& &span class=&n&&ax1&/span&&span class=&p&&)&/span& &span class=&o&&=&/span& &span class=&n&&pyplot&/span&&span class=&o&&.&/span&&span class=&n&&subplots&/span&&span class=&p&&(&/span&&span class=&n&&ncols&/span&&span class=&o&&=&/span&&span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&n&&figsize&/span&&span class=&o&&=&/span&&span class=&p&&(&/span&&span class=&mi&&9&/span&&span class=&p&&,&/span& &span class=&mi&&4&/span&&span class=&p&&))&/span&
&span class=&n&&ax0&/span&&span class=&o&&.&/span&&span class=&n&&plot&/span&&span class=&p&&(&/span&&span class=&n&&x_samples&/span&&span class=&p&&,&/span& &span class=&n&&PDF&/span&&span class=&p&&)&/span&
&span class=&n&&ax0&/span&&span class=&o&&.&/span&&span class=&n&&axis&/span&&span class=&p&&([&/span&&span class=&o&&-&/span&&span class=&mf&&3.5&/span&&span class=&p&&,&/span& &span class=&mf&&3.5&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&n&&numpy&/span&&span class=&o&&.&/span&&span class=&n&&max&/span&&span class=&p&&(&/span&&span class=&n&&PDF&/span&&span class=&p&&)&/span&&span class=&o&&*&/span&&span class=&mf&&1.1&/span&&span class=&p&&])&/span&
&span class=&n&&ax1&/span&&span class=&o&&.&/span&&span class=&n&&hist&/span&&span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&mi&&100&/span&&span class=&p&&)&/span&
&span class=&n&&pyplot&/span&&span class=&o&&.&/span&&span class=&n&&show&/span&&span class=&p&&()&/span&
&/code&&/pre&&/div&&p&对于一些简单的情况,我们会假设已知有模型可以很好的对分布进行建模,缺少的只是合适的参数。这时候很自然只要根据观测到的样本,学习参数让当前观测到的样本下的似然函数最大,这就是最大似然估计(&b&M&/b&aximum &b&L&/b&ikelihood &b&E&/b&stimation):&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Chat%7B%5Ctheta%7D%3D%5Coperatorname%2A%7Bargmax%7D_%7B%5Ctheta%7D+P%28%5Cbm%7Bx%7D%7C%5Ctheta%29+%3D+%5Coperatorname%2A%7Bargmax%7D_%7B%5Ctheta%7D+%5Cprod_%7Bi%3D1%7D%5E%7Bn%7DP%28x_i%7C%5Ctheta%29+& alt=&\hat{\theta}=\operatorname*{argmax}_{\theta} P(\bm{x}|\theta) = \operatorname*{argmax}_{\theta} \prod_{i=1}^{n}P(x_i|\theta) & eeimg=&1&&&/p&&p&MLE是一个最基本的思路,实践中用得很多的还有KL散度(Kullback–Leibler divergence),假设真实分布是P,采样分布是Q,则KL散度为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=D_%7BKL%7D%28P%7C%7CQ%29%3D%5Csum_%7Bx+%5Cin+%5COmega%7DP%28%7Bx%7D%29%5Clog%5Cfrac%7BP%28x%29%7D%7BQ%28x%29%7D+& alt=&D_{KL}(P||Q)=\sum_{x \in \Omega}P({x})\log\frac{P(x)}{Q(x)} & eeimg=&1&&&/p&&p&从公式也能看出来,KL散度描述的是两个分布的差异程度。换个角度来看,让产生的样本和原始分布接近,也就是要让这俩的差异减小,所以最小化KL散度就等同于MLE。从公式上来看的话,我们考虑把公式具体展开一下:&/p&&p&&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cbegin%7Balign%7D+D_%7BKL%7D%28P%7C%7CQ%29+%26%3D%5Csum_%7Bx+%5Cin+%5COmega%7DP%28%7Bx%7D%29%5Clog%5Cfrac%7BP%28x%29%7D%7BQ%28x%29%7D+%5C%5C+%26+%3D-%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BQ%28x%29%7D+%2B%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BP%28x%29%7D+%5C%5C+%26+%3D-%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BQ%28x%29%7D+%2BH%28P%29+%5Cend%7Balign%7D& alt=&\begin{align} D_{KL}(P||Q) &=\sum_{x \in \Omega}P({x})\log\frac{P(x)}{Q(x)} \\ & =-\sum_{x\in\Omega}P({x})\log{Q(x)} +\sum_{x\in\Omega}P({x})\log{P(x)} \\ & =-\sum_{x\in\Omega}P({x})\log{Q(x)} +H(P) \end{align}& eeimg=&1&&&/p&&p&公式的第二项就是熵,先不管这项,用H(P)表示。接下来考虑一个小trick:从Q中抽样n个样本&img src=&https://www.zhihu.com/equation?tex=%7Bx_1%2Cx_2%2C...%2Cx_n%7D& alt=&{x_1,x_2,...,x_n}& eeimg=&1&&,来估算P(x)的经验值(empirical density function):&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Chat%7BP%7D%28x%29%3D%5Cfrac+1+n+%5Csum_%7Bi%3D1%7D%5En+%5Cdelta%28x_i-x%29& alt=&\hat{P}(x)=\frac 1 n \sum_{i=1}^n \delta(x_i-x)& eeimg=&1&&&/p&&p&其中&img src=&https://www.zhihu.com/equation?tex=%5Cdelta%28%5Ccdot%29& alt=&\delta(\cdot)& eeimg=&1&&是狄拉克&img src=&https://www.zhihu.com/equation?tex=%5Cdelta& alt=&\delta& eeimg=&1&&函数,把这项替换到上面公式的P(x):&/p&&p&&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cbegin%7Balign%7D+D_%7BKL%7D%28P%7C%7CQ%29+%26%3D-%5Csum_%7Bx%5Cin%5COmega%7D%5Cfrac+1+n+%5Csum_%7Bi%3D1%7D%5En+%5Cdelta%28x_i-x%29%5Clog%7BQ%28x%29%7D+%2BH%28P%29+%5C%5C+%26+%3D-%5Cfrac+1+n+%5Csum_%7Bi%3D1%7D%5En+%5Csum_%7Bx%5Cin%5COmega%7D+%5Cdelta%28x_i-x%29%5Clog%7BQ%28x%29%7D+%2BH%28P%29+%5Cend%7Balign%7D& alt=&\begin{align} D_{KL}(P||Q) &=-\sum_{x\in\Omega}\frac 1 n \sum_{i=1}^n \delta(x_i-x)\log{Q(x)} +H(P) \\ & =-\frac 1 n \sum_{i=1}^n \sum_{x\in\Omega} \delta(x_i-x)\log{Q(x)} +H(P) \end{align}& eeimg=&1&&&/p&&p&因为是离散的采样值,所以&img src=&https://www.zhihu.com/equation?tex=%5Csum_%7Bx%5Cin%5COmega%7D+%5Cdelta%28x_i-x%29& alt=&\sum_{x\in\Omega} \delta(x_i-x)& eeimg=&1&&中只有&img src=&https://www.zhihu.com/equation?tex=x%3Dx_i& alt=&x=x_i& eeimg=&1&&的时候狄拉克&img src=&https://www.zhihu.com/equation?tex=%5Cdelta& alt=&\delta& eeimg=&1&&函数才为1,所以考虑&img src=&https://www.zhihu.com/equation?tex=x%3Dx_i& alt=&x=x_i& eeimg=&1&&时这项直接化为1:&/p&&p&&br&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=D_%7BKL%7D%28P%7C%7CQ%29+%3D-%5Cfrac+1+n%5Csum_%7Bi%3D1%7D%5En+%5Clog%7BQ%28x_i%29%7D+%2BH%28P%29& alt=&D_{KL}(P||Q) =-\frac 1 n\sum_{i=1}^n \log{Q(x_i)} +H(P)& eeimg=&1&&&/p&&p&第一项正是似然的负对数形式。&/p&&p&说了些公式似乎跑得有点远了,其实要表达还是那个简单的意思:通过减小两个分布的差异可以让一个分布逼近另一个分布。仔细想想,这正是GAN里面adversarial loss的做法。&/p&&p&很多情况下我们面临的是更为复杂的分布,比如&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&上篇文章&/a&中的例子,又或是实际场景中更复杂的情况,比如生成不同人脸的图像。这时候,作为具有universal approximation性质的神经网络是一个看上去不错的选择[1]:&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-6fee20494f50baae2c1dc5fc_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1561& data-rawheight=&549& class=&origin_image zh-lightbox-thumb& width=&1561& data-original=&https://pic4.zhimg.com/v2-6fee20494f50baae2c1dc5fc_r.jpg&&&/figure&&p&所以虽然GAN里面同时包含了生成网络和判别网络,但本质来说GAN的目的还是生成模型。从生成式模型的角度,Ian Goodfellow总结过一个和神经网络相关生成式方法的“家谱”[1]:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-8c6f1d8ee39dfbb4fcfb2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&771& data-rawheight=&498& class=&origin_image zh-lightbox-thumb& width=&771& data-original=&https://pic1.zhimg.com/v2-8c6f1d8ee39dfbb4fcfb2_r.jpg&&&/figure&&p&在这其中,当下最流行的就是GAN和&b&V&/b&ariational &b&A&/b&uto&b&E&/b&ncoder(VAE),两种方法的一个简明示意如下[3]:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-380cde71a2f6ece28b4a97_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&568& data-rawheight=&274& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&https://pic1.zhimg.com/v2-380cde71a2f6ece28b4a97_r.jpg&&&/figure&&p&本篇不打算展开讲什么是VAE,不过通过这个图,和名字中的autoencoder也大概能知道,VAE中生成的loss是基于重建误差的。而只基于重建误差的图像生成,都或多或少会有图像模糊的缺点,因为误差通常都是针对全局。比如基于MSE(Mean Squared Error)的方法用来生成超分辨率图像,容易出现下面的情况[4]:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-78f53b142fab51b0c09a1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&892& data-rawheight=&598& class=&origin_image zh-lightbox-thumb& width=&892& data-original=&https://pic1.zhimg.com/v2-78f53b142fab51b0c09a1_r.jpg&&&/figure&&p&在这个二维示意中,真实数据分布在一个U形的流形上,而MSE系的方法因为loss的形式往往会得到一个接近平均值所在的位置(蓝色框)。&/p&&p&GAN在这方面则完爆其他方法,因为目标分布在流形上。所以只要大概收敛了,就算生成的图像都看不出是个啥,清晰度常常是有保证的,而这正是去除女优身上马赛克的理想特性!&/p&&p&&br&&/p&&h2&马赛克-&清晰画面:超分辨率(Super Resolution)问题&/h2&&p&说了好些铺垫,终于要进入正题了。首先明确,去马赛克其实是个图像超分辨率问题,也就是如何在低分辨率图像基础上得到更高分辨率的图像:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-31c84b42ad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&784& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&784& data-original=&https://pic2.zhimg.com/v2-31c84b42ad_r.jpg&&&/figure&&p&视频中超分辨率实现的一个套路是通过不同帧的低分辨率画面猜测超分辨率的画面,有兴趣了解这个思想的朋友可以参考我之前的一个答案:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&如何通过多帧影像进行超分辨率重构? &/a& &/p&&p&不过基于多帧影像的方法对于女优身上的马赛克并不是很适用,所以这篇要讲的是基于单帧图像的超分辨率方法。&/p&&h2&SRGAN&/h2&&p&说到基于GAN的超分辨率的方法,就不能不提到SRGAN[4]:《Photo-Realistic Single Image &b&S&/b&uper-&b&R&/b&esolution Using a &b&G&/b&enerative &b&A&/b&dversarial&br&&b&N&/b&etwork》。这个工作的思路是:基于像素的MSE loss往往会得到大体正确,但是高频成分模糊的结果。所以只要重建低频成分的图像内容,然后靠GAN来补全高频的细节内容,就可以了:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-128029dfc7c470b07a4a1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&446& data-rawheight=&131& class=&origin_image zh-lightbox-thumb& width=&446& data-original=&https://pic3.zhimg.com/v2-128029dfc7c470b07a4a1_r.jpg&&&/figure&&p&这个思路其实和最早基于深度网络的风格迁移的思路很像(有兴趣的读者可以参考我之前文章&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&瞎谈CNN:通过优化求解输入图像&/a&的最后一部分),其中重建内容的content loss是原始图像和低分辨率图像在VGG网络中的各个ReLU层的激活值的差异:&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-331e02e394cfd04e7114a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&529& data-rawheight=&150& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&https://pic3.zhimg.com/v2-331e02e394cfd04e7114a_r.jpg&&&/figure&&p&生成细节adversarial loss就是GAN用来判别是原始图还是生成图的loss:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-fa5af2a10fe9a4dadfb04_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&394& data-rawheight=&89& class=&content_image& width=&394&&&/figure&&p&把这两种loss放一起,取个名叫perceptual loss。训练的网络结构如下:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-17861edeb4bcfae4e9f369_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&780& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&780& data-original=&https://pic1.zhimg.com/v2-17861edeb4bcfae4e9f369_r.jpg&&&/figure&&p&正是上篇文章中讲过的C-GAN,条件C就是低分辨率的图片。SRGAN生成的超分辨率图像虽然PSNR等和原图直接比较的传统量化指标并不是最好,但就视觉效果,尤其是细节上,胜过其他方法很多。比如下面是作者对比bicubic插值和基于ResNet特征重建的超分辨率的结果:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-f3b4376938ffcbd23c42d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&981& data-rawheight=&392& class=&origin_image zh-lightbox-thumb& width=&981& data-original=&https://pic4.zhimg.com/v2-f3b4376938ffcbd23c42d_r.jpg&&&/figure&&p&可以看到虽然很多细节都和原始图片不一样,不过看上去很和谐,并且细节的丰富程度远胜于SRResNet。这些栩栩如生的细节,可以看作是GAN根据学习到的分布信息“联想”出来的。&/p&&p&对于更看重“看上去好看”的超分辨率应用,SRGAN显然是很合适的。当然对于一些更看重重建指标的应用,比如超分辨率恢复嫌疑犯面部细节,SRGAN就不可以了。&/p&&h2&pix2pix&/h2&&p&虽然专门用了一节讲SRGAN,但本文用的方法其实是pix2pix[5]。这项工作刚在arxiv上发布就引起了不小的关注,它巧妙的利用GAN的框架解决了通用的Image-to-Image translation的问题。举例来说,在不改变分辨率的情况下:把照片变成油画风格;把白天的照片变成晚上;用色块对图片进行分割或者倒过来;为黑白照片上色;…每个任务都有专门针对性的方法和相关研究,但其实总体来看,都是像素到像素的一种映射啊,其实可以看作是一个问题。这篇文章的巧妙,就在于提出了pix2pix的方法,一个框架,解决所有这些问题。方法的示意图如下:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-e2ea753b7b0d7f18abee3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&485& data-rawheight=&437& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&https://pic1.zhimg.com/v2-e2ea753b7b0d7f18abee3_r.jpg&&&/figure&&p&就是一个Conditional GAN,条件C是输入的图片。除了直接用C-GAN,这项工作还有两个改进:&/p&&p&1)&b&利用U-Net结构生成细节更好的图片&/b&[6]&/p&&figure&&img src=&https://pic4.zhimg.com/v2-beb074bebbfa0db_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&907& data-rawheight=&612& class=&origin_image zh-lightbox-thumb& width=&907& data-original=&https://pic4.zhimg.com/v2-beb074bebbfa0db_r.jpg&&&/figure&&p&U-Net是德国Freiburg大学模式识别和图像处理组提出的一种全卷积结构。和常见的先降采样到低维度,再升采样到原始分辨率的编解码(Encoder-Decoder)结构的网络相比,U-Net的区别是加入skip-connection,对应的feature maps和decode之后的同样大小的feature maps按通道拼(concatenate)一起,用来保留不同分辨率下像素级的细节信息。U-Net对提升细节的效果非常明显,下面是pix2pix文中给出的一个效果对比:&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-2fb4ddb2fdc24eea31eea_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&563& data-rawheight=&307& class=&origin_image zh-lightbox-thumb& width=&563& data-original=&https://pic4.zhimg.com/v2-2fb4ddb2fdc24eea31eea_r.jpg&&&/figure&&p&可以看到,各种不同尺度的信息都得到了很大程度的保留。&/p&&p&2)&b&利用马尔科夫性的判别器(PatchGAN)&br&&/b&&/p&&p&pix2pix和SRGAN的一个异曲同工的地方是都有用重建解决低频成分,用GAN解决高频成分的想法。在pix2pix中,这个思想主要体现在两个地方。一个是loss函数,加入了L1 loss用来让生成的图片和训练的目标图片尽量相似,而图像中高频的细节部分则交由GAN来处理:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-cb180ad03d8a72e7883285b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&447& data-rawheight=&51& class=&origin_image zh-lightbox-thumb& width=&447& data-original=&https://pic4.zhimg.com/v2-cb180ad03d8a72e7883285b_r.jpg&&&/figure&&p&还有一个就是&b&PatchGAN&/b&,也就是具体的GAN中用来判别是否生成图的方法。PatchGAN的思想是,既然GAN只负责处理低频成分,那么判别器就没必要以一整张图作为输入,只需要对NxN的一个图像patch去进行判别就可以了。这也是为什么叫Markovian discriminator,因为在patch以外的部分认为和本patch互相独立。&/p&&p&具体实现的时候,作者使用的是一个NxN输入的全卷积小网络,最后一层每个像素过sigmoid输出为真的概率,然后用BCEloss计算得到最终loss。这样做的好处是因为输入的维度大大降低,所以参数量少,运算速度也比直接输入一张快,并且可以计算任意大小的图。作者对比了不同大小patch的结果,对于256x256的输入,patch大小在70x70的时候,从视觉上看结果就和直接把整张图片作为判别器输入没什么区别了:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-5172ca51efb4ee3e453b15_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&842& data-rawheight=&107& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&https://pic1.zhimg.com/v2-5172ca51efb4ee3e453b15_r.jpg&&&/figure&&h2&生成带局部马赛克的训练数据&/h2&&p&利用pix2pix,只要准备好无码和相应的有码图片就可以训练去马赛克的模型了,就是这么简单。那么问题是,如何生成有马赛克的图片?&/p&&p&有毅力的话,可以手动加马赛克,这样最为精准。这节介绍一个不那么准,但是比随机强的方法:利用分类模型的激活区域进行自动马赛克标注。&/p&&p&基本思想是利用一个可以识别需要打码图像的分类模型,提取出这个模型中对应类的CAM(&b&C&/b&lass &b&A&/b&ctivation &b&M&/b&ap)[7],然后用马赛克遮住响应最高的区域即可。这里简单说一下什么是CAM,对于最后一层是全局池化(平均或最大都可以)的CNN结构,池化后的feature map相当于是做了个加权相加来计算最终的每个类别进入softmax之前的激活值。CAM的思路是,把这个权重在池化前的feature map上按像素加权相加,最后得到的单张的激活图就可以携带激活当前类别的一些位置信息,这相当于一种弱监督(classification--&localization):&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-fd28f0b871bd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&660& data-rawheight=&314& class=&origin_image zh-lightbox-thumb& width=&660& data-original=&https://pic4.zhimg.com/v2-fd28f0b871bd_r.jpg&&&/figure&&p&上图是一个CAM的示意,用澳洲梗类别的CAM,放大到原图大小,可以看到小狗所在的区域大致是激活响应最高的区域。&/p&&p&那么就缺一个可以识别XXX图片的模型了,网上还恰好就有个现成的,yahoo于2016年发布的开源色情图片识别模型Open NSFW(&b&N&/b&ot &b&S&/b&afe &b&F&/b&or &b&W&/b&ork):&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//github.com/yahoo/open_nsfw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&yahoo/open_nsfw&/a&&/p&&p&CAM的实现并不难,结合Open NSFW自动打码的代码和使用放在了这里:&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/random_bonus/generate_mosaic_for_porno_images& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&给XX图片生成马赛克&/a&&/p&&p&&br&&/p&&p&(成功打码的)效果差不多是下面这样子:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-cbefa39dc983f2645dd8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&768& data-rawheight=&256& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&https://pic4.zhimg.com/v2-cbefa39dc983f2645dd8_r.jpg&&&/figure&&h2&去除(爱情)动作片中的马赛克&/h2&&p&这没什么好说的了,一行代码都不用改,只需要按照前面的步骤把数据准备好,然后按照pix2pix官方的使用方法训练就可以了:&/p&&p&Torch版pix2pix:&a href=&https://link.zhihu.com/?target=https%3A//github.com/phillipi/pix2pix& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&phillipi/pix2pix&/a&&/p&&p&pyTorch版pix2pix(Cycle-GAN二合一版):&a href=&https://link.zhihu.com/?target=https%3A//github.com/junyanz/pytorch-CycleGAN-and-pix2pix& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junyanz/pytorch-CycleGAN-and-pix2pix&/a&&/p&&p&从D盘里随随便便找了几千张图片,用来执行了一下自动打码和pix2pix训练(默认参数),效果是下面这样:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-9f52b17c0e1296767cbfbfafc290a5bd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&814& data-rawheight=&691& class=&origin_image zh-lightbox-thumb& width=&814& data-original=&https://pic2.zhimg.com/v2-9f52b17c0e1296767cbfbfafc290a5bd_r.jpg&&&/figure&&p&什么?你问说好给女优去马赛克呢?女优照片呢?&/p&&figure&&img src=&https://pic4.zhimg.com/v2-480fb8a4dcfc7a4f92ec_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&75& data-rawheight=&60& class=&content_image& width=&75&&&/figure&&p&还是要说一下,在真人照片上的效果比蘑菇和花强。&/p&&h2&对偶学习(Dual Learning)&/h2&&p&去马赛克已经讲完了,接下来就是给女孩穿(tuo)衣服了,动手之前,还是先讲一下铺垫:&b&对偶学习&/b&和&b&Cycle-GAN&/b&。&/p&&p&对偶学习是MSRA于2016年提出的一种用于机器翻译的增强学习方法[8],目的是解决海量数据配对标注的难题,个人觉得算是一种弱监督方法(不过看到大多数文献算作无监督)。以机器翻译为例,对偶学习基本思想如下图[9]:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c4b1eeda364fb6c9bada02f3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&866& data-rawheight=&399& class=&origin_image zh-lightbox-thumb& width=&866& data-original=&https://pic3.zhimg.com/v2-c4b1eeda364fb6c9bada02f3_r.jpg&&&/figure&&p&左边的灰衣男只懂英语,右边的黑衣女只懂中文,现在的任务就是,要学习如何翻译英语到中文。对偶学习解决这个问题的思路是:给定一个模型&img src=&https://www.zhihu.com/equation?tex=f%3Ax%5Crightarrow+y& alt=&f:x\rightarrow y& eeimg=&1&&一上来无法知道f翻译得是否正确,但是如果考虑上&img src=&https://www.zhihu.com/equation?tex=f& alt=&f& eeimg=&1&&的对偶问题&img src=&https://www.zhihu.com/equation?tex=g%3Ay%5Crightarrow+x& alt=&g:y\rightarrow x& eeimg=&1&&,那么我可以尝试翻译一个英文句子到中文,再翻译回来。这种转了一圈的结果&img src=&https://www.zhihu.com/equation?tex=x%27%3Dg%28f%28x%29%29& alt=&x'=g(f(x))& eeimg=&1&&,灰衣男是可以用一个标准(BLEU)判断x'和x是否一个意思,并且把结果的一致性反馈给这两个模型进行改进。同样的,从中文取个句子,这样循环翻译一遍,两个模型又能从黑衣女那里获取反馈并改进模型。其实这就是强化学习的过程,每次翻译就是一个action,每个action会从环境(灰衣男或黑衣女)中获取reward,对模型进行改进,直至收敛。&/p&&p&也许有的人看到这里会觉得和上世纪提出的Co-training很像,这个在知乎上也有讨论:&/p&&p&&a href=&https://www.zhihu.com/question/& class=&internal&&如何理解刘铁岩老师团队在NIPS 2016上提出的对偶学习(Dual Learning)?&/a&&/p&&p&个人觉得还是不一样的,Co-Training是一种multi-view方法,比如一个输入x,如果看作是两个拼一起的特征&img src=&https://www.zhihu.com/equation?tex=x%3D%28x_1%2Cx_2%29& alt=&x=(x_1,x_2)& eeimg=&1&&,并且假设&img src=&https://www.zhihu.com/equation?tex=x_1& alt=&x_1& eeimg=&1&&和&img src=&https://www.zhihu.com/equation?tex=x_2& alt=&x_2& eeimg=&1&&互相独立,那么这时候训练两个分类器&img src=&https://www.zhihu.com/equation?tex=f_1%28%5Ccdot%29& alt=&f_1(\cdot)& eeimg=&1&&和&img src=&https://www.zhihu.com/equation?tex=f_2%28%5Ccdot%29& alt=&f_2(\cdot)& eeimg=&1&&对于任意样本x应该有&img src=&https://www.zhihu.com/equation?tex=f_1%28x_1%29%3Df_2%28x_2%29& alt=&f_1(x_1)=f_2(x_2)& eeimg=&1&&。这对没有标注的样本是很有用的,相当于利用了同一个样本分类结果就应该一样的隐含约束。所以Co-Training的典型场景是少量标注+大量未标注的半监督场景。并且&img src=&https://www.zhihu.com/equation?tex=f_1& alt=&f_1& eeimg=&1&&和&img src=&https://www.zhihu.com/equation?tex=f_2& alt=&f_2& eeimg=&1&&其实是两个不同,但是domain指向相同的任务。而Dual Learning中&img src=&https://www.zhihu.com/equation?tex=f& alt=&f& eeimg=&1&&和&img src=&https://www.zhihu.com/equation?tex=g& alt=&g& eeimg=&1&&是对偶任务,利用的隐含约束是&img src=&https://www.zhihu.com/equation?tex=x%5Crightarrow+y%5Crightarrow+x& alt=&x\rightarrow y\rightarrow x& eeimg=&1&&的cycle consistency。对输入的特征也没有像Co-Training有那么明确的假设,学习方法上也不一样,Dual Learning算是强化学习。&/p&&h2&CycleGAN和未配对图像翻译(Unpaired Image-to-Image Translation)&/h2&&p&CycleGAN,翻译过来就是:轮着干,是结合了对偶学习和GAN一个很直接而巧妙的想法[10],示意图如下:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-9e7396ebccb7c42302fc97_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&838& data-rawheight=&216& class=&origin_image zh-lightbox-thumb& width=&838& data-original=&https://pic4.zhimg.com/v2-9e7396ebccb7c42302fc97_r.jpg&&&/figure&&p&X和Y分别是两种不同类型图的集合,比如穿衣服的女优和没穿衣服的女优。所以给定一张穿了衣服的女优,要变成没穿衣服的样子,就是个图片翻译问题。CycleGAN示意图中(b)和(c)就是Dual Learning:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-de51cac58b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&347& data-rawheight=&62& class=&content_image& width=&347&&&/figure&&p&在Dual Learning基础上,又加入了两个判别器&img src=&https://www.zhihu.com/equation?tex=D_X& alt=&D_X& eeimg=&1&&和&img src=&https://www.zhihu.com/equation?tex=D_Y& alt=&D_Y& eeimg=&1&&用来进行对抗训练,让翻译过来的图片尽量逼近当前集合中的图片:&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-e0ea7a6b38bf2a20cea4ea6f741a4c67_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&442& data-rawheight=&59& class=&origin_image zh-lightbox-thumb& width=&442& data-original=&https://pic3.zhimg.com/v2-e0ea7a6b38bf2a20cea4ea6f741a4c67_r.jpg&&&/figure&&p&全考虑一起,最终的loss是:&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-e6d99e7edea969da3dad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&357& data-rawheight=&87& class=&content_image& width=&357&&&/figure&&p&也许有人会问,那不加cycle-consistency,直接用GAN学习一个&img src=&https://www.zhihu.com/equation?tex=X%5Crightarrow+Y& alt=&X\rightarrow Y& eeimg=&1&&的映射,让生成的Y的样本尽量毕竟Y里本身的样本可不可以呢?这个作者在文中也讨论了,会产生GAN训练中容易发生的mode collapse问题。mode collapse问题的一个简单示意如下[1]:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-309fce6329592babb784ed_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&842& data-rawheight=&262& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&https://pic1.zhimg.com/v2-309fce6329592babb784ed_r.jpg&&&/figure&&p&上边的是真实分布,下边的是学习到的分布,可以看到学习到的分布只是完整分布的一部分,这个叫做partial mode collapse,是训练不收敛情况中常见的一种。如果是完全的mode collapse,就是说生成模型得到的都是几乎一样的输出。而加入Cycle-consistency会让一个domain里不同的样本都尽量映射到另一个domain里不同的地方,理想情况就是双射(bijection)。直观来理解,如果通过&img src=&https://www.zhihu.com/equation?tex=X%5Crightarrow+Y& alt=&X\rightarrow Y& eeimg=&1&&都映射在Y中同一个点,那么这个点y通过&img src=&https://www.zhihu.com/equation?tex=Y%5Crightarrow+X& alt=&Y\rightarrow X& eeimg=&1&&映射回来显然不可能是多个不同的x,所以加入cycle-consistency就帮助避免了mode collapse。这个问题在另一篇和CycleGAN其实本质上没什么不同的方法DiscoGAN中有更详细的讨论[11],有兴趣的话可以参考。&/p&&p&&br&&/p&&p&有一点值得注意的是,虽然名字叫CycleGAN,并且套路也和C-GAN很像,但是其实只有adversarial,并没有generative。因为严格来说只是学习了&img src=&https://www.zhihu.com/equation?tex=X%5Crightarrow+Y& alt=&X\rightarrow Y& eeimg=&1&&和&img src=&https://www.zhihu.com/equation?tex=Y%5Crightarrow+X& alt=&Y\rightarrow X& eeimg=&1&&的mapping,所谓的generative networ

我要回帖

更多关于 ff14新建角色奖励 的文章

 

随机推荐