sr在哥伦布城中,三围有谁比他还渣的吗

最高级的性感,不看三围看三观
你连世界都没有观过,哪儿来的世界观?&
你连人生都没有过完,哪儿来的人生观?&
你连价值都不知道是啥,哪儿来的价值观?&
岁末年初,天寒地冻,交通事故频发,
但其中一种事故最为惹人注意——出轨。
后台有人留言:你们怎么不就此事发声呢,
迫切想知道你们的态度,
这事太毁三观了。
讲真,这起事故并没有引起我多大的兴趣,
毕竟,我没必要强行假装出我是事件主角隔壁邻居的样子。
引起我兴趣的,是这起事件中,
部分网民轻易就三观尽毁的反应。
这让我想起一个朋友给我发了一个段子:
有2个年青人同时爱上了一名女生,
女生让他们先周游世界回来再说。
一位立刻背起行囊准备出发,
另一位围着女生转了一圈,
说“你才是我的世界”。
最后女生选择了其中有钱的一个。
我看罢,打过去一串“哈哈”。
他竟发过来一个怒气的表情:
你还笑,我的三观都被毁了,
终于找到我单身的原因了。
当然,这是开玩笑。
但现实中,绝不鲜见。
而最常见就是爆出了明星家事,
一群人没有节操地围观,
然后偏要装出痛心疾首的样子哀叹三观尽毁。
看过知乎网友Summer楠分享的一个故事,
很是有趣。
大学在北方,开学第一天,
我和宿舍的川妹子结伴去洗澡,
她蹦蹦跳跳兴奋地跟我走到澡堂门口,
当看到一排排柜子和光溜溜的一群姑娘时,
我明显觉得她拉着我的手瞬间有些颤抖。
当时我并不知道是怎么了,
等到我们俩回到宿舍以后,
她一直闷闷不乐,饭也没吃,
默默拿起手机走到阳台给她妈妈打电话。
还没等我反应过来,
就听到阳台传来她嚎啕大哭的声音,
“妈妈!她们竟然好多人在一起洗澡!
她们怎么能一起洗澡!
妈妈我要回家!我不上学了!”
比起她崩塌的世界观,
从小就跟母上大人混迹于各种澡堂的我的世界观可能碎得更彻底。
洗了个澡,就要退学?
那后来呢?后来她成了我们宿舍最热衷于互相搓背的澡堂一霸。
这个故事,就是现实中那些典型的毁三观事故——
那些总觉得别人三观不正毁己三观的人,
他们口中的三观正,不过是“三观正好和我一样”的缩写。
其实,是他们没见过世面罢了。
前不久,美国加州大学一名教授在一项研究中,
观察到一个有意思的直观印象——
在美国,越好的大学,胖子的比例越少,
女生也长得越漂亮。
普通大学的学生,
不仅学习比不上那些优秀大学,
就连身材、颜值都比不上人家。
是不是一个很让人伤心的事实?
这时候你是不是要重塑三观,
哀叹:果然阶层固化了。
但是注意,还没告诉你另一个现象——
越是好的大学,学生的自律性越高,
图书馆越是打挤。
来看一个更直观的数据——
自1996年以来,
美国年收入30万美元以上的家庭,
花费在生活上的开支没有明显变化,
但教育投入却增加了2倍。
收入7万美元的家庭,教育投入没有变化。
看到没,这不是阶层固化,是主动的认知固化。
也是很多人三观容易被毁的真相——
哪有什么三观尽毁,
承认自己并不能完全弄清楚人生以及世界的真相,
永远通过扩大认知范围来迭代自己的三观,
才是真正的三观。
犹如一个人有一条性感的内裤,
但你不能永远只穿一条,要勤洗勤换,
更不能满世界逢人就说:
我穿了一条性感内裤。
其实,真正的三观被毁,
往往是被三观一致毁掉的。
前两天,微博出现了一个热搜——
紫光阁地沟油。
事情的原委说来让人捧腹。
本是交通事故主角王某的一首歌曲因触犯社会底线,作为一个机关杂志,紫光阁发了一篇文章,
表明了自己的态度,然后就惹怒了一群粉丝:
“联系了卖热搜的,
明天做一个热搜出来,大家到时候去刷评论。”
但好心办坏事,望文生义,
把紫光阁错认为是一家饭店,
造谣也就造得很没水平——紫光阁用地沟油做饭。
可笑么?也有点可悲。
不过不是没有知识的可悲,
也不是三观不正的可悲,
恰是我们常见的追求三观一致的可怕——
只听三观一致的歌手的歌,
只跟三观一致的人做朋友,
只读跟自己三观一致的书,
只看跟自己三观一致的电影。
而他们的想象力也就被限制在了“三观优越感”中,
还以之与世界为敌,
却浑不知正把自己置于被嘲笑的境地。
看过作者斑马的一句话,很有启发:
终其一生,我们都在给自己竖一座高墙。
但是有时候,你得到墙外看看。
《摔跤吧,爸爸!》上映后,
好评如潮,可也有不同声音。
比如有人说:
看,这样一部片子,父亲完全不顾女儿的想法,
只是让她们完成自己的梦想,
这就是典型的强权政策。
这就是三观不正,就是鄙薄女性。
当时看到这种评价的时候,
我就想起了郭德纲的那句话:
其实我挺厌恶那种不明白任何情况,
就劝你一定要大度的人,离他远一点,
雷劈他的时候会连累到你。
显然,这样评价的人,也不明白任何情况——
在印度,童婚比例高达47%,
大多女孩未成年,就被父母用来换取聘金。
这样你才可能理解新娘的那段话:
而你们的父亲,至少把你们当成女儿。
这就是为什么当一个人知道的越多时,
越明白自己的无知。
也是为什么一个成熟的人,
不会以自己的价值观随意对别人做判定,
也不会总想着改变他人的世界观。●人生观是拿来看待的,不是拿来评判的。●价值观是拿来畅谈闲聊的,不是拿来批判的。
●世界观是拿来享受的,而不是拿来看待的。
晚年,丰子恺的画曾被视为毒草,
但他还是很乐意给上门求画的人来画。
子女一次次地劝他以后留意些。
丰子恺却还是我行我素。
他给儿子新枚的信中写道:
“……我的画都是毒草……
然而世间有一种人视毒草为香花,世袭珍藏。
对此种人,我还是乐意画给他们珍藏。
古人云:‘文章千古事,得失寸心知。’画亦如此。”
只是后期形势愈发严峻,
丰子恺只好改了“墨不出门”为“画不出门”。
但他还是偷偷在画。
为了不影响家人,也因为怕被发现连累家人,
他就利用每天天亮前和天黑后的时间拼命画。
放在当时的环境中,
丰子恺的选择显然是不聪明的,
三观是不正确的。
但作家十二有过这么一句话:
一个善良的人,是不可能被毁“三观”的,
它只是总会怀疑对聪明的定义。
丰子恺就是这么一个善良的人,
他挚爱竹久梦二的一句话:
“自我记事起,我渴望的世界可以不‘真’,
也可以不‘好’,但一定要‘美’。”
这也是我想说的:三观崩塌不可怕,
因为三观也需要成长。
可怕的是只有正确的三观,
却没有美的人生观——
可以按照自己的意愿从容地选择你的人生。
毕竟,永远正确,是活给别人看的。
日下午3点左右,
中国环海第一人郭川消失于茫茫太平洋后,
很多人发出这样的疑问:
“这年头还需要哥伦布?”
“浪费资源,却没为社会做出实质贡献。”
“毫无意义,好比把飞机再发明一遍。”
是啊,郭川航海究竟有什么意义?
现实中,我们也经常这样质疑。
你去看话剧,
有人说:费那钱干嘛,网上电影那么多。
你买了很多书,
有人说:网上免费的书那么多。
你买了一件很贵的衣服,
有人说:可以够我淘宝好多件了。
总而言之,总会有人跟你三观不合,
还试图否定你的价值观。
记住,可以跟三观不合的人交朋友,
但一定远离这些轻易否定你价值观的朋友。
正如郭川在《执着的人是幸福的》中写过:
“我认为我是一个幸福的人,
因为执着,我成就了我的梦想。
好奇与冒险本来就是人类与生俱来的品性,
是人类进步的优良基因,
我不过遵从了这种本性的召唤,
回归真实的自我。”
不被怀疑的梦想,不值得去实现,
如果你的价值观正被质疑,
别崩溃,你只是正在体现你的价值。
高晓松,三围堪忧,
被网友调侃为“矮大紧”,
但这并不妨碍他受到大众的喜欢。
因为人们喜欢的,不是他的三围,
而是他的三观。
拾遗曾经写过他,
他有美的人生观——
按照自己的意愿选择了音乐道路。
他有被质疑的价值观——
宁愿放弃大学学历,不给自己留退路。
但更性感的是他的世界观——
放下一切,壮游世界。
他曾在《晓说》里感慨:
“世界不是苟且,世界是远方。
行万里路,才能回到内心深处。”
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。最高级的性感,不看三围看三观
我的图书馆
最高级的性感,不看三围看三观
心 & 里 & 有 & 束 & 光 & &· & &眼 & 里 & 有 & 片 & 海拾遗物语+你连世界都没有观过,哪儿来的世界观? 你连人生都没有过完,哪儿来的人生观? 你连价值都不知道是啥,哪儿来的价值观? 01岁末年初,天寒地冻,交通事故频发,但其中一种事故最为惹人注意——出轨。后台有人留言:你们怎么不就此事发声呢,迫切想知道你们的态度,这事太毁三观了。讲真,这起事故并没有引起我多大的兴趣,毕竟,我没必要强行假装出我是事件主角隔壁邻居的样子。引起我兴趣的,是这起事件中,部分网民轻易就三观尽毁的反应。这让我想起一个朋友给我发了一个段子:有2个年青人同时爱上了一名女生,女生让他们先周游世界回来再说。一位立刻背起行囊准备出发,另一位围着女生转了一圈,说“你才是我的世界”。最后女生选择了其中有钱的一个。我看罢,打过去一串“哈哈”。他竟发过来一个怒气的表情:你还笑,我的三观都被毁了,终于找到我单身的原因了。当然,这是开玩笑。但现实中,绝不鲜见。而最常见就是爆出了明星家事,一群人没有节操地围观,然后偏要装出痛心疾首的样子哀叹三观尽毁。02看过知乎网友Summer楠分享的一个故事,很是有趣。大学在北方,开学第一天,我和宿舍的川妹子结伴去洗澡,她蹦蹦跳跳兴奋地跟我走到澡堂门口,当看到一排排柜子和光溜溜的一群姑娘时,我明显觉得她拉着我的手瞬间有些颤抖。当时我并不知道是怎么了,等到我们俩回到宿舍以后,她一直闷闷不乐,饭也没吃,默默拿起手机走到阳台给她妈妈打电话。还没等我反应过来,就听到阳台传来她嚎啕大哭的声音,“妈妈!她们竟然好多人在一起洗澡!她们怎么能一起洗澡!妈妈我要回家!我不上学了!”比起她崩塌的世界观,从小就跟母上大人混迹于各种澡堂的我的世界观可能碎得更彻底。洗了个澡,就要退学?…………那后来呢?后来她成了我们宿舍最热衷于互相搓背的澡堂一霸。这个故事,就是现实中那些典型的毁三观事故——那些总觉得别人三观不正毁己三观的人,他们口中的三观正,不过是“三观正好和我一样”的缩写。其实,是他们没见过世面罢了。03前不久,美国加州大学一名教授在一项研究中,观察到一个有意思的直观印象——在美国,越好的大学,胖子的比例越少,女生也长得越漂亮。普通大学的学生,不仅学习比不上那些优秀大学,就连身材、颜值都比不上人家。是不是一个很让人伤心的事实?这时候你是不是要重塑三观,哀叹:果然阶层固化了。但是注意,还没告诉你另一个现象——越是好的大学,学生的自律性越高,图书馆越是打挤。来看一个更直观的数据——自1996年以来,美国年收入30万美元以上的家庭,花费在生活上的开支没有明显变化,但教育投入却增加了2倍。收入7万美元的家庭,教育投入没有变化。看到没,这不是阶层固化,是主动的认知固化。也是很多人三观容易被毁的真相——哪有什么三观尽毁,承认自己并不能完全弄清楚人生以及世界的真相,永远通过扩大认知范围来迭代自己的三观,才是真正的三观。犹如一个人有一条性感的内裤,但你不能永远只穿一条,要勤洗勤换,更不能满世界逢人就说:我穿了一条性感内裤。04其实,真正的三观被毁,往往是被三观一致毁掉的。前两天,微博出现了一个热搜——紫光阁地沟油。事情的原委说来让人捧腹。本是交通事故主角王某的一首歌曲因触犯社会底线,作为一个机关杂志,紫光阁发了一篇文章,表明了自己的态度,然后就惹怒了一群粉丝:“联系了卖热搜的,明天做一个热搜出来,大家到时候去刷评论。”但好心办坏事,望文生义,把紫光阁错认为是一家饭店,造谣也就造得很没水平——紫光阁用地沟油做饭。可笑么?也有点可悲。不过不是没有知识的可悲,也不是三观不正的可悲,恰是我们常见的追求三观一致的可怕——只听三观一致的歌手的歌,只跟三观一致的人做朋友,只读跟自己三观一致的书,只看跟自己三观一致的电影。而他们的想象力也就被限制在了“三观优越感”中,还以之与世界为敌,却浑不知正把自己置于被嘲笑的境地。看过作者斑马的一句话,很有启发:终其一生,我们都在给自己竖一座高墙。但是有时候,你得到墙外看看。05《摔跤吧,爸爸!》上映后,好评如潮,可也有不同声音。比如有人说:看,这样一部片子,父亲完全不顾女儿的想法,只是让她们完成自己的梦想,这就是典型的强权政策。这就是三观不正,就是鄙薄女性。当时看到这种评价的时候,我就想起了郭德纲的那句话:其实我挺厌恶那种不明白任何情况,就劝你一定要大度的人,离他远一点,雷劈他的时候会连累到你。显然,这样评价的人,也不明白任何情况——在印度,童婚比例高达47%,大多女孩未成年,就被父母用来换取聘金。这样你才可能理解新娘的那段话:而你们的父亲,至少把你们当成女儿。这就是为什么当一个人知道的越多时,越明白自己的无知。也是为什么一个成熟的人,不会以自己的价值观随意对别人做判定,也不会总想着改变他人的世界观。●人生观是拿来看待的,不是拿来评判的。 ●价值观是拿来畅谈闲聊的,不是拿来批判的。●世界观是拿来享受的,而不是拿来看待的。06晚年,丰子恺的画曾被视为毒草,但他还是很乐意给上门求画的人来画。子女一次次地劝他以后留意些。丰子恺却还是我行我素。他给儿子新枚的信中写道:“……我的画都是毒草……然而世间有一种人视毒草为香花,世袭珍藏。对此种人,我还是乐意画给他们珍藏。古人云:‘文章千古事,得失寸心知。’画亦如此。”只是后期形势愈发严峻,丰子恺只好改了“墨不出门”为“画不出门”。但他还是偷偷在画。为了不影响家人,也因为怕被发现连累家人,他就利用每天天亮前和天黑后的时间拼命画。放在当时的环境中,丰子恺的选择显然是不聪明的,三观是不正确的。但作家十二有过这么一句话:一个善良的人,是不可能被毁“三观”的,它只是总会怀疑对聪明的定义。丰子恺就是这么一个善良的人,他挚爱竹久梦二的一句话:“自我记事起,我渴望的世界可以不‘真’,也可以不‘好’,但一定要‘美’。”这也是我想说的:三观崩塌不可怕,因为三观也需要成长。可怕的是只有正确的三观,却没有美的人生观——可以按照自己的意愿从容地选择你的人生。毕竟,永远正确,是活给别人看的。07日下午3点左右,中国环海第一人郭川消失于茫茫太平洋后,很多人发出这样的疑问:“这年头还需要哥伦布?”“浪费资源,却没为社会做出实质贡献。”“毫无意义,好比把飞机再发明一遍。”是啊,郭川航海究竟有什么意义?现实中,我们也经常这样质疑。你去看话剧,有人说:费那钱干嘛,网上电影那么多。你买了很多书,有人说:网上免费的书那么多。你买了一件很贵的衣服,有人说:可以够我淘宝好多件了。总而言之,总会有人跟你三观不合,还试图否定你的价值观。记住,可以跟三观不合的人交朋友,但一定远离这些轻易否定你价值观的朋友。正如郭川在《执着的人是幸福的》中写过:“我认为我是一个幸福的人,因为执着,我成就了我的梦想。好奇与冒险本来就是人类与生俱来的品性,是人类进步的优良基因,我不过遵从了这种本性的召唤,回归真实的自我。”不被怀疑的梦想,不值得去实现,如果你的价值观正被质疑,别崩溃,你只是正在体现你的价值。08高晓松,三围堪忧,被网友调侃为“矮大紧”,但这并不妨碍他受到大众的喜欢。因为人们喜欢的,不是他的三围,而是他的三观。拾遗曾经写过他,他有美的人生观——按照自己的意愿选择了音乐道路。他有被质疑的价值观——宁愿放弃大学学历,不给自己留退路。但更性感的是他的世界观——放下一切,壮游世界。他曾在《晓说》里感慨: “世界不是苟且,世界是远方。 行万里路,才能回到内心深处。”正如《后会无期》中的一句台词:你连世界都没观过,哪来的世界观。
馆藏&432202
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢我这个应当够晚,晚了十几年。&br&&br&对于一个把学习方法看的比学习更重要的人来说,英语是我学的最失败的学科。虽然考试成绩还可以,但直到大学毕业,也没找到一个合适的方法。在国外找工作的时候,本来担心的是口语,可是话唠到哪里都是话唠,英语说起来也没什么,不会的词我就绕开,顶多啰嗦点罢了,工作没有问题。但是阅读不行,一段话有几个词不懂,就看不下去了,图书馆里那么多小说,我都没法看,词汇量不够,这是硬伤。&br&&br&曾相信过词汇不重要,阅读技巧重要的观点,但问题是,读不懂就是读不懂,一个词不认识,看十遍还是不认识。所以曾尝试了各种不同的方法背单词:&br&&br&单词书,精背,A-Z,背到B,放弃。&br&&br&单词书,精背,Z-A,背到 T,放弃。&br&&br&单词书,浏览,看了3遍,一个词没记住,放弃。&br&&br&单词书,音义联想,想出了一堆乱七八糟的的东西,每次想到的还不一样,放弃。&br&&br&单词书,词根法,那么多词根,每个还有变形,一个词根只能对应几个词,效果不大,放弃。&br&&br&单词书,词源法,希腊来的,法语来的,拉丁语来的... 开玩笑,这么多,放弃。&br&&br&总结法,形近词,音近词,同义词,反义词,记住了几个,然后都混了,放弃。&br&&br&文曲星法,试过里边的猜单词的学法,但失败几次就去打俄罗斯方块了,放弃。&br&&br&阅读法,读书,不会的就查字典,二十分钟看一页,下次再看,之前查过的词都没印象了,放弃。&br&&br&阅读法2,写一个软件,提取出电子版中所有我不认识的单词,先背完生词,再读书。提取出来一看,一两千生词,这么多,放弃。&br&&br&软件法,我爱背单词的单机版,当时这个软件有了复习的概念,但还没有学习计划,背了几千个词,虽然没记住,但混了个脸熟,再遇到,想不起来也不觉得面生了。&br&&br&软件法2,囧记单词,图片助记,很轻松,但没图我就想不起来,放弃。&br&&br&软件法3,做选择题,看词选释义,我太擅长做选择题了,不认识也能猜出来,只看词还是不会。&br&&br&至此,我已经知道我要的是什么了,我要一个软件,输入要背的词,自动安排每天我要背什么,复习什么,不要有选择题,只是词,让我选择认识还是不认识,软件决定如何复习。&br&&br&我就决定自己写一个,在写之前我打算先看看同类软件都是怎么做的。诧异的发现,扇贝已经做到了,做到了我想要的80%左右的功能,在复习算法上有一些缺憾,我不喜欢打卡,不喜欢每天固定单词量,也不喜欢什么学习小组,不喜欢必须要登录才能用。但它可以通过不同的终端学习,手机,PC之间可以同步,有较标准的发音,这是我自己写软件做不到的地方。&br&&br&于是开始用它来背,具体过程在此说过,&a href=&http://www.zhihu.com/question//answer/& class=&internal&&为什么游戏容易上瘾而学习通常不会?&/a&,大概几个月后,词汇量到了2万。&br&&br&词汇量超过8k的时候,可以体会到词根的作用,超过15k的时候就可以大概分出它的词源,到20k就已经可以较流畅的阅读小说,并通过阅读增加词汇。&br&&br&所以,不是方法没用,而是词汇量不够。不过我还是觉得联想法意义不大。&br&&br&以下是经历各种挫折后总结出的经验,&br&&br&1,单词发音很重要。即使你不读,你也要听。与中文不同,英文的发音是与拼写联系在一起的,知道怎么读,就知道怎么写了。&br&&br&2,老老实实的背基础词汇。对于前6k个基础词汇,各种方法帮助不大。等到词汇量多了,自然而然的你就可以应用词根词源,同义反义了。不要浪费时间研究方法。&br&&br&3,大量,重复。一天背200,比四天背50效率要高很多。&br&&br&4,使用软件。很多人说有书就好了,但背书需要的毅力比用软件大多了。每人习惯不同,背单词的软件很多,可以都试试,找到最合适自己的。最好软件可以安排学习,复习任务,不用操心以前学的忘了没,该不该复习之类的事。&br&&br&现在,我已经不背单词了,而是用kindle看书,不认识的词查不查都没有关系,或者可以猜出来,或者当它是个生僻字,下次见到再说,这就是阅读法。但前提是,我已经有了两万的词汇量。&br&&br&最后,单词很重要,很多说词汇量不重要的人,往往都已经有一两万的词汇了。&br&&br&update:许多英语的学习方法都是学得已经很好的人,回过头来帮学习较弱的同学总结的,往往体会不到基础较弱的同学的难处。作为一个英语基础较差的人,我试过各种方法和捷径,但都不了了之。当我花了几个月把词汇量从 5k 提到 25k 时,我才知道原因,词汇量 5k 和 25k 是不同的世界,5k 的时候,我不会想要多看一眼不认识的词,因为太多词都不认识了,果汁里的成分,杂志里的八卦,不认识的词太多,就不会想看,也不会记到脑子里,25k 的时候,遇到不认识的词会想,居然有我不认识的,仔细瞧瞧,然后可能可以根据词根什么的猜出来,或者干脆查字典,然后就记住了。这个时候我才能体会到以前试过的那些学习方法的用处,但前提是,我已经有相当的词汇量了。&br&&br&这也是我写这个答案的原因,从一个英语较差的人的角度来说下如何学英语,想强调的就是,词汇量很重要,不可以忽略。很多同学是要应付考试,但我并没有说过太多的考试技巧,其实我有研究过一些考试技巧,但那些只能让你比自己的实力多考十几分,关键是能力本身,过多的关注技巧会让人忽视了学习的重点,把做试卷仅仅当成训练题感的途径。&br&&br&高考的时候,题目稍难,做到阅读理解发现时间不够,而且文章看不懂,很难形容当时的心情,我算了一下时间,不可能做完阅读理解了,后边还有作文,我就完全放弃阅读文章,只看题目,根据逻辑关系猜答案。结果正确率是80%,英语成绩比英语专业的要求还高3分。&br&&br&厉害吗?很厉害,但厉害的不是英语,是心理素质,是猜出题老师心思的能力。这种技巧对英语学习没有任何好处,考试技巧强,掩盖了英语基础差的事实,导致我花更多时间在研究方法和捷径上。&br&&br&有时候,一个人的长处,可能会掩盖自己的短板,从而形成更大的弱点。如果你有和我类似的经历,这篇文章就是写给你的。&br&&br&&a data-hash=&4c9a877ad46a00b0a2b565& href=&//www.zhihu.com/people/4c9a877ad46a00b0a2b565& class=&member_mention& data-tip=&p$b$4c9a877ad46a00b0a2b565& data-hovercard=&p$b$4c9a877ad46a00b0a2b565&&@王豪豪&/a& ,百词斩我也有试过,有段时间是和扇贝一起用的,用扇贝背,用百词斩复习。个人来说,初始记忆的时候,我倾向于简单的音,词,义的对应。百词斩的图片或者是四个释义选项,会让我对新词的第一印象乱掉,所以,我只用它复习。&br&&br&&a data-hash=&a5b591e494b462bc2fef886& href=&//www.zhihu.com/people/a5b591e494b462bc2fef886& class=&member_mention& data-editable=&true& data-title=&@徐婧培& data-tip=&p$b$a5b591e494b462bc2fef886& data-hovercard=&p$b$a5b591e494b462bc2fef886&&@徐婧培&/a&,这是我刷过的书,看到最后就能看到那些还没开始背得书的进度都已经是90%以上了。&br&&br&&figure&&img src=&https://pic3.zhimg.com/8aef0c42ce4b5bc7f29a_b.jpg& data-rawwidth=&800& data-rawheight=&1070& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic3.zhimg.com/8aef0c42ce4b5bc7f29a_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/68de57aaec78bc8949ae69_b.jpg& data-rawwidth=&837& data-rawheight=&1073& class=&origin_image zh-lightbox-thumb& width=&837& data-original=&https://pic2.zhimg.com/68de57aaec78bc8949ae69_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/d605b9a3b53554bac766bde5e43f7661_b.jpg& data-rawwidth=&806& data-rawheight=&989& class=&origin_image zh-lightbox-thumb& width=&806& data-original=&https://pic2.zhimg.com/d605b9a3b53554bac766bde5e43f7661_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/3a79dcffb3fa02f788ba7b03_b.jpg& data-rawwidth=&822& data-rawheight=&1080& class=&origin_image zh-lightbox-thumb& width=&822& data-original=&https://pic4.zhimg.com/3a79dcffb3fa02f788ba7b03_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/10bcdfb80f903_b.jpg& data-rawwidth=&814& data-rawheight=&1073& class=&origin_image zh-lightbox-thumb& width=&814& data-original=&https://pic4.zhimg.com/10bcdfb80f903_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/b8a72cc35bc_b.jpg& data-rawwidth=&807& data-rawheight=&1068& class=&origin_image zh-lightbox-thumb& width=&807& data-original=&https://pic4.zhimg.com/b8a72cc35bc_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/fa294f8e23c8ae1a06d821a9f28cfc14_b.jpg& data-rawwidth=&806& data-rawheight=&1072& class=&origin_image zh-lightbox-thumb& width=&806& data-original=&https://pic1.zhimg.com/fa294f8e23c8ae1a06d821a9f28cfc14_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/5b2a412a60e811a41629c_b.jpg& data-rawwidth=&826& data-rawheight=&1073& class=&origin_image zh-lightbox-thumb& width=&826& data-original=&https://pic1.zhimg.com/5b2a412a60e811a41629c_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/d4defe49736c75cfb4de0_b.jpg& data-rawwidth=&765& data-rawheight=&1071& class=&origin_image zh-lightbox-thumb& width=&765& data-original=&https://pic4.zhimg.com/d4defe49736c75cfb4de0_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/1b3fe533eea6b0dab5ef928280fabbb3_b.jpg& data-rawwidth=&851& data-rawheight=&1066& class=&origin_image zh-lightbox-thumb& width=&851& data-original=&https://pic4.zhimg.com/1b3fe533eea6b0dab5ef928280fabbb3_r.jpg&&&/figure&&br&&br&我也是太闲了。
我这个应当够晚,晚了十几年。 对于一个把学习方法看的比学习更重要的人来说,英语是我学的最失败的学科。虽然考试成绩还可以,但直到大学毕业,也没找到一个合适的方法。在国外找工作的时候,本来担心的是口语,可是话唠到哪里都是话唠,英语说起来也没什…
#更新了入门级耳塞:PR200MK2&br&&br&性价比这种东西,理论上讲价位越低越突出,这就和手机一样——1000以内几乎每100的价位都是一个惨烈的战场,而4000以上的旗舰们,差500差1000,有差吗?没有。所以在我这能被认为性价比突出到可以挑出来说事的耳机,基本不会超过1000,正好是非耳机发烧玩家可以接受的上限。&br&&br&#百元内超廉价级&br&&br&1)Vsonic VSK3:耳塞,39&figure&&img src=&https://pic2.zhimg.com/v2-2f9e0d021373becd0a22bd294e8646d1_b.jpg& data-rawwidth=&640& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/v2-2f9e0d021373becd0a22bd294e8646d1_r.jpg&&&/figure&可以说,50块钱能在一般渠道买到的耳塞,综合比VSK3更优秀的不存在。一般的三流耳机,比如小米活塞耳机,或多或少都有音染或调音缺陷,而VSK3除了单元声学性能较弱、听感素质一般这种低价带来的硬件限制以外,调音水准远超同价位其他耳塞,就听感而言和其他大几百的耳塞大差不差,素质能和earpods一较高下。&br&之所以把VSK3拿出来说事,主要是因为这条塞子的调音竟有不少可取之处——低频密度不低,但完全不轰头,也不发闷发暗,反而整体听感明亮清爽;其中人声调教尤其出色,听感顺滑没有颗粒感,定位不远不近距离适中。这种调音尤其适合各类流行歌,vsonic对目标用户的口味把控和调音审美比很多大厂商的低端贴牌耳塞不知高到哪里去了。&br&(我给VSK3装了Ostry OS100调音硅胶套,天猫15块,对耳塞素质的扬长避短有相当的好处)&br&&br&2)天龙c700(复刻):耳塞,59&figure&&img src=&https://pic4.zhimg.com/v2-43ffb5c93f_b.jpg& data-rawwidth=&1535& data-rawheight=&2048& class=&origin_image zh-lightbox-thumb& width=&1535& data-original=&https://pic4.zhimg.com/v2-43ffb5c93f_r.jpg&&&/figure&如果你去搜一搜天龙c700的商业测评,会发现所有文章对其的统一口径都是“1000价位性价比颇高”,而现在这条早就停产的千元级耳塞,淘宝只要59块。据卖家透露,这是天龙某个小领导离职后自己开的生产线,对c700这一经典型号进行复刻,除去研发成本和包装成本后,单论生产和物料成本,外加一个质地相当硬的收纳包、一条带线控的水准也和earpods差不多的平头塞,卖59都还有得赚。&br&&figure&&img src=&https://pic2.zhimg.com/v2-aee2c66a9b3f4d9fd845af6aa6f2e20d_b.jpg& data-rawwidth=&1080& data-rawheight=&1614& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic2.zhimg.com/v2-aee2c66a9b3f4d9fd845af6aa6f2e20d_r.jpg&&&/figure&&br&由于原版c700压根没地找,所以复刻版对原版的功力还原有几成无从得知,但并不妨碍我对其直接评价:直接比肩千元级还差了一口气,但和500元级的对手比个长短还是底气十足——对于一条只卖59的耳塞来说,这个成绩比看网络爽文还刺激。 基于店家推荐的惰性海绵耳塞套,c700的听感大概是:低频和高频量感都十分充沛,相比之下人声略微显得凹,所以c700乐感比较足,听感比较刺激,可以胜任各种重金属摇滚、躁音电子乐,当然抒情音乐听感也不差。&br&&br&3)AKG K81DJ:压耳式头戴,99&figure&&img src=&https://pic4.zhimg.com/v2-be2fc4cd7951acad214cb_b.jpg& data-rawwidth=&1200& data-rawheight=&1200& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic4.zhimg.com/v2-be2fc4cd7951acad214cb_r.jpg&&&/figure&AKG低价便携式耳机坑爹货不少,但是监听耳机良心一抓一大把,其中K81DJ就是最良心的那一个,目前天猫有卖99,偶尔打折七八十。作为DJ专用监听耳机,首先K81机身材质尤其坚韧,各种耐操,随意弯折折腾;其次额定输入功率奇高,足足有2500mW,可以说常见前端设备都别想搞坏它(常见监听耳机额定输入功率多为200mW左右,手机输出功率仅40mW左右,即使是几千元的耳放基本也就1500mW上下)。当然耳机最重要的是声音,K81除了解析比较一般、声场比较窄这种低价硬件限制,调音水准强到爆炸(但如果不夹耳朵的话就更好了):作为监听,K81的调音中正自然,AKG标志性的自然人声听感,高频该有的都有,如果不夹耳朵的话就更好了;而作为DJ监听,K81的低频相当澎湃,响应十足,拳拳到肉,力度强速度快毫不拖泥带水,同时也不掩盖人声和高频,这是我见过最健康的重低音调教——听摇滚电音能感受到震撼,但听抒情钢琴低频也能保持低调不找存在,如果不夹耳朵的话就更好了。&br&&br&#500元入门级&br&&br&4)Ecci PR200MK2:耳塞,215&br&&figure&&img src=&https://pic1.zhimg.com/v2-ddbf1cc1fb352a_b.jpg& data-rawwidth=&1000& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic1.zhimg.com/v2-ddbf1cc1fb352a_r.jpg&&&/figure&这条外号马克兔的耳塞,可能是200元档推荐里,出现频率最大、老烧好评率最高、新手入门最值得买的耳塞之首——没错,在我眼里无出其右,更何况搞活动降价到不足百元的情况又不是没有过。PR200MK2完全可以以压倒性的优势把铁三角im50、舒尔se215、AKG N20、铁三角cks1100这些价位更高的大品牌竞品全都比下去。&br&历经多个版本的迭代后,马克兔的调音完成度极高,三频均衡且无缝衔接,声音圆润且久听不累,听过马克兔你就会明白,“均衡没音染的耳机不好听”这句话纯属放屁,因为这条塞子的乐感比绝大多数调音偏科的耳塞强百倍。高解析、大声场、大动态使得马克兔可以胜任包括流行人声和器乐交响在内的绝大多数音乐类型,中正的调音也能给刚入门的新手树立一个正确的耳机审美,我不认为用“完美”这个词形容PR200MK2有何不妥。&br&&br&5)创新Live!:包耳式头戴,289&figure&&img src=&https://pic3.zhimg.com/v2-b44f000da89d_b.jpg& data-rawwidth=&970& data-rawheight=&1509& class=&origin_image zh-lightbox-thumb& width=&970& data-original=&https://pic3.zhimg.com/v2-b44f000da89d_r.jpg&&&/figure&说起千元级的便携式头戴式耳机你会想到什么?索尼MDR-1A?铁三角MSR7?现在好消息是,你只需要花不到300块,就能买到差不多素质的声音。创新live一代是有些年头的老东西了,但好在岁月只拉低了它的价格,并没有拉低它的声音,live一代的硬素质完全能和当下千元级知名便携头戴耳机比个长短,尤其是高频部分——如果你钟爱高频器乐,那么live一代的性价比绝对强到爆炸。当然live一代也并非没有缺点,作为一流单元二流调音的典范,它空有超强的单元响应能力,而调音却只顾着高频的表现,这直接导致了中低频密度非常低,人声和重低音表现都差强人意,腔体设计也直接导致了耳机声场较小。不过没关系,考虑到不足300还经常打折的售价,以及直逼千元级对手的单元素质,如果你爱好电音和高频器乐,那么live一代就能在你手中扬长避短,发挥出超群的性价比。&br&&br&6)AKG K67:压耳式头戴,399&figure&&img src=&https://pic1.zhimg.com/v2-2bd782e4a5cb_b.jpg& data-rawwidth=&1500& data-rawheight=&1500& class=&origin_image zh-lightbox-thumb& width=&1500& data-original=&https://pic1.zhimg.com/v2-2bd782e4a5cb_r.jpg&&&/figure&AKG的DJ监听耳机是整个耳机界的良心,然而这款由tiesto冠名的经典DJ耳机却已经停产了(目前国内仍有库存)。在一千以内的小尺寸头戴耳机里,K67没有对手,因为这个怪物在超小的腔体里居然实现了惊人的解析力和铺天盖地的重低音,而且隔音能力极佳。&br&不要相信广告词,1000以内你找不到能在重低音方面挑战K67的压耳式头戴耳机,那种恐怖的量感完全不是beats这种凡夫俗子可以比拟的——或者我们退一步说,你找到了,但我们仍然可以比较一下高频,怪物之所以是怪物,正是因为K67高低频水准同样强悍,这种逆天的实力一般的耳机制造商可做不来。高低频都很强意味着人声会显得凹陷,不过在AKG标志性人声调教下,K67的人声质感顺滑自然,与高低频相得益彰,颇为适合摇滚和电音。&br&&br&7)飞利浦SHP9500:包耳式头戴,399&figure&&img src=&https://pic4.zhimg.com/v2-61a77ed50f5e01cff20e07_b.jpg& data-rawwidth=&1250& data-rawheight=&1669& class=&origin_image zh-lightbox-thumb& width=&1250& data-original=&https://pic4.zhimg.com/v2-61a77ed50f5e01cff20e07_r.jpg&&&/figure&可能飞利浦也没想到SHP9500能这么火,火到要停产的消息传了一年多还没停,各类市场上我们还是可以随便买。SHP9500最强的地方在于它把500元内入门级耳机能用上最好的都用上了——它是开放式耳机,这种性能最好的腔体设计保证了宽阔的声场和自然的听感;它有50mm大尺寸单元,这个单元能保持全频段的高响应,而且频响曲线平直;它包耳,而且佩戴舒适,长时间佩戴完全不夹头;它高敏低阻,无论多糟的设备都能把它推得足够响,而且还有模有样;它的调音追求中正,忠于原声,不对声音做任何修饰,只是忠实地还原艺术家最原始的感情。如果说非要鸡蛋里挑骨头,SHP9500唯一的黑点只有整体声音密度较低,没有很“厚实”的听感,但这在399的价格和完美的配置下不值一提。还有谁能和这种监听欣赏两不误的万能耳机比性价比?&br&&br&8)舒尔SRH1840(复刻):包耳式头戴,700左右&figure&&img src=&https://pic4.zhimg.com/v2-43d07a1cb_b.jpg& data-rawwidth=&1500& data-rawheight=&1300& class=&origin_image zh-lightbox-thumb& width=&1500& data-original=&https://pic4.zhimg.com/v2-43d07a1cb_r.jpg&&&/figure&可能还真有,比如说国内复刻的舒尔SRH1840。这条舒尔旗舰京东售价4000往上,淘宝渠道国行也要两千多,而复刻版(山寨)只要不到七百块。由于官方的SRH1840还在产,所以关于这条耳机如何得以复刻的原因应该属于行业秘密,我们一般人很难得知了。不过可以确定的是,复刻版SRH1840采用的是原厂单元,外壳则由国内高度仿制,有拆机对比认为原装和复刻结构差异极小,理论上声音也差不多。&br&由于我不敢上这等黑车,所以我忽悠朋友买了一条,根据他的描述(他没听过原装),复刻版SRH1840的声音强得一批。&br&&figure&&img src=&https://pic1.zhimg.com/v2-a9fc46b3528_b.jpg& data-rawwidth=&1080& data-rawheight=&1519& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-a9fc46b3528_r.jpg&&&/figure&&br&如果复刻版真能达到和原装相近的水平,那么这很有可能是有史以来性价比最高的耳机了——即使由于原厂腔体有一些难以还原的黑科技,凭借原厂单元还原个百分之六七十也是性价比超群,更何况这条耳机是支持改平衡的。
#更新了入门级耳塞:PR200MK2 性价比这种东西,理论上讲价位越低越突出,这就和手机一样——1000以内几乎每100的价位都是一个惨烈的战场,而4000以上的旗舰们,差500差1000,有差吗?没有。所以在我这能被认为性价比突出到可以挑出来说事的耳机,基本不会超…
&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://pic4.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://pic4.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://pic4.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://pic4.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://pic7.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://pic7.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://pic2.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://pic2.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-480fb8a4dc}

我要回帖

更多关于 哥伦布发现新大陆 的文章

更多推荐

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

点击添加站长微信