求战地风云ol3正版分流

你现在的位置
> 魔兽世界S3赛季末的疯狂 冷门冲龙组合术牧萨
> 魔兽世界S3赛季末的疯狂 冷门冲龙组合术牧萨
魔兽世界S3赛季末的疯狂 冷门冲龙组合术牧萨
16:42:47来源: 厂商提供作者: darksnoopy
  大约在三个礼拜前,我看了kollektiv在ttr上的最新33视频。阵容暗牧、深痛苦术、恢复萨。当时讨论里的说法是k大已经用这个阵容横扫了ttr,排名第一不说,后面想冲分的队伍已经不是想喷他们的分,而是躲着他们打。不过群众们纷纷指出:
  &ttr采用的是s2的装备,在s3菜刀进一步强化和普通服务器中有pve支持的盗贼加入,这个组合大家看看就好,所谓只可远观不可亵玩也&
  &k的组合是巨魔牧师兽人术士,这是这个组合在一些恶劣的条件下能够执行战术的前提&
  此外还有一些诸如怀疑他们能否在战惩德的菜刀压制下活过10秒之类过于脑残的评论就不摘录了。在下载完这部视频,并把这部画质精致到令人发指(我开着wow都没法看)的视频看了n遍之后,我立即带着满心的欲火冲上线拉了55的两个队友,买表建队开排。历经3个礼拜百余场战斗,目前分数暂时停留在2500+。
  我想说,这是一个很有意思很激情的组合,就像那些最最暴力纯x治疗的菜刀队一样,这个组合也是属于依靠英勇、多dot、cc和双沉默直接把你按死的类型,而且因为没有致死加上暗牧弱到没法讲的续航,在绝大部分情况下你只要,或者说只能想的就是如何在短时间内按死对方一个人。上手这个缺点和优点一样明显的组合时,虽然我们手头的资料很少(能说的上的只有k的一部视频),其他都是在自己摸索。但对手估计在面对这个组合时更迷茫,不知从何下手,甚至碰到一些菜刀或贼法牧输急了直接rush我萨满的。所以,假如你在一个菜刀横行的战场组,那么这个组合绝对是你33冲龙的的不二选择。而假如你,队里的萨满,还有那么点pve的支持,那么更加时如虎添翼。
  好了,废话少说,先扫下盲。
  1. 关于种族问题
  巨魔牧师和兽人术士的确是这个组合的绝配,黄金搭档。在面对最艰苦的战斗时我每每感慨假如xxx那该多么xxx。但其实少了这2个绝对也可以打。我本人就是联盟,我们的组合是精灵牧师、侏儒术士加德莱尼萨满(这个比较废话)。其实,这个组合的精髓是依靠挂满dot后控制一波治疗,配合双沉默和暗牧术士的双补刀技能来达到秒杀。如果强控失败,被瞬间刷上80%和瞬间刷满并不是一个质的区别。所以,联盟人士也一样可以玩转这个组合。
  2.s3的菜刀
  关于这个问题是这样的,昨天我还在群里和703大大说,我们看到带战士的队伍眼睛里就是2颗心。所有带战士的组合都被这个组合严重克制。至于另一个菜刀代表盗贼,有他出场的几乎所有组合的确都会比较艰苦。下文中会一一阐述如何应对。
  3.任何时候,推荐抱团
  此组合不怕和任何组合打抱团战,简单地说,越乱越好。由于狗和牧师的双防御性驱散存在,作为萨满请勇敢地和队友一起冲上去。至于震击的施放对象以协助术牧完成集火为优先,也就是震对术牧施放的cc技能,下文会对不同组合进行阐述。
  4.萨满是否应该参与集火?
  这个问题我们可以直接在k的视频中找到答案。我们可以看到,k的站位一般都很靠前。这是因为暗影队中的萨满一般都不需要担心被集火和控制。而站位靠前也有助于打断对方施法和用根基保护队友。但k除了有时的进攻驱散外,基本就是在全力刷血。经过实战,我得出的也是这个结论。除了面对三奶,萨满基本没有直接参与集火的必要和可能。但这并补代表你不参与进攻,你参与进攻的方式就是驱散和打断。前者不必多说,后者的目的就是确保术牧能够完成战术意图,任何时候,都以打断对术牧的控制技能为最优先级。
  扫盲完毕,推荐天赋 0/9/52。强大的奶力是队里两个脆皮最好的保障。 推荐有pve装的多多换上,我一般穿200韧进去。其实再低一点也没关系,保证那个肩膀和工会徽章看起来像那么回事就行。队里的其他两个人远比你群嘲。(写到这里背后有点冷,以后我老老实实穿s3进去的,请不要集火我谢谢)
  战术篇
  其实,我之所以推荐这个组合,就是因为这个组合打相当多的组合是完全压制,先排一个优先序:战士&增惩&盗贼&法师&其他。面对战惩德,战增德,或其他控制力薄弱的菜刀组合,你们只要按照之前排的优先序挂满dot,然后由术牧2人中没被压的那个去恐掉治疗,之后2个沉默伺候上去,一轮没死看着技能cd再来第二轮,就可以保证90%以上的胜率,你所要做的就是有小德时全力断好吹风(菜刀队断不上也无所谓),协助术牧完成战术意图。没小德时直接去断读条治疗就可以了,这部分的战术就说这点,还是那句话,看到战士,暗影队就是眼睛上面两颗心。大头在下面。
  贼法牧
  33最常见组合,算是暗影队的第一道坎。先说下杀谁的问题,从k的视频中就可以看到,他们大部分的时候选择的是直接杀贼,其实杀贼和杀法师从难度上来说的确差不多,但的确推荐杀贼更好一些。主要是几个原因:
  1.残局,即使杀掉法师,如果那时暗牧和你都已接近oom,那么处理得不好一样很容易被翻盘。(其实我一直觉得这是最重要的原因&&)
  2.如果杀法师,贼法牧用这样一种战术就可以把同水平下你的胜率压到50%以下:压术士,法师反制全部留给暗牧。一次冰箱后多猥琐,用压制和羊撑到第二次冰箱。基本那时你已经接近oom,就非常不好说。
  所以非常不推荐在法师位置靠后时还是盲目地选择压法师,倒是有一个问题应该留意的。贼和法师都是依靠技能在你们面前延长生存时间,斗篷和冰箱,开局后留意,如果他们过早地用掉这些他们宝贵的救生技,立即转火。
  以上是基本战术和解释,下面是战斗过程中要留意的,做到的,只要做到以下这些事,我个人认为,一般的贼法牧并不难打(当然由于这个组合的过于悠久,与那些真正的&老怪&们的战斗会是异常艰苦的&&)
  防守方面,如果你们选择的是压盗贼,那么法师那边就提2个要求,第一不能让他搓出一个冰箭,第二不能让他完成一次对牧师的长控制。
  冰箭是这样的,开局直接甩语言,不然开场你可能因为公共cd加上冰纹的提速断不上。冰纹后第一时间驱掉,我们一般由萨满来负责这件事。之后震击和根基基本够应付冰箭。值得一提的是事先要说好假如强反萨满接冰箭,那么留一个沉默。痛苦术就是一个脆皮巧克力,不要玩火。而反过来说,对方法师不用反制去限制暗牧,那么只要你们成功防守住,就可以给予对方沉重的打击。羊的话我们牧师自己会灭破羊一次,之后的一次一般由我帮他解决。如果要动用到狗,那么请你们的牧师自己事先注意不要和术士站一起,冰环和羊同时在的话就不好说了。
  补充一句:其实在低分段压法师会更稳妥一点。在你们的配合还不够娴熟时,直接压制法师可以更好地控制他的dps,相对来说治疗这边的压力会小一点。只是压法师最晚不能拖过第二个冰箱后30秒。这基本是暗影队压法师的底线了。到那时假如还没把法师压下来,即使之后你们侥幸杀掉法师,那么贼牧对付空蓝的牧师和空蓝的萨满加一个已经不敢分流的脆皮,翻盘的概率是在太大了。
  需要指出的是打贼牧残局请千万不要乱上dot,不然就准备好以&愈合祷言太bug&为标题的抱怨吧。
  贼术德
  作为法系克星的盗贼,竟然是这个组合最大的突破口。不免令人有点感慨。基本战术方面不用说,除非小德长得太欠揍,不然全程压贼。作为萨满这场比赛的任务除了刷血外是对付术士的恐惧和做对盗贼的进攻驱散。小德的吹风基本不用你去管。因为术牧会去恐德,而正是对德的恐惧才是他们进攻的号角。断了吹风被术士挂着语言读恐惧,即使有战栗也会让你们的火力大打折扣。不断吹风牧师和德也会去控德,狗的反制就是留给他的。你要做的就是在小德被恐惧后全力断好术士的恐惧,因为术牧自己本身就可能被语言干扰,恐惧对他们来说就是打断技能。彼此协调好也很重要,术士最好保持对方术士的恐惧,特别是德被恐掉的时候,这对你来说会是非常大的帮助。 其实打贼术德也很体现术牧的水平,能不能完全封锁德甚至驱掉瞬加,还是一波打出诈死然后被直接抬满,之后后续无力,就看术牧的水准了。
  贼牧德
  这年头,真是人人包2奶啊&& 单独把贼包2奶拿出来讲,是因为对阵贼包2奶的战术代表了暗影队的另一种战术。就是抽蓝战。直接dps rush盗贼很吃力,压到暗牧空蓝还没压下来时你们就已经输了。面对贼包2奶,比较好的选择是先把牧师蓝放干。然后暗牧攒满3k蓝或是抓住哪个位置不好时直接一波按死。其实这就是类似术包2奶的战术。在这一战中你作为萨满的任务就是要打控蓝战。单贼的dps使你完全可以有机会喝水。抓住恐惧的间隙利用4秒规则大加一口喝水。而牧师的任务就是乘着英勇一波放干牧师的蓝,然后狗追好牧师,之后具体是杀牧师还是杀贼,就看位置了。
  最后的最后,请允许我为大家隆重介绍,暗影队的大招,当当当,卍解开启!写轮眼发动!三档!没错,暗影队的大招就是-----投入150g,洗点术包2奶!!!
  请各位板砖慢点先,这也是我最近在研究的问题。暗影队最怕什么样的队?实战下来有2种。1种是队中3人或有技能可以避免在短时间内被击杀,或是可以猥琐地呆在后排,通过把战斗时间拖长到暗牧OOM来把暗影队拖垮的。所谓最强的盾,其中以贼包2奶为代表。还有一种就是队中的dps可以有技能顶过1,2波集火,而爆发火力与暗影队相当乃至更强的,其中以贼法萨为代表。而这两种队,其实换术包2奶都相当好打。术包萨牧2奶的队本身比较怕纯菜刀,而暗影队又正是纯菜刀的克星,所以,如果算上2套阵容的话,术牧萨真的是一个比较完善的组合。
  呵呵,这个组合的确蛮有意思的,打起来充满激情,作为治疗很多时候也真的是有生死时速的感觉。说几件比较有意思的事,有个被我们x过几次的战士在我们分战场讨论组这样说: &你们的暗影队还打嘛,我们暗抗装都做好啦...&
  还有次我们为了打贼法萨洗了术包2奶,结果进去碰到的是个被我们吃过几次的战包2奶队。那个战士估计之前被秒怕了,也没留意精神和术士的link,一个冲锋过来挂个断筋和刺耳就援护回去,然后半天不敢出来,我和队友的笑翻了&&
  距离s3赛季结束还有最后几周的时间。其实我本来希望把这篇攻略更早地发出来,但因为觉得经验欠缺才搁置到现在。还有很多不足之处,比如对阵术加2奶的策略,又或者对阵一流贼法牧的细节问题,还有现在都还困扰我的无解的贼法萨。
  但需要指出的是,暗影队真的非常,非常适合短时间内冲分。就像我们经常说4dps打分容易保分难,上手暗影队时我也有这个感觉。2300以下的队伍反应慢点的,法师开不出冰箱,牧师交不出压制就死人就是家常便饭的事。而其对所有带战士的组合的压制性真的比之千羽在55有过之而无不及。所以,假如你恰好有这样2个队友,即使你韧装不齐,也不妨一试,相信会有意外的惊喜:)
  以上内容由厂商提供,本站不对其真实性与准确性负责。
的更多文章
24小时 热门图片
24小时 热门视频
测试时间表
游戏名称:
游戏下载:
开发公司:
运营公司:
按地区划分类型
按画面划分类型
按类型划分类型
按特征划分类型
按状态划分类型
按模式划分类型
按厂家划分类型曾经有一个女生颠覆了我三观中的配偶观。我才发现,原来普通的女孩原来也可以扎根于我的心,那些明星美女都被轰成渣渣。&br&&br&ps:我在那段岁月之前一直认为自己是娶女明星的男人啊。哈哈哈哈哈哈&br&&br&&br&现在开始铺垫:&br&高中二狗时代。&br&我学习比较屌。文理分班分到重点班,重新打乱了高一的固有同窗配对。&br&新的班级男女各一桌,隔排插花式,保证一男三妻,一女三夫。&br&分完座位我内心是操的,我的三妻都是些什么狗s。看来只能好好学习,守得童子起得早了…(鸡鸣&br&&br&高压的学习就像烈日下被挤压的海绵,日复一日的机械化劳作必定让暴风雨来得更猛烈。&br&前方的狗s同学…简称s吧。回了头&br&“请问舒婷的舒字怎么写?&br&&br&我现在都不能理解那一刻的奥妙,至少我的词藻是在这个情景里干涸的。&br&回眸一笑百魅生啦&br&最是那一低头的温柔,恰似水莲花不胜寒风的惊羞啦,&br&都完全不能概括。&br&前面这位被我认为狗s的女生,从此没有了狗,只剩下s,我s心踏地,愿意跪拜在她石榴苹果大姨妈的各类裙下,保护呵护爱护守卫…她的一生和来生。&br&&br&(不知道各位看客是否有这种情况,反正我是真的体验过一见钟情,那种冥冥中好似被注定的缘&br&&br&&br&舒婷是一位诗人,我也是。&br&整个火热的盛夏,充满暴躁和吊扇吹干咸汗的下午,我心如止水,在写一首诗。而下午的课,我一个字都没再听进去。&br&放学铃响,我投掷了自认为高深莫测的烂诗,心里怀着一份细小的憧憬,在s懵b的眼神里目送我离去…&br&&br&&br&&br&&br&彻夜未眠,一夜无话。&br&第二日,毫无波澜,我都在后悔我为什么要在理科班写这种文赳赳的诗,我直接搞一个公式,数形结合画出来是爱心不好吗,不能用化学三价铁离子的红热来代表自己疯狂又沸腾的内心吗?不能靠物理题让她解摩擦需要做多少功吗!就不能直接写,我爱你吗!&br&我恨我自己。&br&&br&整个早晨,我眼睛里倒影的都是黑板的黑,只是我在盯着s秀美的黑发。&br&我学富五车,依然无计可施。&br&&br&然后我亲妈上场了,其实是我们语文老师。由于她在这场战役里为人类作出不可磨灭的助攻,我敬她是我第二亲妈,我成长乳汁的脯育者。&br&亲妈说,这些天我们在学习诗歌,班上有一位进步青年斗胆赋诗,我看过后觉得通神,现张贴至校墙,供天下赏析。&br&&br&那个年代没有网,所以世少了一个红。&br&&br&&br&这厮居然把我给她的摩擦做功递交班主任解,这是什么梗,多大仇,要讲道理啊!&br&-------预知下回分解,请点个赞吧--------&br&老规矩,10个就写&br&反正我的巨糗都没匿名,这个也不匿了。如果你还是个文艺青年,估计在知乎能再相认的。&br&_-----10赞答谢,继续回忆---------&br&&br&&br&后来百炼钢化为绕指柔了,&br&她回过头来看了我,拿起我一本英语周报练习册,说,你的名字真好听。&br&md,讲真,那一刻就是干枯的不毛地流入甘泉的滋味。我内心的设防突然给了s一张最高待遇的VVVIP卡。&br&&br&&br&接下来到校运会了,全校的师生在操场奋力地挥洒青春汗水,她约我在教室一人一边耳机静静地写诗。&br&每字每句,都是爱意。&br&我相信她也是喜欢我的。&br&她送了一支唇膏,&br&说可以抵御秋风的侵蚀;&br&而我对s的侵蚀已经深入骨髓。&br&&br&接下来,我每天只用睡5h,我每日真的会笑醒,我每天上学都是蹦蹦跳跳地,还有一次,她在班级女生们调戏下挽了我的手臂。她和我一块打球,她主动和我坐一张桌子,她帮我改试卷,她会回头对我微笑,她在任何人谈话时都会叫我名字和我打招呼,她喜欢帮我设计签名,写满我名字。她借给我书,她帮我画像,她已经无时不刻不和我在一起了………&br&&br&故事美好得让我觉得自己已经绝逼是男一,我已经在人生巅峰笑看苍生。&br&而对她的爱,已经填满了我家里的书桌,全部都是诗集。全是她的画像。&br&&br&然而,就回答了标题。&br&在一次物理课后,我在课间还思索着题目的另一种解,她拥抱了一个男生,跳上了男生的背,在我的面前。让男生背着她走…&br&&br&&br&我那一刻是寂静的,我让自己逼自己去换一种解,而物理题太容易,我觉得s的心,太难了。&br&我像一个被吊了三天三夜的dog一样,无力,头无力地垂下,身边的一切都与我无关,我只是一个被戏弄的小丑。&br&&br&再想起,半个月前,她寻到我家去。&br&我在吃奶奶做的饭,她说想吃&br&我说,我帮你洗对筷子&br&她说不用,拿起我的筷子塞了一口肉在嘴里。再舔干净,说,好香,这是我吃过最好吃的肉了。&br&肉是好香,我觉得她那天也很香,我的心也好香。&br&然后,她喂了我吃饭。我一口她一口。&br&我觉得这样一辈子,我肯定120%是愿意的,有这样甜蜜的生活,我是满足的。&br&&br&而下一刻,她就骑上了另一匹马。&br&我不知道这大半年的快乐,哪里真哪里假,我懵了。&br&&br&我觉得她是骗子,那骗了我什么?&br&我难道自己错了,我也不知道错了什么。&br&我只明白自己受伤了,我的胸口有一颗硕大的岩石,堵住了我所有的命脉。&br&&br&幼时喜欢写心情的时候把天气和空气一切渲染。那么天就是灰的,空气是朦的。我的心堵得发慌,我不知道向谁吐。&br&直到另一个女生对我说:你是不是喜欢s,你要注意些,她对所有男生都那样。&br&&br&然后,她换班了。&br&我整个高中就再没找过她说过一个字一句话,是自从那个骑马事件后,我倆心照不宣地没有更一步地解释和交集,就这样我是我,她是s。&br&&br&其实,我还是想她的,我对她的恨意,让我的一整个书柜全是对她思念和恨意的作品。我觉得如今看来是我思绪巅峰期的巨作。&br&可是有什么用呢?&br&我并没问她,爱过,或是如何。&br&&br&&br&&br&&br&高三下,我其实还是关注她的,我就算恨,我也会去盯着她。直到后来,我发现她人间蒸发了。&br&&br&我已经故意去看去了解,好像突然这个人的痕迹就没了。我去找了当时一个女哥们,我才知道,她出国了。&br&出国了,也并未告诉我。可想而知&br&&br&&br&&br&高考最后一天下午,我急匆匆跑去赶考的路上。一阵黄鹂般悦耳的声音叫到我,是s。&br&她说知道高考回国来看看。祝我顺利&br&&br&&br&然后一别到了大学,我依旧在这个伤口上撒盐,闭合不过来,我托人要到了她联系地址,写了一封越洋邮件。&br&我写了三首诗,&br&她回了三首,说高中借我的铁尺至今还在她的文具袋里。&br&然后我开了满满思念的书柜门,挑了差不多10张纸,像一个粽子一样卷起来,再寄过去。&br&我觉得只要是人,看了都会明白。&br&然而…我选择性忘记了之后的事,是什么事都没发生&br&&br&&br&然后她联系到我,是email,她问我现在还会不会写一些诗。&br&我说不会。&br&然后她说,在高中那会,和她出国了一段时间里,我们之前的班主任还联系到她,对她说,我又在每周的作文随笔里写到她。我又想她了。&br&我确实是无话了。&br&后面也不记得了&br&&br&&br&我大学开始喜欢上了一个明星,因为明星的老家就是s出国的地方。&br&我依然想说我攒笔生活费,出国一趟看她的演唱会,就可以顺道去看看s。&br&然而我攒不到那么多钱,s在那边拿到了明星的亲笔签&br&&br&&br&又过了许多年,我工作外地又回来。&br&同学聚会也看过她,而后听说她结婚了,嫁得不错,&br&然后有孩子了………&br&&br&&br&&br&最后我家搬房子,无意清理到我那个书柜,几千页的纸张挥洒而下,&br&我妈说,你这些什么鬼东西。&br&其实我知道,这些我妈都翻看过。&br&她问我还要不要,不要就丢给收破烂,估计有瓶怡宝的钱。&br&&br&我说我看看吧,不要的我都捡出来。&br&然后我一张张捡起地上的纸,&br&每捡一张都看一次,&br&每一张都是几滴眼泪。&br&&br&(完)&br&&br&本来想骗赞的。&br&写着写着就哭了,记忆断断续续,写不出好字,看官将就看。
曾经有一个女生颠覆了我三观中的配偶观。我才发现,原来普通的女孩原来也可以扎根于我的心,那些明星美女都被轰成渣渣。 ps:我在那段岁月之前一直认为自己是娶女明星的男人啊。哈哈哈哈哈哈 现在开始铺垫: 高中二狗时代。 我学习比较屌。文理分班分到重点…
2014年5月 正在长沙做1040。&br&&br&叫她小北,气质、颜值、发型、妆容、神态和梦想。&br&一个不知什么是绿茶婊的典型绿茶婊。&br&&br&认识她是在某个讲座,第一次看见她。&br&我惊呆了,居然可以有这么好看的妹子在做1040。&br&她很有梦想,她说,她在1040一定可以成功的。&br&她一家人都在1040拼搏着,姑妈已经上总。&br&&br&记得第一天晚上约小北出来的时候。&br&世纪金源四楼,78一位的自助餐厅。&br&如果不是她拦着先别吃,要先拍照这件事,我不会那么敏感。&br&大概五分钟,一条鲜嫩的朋友圈出炉,看起来很有逼格。&br&&br&五瓶啤酒,她两瓶,我三瓶。&br&我以为,今夜会很顺利的带走;&br&我以为,今夜她会属于我;&br&我以为,今夜的星光是为我点缀。 &br&不过,这真的都是我以为。&br&&br&吃完下楼,她男朋友来接她,但我真的是那一刻才知道她有男朋友。&br&她的朋友圈,吃饭期间我试探的话题,全都在透露她是单身的迹象。&br&因为是做1040,我们都住在一个很大的小区,湘江世纪城。&br&当我在他们背后看着他们俩手拉手欢声笑语走回家的时候,我是想着,如何挖墙脚。&br&&br&所幸,那个男生住的比较近,我和小北住的差不多,那个男生先上楼。&br&好不容易有一段和小北独处的时间,眼看着还有100米就到家。&br&我说,咱们找个亭子坐一会吧,她没有拒绝。&br&&br&酒壮怂人胆,我摘下眼镜准备强吻她。&br&她居然帮我戴上眼镜在我脸上轻轻的亲了一口。&br&她说,别闹,我还有男朋友呢。&br&我发誓,我就在那一刻彻底沦陷。&br&&br&之后几天,我们都很忙,1040里面的节奏确实不给你空闲的余地,连见面都没有机会。&br&周末的一个晚上,她问我,去酒吧吗。&br&我以为,今夜傲娇的美人会在我醒时相伴;&br&我以为,今夜长沙的酒店会留下我的子孙;&br&我以为,今夜酒吧DJ的旋律是在为我庆祝;&br&不过,这仍然都是我以为。&br&&br&某约炮软件的酒吧聚会,男A150女免。&br&特么的,过去一看,6个男的4个女的,其中2个女的还是组织者。&br&她像个名媛一样,熟悉的喊着每一个人的名字挥着手打招呼。&br&我在身旁含羞的点着烟,直到一个女组织者和我碰杯,我才喝上第一口“冰红茶”。&br&&br&那一晚,她像一只点水蜻蜓游离在各个男人之间。&br&但我仍未慌乱,我知道,她晚上还是得跟我走。&br&两小时后,她接到父亲的电话,说她是不是在酒吧,叫她赶紧回来,还说就在酒吧楼下。&br&她父亲很凶,以为是我带她去的酒吧,甚至说,还要找我麻烦。&br&她拉着我从后门出去,她当时说,不想害了我。&br&&br&那一夜,欲望已经被慌张掩盖。&br&但她拉着我并没有想回家的意思,她说,今晚不能回去,会被她爸爸打死。&br&于是,我跟她还是走进了我以为的酒店。&br&可她一脸焦急烦躁的情绪,根本不适合当时的气氛。&br&甚至,我说我去洗澡,她淡淡的噢一声。&br&甚至,我洗好出来问她要不要去洗澡的时候。&br&她奇怪看着我,我爸找我都要烦死,你还有心情想这个?你知不知道我现在很烦阿。&br&我竟无言以对,但我仍然想着,她要是不回家,今晚不还是我的?&br&呵呵,她选择机智的回家。&br&后来,小北的父母回家待了一个多月。&br&&br&大概是第三次陪她去酒吧,我在酒吧注意到一个很帅的男生。&br&三次他都在,三次的印象都很好。&br&那天,小北和他玩的很hi。&br&从摇骰子到摇头,再从摇头到上下其手。&br&我在旁边沉默,我只能在旁边沉默着。&br&我又不是她男朋友,凭什么管她。&br&&br&我上个厕所回来,她已经不见了。&br&我隐隐猜到她跟那帅哥走了,但我仍不肯放弃。&br&我像疯子一样在各个散台和卡座串着,怎么可能会有结果。&br&我一夜未眠,第二天早上8点,她的手机终于开机了,电话里笑着跟我解释。&br&只是身体不舒服提前回家了,手机又没电,回家就睡着了。&br&我嗯嗯呐呐的回应着,没说上三句,便挂了电话。&br&随后,写了一篇我现在仍然看不懂的鬼东西发给她。&br&&br&&img src=&/016e8db4cf289a8ab04a39_b.jpg& data-rawwidth=&440& data-rawheight=&680& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&/016e8db4cf289a8ab04a39_r.jpg&&&br&&img src=&/f3ededd3fb0797f_b.png& data-rawwidth=&439& data-rawheight=&684& class=&origin_image zh-lightbox-thumb& width=&439& data-original=&/f3ededd3fb0797f_r.png&&&br&&img src=&/36d22aed2d75cff8f647e1_b.png& data-rawwidth=&440& data-rawheight=&683& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&/36d22aed2d75cff8f647e1_r.png&&&img src=&/bc49f8eaf9af_b.png& data-rawwidth=&439& data-rawheight=&681& class=&origin_image zh-lightbox-thumb& width=&439& data-original=&/bc49f8eaf9af_r.png&&&br&不过她也没看懂。&br&6月中旬,小北和男友分手。&br&我认为我有机会的时候,在朋友圈刷到她在一家西餐厅的自拍。&br&我连忙问她在哪,她录了个小视频发给我,和另一个帅哥在吃饭。&br&确实,那哥们很帅,也很会撩。&br&她的朋友圈居然发出了两个人的合照,并在评论说,是她男朋友。&br&&br&从那以后,她总对我说那男的对她多好多好,大概,这是最残酷的秀恩爱。&br&有一次,我实在憋不住,我问她,你不知道我喜欢你吗,你还跟我说这些,你把我当什么?&br&她说,咱们是朋友呀,朋友之间的喜欢不也是挺好的吗。&br&随后,重重的在我脸上亲了一口。&br&但那一吻,像一把刀似得扎在我心上。&br&&br&至少我是理智的,7月初,我不再理她。&br&但她却很生气很生气,我不知道为什么,我更好奇我在哪得罪她。&br&可是,并没有。&br&可能她只是觉得,备胎就应该好好的当着备胎,撂什么摊子,还想上天了不成?&br&&br&正巧,过几天就是某约炮群组织者的生日聚会。&br&邀请了我和她,那时候,我正和穷游的那个妹子在一块。&br&&a href=&/question//answer/& class=&internal&&女朋友辞职,用几千块钱「流浪」中国半年,怎么办? - 浅嘲君的回答&/a&(关于穷游那个妹子&br&我身边带着妹子,怎么可能再去理她。&br&&br&她竟以为,是我有其他女人,所以才不理她。&br&她很炸,她提着两瓶酒到我面前,淡淡的说,干了。&br&我愣愣的看着她,没时间想太多,来都来了,干就干吧。&br&紧接着,她再开两瓶,继续拉我喝,我是真的蒙了,我不知道她想干什么。&br&我诧异的看着她,你疯了吗?&br&她摔了一个杯子,甩了一瓶啤酒,吼着,你不是要跟我喝吗,来呀。(后来她喝多摔跤,摔那个破碎的啤酒瓶上,大腿被划开8公分的伤痕&br&我从来不吵架,我的理智告诉我,这时候,我应该走。&br&&br&我和穷游妹子回到酒店,穷游妹子好奇的问我怎么回事。&br&我不想和她说话,我只想静静。&br&但我弟弟却迫不及待的和她下面的嘴述说着曾经和小北的故事。&br&她似懂非懂,如果嗯是表明知道的意思。&br&那她应该深入并贯彻的了解了我的备胎思想。&br&&br&终究,心理还是放不下小北。&br&越得不到的,越想得到。&br&但这种执念实在太容易扭曲原本的感情。&br&就算得到,也会沦为报复的开始。&br&&br&7月底,我回长沙的前一晚,我找她聊天。&br&一些鬼话和一句我想你,她以为,我没有变。&br&&img src=&/44ab9eaeaf91f3c58edcd5bc_b.jpg& data-rawwidth=&485& data-rawheight=&861& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/44ab9eaeaf91f3c58edcd5bc_r.jpg&&&br&回去长沙的当晚,我约她单独去酒吧。&br&她对我突如其来的邀约,很是诧异,她还是来了。&br&她还是习惯的跟我说着那个帅哥和她的进展,依旧在我心上扎着刀子。&br&大概是这样的场景,我搂着她,她给我翻那个帅哥和她的聊天记录。&br&&br&我实在控制不了自己的情绪,我担心会提着洋酒瓶子砸她。&br&我说,我去厕所,她也要去。&br&那个酒吧的厕所不分男女,一个大圆型,一堆独立门。&br&女人上厕所肯定比男人慢。&br&也是酒壮怂人胆,我在她厕所门口等着她。&br&她开门的时候,我直接把她推进去,反手锁门。&br&她问我干什么,我说干你。&br&一边张着腿让你拽内裤,一边还说别这样,大概这才是正儿八经的半推半就吧。&br&&br&完事,我说,我先出去,我在外面等你,她没吱声。&br&出门我就回家,电话和微信全都拉黑。&br&一个多月后,她用其它的号码打给我,她说那次她怀孕了。&br&我说,QNMB。&br&&br&有一次,我问她,你知道什么是绿茶婊吗。&br&她说不知道,从她的眼神里,我能感觉到,她是真的不知道。&br&也许这就是我这么多年格外欣赏有自知之明的人的原因吧。
2014年5月 正在长沙做1040。 叫她小北,气质、颜值、发型、妆容、神态和梦想。 一个不知什么是绿茶婊的典型绿茶婊。 认识她是在某个讲座,第一次看见她。 我惊呆了,居然可以有这么好看的妹子在做1040。 她很有梦想,她说,她在1040一定可以成功的。 她一家…
来我说一句吧,和那些曾经的不良少年一样罢了,哪来的,回哪儿去而已。&br&
是的,中国是人情社会,但是女人要做人情,不好意思,你要分开腿,没有任何男人在你分开腿前给你提供真正实际的好处的。&br&
我有很多故事,但是我觉得就暂且不讲了,是公主的,还是公主,是平民的,依旧是平民,从古至今,不变,不要妄想着通过几杯酒就爬到社会上层,毕竟就算你躺下赚钱也不可能爬的比人家老老实实上班快。&br&
我见过的那些混夜店的妹子嫁人前都把过去擦的干干净净,但是没见过会拿着夜店里混迹的人情当本钱。搞清楚,生意讲的是资质,讲的是实力,你一个就会劝酒的小姑娘就是和周边的大老板再熟,人家也不会把家产拱手让你的。&br&&br&
家缠万贯,随你怎么玩,玩了接下来还是能找到好男人,还是能找到好工作,而不是大小姐命的就不要去打肿脸充胖子了,我在知乎上一贯作风是卖萌逗笑,但是我此刻,面对众多仿佛在和我开国际玩笑的答主。真的怒了,欢迎举报!&br&
但是不要拿别人的青春去开国际玩笑!&br&&br&
夜店女混的比学霸强?&br&&br&
仿佛夜店生涯轻松擦干净,依然是可以过得比一般人强?&br&&br&
别扯了好吗?!还有那一个个宣称自己飞叶子的,大麻在中国被认定是什么你倒是说说看?你今天飞的是叶子,明天别人看了你的答案溜了个冰你会跳出来说你负责帮她戒???不,你会觉得这和你根本无关!你会觉得这和你没联系!&br&
拿着那张图说事的,我就不得不吐槽一句了,这张图能说明什么问题?&br&&img src=&/v2-3fcbe3c7a05d00bb93f856_b.jpg& data-rawheight=&960& data-rawwidth=&640& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-3fcbe3c7a05d00bb93f856_r.jpg&&&br&&br&&br&&br&&br&这位和王思聪旁边的女性相比,你更愿意做哪一个?!别人看到那张照片有谁分辨出那些女生是谁?这张呢?这位即使你不知道名字难道你看不出来她手上的奖牌奖杯?如果你是个商人,你是愿意和一个夜店女有合作?还是愿意给这位百分之三十甚至以上的股份合作?&br&
女子从来不是男性的玩物,也请你不要自己降下身价去给别人当附庸。那样不值得,别人是大小姐,别人想玩就玩,想撤就撤,不工作还有亲爸养着,你总不会不知道亲爹和干爸的区别吧?我需要挑明了说,亲爹给的零花钱不多,但是你就是毁容了,或者重病了,他会拿出生家性命救你,干爸也许零花钱给你没关系,你变胖了人就消失在你的世界中。&br&
你要是以屠呦呦这样的女性为目标,为偶像努力,最终要是混的比同龄同家境的人混的惨,我凭你怎么说!&br&&br&
我不提名字了,曾经有个大姐大,把我当备胎,初中时候她就陪我们那一个大矿山老板喝酒了,那老头养了她好多年的,她笑话我土,笑话我宅,笑话我胖。没关系,我依然当她是朋友,如今,她不再是当日那个美萝莉,如今她在一间网吧当网管,见到我问的就是:“曹少爷,你家里缺不缺人?”&br&
知道为啥我当初没有不理她了么?因为这句话真的,很是悦耳动听。&br&
你问那个老板?哦,我们家和他算是同行,我爸会认识他,前几年因为某项整改矿山的政策,家道中落,不过还是每天来我家和我爸打牌聊天,我从他那里学到不少生意经。别傻了,我当然不会恨他。而且我预测,不出五年,他又能有一番事业。&br&&br&
还有一个,我一同进学校的老乡,她喜欢玩,她男朋友换了几卡车,她非常火辣性感,在厦门念个大学可以买一辆车,买一套房。然后最后毕业证虽然没有,人自己买了一个。&br&
人称云南小公主,不是贬义词,她们家是做木材的,一个月零花钱五万,不多,但是看清楚,零花钱,不是生活费,买车那天,我舍友坐在她旁边看着她发了一条短信:“母上大人,我想买辆车。”下午,开车回了学校。&br&
她对我还行,以前还帮我追过一个女生,当然最后那会儿她发现那女生其实很……之后立马跳出来指着人骂了一顿,我得说,她很有义气,我对她这样玩没有任何多余说过,只是三年前叮嘱过一句:“别总熬夜。”&br&
虽然,已几年未见,不过我打赌她依然过得很好,而且,前久听说她还考了个会计从业资格证。知道么?亲,这样的女子根本不会去想能不能嫁个好人家。不是不愁嫁个好人家,是她不愁过不好这一生。&br&&br&&br&
以上这两个故事,算是我回答了这题目吧。&br&&br&&br&————————分割线——————————&br&&br&&br&谢谢评论区的诸位~不气了,不过有句话说得好,很多时候知乎上答题的心态,不都是,玛德!看不下去了!我有一言不得不发!虽然比较情绪化,不过道理确实很朴实。&br&&br&&b&玩,不能改變你的命運,但知識可以。&/b&&br&&br&这句话如果你在奋斗的时候看,和在成功的时候看会有不同的味道。出自我家老父亲之口,与君共勉。&br&很多人以为我这是瞎灌鸡汤,这里说说我的理解啊,这个玩字在我看来指的是各种各样的娱乐,不管你是泡吧也好,打游戏也好,极限运动也罢,你娱乐了,开心了,但你真的不会因为玩而改变自己,不是说我去了酒吧喝了个烂醉,第二天醒来我就一贫如洗了,玩不会让让人前进,同理也不会让人开倒车,所以是这个意思,毒品,不在此列,换句话说,如果一个抽烟喝酒文身的女博士站在我面前我依然会觉得这是个很好的人,但是一个瘾君子我不会这么认为。娱乐是无害的,沉迷才有害,问题是沉迷的原因是大体上不是娱乐本身,而是人的经历出了问题,比如你看到一个在酒吧买醉的中年大叔觉得恶心,但是人家来买醉不是因为买醉这件事吸引了他,是因为现实中的挫折才让他来买醉。所以说玩不会改变命运。为什么说知识会改变命运,这里说的意思是这样的,知道的越多,能做的也就越多,能取得的成就也就越多,所以说可以改变命运,然而,为什么说成功之后再看这句话又会有更多地感触?因为知识这东西,也会让你诞生很多想法,这些想法不见得就真的就对,也就是这句话,路线错了,知识越多越反动。&br&&br&
以及感谢关注和点赞,真的,能有人认同我的想法真的很好,关于会计从业资格证,确实含金量几乎没有,但是人家至少看得懂账本了,即使有朝一日家道中落,她也能养活得了自己。是的,也许这本证书不算啥,但是,这之前说明她也不是个养尊处优不谙世事的大小姐。我是这个意思。&br&
当然,故事简洁明了,其中很多东西如果细讲就很长很臭,因为人,或多或少有闪光点,不是说前文的网管就一文不值,后文的大小姐也取得过一些成就,只是挑了最近的说。这点不用太过纠结,我想说的意思表达清楚了,传达给读者们了就好。&br&&br&&br&——————分割线————————&br&&br&&br&&br&还有,会计从业资格证怎么了?为什么我说了那么多,还有人咬着这点不放啊?要不就嫌弃含金量不高,要不就说我嫌弃会计业?你们是有多玻璃心?在这里我重申一下我的看法,这么说吧,会计从业资格证含金量不高那是相对于注册会计师来说的,但是不是说这个就不难考,真的不是那种随便看会儿书就能过的考试。也是需要努力的,只是不需要你拼命,OK?就这个问题的讨论我到此为止,再多说就歪了,之后看到的一律删除评论,本来这个问题就不是讨论会计从业资格考试的。
来我说一句吧,和那些曾经的不良少年一样罢了,哪来的,回哪儿去而已。 是的,中国是人情社会,但是女人要做人情,不好意思,你要分开腿,没有任何男人在你分开腿前给你提供真正实际的好处的。 我有很多故事,但是我觉得就暂且不讲了,是公主的,还是公主,…
&div&一个零零后米粉翻译的外媒米六测评,支持一下&/div&&a href=&/static/video/16d8b254-9dcc-4e8d-bb6c2d1.html?utm_source=zhihu&utm_medium=social& class=&link-box& target=&_blank&&
&img src=&/v2-bf2a541d699ab_b.jpg& class=&thumbnail&&&span class=&content&&
&span class=&title&&The $360 Flagship - 译学馆 - 全球视野 学以致用&/span&
&span class=&url&&&/span&
一个零零后米粉翻译的外媒米六测评,支持一下
&p&1.巴基斯坦发生大洪水,结果蜘蛛都爬到同一棵树上,还结了网。&/p&&img src=&/v2-66f8a1b85f4bca651a7f9b0b0f4e904d_b.jpg& data-rawwidth=&640& data-rawheight=&464& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-66f8a1b85f4bca651a7f9b0b0f4e904d_r.jpg&&&br&&p&2.日本御岳山火山爆发,营救人员前去救灾。因为火山灰的缘故,照片看上去像黑白照片。&/p&&img src=&/v2-4bfac1ea7ebec5681e89c_b.jpg& data-rawwidth=&640& data-rawheight=&426& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-4bfac1ea7ebec5681e89c_r.jpg&&&br&&p&3.地狱之门,土库曼斯坦&/p&&img src=&/v2-89fb6adebecfe_b.jpg& data-rawwidth=&850& data-rawheight=&566& class=&origin_image zh-lightbox-thumb& width=&850& data-original=&/v2-89fb6adebecfe_r.jpg&&&br&&p&4.梯田,云南&/p&&img src=&/v2-feb716e96edb6b820e71_b.jpg& data-rawwidth=&640& data-rawheight=&425& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-feb716e96edb6b820e71_r.jpg&&&br&&p&5.伊真火山,印度尼西亚&/p&&img src=&/v2-e574def41d1c1c860a36021baf0cbb9d_b.jpg& data-rawwidth=&1024& data-rawheight=&786& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&/v2-e574def41d1c1c860a36021baf0cbb9d_r.jpg&&&br&&p&6.玫瑰湖,塞内加尔&/p&&img src=&/v2-122d70dee58f466cb8ddbc_b.jpg& data-rawwidth=&754& data-rawheight=&499& class=&origin_image zh-lightbox-thumb& width=&754& data-original=&/v2-122d70dee58f466cb8ddbc_r.jpg&&&br&&p&7.最后说一个历史人物,元首大人。他对演讲非常重视,为了让他的感染力再上一个台阶,他让摄影师拍了一系列照片,好知道动作语言是否准确。&/p&&img src=&/v2-5e8a4cc6c1d8f29cbbbcd8ee_b.jpg& data-rawwidth=&485& data-rawheight=&323& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-5e8a4cc6c1d8f29cbbbcd8ee_r.jpg&&&br&&img src=&/v2-15d04b361b4f1fc17ba7d_b.jpg& data-rawwidth=&485& data-rawheight=&663& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-15d04b361b4f1fc17ba7d_r.jpg&&&br&&img src=&/v2-6d27ca514e69c57d94fdaec42ab6097c_b.jpg& data-rawwidth=&485& data-rawheight=&368& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-6d27ca514e69c57d94fdaec42ab6097c_r.jpg&&&br&&img src=&/v2-9d4cb940af7b343cb5b35ab9877739fa_b.jpg& data-rawwidth=&485& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-9d4cb940af7b343cb5b35ab9877739fa_r.jpg&&&br&&img src=&/v2-1a572fda10d004e24a6aa891_b.jpg& data-rawwidth=&485& data-rawheight=&368& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-1a572fda10d004e24a6aa891_r.jpg&&
1.巴基斯坦发生大洪水,结果蜘蛛都爬到同一棵树上,还结了网。 2.日本御岳山火山爆发,营救人员前去救灾。因为火山灰的缘故,照片看上去像黑白照片。 3.地狱之门,土库曼斯坦 4.梯田,云南 5.伊真火山,印度尼西亚 6.玫瑰湖,塞内加尔 7.最后说一个历史人物…
&img src=&/v2-da6e908fbff06e8e14c60d86d776d225_b.jpg& data-rawwidth=&768& data-rawheight=&576& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&/v2-da6e908fbff06e8e14c60d86d776d225_r.jpg&&&img src=&/v2-abd42bbb61ee_b.jpg& data-rawwidth=&558& data-rawheight=&315& class=&origin_image zh-lightbox-thumb& width=&558& data-original=&/v2-abd42bbb61ee_r.jpg&&&p&作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章。这篇就介绍利用生成式对抗网络(GAN)的两个基本驾驶技能:&br&&/p&&p&1) 去除(爱情)动作片中的马赛克&/p&&p&2) 给(爱情)动作片中的女孩穿(tuo)衣服&/p&&br&&h2&生成式模型&/h2&&p&上一篇《&a href=&/p/& class=&internal&&用GAN生成二维样本的小例子&/a&》中已经简单介绍了GAN,这篇再简要回顾一下生成式模型,算是补全一个来龙去脉。&/p&&p&生成模型就是能够产生指定分布数据的模型,常见的生成式模型一般都会有一个用于产生样本的简单分布。例如一个均匀分布,根据要生成分布的概率密度函数,进行建模,让均匀分布中的样本经过变换得到指定分布的样本,这就可以算是最简单的生成式模型。比如下面例子:&/p&&img src=&/v2-d11b5fb26d3cc8e942f841bafe010cd8_b.png& data-rawwidth=&1021& data-rawheight=&443& class=&origin_image zh-lightbox-thumb& width=&1021& data-original=&/v2-d11b5fb26d3cc8e942f841bafe010cd8_r.png&&&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&&img src=&/equation?tex=%5Chat%7B%5Ctheta%7D%3D%5Coperatorname%2A%7Bargmax%7D_%7B%5Ctheta%7D+P%28%5Cbm%7Bx%7D%7C%5Ctheta%29%0A+%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&&&br&&p&MLE是一个最基本的思路,实践中用得很多的还有KL散度(Kullback–Leibler divergence),假设真实分布是P,采样分布是Q,则KL散度为:&/p&&img src=&/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&&&br&&p&从公式也能看出来,KL散度描述的是两个分布的差异程度。换个角度来看,让产生的样本和原始分布接近,也就是要让这俩的差异减小,所以最小化KL散度就等同于MLE。从公式上来看的话,我们考虑把公式具体展开一下:&/p&&br&&img src=&/equation?tex=%5Cbegin%7Balign%7D%0AD_%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%0A%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%0A%26+%3D-%5Csum_%7Bx%5Cin%5COmega%7DP%28%7Bx%7D%29%5Clog%7BQ%28x%29%7D+%2BH%28P%29%0A%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&&&br&&p&公式的第二项就是熵,先不管这项,用H(P)表示。接下来考虑一个小trick:从Q中抽样n个样本&img src=&/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&&img src=&/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&&&br&&p&其中&img src=&/equation?tex=%5Cdelta%28%5Ccdot%29& alt=&\delta(\cdot)& eeimg=&1&&是狄拉克&img src=&/equation?tex=%5Cdelta& alt=&\delta& eeimg=&1&&函数,把这项替换到上面公式的P(x):&/p&&br&&img src=&/equation?tex=%5Cbegin%7Balign%7D%0AD_%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%0A%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%0A%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&&&br&&p&因为是离散的采样值,所以&img src=&/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=&/equation?tex=x%3Dx_i& alt=&x=x_i& eeimg=&1&&的时候狄拉克&img src=&/equation?tex=%5Cdelta& alt=&\delta& eeimg=&1&&函数才为1,所以考虑&img src=&/equation?tex=x%3Dx_i& alt=&x=x_i& eeimg=&1&&时这项直接化为1:&/p&&br&&img src=&/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&&&br&&p&第一项正是似然的负对数形式。&/p&&p&说了些公式似乎跑得有点远了,其实要表达还是那个简单的意思:通过减小两个分布的差异可以让一个分布逼近另一个分布。仔细想想,这正是GAN里面adversarial loss的做法。&/p&&p&很多情况下我们面临的是更为复杂的分布,比如&a href=&/p/& class=&internal&&上篇文章&/a&中的例子,又或是实际场景中更复杂的情况,比如生成不同人脸的图像。这时候,作为具有universal approximation性质的神经网络是一个看上去不错的选择[1]:&br&&/p&&img src=&/v2-6fee20494f50baae2c1dc5fc_b.jpg& data-rawwidth=&1561& data-rawheight=&549& class=&origin_image zh-lightbox-thumb& width=&1561& data-original=&/v2-6fee20494f50baae2c1dc5fc_r.jpg&&&p&所以虽然GAN里面同时包含了生成网络和判别网络,但本质来说GAN的目的还是生成模型。从生成式模型的角度,Ian Goodfellow总结过一个和神经网络相关生成式方法的“家谱”[1]:&/p&&img src=&/v2-8c6f1d8ee39dfbb4fcfb2_b.png& data-rawwidth=&771& data-rawheight=&498& class=&origin_image zh-lightbox-thumb& width=&771& data-original=&/v2-8c6f1d8ee39dfbb4fcfb2_r.png&&&p&在这其中,当下最流行的就是GAN和&b&V&/b&ariational &b&A&/b&uto&b&E&/b&ncoder(VAE),两种方法的一个简明示意如下[3]:&/p&&img src=&/v2-380cde71a2f6ece28b4a97_b.png& data-rawwidth=&568& data-rawheight=&274& class=&origin_image zh-lightbox-thumb& width=&568& data-original=&/v2-380cde71a2f6ece28b4a97_r.png&&&p&本篇不打算展开讲什么是VAE,不过通过这个图,和名字中的autoencoder也大概能知道,VAE中生成的loss是基于重建误差的。而只基于重建误差的图像生成,都或多或少会有图像模糊的缺点,因为误差通常都是针对全局。比如基于MSE(Mean Squared Error)的方法用来生成超分辨率图像,容易出现下面的情况[4]:&/p&&br&&p&&img src=&/v2-78f53b142fab51b0c09a1_b.png& data-rawwidth=&892& data-rawheight=&598& class=&origin_image zh-lightbox-thumb& width=&892& data-original=&/v2-78f53b142fab51b0c09a1_r.png&&在这个二维示意中,真实数据分布在一个U形的流形上,而MSE系的方法因为loss的形式往往会得到一个接近平均值所在的位置(蓝色框)。&/p&&p&GAN在这方面则完爆其他方法,因为目标分布在流形上。所以只要大概收敛了,就算生成的图像都看不出是个啥,清晰度常常是有保证的,而这正是去除女优身上马赛克的理想特性!&/p&&br&&h2&马赛克-&清晰画面:超分辨率(Super Resolution)问题&/h2&&p&说了好些铺垫,终于要进入正题了。首先明确,去马赛克其实是个图像超分辨率问题,也就是如何在低分辨率图像基础上得到更高分辨率的图像:&/p&&img src=&/v2-31c84b42ad_b.png& data-rawwidth=&784& data-rawheight=&324& class=&origin_image zh-lightbox-thumb& width=&784& data-original=&/v2-31c84b42ad_r.png&&&p&视频中超分辨率实现的一个套路是通过不同帧的低分辨率画面猜测超分辨率的画面,有兴趣了解这个思想的朋友可以参考我之前的一个答案:&a href=&/question//answer/& class=&internal&&如何通过多帧影像进行超分辨率重构? &/a&&br&&/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
&b&N&/b&etwork》。这个工作的思路是:基于像素的MSE loss往往会得到大体正确,但是高频成分模糊的结果。所以只要重建低频成分的图像内容,然后靠GAN来补全高频的细节内容,就可以了:&/p&&img src=&/v2-128029dfc7c470b07a4a1_b.png& data-rawwidth=&446& data-rawheight=&131& class=&origin_image zh-lightbox-thumb& width=&446& data-original=&/v2-128029dfc7c470b07a4a1_r.png&&这个思路其实和最早基于深度网络的风格迁移的思路很像(有兴趣的读者可以参考我之前文章&a href=&/p/& class=&internal&&瞎谈CNN:通过优化求解输入图像&/a&的最后一部分),其中重建内容的content loss是原始图像和低分辨率图像在VGG网络中的各个ReLU层的激活值的差异:&p&&img src=&/v2-331e02e394cfd04e7114a_b.png& data-rawwidth=&529& data-rawheight=&150& class=&origin_image zh-lightbox-thumb& width=&529& data-original=&/v2-331e02e394cfd04e7114a_r.png&&生成细节adversarial loss就是GAN用来判别是原始图还是生成图的loss:&/p&&img src=&/v2-fa5af2a10fe9a4dadfb04_b.png& data-rawwidth=&394& data-rawheight=&89& class=&content_image& width=&394&&&p&把这两种loss放一起,取个名叫perceptual loss。训练的网络结构如下:&/p&&img src=&/v2-17861edeb4bcfae4e9f369_b.png& data-rawwidth=&780& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&780& data-original=&/v2-17861edeb4bcfae4e9f369_r.png&&&p&正是上篇文章中讲过的C-GAN,条件C就是低分辨率的图片。SRGAN生成的超分辨率图像虽然PSNR等和原图直接比较的传统量化指标并不是最好,但就视觉效果,尤其是细节上,胜过其他方法很多。比如下面是作者对比bicubic插值和基于ResNet特征重建的超分辨率的结果:&/p&&img src=&/v2-f3b4376938ffcbd23c42d_b.png& data-rawwidth=&981& data-rawheight=&392& class=&origin_image zh-lightbox-thumb& width=&981& data-original=&/v2-f3b4376938ffcbd23c42d_r.png&&&p&可以看到虽然很多细节都和原始图片不一样,不过看上去很和谐,并且细节的丰富程度远胜于SRResNet。这些栩栩如生的细节,可以看作是GAN根据学习到的分布信息“联想”出来的。&/p&&p&对于更看重“看上去好看”的超分辨率应用,SRGAN显然是很合适的。当然对于一些更看重重建指标的应用,比如超分辨率恢复嫌疑犯面部细节,SRGAN就不可以了。&/p&&h2&pix2pix&/h2&&p&虽然专门用了一节讲SRGAN,但本文用的方法其实是pix2pix[5]。这项工作刚在arxiv上发布就引起了不小的关注,它巧妙的利用GAN的框架解决了通用的Image-to-Image translation的问题。举例来说,在不改变分辨率的情况下:把照片变成油画风格;把白天的照片变成晚上;用色块对图片进行分割或者倒过来;为黑白照片上色;…每个任务都有专门针对性的方法和相关研究,但其实总体来看,都是像素到像素的一种映射啊,其实可以看作是一个问题。这篇文章的巧妙,就在于提出了pix2pix的方法,一个框架,解决所有这些问题。方法的示意图如下:&/p&&p&&img src=&/v2-e2ea753b7b0d7f18abee3_b.png& data-rawwidth=&485& data-rawheight=&437& class=&origin_image zh-lightbox-thumb& width=&485& data-original=&/v2-e2ea753b7b0d7f18abee3_r.png&&就是一个Conditional GAN,条件C是输入的图片。除了直接用C-GAN,这项工作还有两个改进:&/p&&p&1)&b&利用U-Net结构生成细节更好的图片&/b&[6]&/p&&img src=&/v2-beb074bebbfa0db_b.png& data-rawwidth=&907& data-rawheight=&612& class=&origin_image zh-lightbox-thumb& width=&907& data-original=&/v2-beb074bebbfa0db_r.png&&&p&U-Net是德国Freiburg大学模式识别和图像处理组提出的一种全卷积结构。和常见的先降采样到低维度,再升采样到原始分辨率的编解码(Encoder-Decoder)结构的网络相比,U-Net的区别是加入skip-connection,对应的feature maps和decode之后的同样大小的feature maps按通道拼(concatenate)一起,用来保留不同分辨率下像素级的细节信息。U-Net对提升细节的效果非常明显,下面是pix2pix文中给出的一个效果对比:&/p&&p&&img src=&/v2-2fb4ddb2fdc24eea31eea_b.png& data-rawwidth=&563& data-rawheight=&307& class=&origin_image zh-lightbox-thumb& width=&563& data-original=&/v2-2fb4ddb2fdc24eea31eea_r.png&&可以看到,各种不同尺度的信息都得到了很大程度的保留。&/p&&p&2)&b&利用马尔科夫性的判别器(PatchGAN)&br&&/b&&/p&&p&pix2pix和SRGAN的一个异曲同工的地方是都有用重建解决低频成分,用GAN解决高频成分的想法。在pix2pix中,这个思想主要体现在两个地方。一个是loss函数,加入了L1 loss用来让生成的图片和训练的目标图片尽量相似,而图像中高频的细节部分则交由GAN来处理:&/p&&img src=&/v2-cb180ad03d8a72e7883285b_b.png& data-rawwidth=&447& data-rawheight=&51& class=&origin_image zh-lightbox-thumb& width=&447& data-original=&/v2-cb180ad03d8a72e7883285b_r.png&&&p&还有一个就是&b&PatchGAN&/b&,也就是具体的GAN中用来判别是否生成图的方法。PatchGAN的思想是,既然GAN只负责处理低频成分,那么判别器就没必要以一整张图作为输入,只需要对NxN的一个图像patch去进行判别就可以了。这也是为什么叫Markovian discriminator,因为在patch以外的部分认为和本patch互相独立。&/p&&p&具体实现的时候,作者使用的是一个NxN输入的全卷积小网络,最后一层每个像素过sigmoid输出为真的概率,然后用BCEloss计算得到最终loss。这样做的好处是因为输入的维度大大降低,所以参数量少,运算速度也比直接输入一张快,并且可以计算任意大小的图。作者对比了不同大小patch的结果,对于256x256的输入,patch大小在70x70的时候,从视觉上看结果就和直接把整张图片作为判别器输入没什么区别了:&/p&&img src=&/v2-5172ca51efb4ee3e453b15_b.png& data-rawwidth=&842& data-rawheight=&107& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&/v2-5172ca51efb4ee3e453b15_r.png&&&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&&img src=&/v2-fd28f0b871bd_b.png& data-rawwidth=&660& data-rawheight=&314& class=&origin_image zh-lightbox-thumb& width=&660& data-original=&/v2-fd28f0b871bd_r.png&&上图是一个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&&a href=&/?target=https%3A///yahoo/open_nsfw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&yahoo/open_nsfw&i class=&icon-external&&&/i&&/a&&p&CAM的实现并不难,结合Open NSFW自动打码的代码和使用放在了这里:&/p&&a href=&/?target=https%3A///frombeijingwithlove/dlcv_for_beginners/tree/master/random_bonus/generate_mosaic_for_porno_images& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&给XX图片生成马赛克&i class=&icon-external&&&/i&&/a&&br&&br&(成功打码的)效果差不多是下面这样子:&img src=&/v2-cbefa39dc983f2645dd8_b.png& data-rawwidth=&768& data-rawheight=&256& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&/v2-cbefa39dc983f2645dd8_r.png&&&h2&去除(爱情)动作片中的马赛克&/h2&&p&这没什么好说的了,一行代码都不用改,只需要按照前面的步骤把数据准备好,然后按照pix2pix官方的使用方法训练就可以了:&/p&&p&Torch版pix2pix:&a href=&/?target=https%3A///phillipi/pix2pix& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&phillipi/pix2pix&i class=&icon-external&&&/i&&/a&&/p&&p&pyTorch版pix2pix(Cycle-GAN二合一版):&a href=&/?target=https%3A///junyanz/pytorch-CycleGAN-and-pix2pix& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junyanz/pytorch-CycleGAN-and-pix2pix&i class=&icon-external&&&/i&&/a&&/p&&p&从D盘里随随便便找了几千张图片,用来执行了一下自动打码和pix2pix训练(默认参数),效果是下面这样:&/p&&br&&img src=&/v2-9f52b17c0e1296767cbfbfafc290a5bd_b.png& data-rawwidth=&814& data-rawheight=&691& class=&origin_image zh-lightbox-thumb& width=&814& data-original=&/v2-9f52b17c0e1296767cbfbfafc290a5bd_r.png&&&p&什么?你问说好给女优去马赛克呢?女优照片呢?&/p&&img src=&/v2-480fb8a4dcfc7a4f92ec_b.png& data-rawwidth=&75& data-rawheight=&60& class=&content_image& width=&75&&&p&还是要说一下,在真人照片上的效果比蘑菇和花强。&/p&&h2&对偶学习(Dual Learning)&/h2&&p&去马赛克已经讲完了,接下来就是给女孩穿(tuo)衣服了,动手之前,还是先讲一下铺垫:&b&对偶学习&/b&和&b&Cycle-GAN&/b&。&/p&&p&对偶学习是MSRA于2016年提出的一种用于机器翻译的增强学习方法[8],目的是解决海量数据配对标注的难题,个人觉得算是一种弱监督方法(不过看到大多数文献算作无监督)。以机器翻译为例,对偶学习基本思想如下图[9]:&/p&&img src=&/v2-c4b1eeda364fb6c9bada02f3_b.png& data-rawwidth=&866& data-rawheight=&399& class=&origin_image zh-lightbox-thumb& width=&866& data-original=&/v2-c4b1eeda364fb6c9bada02f3_r.png&&左边的灰衣男只懂英语,右边的黑衣女只懂中文,现在的任务就是,要学习如何翻译英语到中文。对偶学习解决这个问题的思路是:给定一个模型&img src=&/equation?tex=f%3Ax%5Crightarrow+y& alt=&f:x\rightarrow y& eeimg=&1&&一上来无法知道f翻译得是否正确,但是如果考虑上&img src=&/equation?tex=f& alt=&f& eeimg=&1&&的对偶问题&img src=&/equation?tex=g%3Ay%5Crightarrow+x& alt=&g:y\rightarrow x& eeimg=&1&&,那么我可以尝试翻译一个英文句子到中文,再翻译回来。这种转了一圈的结果&img src=&/equation?tex=x%27%3Dg%28f%28x%29%29& alt=&x'=g(f(x))& eeimg=&1&&,灰衣男是可以用一个标准(BLEU)判断x'和x是否一个意思,并且把结果的一致性反馈给这两个模型进行改进。同样的,从中文取个句子,这样循环翻译一遍,两个模型又能从黑衣女那里获取反馈并改进模型。其实这就是强化学习的过程,每次翻译就是一个action,每个action会从环境(灰衣男或黑衣女)中获取reward,对模型进行改进,直至收敛。&p&也许有的人看到这里会觉得和上世纪提出的Co-training很像,这个在知乎上也有讨论:&/p&&a href=&/question/& class=&internal&&如何理解刘铁岩老师团队在NIPS 2016上提出的对偶学习(Dual Learning)?&/a&&p&个人觉得还是不一样的,Co-Training是一种multi-view方法,比如一个输入x,如果看作是两个拼一起的特征&img src=&/equation?tex=x%3D%28x_1%2Cx_2%29& alt=&x=(x_1,x_2)& eeimg=&1&&,并且假设&img src=&/equation?tex=x_1& alt=&x_1& eeimg=&1&&和&img src=&/equation?tex=x_2& alt=&x_2& eeimg=&1&&互相独立,那么这时候训练两个分类器&img src=&/equation?tex=f_1%28%5Ccdot%29& alt=&f_1(\cdot)& eeimg=&1&&和&img src=&/equation?tex=f_2%28%5Ccdot%29& alt=&f_2(\cdot)& eeimg=&1&&对于任意样本x应该有&img src=&/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=&/equation?tex=f_1& alt=&f_1& eeimg=&1&&和&img src=&/equation?tex=f_2& alt=&f_2& eeimg=&1&&其实是两个不同,但是domain指向相同的任务。而Dual Learning中&img src=&/equation?tex=f& alt=&f& eeimg=&1&&和&img src=&/equation?tex=g& alt=&g& eeimg=&1&&是对偶任务,利用的隐含约束是&img src=&/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&&img src=&/v2-9e7396ebccb7c42302fc97_b.png& data-rawwidth=&838& data-rawheight=&216& class=&origin_image zh-lightbox-thumb& width=&838& data-original=&/v2-9e7396ebccb7c42302fc97_r.png&&&p&X和Y分别是两种不同类型图的集合,比如穿衣服的女优和没穿衣服的女优。所以给定一张穿了衣服的女优,要变成没穿衣服的样子,就是个图片翻译问题。CycleGAN示意图中(b)和(c)就是Dual Learning:&/p&&img src=&/v2-de51cac58b_b.png& data-rawwidth=&347& data-rawheight=&62& class=&content_image& width=&347&&&p&在Dual Learning基础上,又加入了两个判别器&img src=&/equation?tex=D_X& alt=&D_X& eeimg=&1&&和&img src=&/equation?tex=D_Y& alt=&D_Y& eeimg=&1&&用来进行对抗训练,让翻译过来的图片尽量逼近当前集合中的图片:&/p&&p&&img src=&/v2-e0ea7a6b38bf2a20cea4ea6f741a4c67_b.png& data-rawwidth=&442& data-rawheight=&59& class=&origin_image zh-lightbox-thumb& width=&442& data-original=&/v2-e0ea7a6b38bf2a20cea4ea6f741a4c67_r.png&&全考虑一起,最终的loss是:&/p&&p&&img src=&/v2-e6d99e7edea969da3dad_b.png& data-rawwidth=&357& data-rawheight=&87& class=&content_image& width=&357&&也许有人会问,那不加cycle-consistency,直接用GAN学习一个&img src=&/equation?tex=X%5Crightarrow+Y& alt=&X\rightarrow Y& eeimg=&1&&的映射,让生成的Y的样本尽量毕竟Y里本身的样本可不可以呢?这个作者在文中也讨论了,会产生GAN训练中容易发生的mode collapse问题。mode collapse问题的一个简单示意如下[1]:&/p&&p&&img src=&/v2-309fce6329592babb784ed_b.png& data-rawwidth=&842& data-rawheight=&262& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&/v2-309fce6329592babb784ed_r.png&&上边的是真实分布,下边的是学习到的分布,可以看到学习到的分布只是完整分布的一部分,这个叫做partial mode collapse,是训练不收敛情况中常见的一种。如果是完全的mode collapse,就是说生成模型得到的都是几乎一样的输出。而加入Cycle-consistency会让一个domain里不同的样本都尽量映射到另一个domain里不同的地方,理想情况就是双射(bijection)。直观来理解,如果通过&img src=&/equation?tex=X%5Crightarrow+Y& alt=&X\rightarrow Y& eeimg=&1&&都映射在Y中同一个点,那么这个点y通过&img src=&/equation?tex=Y%5Crightarrow+X& alt=&Y\rightarrow X& eeimg=&1&&映射回来显然不可能是多个不同的x,所以加入cycle-consistency就帮助避免了mode collapse。这个问题在另一篇和CycleGAN其实本质上没什么不同的方法DiscoGAN中有更详细的讨论[11],有兴趣的话可以参考。&/p&&br&&p&有一点值得注意的是,虽然名字叫CycleGAN,并且套路也和C-GAN很像,但是其实只有adversarial,并没有generative。因为严格来说只是学习了&img src=&/equation?tex=X%5Crightarrow+Y& alt=&X\rightarrow Y& eeimg=&1&&和&img src=&/equation?tex=Y%5Crightarrow+X& alt=&Y\rightarrow X& eeimg=&1&&的mapping,所谓的generative network里并没有随机性。有一个和CycleGAN以及DiscoGAN其实本质上也没什么不同的方法叫DualGAN[12],倒是通过dropout把随机性加上了。不过所有加了随机性产生的样本和原始样本间的cycle-consistency用的还是l1 loss,总觉得这样不是很对劲。当然现在GAN这么热门,其实只要是用了adversarial loss的基本都会取个名字叫XXGAN,也许是可以增加投稿命中率。&/p&&p&另外上节中提到了Co-Training,感觉这里也应该提一下CoGAN[13],因为名字有些相似,并且也可以用于未配对的图像翻译。CoGAN的大体思想是:如果两个Domain之间可以互相映射,那么一定有一些特征是共有的。比如男人和女人,虽然普遍可以从长相区分,但不变的是都有两个眼睛一个鼻子一张嘴等等。所以可以在生成的时候,把生成共有特征和各自特征的部分分开,示意图如下:&br&&/p&&p&&img src=&/v2-57eaadc8cec5190bfd30_b.png& data-rawwidth=&758& data-rawheight=&207& class=&origin_image zh-lightbox-thumb& width=&758& data-original=&/v2-57eaadc8cec5190bfd30_r.png&&其实就是两个GAN结构,其中生成网络和判别网络中比较高层的部分都采用了权值共享(虚线相连的部分),没有全职共享的部分分别处理不同的domain。这样每次就可以根据训练的domain生成一个样本在两个domain中不同的对应,比如戴眼镜和没戴眼镜:&/p&&p&&img src=&/v2-356a6118ccf3e8e3bf1c7_b.png& data-rawwidth=&791& data-rawheight=&267& class=&origin_image zh-lightbox-thumb& width=&791& data-original=&/v2-356a6118ccf3e8e3bf1c7_r.png&&分别有了共有特征和各自domain特征,那么做mapping的思路也就很直接了[14]:&/p&&p&&img src=&/v2-8ac50600e40feaac345e09bd7e05a83d_b.png& data-rawwidth=&771& data-rawheight=&210& class=&origin_image zh-lightbox-thumb& width=&771& data-original=&/v2-8ac50600e40feaac345e09bd7e05a83d_r.png&&在GAN前边加了个domain encoder,然后对每个domain能得到三种样本给判别器区分:直接采样,重建采样,从另一个domain中transfer后的重建采样。训练好之后,用一个domain的encoder+另一个domain的generator就很自然的实现了不同domain的转换。用在图像翻译上的效果如下:&/p&&p&&img src=&/v2-612e9cf5e125fd626be7db_b.png& data-rawwidth=&444& data-rawheight=&544& class=&origin_image zh-lightbox-thumb& width=&444& data-original=&/v2-612e9cf5e125fd626be7db_r.png&&还有个巧妙的思路,是把CoGAN拆开,不同domain作为C-GAN条件的更加显式的做法[15]:&/p&&br&&p&&img src=&/v2-ddec16d502c94f91ea35_b.png& data-rawwidth=&883& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&883& data-original=&/v2-ddec16d502c94f91ea35_r.png&&第一步用噪声Z作为和domain无关的共享表征对应的latent noise,domain信息作为条件C训练一个C-GAN。第二步,训练一个encoder,利用和常见的encode-decode结构相反的decode(generate)-encode结构。学习好的encoder可以结合domain信息,把输入图像中和domain无关的共享特征提取出来。第三步,把前两步训练好的encoder和decoder(generator)连一起,就可以根据domain进行图像翻译了。&/p&&p&CoGAN一系的方法虽然结构看起来更复杂,但个人感觉理解起来要比dual系的方法更直接,并且有latent space,可解释性和属性对应也好一些。&/p&&p&又扯远了,还是回到正题:&/p&&br&&h2&给女优穿上衣服&/h2&&p&其实同样没什么好说的,Cycle-GAN和pix2pix的作者是一拨人,文档都写得非常棒,准备好数据,分成穿衣服的和没穿衣服的两组,按照文档的步骤训练就可以:&/p&&p&Torch版Cycle-GAN:&a href=&/?target=https%3A///junyanz/CycleGAN& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junyanz/CycleGAN&i class=&icon-external&&&/i&&/a&&/p&&p&pyTorch版Cycle-GAN(pix2pix二合一版):&a href=&/?target=https%3A///junyanz/pytorch-CycleGAN-and-pix2pix& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junyanz/pytorch-CycleGAN-and-pix2pix&i class=&icon-external&&&/i&&/a&&/p&&p&Cycle-GAN收敛不易,我用了128x128分辨率训练了穿衣服和没穿衣服的女优各一千多张,同样是默认参数训练了120个epoch,最后小部分成功“穿衣服”的结果如下:&/p&&img src=&/v2-fee34d66c386e0e01e5804_b.jpg& data-rawwidth=&1117& data-rawheight=&192& class=&origin_image zh-lightbox-thumb& width=&1117& data-original=&/v2-fee34d66c386e0e01e5804_r.jpg&&&img src=&/v2-de57c5ebefa4251ee3caa1_b.jpg& data-rawwidth=&1117& data-rawheight=&192& class=&origin_image zh-lightbox-thumb& width=&1117& data-original=&/v2-de57c5ebefa4251ee3caa1_r.jpg&&&p&虽然都有些突兀,但好歹是穿上衣服了。注意马赛克不是图片里就有的,是我后来加上去的。&/p&&p&那么,脱衣服的例子在哪里?&/p&&img src=&/v2-480fb8a4dcfc7a4f92ec_b.png& data-rawwidth=&75& data-rawheight=&60& class=&content_image& width=&75&&&h2&参考文献&/h2&&p&[1] I. Goodfellow. Nips 2016 tutorial: Generative adversarial networks. arXiv preprint arXiv:, 2016.&/p&&p&[2] A. B. L. Larsen, S. K. S?nderby, Generating Faces with Torch. &a href=&/?target=http%3A//torch.ch/blog//gan.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Torch | Generating Faces with Torch&i class=&icon-external&&&/i&&/a&&/p&&p&[3] A. B. L. Larsen, S. K. S?nderby, H. Larochelle, and O. Winther. Autoencoding beyond pixels using a
learned similarity metric. In ICML, pages , 2016.
&/p&&p&[4] C. Ledig, L. Theis, F. Huszar, J. Caballero, A. Aitken, A. Tejani, J. Totz, Z. Wang, and W. Shi. Photo-realistic single image super-resolution using a generative adversarial network. arXiv:, 2016.&/p&&p&[5] P. Isola, J.-Y. Zhu, T. Zhou, and A. A. Efros. Image-to-image translation with conditional adversarial networks. arxiv, 2016. &/p&&p&[6] O. Ronneberger, P. Fischer, and T. Brox. U-net: Convolutional networks for biomedical image segmentation. In MICCAI, pages 234–241. Springer, 2015.&/p&&p&[7] B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and A. Torralba. Learning deep features for discriminative localization. arXiv preprint arXiv:, 2015.&/p&&p&[8] He, D., Xia, Y., Qin, T., Wang, L., Yu, N., Liu, T.-Y., and Ma, W.-Y. (2016a). Dual learning for machine translation. In the Annual Conference on Neural Information Processing Systems (NIPS), 2016.&/p&&br&&p&[9] &a href=&/?target=http%3A//www.dsrg.stuorg.iastate.edu/wp-content/uploads/2017/02/dual-learning_-pushing-the-new-frontier-of-artificial-intelligence-tieyan-liu.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&& Tie-Yan Liu, Dual Learning: Pushing the New Frontier of Artificial Intelligence, MIFS 2016&i class=&icon-external&&&/i&&/a&&br&&/p&&p&[10] J.-Y. Zhu, T. Park, P. Isola, and A. A. Efros. Unpaired image-to-image translation using cycle-consistent adversarial networkss. arXiv preprint arXiv:, 2017.&/p&&p&[11] T. Kim, M. Cha, H. Kim, J. Lee, and J. Kim. Learning to Discover Cross-Domain Relations with Generative Adversarial Networks. ArXiv e-prints, Mar. 2017.&/p&&br&&p&[12] Z. Yi, H. Zhang, P. T. Gong, et al. DualGAN: Unsupervised dual learning for image-to-image translation. arXiv preprint arXiv:, 2017.&/p&&br&&p&[13] M.-Y. Liu and O. Tuzel. Coupled generative adversarial networks. In Advances in Neural Information Processing Systems (NIPS), 2016.&/p&&p&[14] M.-Y. Liu, T. Breuel, and J. Kautz. Unsupervised image-to-image translation networks. arXiv preprint arXiv:, 2017.&/p&&p&[15] Dong, H., Neekhara, P., Wu, C., Guo, Y.: Unsupervised image-to-image translation with generative adversarial networks. arXiv preprint arXiv:, 2017.&/p&&p&=========== 分

我要回帖

更多关于 战地风云3中文版下载 的文章

 

随机推荐