现在互联网挂机项目三国如龙传怎么挂机混杂想问一下哪里有正规的挂机,每台电脑每天有五块就ok

本人男,七零后,坐标帝都。以下的故事,你们当真当假都可以,就是别当我在洗地。为了避免大家对号入座瞎胡猜,文中名字都是化名。&br&
她有一段时间算是我的上司,那时我在一家外资的传播集团,她是本部的客户群总监,我是负责数字营销的高级总监,差一个级别。本来工作上交集不多,因为她部门带好几个客户,而我们负责全集团客户的数字业务,没有直属的领导关系。&br&
有一次,因为要打一个大标,她牵头,召集各子公司相关部门,组成了一个项目组,自然,她是leader ,因为我们这行业,攥着客户关系的人最牛逼。顺其自然,我在这段时间,也就成了她的下属。&br&
她30出头,结婚几年了,没孩子,长得算是第一眼美女,瓜子脸,眼睛很大,嘴唇厚厚的很性感,身材火辣,前挺后撅,穿正装的时候,我总担心她胸前那一对会冲破衬衣束缚,崩开扣子,走起路来,屁股会一颤一颤的,我那会跟她还不熟悉的时候,总感觉她被我们公司的老外潜规则过,因为她在老外面前,说话都嗲嗲的,眼神湿漉漉,公司老外大都是直男,背井离乡,雄性荷尔蒙旺盛的厉害,目光虽竭力正经看着她,但里面都是遮遮掩掩的小钩子,恨不能把她扒光按在办公桌上。&br&
我们第一次开竞标筹备会,我就迟到了,因为我在楼下等了半天电梯(我们在六层办公,她部门在十层),急匆匆找到会议室推门进去,不大的屋子里黑压压坐了十几个人,有文案有策划有设计有媒介有电商有epr等等一大堆,还乌烟瘴气的,有人在抽烟,做我们这一行,经常加班熬夜做方案,烟是必不可少的,男男女女都抽。&br&
她看见我进来,皮笑肉不笑的带着腔调说“王总,您可算来了,一大堆人,就等您了。。。”,在座的人齐刷刷都望向了我,眼神里好像我是个罪人,耽误了很多他们宝贵时间似的,靠,弄的我还挺尴尬,我连说不好意思不好意思,赶紧找个地方坐下了。&br&
接下来的会,就开始做brief ,然后大家提问题,最后分工,这都是常规流程,中间有个小花絮,她问各部门反应的时候,特别问了我一句,“王总,新媒体投放这一块,这次能不能有点新意,新玩法?客户接受度还挺高的,想有一些突破和创新,所以这次你们别总用过去的方案改改就糊弄事了”,听完这话我不知道哪来的一股无名之火,说话就没好气了,我说:“李总,我们哪次不是熬好几天夜,绞尽脑汁的做策划,什么时候用旧案子改过,再说客户也不傻,用旧案子改出来的东西,连你们这关都过不去,客户能认?!再说了,即便是旧案子改的,也只是媒体平台不变,投放策略和形式肯定要变化啊,核心资源都在BAT阵营呢,你让我换平台,也不可能啊!”&br&
她见我这么说,估摸着也听出来我有点不满,更何况她对数字营销这块也不是特别熟悉,就眼神戏谑的白了我一眼,说,“好,那就拜托王总啦”。散会的时候,她一扭一扭的走过我身边的时候,我抖了个坏心眼,把搭在座椅扶手上的手肘往外探出了十公分,她一经过,那个高度正好蹭上她的屁股,不但蹭上了,还接触的很实在,我感觉手肘被她臀部的肉给弹开了,她稍微顿了一下脚步,回身看了我一眼,我没说话也没躲闪,装傻充愣的对视,她抿了一下嘴唇,继续走了,但我估计她心里肯定会骂一句“傻逼!”。&br&
从这以后,我们项目组几乎一礼拜要开三次会,还要去客户那开会,我跟她的接触就越来越多。因为有时候到早了,我和她都会在客户写字楼下面抽烟,抽两根再上去,因为客户的办公室可不让抽烟。我们俩,也越来越熟悉,但是彼此都还是规规矩矩的,没任何感觉,要有也是我有,但也不敢多想,毕竟在一个公司,很忌讳内部瞎搞,坊间传闻4A公司乱的,那都是某些low逼公关广告公司才有的烂事,我们公司这方面还是挺干净的,每天忙的要死,谁还有功夫搞暧昧,经常被客户折腾的神经兮兮,怎么可能有力气暗度陈仓的勾勾搭搭,真没那个心思的。&br&
虽然我一本正经了很久,可还是有了意外,虽然老话说的好,常在河边走哪有不湿鞋,但我和她发生的事,真的纯属意外!首先吧,这个已婚男女,对一些荤的黄的,就不是那么当回事,熟了以后说话,经常没六儿,尤其做公关广告的,话密,喜欢逗咳嗽,有一次去客户那开会,我俩急匆匆赶到了,还没上楼,她忽然一捂书包,说了句,“糟糕,把门禁卡落在公司忘带了”,因为我们是客户的月费服务公司,经常过来,为了方便,不用客户总下来接人,就给了她一张门禁卡。我说你再找找,衣服兜里有没有,她急慌慌摸了一遍,埋怨我“就这么两件衣服,看都能看出来没在身上”,我幸灾乐祸的坏笑着说“你身上起起伏伏这么多能藏东西的地方,我怎么知道你有没有可能放在哪啊!要不我帮你找找?”,她扭脸斜斜的看着我,目光里有点挑衅的说,“行,你找,找不到你请我喝一个月星巴克!”。。。。。
本人男,七零后,坐标帝都。以下的故事,你们当真当假都可以,就是别当我在洗地。为了避免大家对号入座瞎胡猜,文中名字都是化名。 她有一段时间算是我的上司,那时我在一家外资的传播集团,她是本部的客户群总监,我是负责数字营销的高级总监,差一个级别…
&p&【转载】&br&&br&那是在2010年初的春天了,我进了一家私企单位。这家单位是做对外贸易的,我应聘到那里是做销售。来到公司第一天,熟悉了一下单位同事和工作环境。简单了解一下公司大概是做什幺的。离下班还有2 小时,公司董事长进来了。&br&&br&  我晕……没想到是个女的,而且看上去也就27,8 岁那样子。身高168 ,超级完美的身材,从发型到脚下高高的高跟鞋。我当时都蒙了,皮肤超级好。开会时我,我都不敢正眼和她对视。感觉脸红心跳的。&br&&br&  她不管是从气质,容貌,化妆,还是论穿衣风格和衣服品质。从头到脚就是一身明星范。哥们亲眼见过模特,与范冰冰同台参加过活动,和伊能静,范文芳等一些明星同在一个后台。这些都算美女明星了吧。当然我不否认范文方还是挺漂亮的。但我们这个董事长,她真的比她们还要漂亮,真是靓到家了。走在街上,我觉得不可能没有人不回头去看她的。为保护隐私这里我们简称这个女董事长为「美美」&br&&br&  我们员工叫她美姐。&br&&br&  因为我来的时候也有2 个新员工,董事长让我们介绍了一下自己。&br&&br&  但我感觉她对我印象是最好的。&br&&br&  随后我就很努力在公司做业务了。当然我最期待的是每天中午后,美美来到公司,因为她每天都会变换造型,服装。有时正装,有时休闲。当然最漂亮的是穿短裙和黑色丝袜。她腿很长,而且还很细,应该是模特身材那种。有时还走到我们面前,展示她新买的靴子啊,高跟鞋啊。这时我会仔细的盯着欣赏她的丝袜美腿。&br&&br&  她不是那种丝袜控,多数会光脚穿高跟鞋。所以每当他穿丝袜时,我肯定会找机会多欣赏的。虽然她很瘦,但是胸很大,很挺。有一次她叫我到她办公室谈话。她一弯腰捡东西,我正好看的很清楚,本身衣服就有点露乳沟了。这一弯腰。&br&&br&  妈呀…豹纹的胸罩,我当时就挺了,幸好是牛仔裤,我马上侧身,才没被她发现。&br&&br&  她的老公也非常的有钱,比她大10岁。算是有势力的人吧。我只见过一次而已。但美美的衣服都是很昂贵的,咱们可能一辈子都不会买。什幺LV的包,GUCCI的包。一双跟匡威的布鞋差不多得,不知道什幺名牌,还2000多元。她还说很便宜。很薄那种小羽绒外套,就2 万多块。真是奢侈啊!&br&&br&  随着时间积累,我在公司也工作了1 年了。她也很看好我,还让我当业务团队组长,负责管理业务员的工作和联系对外业务。有几天她总不来公司,也不知道有什幺事。当然作为下属,我不可能给她打电话问她怎幺没来,除非我们俩换位置行了。&br&&br&  一天下午,一周不见的美美,终于来公司了。盘着头发,依旧化着妆。一身黑色短连衣裙,黑丝连裤丝袜,还是很薄得那种,黑色高跟鞋。一身黑色,配两个黑色金链的小挎包。又酷又性感,看着她走进她办公室。我不禁手摸了一下自己的JJ. 实在太让人受不了了。&br&&br&  到公司她先叫经理进去谈话,之后又叫全体业务人员到会议室开会。大致听了一下上周的工作总结,又让每个业务说了说下周的工作安排。&br&&br&  快到下班时,她出来说「到点就下班,别在公司又玩电脑。」(大家看着她好像今天心情不大好,估计谁也不敢多逗留公司了。)接着说「张峰你进来一下」(张峰就是本作者我啦)我怀着颗忐忑的心,走进办公室。我就怕上级领导找我谈话。总紧张,怕自己做错什幺事了。其实美美和其他老总不大一样,人还是很随和,对员工的工作态度很容易接受,不是苛刻的人。&br&&br&  美美让我坐下。&br&&br&  我说「美姐,什幺事啊?」&br&&br&  美美说道「你觉得咱们公司怎幺样啊?」&br&&br&  我说「挺好的,也挺有发展。大家不是都做得不错幺。」随后她听了笑了笑。接着跟我谈公司的一些事,想让我再找几个业务员组一个团队,说现在那个组长不行,要踢掉。让我来找几个有实力的业务。谈话还没结束,我听见外面的同事都打卡陆续下班了。&br&&br&  又让我说了说对公司的发展,和业务的问题。她边听我说,边端起咖啡杯走到我旁边的沙发坐下。我的眼神一直没离开她的腿,但我又害怕。还是故作镇定将目光转移到她脸上了。但心里还是印着她细细双腿和黑色的丝袜。&br&&br&  我说完了我该说的工作,我趁她不注意偷看了一下表,已经下班40分钟了。&br&&br&  同事全下班回家了。看来我要一个人寂寞的回家了。还没想完。美美说道「你下班没事吧?」我回答道「没事啊!怎幺…?」「那咱俩去吃饭吧?」美美肯定的问我。&br&&br&  我还是头一次单独和美美吃饭,心里突然激动一下。但她这幺讲究,我钱包里还好有400 多块。但对他来说,我觉得也不够。心里还嘀咕呢。她问我想吃什幺。「我无所谓,吃什幺都行。看您啦?」&br&&br&  她说「那行,咱们就吃小烧烤。」&br&&br&  我很高兴的答应了美美&br&&br&  美美说的小烧烤是介于烧烤基本,和羊肉串之间的这幺一种。餐厅就在公司附近,走路五分钟就能到。环境不错,全是带有屏风的小隔断,不算包间,但也不像饭馆大厅散桌那幺乱,那幺吵。&br&&br&  我们找了一个靠里面的小雅间。上面有木牌刻着风花雪月。我喜欢这个词。&br&&br&  那天人还不多,我和美美坐的是4 人桌,我们面对面坐着,开始点餐了。她要了2 个凉菜和几个烤的肉串。我就都让美美都点了。&br&&br&  她问我喝酒幺?「可以啊。您想喝什幺?」美美提议来点白酒。我担心的问道「您能喝幺?」她不满我的回答我「当然了!」于是我们坐下边吃边喝。(1 大瓶42度二锅头,也有1 斤呢。小弟酒量有限最多极限能喝半瓶后,还有知觉能打车回家睡觉那种)我们随便闲聊了聊,围绕的都是公司,公司同事的个人隐私,同事间的友谊,八卦。接着美美跟我说她刚刚和她老公离婚了。这让我听后不禁「啊」出了声。那幺好的女人,还离婚。当然我还是不敢问为什幺。&br&&br&  她这时眼睛已经湿润了。&br&&br&  我安慰她「美姐,没事吧您?有什幺不痛快可以跟我说说。」她就跟我说她老公的一些做人做事,和家庭一些矛盾。我听了倒觉得都是正常。她又拿起酒杯和我碰杯,我心想喝多了是不是我有机会呢。当时我想的有机会是能借机占下小便宜,能碰一碰她的丝袜美腿。这就让我心满意足了。不知不觉一瓶二锅头没有了。她好像今天想喝痛快,又让服务员拿4 瓶啤酒。我说别别别,美姐。喝不了了。美美不高兴的说「我都能喝,你怎幺不能喝。」我说「您也少喝点。」&br&&br&  「服务员拿2 瓶吧。」我又看着美美,傻笑着说「不够咱再要。」啤酒又上来了。哥们当时状态真不错。也许和女人喝酒,喝的慢一些,不用像傻子一样老干。感觉没上头。她拿起啤酒开始倒,还给我倒上了。又和我说了说她感情和离婚的事,此时她眼泪是真下来了。&br&&br&  自己用双手捂着脸,不敢哭出声来,颤颤的擦拭了一下自己的眼睛。&br&&br&  她的妆画的技术超好,或许是名牌化妆品的功效吧。流了眼泪,眼睛没有那种花的效果。&br&&br&  我又安慰她,说了些鼓励的话给他听。真的酒足饭饱,我提议要和美美离开。&br&&br&  「我送您回去吧?」她呆呆的不做声,就这样我看伤心的她。「你先走吧。」「我怎幺能留您自己在这儿呢。」她说「那您送我回公司。」「公司怎幺睡觉啊,再说也这幺晚了。都9 点钟了。我赶紧送您回家休息吧」美美死活不肯,拿出钱包结账。说不让我请客。我扶着她走出烧烤馆门口,她就是靓,周围人都回头看她。我们走到路边,「打车,我送您回家」她只说了她家的地址而已。这会儿美美显然已经喝多了,开始晕头转向了。&br&&br&  我拦下出租车,我们一起坐在了后座。我向司机说了地址,奔向她家了。她坐下我旁边,头却转向了窗户。借着霓虹灯的光亮,我欣赏着她的美腿和那性感的黑色丝袜。太漂亮了。于是我大胆的伸出手指触摸了一下她膝盖部分。她没有反应,看来酒精真是好东西。我再一次伸手,用手掌完全握住她膝盖。我还怕她有所察觉,我故意问她「美姐,您没事吧?是不是喝的太难受了。」美美依旧不出声回应我。但我还是不敢太放肆。只是用手抚摸了她裙子下露出的大腿部分。丝袜的感觉超级好,绝对是名牌丝袜,怎幺会这幺滑呢……感觉美美的丝袜比我以前摸的还舒服,是丝袜高级,还是你太美了,你真是太完美了。&br&&br&  20分钟的时间,就到了她家的小区。我结了账便扶她下车。她还是很晕。我真是用力气,才拉美美出来的。&br&&br&  她勉强的靠自己独立站着。我说「到家了,美姐。」她抬头看了一眼楼上说「你扶我上去吧,我真是喝的有点多。拿我的门卡,在11楼」&br&&br&  我扶她进电梯,小区环境真是不错,一看就是有钱人住的地方。&br&&br&  我当时心想既然来了,一定要满载而归。她拿出钥匙,半天都开不开门。我当时心里有点紧张,不会走错了吧。后来让我开,看来她今天彻底的让酒精麻痹自我了。&br&&br&  打开门。我把灯打开,她自己住。房子很大,大概有160 170 平米的样子。&br&&br&&br&&br&……&/p&
【转载】 那是在2010年初的春天了,我进了一家私企单位。这家单位是做对外贸易的,我应聘到那里是做销售。来到公司第一天,熟悉了一下单位同事和工作环境。简单了解一下公司大概是做什幺的。离下班还有2 小时,公司董事长进来了。 我晕……没想到是个女的,…
&p&看到问题,第一个想起杜琪峰的电影,枪火里有一段商场遭遇暗杀的戏拍的太漂亮了,干净、凌厉、冷静。&/p&&br&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/636032& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic1.zhimg.com/80/v2-abc5772c60_b.jpg& data-lens-id=&636032&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/80/v2-abc5772c60_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/636032&/span&
&/a&&br&&p&第二个想到的是《铁甲钢拳》(抱歉,之前打成钢甲铁拳),最后一段高潮戏真是太催人尿下了,动作没什么,但是情感渲染的太好,真的把观众的情绪也调动起来。&/p&&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/649792& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic2.zhimg.com/80/v2-f1b6bc345a5_b.jpg& data-lens-id=&649792&&
&img class=&thumbnail& src=&https://pic2.zhimg.com/80/v2-f1b6bc345a5_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/649792&/span&
看到问题,第一个想起杜琪峰的电影,枪火里有一段商场遭遇暗杀的戏拍的太漂亮了,干净、凌厉、冷静。 第二个想到的是《铁甲钢拳》(抱歉,之前打成钢甲铁拳),最后一段高潮戏真是太催人尿下了,动作没什么,但是情感渲染的太好,真的把观众的情绪也调动起…
转自明月登楼的博客,原文出处也是知乎&br&&br&&br&说说工作中遇到过的事吧。大约是在11年还是12年的时候我们单位在西藏的办事处接到一个业务,给一个边检大楼做环境影响评价。&br&&br&我以为是边检大楼扩建或者原址重建,结果到了现场发现需要新建,而且地点在原址的30公里以外。当时觉得十分奇怪,边检大楼不是应该在边境线上吗?边防告诉我们因为边境线推进了30公里所以这个边检大楼就不适用了,需要重新修一个。&br&&br&为什么我们的边境线向前推进了30公里呢?&br&&br&大致原因是这样的。我国和印度边境有条小河沟,大家就是以小河沟分界的,但是两边都是藏族同胞世代的居住地。有一天我们这边的乡政府来了几个藏族同胞说为什么别的寨子都搞新农村啊牧民定居工程,又是修房子修路又是安装太阳能的,他们寨子怎么没动静呢?他们也要求要搞新农村、牧民定居工程也要安装太阳能。结果乡政府一问是河对面的寨子,当然没法搞啊。藏族同胞不干了,就隔个几百米凭什么啊!乡政府的工作人员就带他们到了界碑,告诉他们这边是中国,那边是印度,所以他们的问题应该找印度当地政府。&br&&br&总算把问题搞清楚了,藏族同胞回去了。不过隔了几天他们又来了,这次理直气壮要求乡政府给予他们相同的待遇。乡政府工作人员说不是说清楚了吗?结果他们拉着乡政府的领导去看,发现界碑已经挖起来安在了他们寨子后面。然后藏族同胞告诉乡政府领导现在我们是中国人了,所以必须同等待遇。乡政府的人一脸的懵逼!不过既然过来了还是带着土地的那就一视同仁吧。&br&&br&结果这事儿有被后面的寨子知道了,所以中国的界碑就一个寨子一个寨子的移动着!30多公里就是这么来的。至于以后还会不会移动很难说啊!所以跟印度的边界勘定问题一直没能落实。&br&&br&看看勐腊县的一位乡亲已经现身说法,云南人民更狠!还有说户口的,唉,只要政府同意,在派出所办个户口分分钟的事!至于说什么卫星定位的,那时勘定了边界的情况下,跟印度就没能达成协议!至于搬了界碑别人不承认这事儿吧,你今晚搬信不信明天外交部发言人就敢说“自古以来…………”
转自明月登楼的博客,原文出处也是知乎 说说工作中遇到过的事吧。大约是在11年还是12年的时候我们单位在西藏的办事处接到一个业务,给一个边检大楼做环境影响评价。 我以为是边检大楼扩建或者原址重建,结果到了现场发现需要新建,而且地点在原址的30公里以…
&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 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&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-57eaadc8cec5190bfd30_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&758& data-rawheight=&207& class=&origin_image zh-lightbox-thumb& width=&758& data-original=&https://pic4.zhimg.com/v2-57eaadc8cec5190bfd30_r.jpg&&&/figure&&p&其实就是两个GAN结构,其中生成网络和判别网络中比较高层的部分都采用了权值共享(虚线相连的部分),没有全职共享的部分分别处理不同的domain。这样每次就可以根据训练的domain生成一个样本在两个domain中不同的对应,比如戴眼镜和没戴眼镜:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-356a6118ccf3e8e3bf1c7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&791& data-rawheight=&267& class=&origin_image zh-lightbox-thumb& width=&791& data-original=&https://pic2.zhimg.com/v2-356a6118ccf3e8e3bf1c7_r.jpg&&&/figure&&p&分别有了共有特征和各自domain特征,那么做mapping的思路也就很直接了[14]:&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-8ac50600e40feaac345e09bd7e05a83d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&771& data-rawheight=&210& class=&origin_image zh-lightbox-thumb& width=&771& data-original=&https://pic3.zhimg.com/v2-8ac50600e40feaac345e09bd7e05a83d_r.jpg&&&/figure&&p&在GAN前边加了个domain encoder,然后对每个domain能得到三种样本给判别器区分:直接采样,重建采样,从另一个domain中transfer后的重建采样。训练好之后,用一个domain的encoder+另一个domain的generator就很自然的实现了不同domain的转换。用在图像翻译上的效果如下:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-612e9cf5e125fd626be7db_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&444& data-rawheight=&544& class=&origin_image zh-lightbox-thumb& width=&444& data-original=&https://pic2.zhimg.com/v2-612e9cf5e125fd626be7db_r.jpg&&&/figure&&p&还有个巧妙的思路,是把CoGAN拆开,不同domain作为C-GAN条件的更加显式的做法[15]:&/p&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-ddec16d502c94f91ea35_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&883& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&883& data-original=&https://pic1.zhimg.com/v2-ddec16d502c94f91ea35_r.jpg&&&/figure&&p&第一步用噪声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&&p&&br&&/p&&h2&给女优穿上衣服&/h2&&p&其实同样没什么好说的,Cycle-GAN和pix2pix的作者是一拨人,文档都写得非常棒,准备好数据,分成穿衣服的和没穿衣服的两组,按照文档的步骤训练就可以:&/p&&p&Torch版Cycle-GAN:&a href=&https://link.zhihu.com/?target=https%3A//github.com/junyanz/CycleGAN& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junyanz/CycleGAN&/a&&/p&&p&pyTorch版Cycle-GAN(pix2pix二合一版):&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&Cycle-GAN收敛不易,我用了128x128分辨率训练了穿衣服和没穿衣服的女优各一千多张,同样是默认参数训练了120个epoch,最后小部分成功“穿衣服”的结果如下:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-fee34d66c386e0e01e5804_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1117& data-rawheight=&192& class=&origin_image zh-lightbox-thumb& width=&1117& data-original=&https://pic4.zhimg.com/v2-fee34d66c386e0e01e5804_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-de57c5ebefa4251ee3caa1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1117& data-rawheight=&192& class=&origin_image zh-lightbox-thumb& width=&1117& data-original=&https://pic4.zhimg.com/v2-de57c5ebefa4251ee3caa1_r.jpg&&&/figure&&p&虽然都有些突兀,但好歹是穿上衣服了。注意马赛克不是图片里就有的,是我后来加上去的。&/p&&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&&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=&https://link.zhihu.com/?target=http%3A//torch.ch/blog//gan.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Torch | Generating Faces with Torch&/a&&/p&&p&[3] A. B. L. Larsen, S. K. S?nderby, H. Larochelle, and O. Winther. Autoencoding beyond pixels using a&br&learned similarity metric. In ICML, pages , 2016.&br&&/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&&p&&br&&/p&&p&[9] &a href=&https://link.zhihu.com/?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&/a& &/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&&p&&br&&/p&&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&&p&&br&&/p&&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&=========== 分割线: ===========&/p&&p&上周日发的时候也想到了可能会有许多人对这个话题感兴趣,但没想到超过了1.5W赞这么多,大概看了看评论,做一些补充:&/p&&p&&b&1) &/b&马赛克训练数据:对于一般的机器学习问题,都是分布越简单越容易,遵循这个原则,我用的约束是单人照片,具体方法是:先找一个Pascal VOC训练好的SSD代码,然后SSD筛选了一批每张图里只能检测到一个人的。&/p&&p&最后在真人照片上的效果看上去还是不错的,我没有做过量化评估,大体来说看上去挺像的要超过一半,非常逼真的可能有5%~10%。两人以上战斗的动作画面我没有评估过。&/p&&p&&b&2)&/b&穿(tuo)衣训练数据:因为收敛很难,所以数据的加了更多约束:只用女性单人正面照片。同样通过SSD检测出单人照片,同时考虑person框的宽高比小于1的且框内能检测到人脸的(OpenCV的人脸检测)。这样尽量筛选出一批面向镜头,身体占画面比接近的照片。&/p&&p&最后的效果我在原文中也提到过,只有小部分能成功穿上(tuo)衣服,具体我也没有量化统计过,大概100张里两三张吧,大部分都是身上出现了看上去有点像衣服的线条或是另一个人的胸部。考虑到我最后筛选出的图片人物占画面比仍然有很大的变化,很可能我的模型就是遇到了文中提到的partial mode collapse的问题。&/p&&p&如果有更好的办法筛选出人物大小差不多的照片,效果应该能提升不少。比如我在用SSD筛选的时候如果考虑宽高比更小一些,筛选出的照片看上去会更加一致,不过我资源不太够,这样做后训练集就只有不到300张,资源够的老司机们有兴趣可以试试。&/p&&p&&br&&/p&&p&&b&3)&/b&预训练模型有没有?有,但是我研读了中华人民共和国刑法第三百六十三、三百六十四和三百六十六条,完全读不懂,所以还是不提供。再说就算我提供了,根据1)和2),看到你想看的内容也是需要运气的。&/p&&p&另外特别感谢赞赏的知友们,这篇文章是想说&b&书中自有颜如玉&/b&,而知友们的赞赏让我知道&b&书中真有黄金屋&/b&,古人诚不我欺…&/p&
作为一名久经片场的老司机,早就想写一些探讨驾驶技术的文章。这篇就介绍利用生成式对抗网络(GAN)的两个基本驾驶技能: 1) 去除(爱情)动作片中的马赛克2) 给(爱情)动作片中的女孩穿(tuo)衣服 生成式模型上一篇《》中已经简单介…
一、上帝悖论,如果上帝是万能的,那么他能否创造出自己举不起来的东西。&br&二、色盲悖论,有一种色盲症患者把蓝色看成绿色,而把绿色看成蓝色,但是他自己并不知道他跟别人不一样,别人看到的天空是蓝色的,他看到的是绿色的,但是他和别人的叫法都一样,都是“蓝色”;小草是绿色的,他看到的却是蓝色的,但是他把蓝色叫做“绿色”。所以,他自己和别人都不知道他和别人的不同。 问:1、怎么让他知道自己和别人不一样?2、你怎么知道你不是上述的色盲症患者。&br&三、黄药片&br&一&br&西得瑞克·爱尔顿博士悄悄地从后门走进自己的办公室,脱掉外套,把它收进窄小的柜子。他捡起桌子上整齐的一叠病历卡,这是接待员海伦娜小姐放在那儿的。只有四人病人,当然,如果他不限制,求医的人恐怕得成百上千。爱尔顿的业绩是如此辉煌,作为一个心理学家的名声是如此之大,以至于在公众心中他的名字就等于心理治疗。他的眼睛掠过头一页,皱了皱眉头。之后,他朝通向治疗室的单向玻璃望过去,那里面有四名警察和一个穿束缚衣的男人。卡片上讲这个男人叫杰拉得·鲍塞克,他在超级市场杀了五个人。在被捕之前,鲍塞克先生还打死了一名警官,并打伤了另外两个。&br&除了束缚衣,这位先生看不出有什么危险。他大约25岁,棕色头发,蓝眼睛,眼睛周围有着淡淡适中的皱纹。现在,他面带轻松的笑意,懒散地凝望着梅伦娜。后者正假装伏在桌子上研究她的卡片,其实,她明显地意识到了自己的“观众”。&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&“我没有穿束缚衣,我只是被绳子绑住了。是你绑的我,你不记得了吗?”杰里急切地说。&br&“站在你身后的是齿轮锁?这是你的看法,对吧?好,如果其中一个齿轮锁走到你的面前,用拳头打在你的下巴上,你还认为它是齿轮锁吗?”&br&西得瑞克示意一名警官走上前来。这个人很仔细地给了杰拉得重重的一下子,不过并没有伤着他。杰里眼中闪出吃惊的目光,之后,他看着西得瑞克,笑了起来。&br&“觉得怎么样?”西得瑞克问。&br&“怎么样?”杰里笑了,“天哪,你想象的那个齿轮锁,不,那是你梦中的警官,他走到我的面前,而且打了我!”他遗憾地摇了摇头。“你难道不明白,卡,这不是真的?放开我,我就能证明这一切。我会打开这些‘警官’的身体,走到外面,穿上太空行走服或者磁力鞋,或者无论干些什么。也许,你怕我做这些事情?你被保护性的幻想所缠绕,而我又被绳子所束缚,你又把这些绳子想象成精神病人用的束缚衣。你认为你自己是爱尔顿博士,一名心理学大夫。你认为你是正常的,而我疯了。也许,你想象中的自己是个名医吧?人人都想找你看病,肯定没错!你名扬四海,你甚至幻想有个美丽的接待员,她叫什么名字来着?”&br&“海伦娜·菲兹罗伊。”&br&杰里点了点头。“对,就是她。”他极其理解地说,“海伦娜是个火星港的协调员,我们每一次在火星上着陆,你都与她约会。但是,她总是不理睬你。”&br&“警官,再打他!”&br&当杰里的脑袋随着警官的动作而摆动的时候,西得瑞克问道:“现在,你的脑袋在动,这是我的想象吗?”&br&“动什么?”杰里说着,笑了,“我没有感觉到动。”&br&“你的意思是说,在你的意识里没有些许的理性能告诉你,你的推理并非真实?”&br&杰里伤感地笑了笑:“我不得不承认,当你看起来是那么绝对自信,认为我是个病人的时候,我常常会怀疑我自己是否错了。放开我,卡。让我们不要感情用事地解决问题。我俩之间总有一个是疯子。”&br&“如果我让警察脱下你的束缚衣,你会怎么办?抢过枪并试图杀掉更多的人?”&br&“这正是我所担心的事情,”杰里说,“如果那些海盗返回飞船,你又犯了空间疯狂症,以至于欢迎他们上船,事情可就闹大了。你必须放了我,我们的生命全系于此,卡!”&br&“你又从哪里搞到枪呢?”&br&“枪通常放在齿轮锁那里。”’&br&西得瑞克看了看四位警官,又看了看他们手中的来复枪。警宫中的一个朝他勉强地笑了笑。&br&“恐怕我们现在还不能脱掉你的束缚衣。”西得瑞克说,“我现在准备请警官带你回去,明天咱们再继续谈。我希望你能够认真地思考这件事情,努力去发现那堵将你的理智与现实隔开的墙。一旦你找到缺口,整个幻觉就会消失。好吧,警官,带他走。明天这个时候再见。”&br&警察抓起杰里,犯人低头看了看大夫,有一种温和的表情浮现在他的脸上。&br&“好吧,卡,我会努力照你讲的去试试,我也希望你想想我的话。我很有信心,因为有好几次,我发现你的眼中闪出了诚实的怀疑,我希望……”警察粗暴地将他推往门口。杰里回过头,恳求地叫道:“卡,吃一片药柜里锁着的黄药片吧!不会有什么不良反应的。”&br&三&br&将近5点半钟的时候,西得瑞克应付完所有病人,锁上了医院的大门。他伸了伸胳膊,叹了口气:“今天真够累的。”&br&海伦娜抬头望了他一眼,又低下头继续打字:“我还有一点就干完了。”&br&一分钟之后,她取下打字纸,放到桌子旁边的文件架上面。&br&“明天早晨我会把它们分类归档的。”女接待员说,“很累,是不是,博士?那位鲍塞克先生是我为你工作以来见到的最不寻常的病人。还有那位可怜的波兹先生,一位成绩卓著的经理,每年挣500,000美金,可他却打算放弃不干,他看起来可是没什么毛病。”&br&“他是正常的。血压高的人经常会有微量的脑溢血,这种出血点是那么小,以至于它的影响面积不会比针尖大,但它对心理的影响则是使人完全忘掉他知道的事情。他可以再学习,但是人的理智必须永远正常才能支持自己找到机会。他已经作出了一个错误的判断,这使他的公司损失了150万元。这就是为什么我答应他,把他当成一个病人……唉,真正让我心烦的是杰拉得·鲍塞克!海伦娜,我说乱了,我同意把一个年收入为500,000美金的经理当成自己的病人。”&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&“我正准备给您打电话。”地区律师的声音传了过来,“昨天上午10点我给您挂电话,可是没有人接,这之后我就没找出时间再打。我们警察局的心理学专家沃尔兹说,您能使这家伙在几天}

我要回帖

更多关于 三国如龙传怎么挂机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信