首家大数据培训挂牌机构 股票代码:837906 | EN CN
阿里巴巴菜鸟级数据产品经理半年回顾总结篇
干货教程:如何绘制业务流程图(二)
干货教程:如何绘制业务流程图(一)
技术贴:如何在数据库中秘密地查询隐私数据
攻略教程:信息图(infographic)是怎么做出来的?
分析师一定要看!用数据讲故事的五个步骤
技术篇:怎样玩转千万级别的数据?
北漂书生:大数据时代SEO数据如何搜集和分析
干货,从十大问题重新认识并读懂互联网
相似图片搜索、算法、识别的原理解析(下)
相似图片搜索、算法、识别的原理解析(上)
制作信息图时请遵循这10条原则
提高表格可读性的一些技巧,适用于Excel、PPT等数据报表
实用教程:如何让Excel图表更具“商务气质”?
一张数据信息图是这样制作完成的
菜鸟读财报,如何从上市公司财报中挖情报?
北大数据分析老鸟写给学弟们一封信
如何一步一步制作出高品质数据信息图?
总结:海量数据分析处理的十个方法
【实战经验】数据分析师如何了解老板真正想法?
零售业数据分析那些事儿
数据分析时l常用电子表格公式【大全】
用数据来告诉你 上市公司财报的秘密
这12个数据能 帮你搞定淘宝店铺
首席工程师揭秘:LinkedIn大数据后台是如何运作的?(四)
首席工程师揭秘:LinkedIn大数据后台是如何运作的?(三)
首席工程师揭秘:LinkedIn大数据后台是如何运作的?(二)
首席工程师揭秘:LinkedIn大数据后台是如何运作的?(一)
淘宝网店从激活到挽留,4步走玩转数据营销
文案怎样写才有意思、不空洞、打动人?
入门级扫盲贴:数据分析的步骤有哪些?
关系即数据,论社交媒体的关系转换
数据的力量,苹果教你用数据鄙视竞争对手
谁说文科生不能做数据分析?数据分析入行→技能提升→优势
产品运营数据分析——SPSS数据分组案例
如何追踪iPhone和iPad等移动设备的用户行为数据?
阿里巴巴中国站:用户满意度指标权重计算方法
广告中的AdNetwork、AdExchange、DSP、SSP、RTB和DMP是什么?
信息图制作教程:关于数值的表现
为什么大数据会如此轰动?(值得深度的文章)
多图技术贴:深入浅出解析大数据平台架构
面板数据分析中标准误的估计修正——根据Peterson (2009)的归纳
财务官、投资人、CIO看过来:给企业数据定价
推荐系统中常用算法 以及优点缺点对比
探索Weotta搜索引擎背后的大数据技术
如何识别虚假数据?
为什么我们像驯化小狗那样驯化算法
程序员必须知道的10大基础实用算法及其讲解
电子商务:最影响转化率的九大要素
如何迅速成为一名数据分析师?
想从事大数据、海量数据处理相关的工作,如何自学打基础?
如何用亚马逊弹性MapReduce分析大数据?
译文:机器学习算法基础知识
给hadoop新手的一封信:Hadoop入门自学及对就业的帮助
从入门到精通,我是这样学习算法的
小商家,从老客户身上获取的数据才更有意义
13页PPT讲述:大数据下网站数据分析应用
40页PPT详解:京东大数据基础构架与创新应用
67页PPT解密搜索引擎背后的大技术:知识图谱,大数据语义链接的基石
营销洞察力——10个营销度量指标
技术篇:前端数据之美如何展示?
董飞:美国大数据工程师面试攻略【PPT】
easel:如何制作好的信息图——来自专家的顶级技巧
大数据实操:以3D打印机为例,如何知道卖点有没有市场需求?
大数据建模 需要了解的九大形式
用户画像数据建模方法
从规划开始,公司or企业如何入手和实施大数据?
干货:商品信息数据分析和展现系统的设计与开发
高手教你用Excel制作百度迁徙数据地图
50篇干货:淘宝店/电子商务如何玩转数据分析?
精华索引:大数据实际应用案例50篇
验证最小化可行产品 (MVP) 的 15 种方法
干货:数据分析师的完整知识结构
大数据技术Hadoop面试题,看看你能答对多少?答案在后面
用SPSS做数据分析?先弄懂SPSS的基础知识吧
怎样做出优秀的扁平化设计风格PPT? 扁平化PPT设计手册#3
解答│做大数据过程中遇到的13个问题
40页PPT│社交网络发展的新动力:大数据与众包
以Amazon、豆瓣网为例,探索推荐引擎内部的秘密#1
怎样做出优秀的扁平化设计风格PPT?#2
怎样做出优秀的扁平化设计风格PPT?#1
36页PPT│大数据分析关键技术在腾讯的应用服务创新
如何丰满地做SWOT分析?
【35页PPT】TalkingData研发副总阎志涛:移动互联网大数据处理系统架构
27页PPT|以珍爱网为例,如何构建有业务价值的数据分析系统?
国外数据新闻资源分享
21页PPT重磅发布:Mariana——腾讯深度学习平台的进展与应用
从0到100——知乎架构变迁史
PPT解读:百度大数据质量保障方案探索
45页PPT|大数据环境下实现一个O2O通用推荐引擎的实践
从数据看豆瓣兴衰
深度学习系列:解密最接近人脑的智能学习机器——深度学习及并行化实现(四)
重磅推荐:129页PPT讲述移动时代创业黄金法则 via:腾讯企鹅智酷
重磅推荐:大数据工程师飞林沙的年终总结&算法数据的思考
OpenKN——网络大数据时代的知识计算引擎
大数据下城市计算的典型应用
技术贴:大数据告诉你,如何给微信公众号文章取标题?
你的QQ暴露了你的心——QQ大数据及其应用介绍PPT
如何从企业报表看企业的生存能力?
实用的大数据技巧合集
技术帝揭秘:充电宝是如何盗取你的个人隐私的?
重磅!50页PPT揭秘腾讯大数据平台与推荐应用架构
原创教程:饼图之复合饼图与双层饼图(1)
PPT:大数据时代的设计特点——不了解这个你做不了今天的设计
教程贴:如何用方程式写春联?
原创教程:如何用Excel制作简易动态对比图
深度译文:机器学习那些事
教程帖:数学之美——手把手教你用Excel画心(动态图)
董老师走进斯坦福,聊聊硅谷创业公司和大数据的事儿(附课件PPT下载)
【限时】年度钜献,108个大数据文档PDF开放下载
董飞专栏:大数据入门——大数据相关技术、Hadoop生态、LinkedIn内部实战
亿级用户下的新浪微博平台架构
一张图了解磁盘里的数据结构
浅析数据化设计思维在阿里系产品的应用
美团推荐算法实践
一个P2P创业公司有哪些部门,都是做什么的?
一个P2P平台的详细运营框架是怎样的?
机器学习中的算法——决策树模型组合之随机森林与GBDT
神经网络简史
58页PPT看懂互联网趋势,大数据/物联网/云计算/4G都有了
广点通背后的大数据技术秘密——大规模主题模型建模及其在腾讯业务中的应用(附PPT)
微信红包之CBA实践PPT——移动互联网海量访问系统设计
一文读懂机器学习,大数据/自然语言处理/算法全有了……
搜狐新闻客户端的背后大数据技术原理——推荐系统(PPT)
原创教程:用Excel做动态双层饼图
半小时读懂PMP私有广告交易市场
怎样分析样本调研数据(译)
PPT:支付宝背后的大数据技术——DataLab、Higo的实践及应用
大数据技术人员的工具包——开源大数据处理工具list(限时下载)
计算机视觉:随机森林算法在人体识别中的应用
24页PPT:机器学习——支持向量机SVM简介(附下载)
互联网高手教你如何搜集你想要的信息
深度:对地观测大数据处理、挑战与思考
原创教程:用Excel做饼图之复合饼图与双层饼图(2)
移动大数据时代: 无线网络的挑战与机遇(附pdf下载)
Excel使用技巧——25招必学秘技
【年度热门】加上这些 Excel 技能点,秒杀众人(多图)
原创教程:用Excel做纵向折线图
知识图谱——机器大脑中的知识库
何明科专栏:用数据化的方式解析投资条款
DT时代,如何用大数据分析创造商业价值(23页PPT)
MIT牛人梳理脉络详解宏伟现代数据体系
你的老婆是怎么算出来的?揭秘佳缘用户推荐系统
飞林沙:商品推荐算法&推荐解释
PPT:如何成为真正的数据架构师?(附下载)
开源大数据查询分析引擎现状
董飞专栏:打造数据产品必知秘籍
译文:如何做强大又漂亮的信息图
如何使用Amazon Machine Learning构建机器学习预测模型
如何运用数据协助货架管理(内附26张PPT)
SVM算法
主流大数据系统在后台的层次角色及数据流向
PPT:阿里全息大数据构建与应用
人脸识别技术大总结——Face Detection & Alignment
教程:用Excel制作成对条形图
易观智库:大数据下的用户分析及用户画像(18页PPT附下载)
技术向:如何设计企业级大数据分析平台?
电商数据分析基础指标体系
IBM SPSS Modeler 决策树之银行行销预测应用分析
拓扑数据分析与机器学习的相互促进
基于 R 语言和 SPSS 的决策树算法介绍及应用
用php做爬虫 百万级别知乎用户数据爬取与分析
另类新浪微博基本数据采集方法
以10万+阅读的文章为例 教你做微信公众号的运营数据分析
破解数据三大难题:变现?交易?隐私?
微店的大数据平台建设实践与探讨
阿里巴巴PPT:大数据基础建议及产品应用之道
基于社会媒体的预测技术
人工智能简史
技巧:演讲中怎样用数据说话
马云和小贝选谁做老公?写给非数据人的数据世界入门指南
掘金大数据产业链:上游资源+中游技术+下游应用
原创教程:手把手教你用Excel做多层折线图
销售分析:如何从数据指标发现背后的故事
如何一步步从数据产品菜鸟走到骨干数据产品
也来谈谈微博的用户画像
行走在网格之间:微博用户关系模型
如何拍出和明星一样美爆的自拍照?斯坦福大学用卷积神经网络建模告诉你
运营商如何玩转大数据? 浙江移动云计算和大数据实践(PPT附下载)
大数据分析的集中化之路 建设银行大数据应用实践PPT
腾讯防刷负责人:基于用户画像大数据的电商防刷架构
创业提案的逻辑
友盟分享 | 移动大数据平台架构思想以及实践经验
寻路推荐 豆瓣推荐系统实践之路
“小数据”的统计学
重磅!8大策略让你对抗机器学习数据集里的不均衡数据
小团队撬动大数据——当当推荐团队的机器学习实践
微博推荐架构的演进
科普文 手把手教你微信公众号数据分析
信息图制作的六个注意点
【权利的游戏】剧透新玩法:情理之中?意料之外
推荐系统(Recommender System)的技术基础
核心算法 谷歌如何从网络的大海里捞到针
Quora数据科学家和机器学习工程师是如何合作的
阿里巴巴PPT:大数据下的数据安全
数据建模那点事儿
全民拥抱Docker云–Lhotse系统经验分享
实时股票分析系统的架构与算法
架构师必看 京东咚咚架构演进
什么叫对数据敏感?怎样做数据分析?
推荐系统基础知识储备
刘德寰:数据科学的整合与细分 数据科学的七个危险趋势(视频)
实际工作中,如何做简单的数据分析?
分布式前置机器学习在威胁情报中的应用(附PPT下载)
数据科学 怎样进行大数据的入门级学习?
扛住100亿次请求 如何做一个“有把握”的春晚红包系统?(PPT下载)
从 LinkedIn 的数据处理机制学习数据架构
大数据会如何改变管理咨询公司(I)
优秀大数据GitHub项目一览
生硬的数字和数据新闻:这么近,那么远
经典大数据架构案例:酷狗音乐的大数据平台重构(长文)
揭秘中兴大数据在银行领域的系统部署
基于大数据的用户画像构建(理论篇)
【R】支持向量机模型实现
数据图处处有陷阱?五个例子教你辨真伪
如何用R绘制地图
你确定你真的懂用户画像?
数据模型需要多少训练数据?
【接地气】01 数据报表的颜色怎么配
游戏价值和数据分析新思路
【R】异常值检测
快的打车架构实践
豆瓣还是朋友圈:大数据、新方法和日常问
PPT数据图表,怎么做才好看?
大道至简的数据体系构建方法论
数据的误区及自身业务
新浪微博的用户画像是怎样构建的?
面试干货!21个必知数据科学面试题和答案part1(1-11)
易观智库:中国大数据产业生态图谱2016(附下载)
Airbnb的数据基础架构
50PB海量数据排序,谷歌是这么做的
大数据时代工程师如何应对–今日头条走进硅谷技术讲座
D3.js教学记(下)
D3.js教学记(上)
飞林沙:企业级服务公司如何赚钱?只有平台级产品才有大数据的理论
一个母婴电子商务网站的大数据平台及机器学习实践
7大板块 组成数据分析师的完整知识结构
干货:SaaS领域如何分析收入增长?
学术 | 词嵌入的类比特性有实用意义吗?
6个用好大数据的秘诀
一个数据库外行眼中的微信优化 (附专家补充)
大数据调研,如何实现快全准?
数据大师Olivier Grisel给志向高远的数据科学家的指引
数据堂肖永红:数据交易的是使用权或数据的增值,而不是数据本身(PPT附下载)
淘宝商品详情平台化思考与实践
刘译璟:百分点大数据理念和实践(图文+PPT下载)
如何快速搞定一份看起来还不错的演示文档?
【BABY夜谈大数据】决策树
数据驱动设计:数据处理流程、分析方法和实战案例
美图数据总监:Facebook的法宝,我们在产品中怎么用?
树的内核:量化树结构化数据之间的相似性
拿到用户数据之后,LinkedIn怎么赚钱?
GrowingIO张溪梦:增长黑客的核心 企业应该重视产品留存率(附PPT下载)
[译]Airbnb是如何使用数据理解用户旅行体验的?
微博推荐数据服务代理: hyper_proxy的设计和实现
星图数据谷熠:消费领域DaaS 大数据重构未来商业游戏规则(附PPT下载)
鲍忠铁:TalkingData大数据技术与应用实践(PPT下载)
【干货教材】数据分析VS业务分析需求
九枝兰专访:数字营销的核心—企业如何使用数据管理平台(DMP)进行精准营销
我们的应用系统是如何支撑千万级别用户的
R应用空间数据科学
Excel进行高级数据分析(上)
Excel进行高级数据分析(下)
国内各大互联网公司2.0版技术站点收集
网站数据分析思路导图
大数据分析报表设计开发要素
大数据需要的12个工具 推荐
YARN/MRv2 Resource Manager深入剖析—NM管理
YARN/MRv2 Resource Manager深入剖析—RMApp状态机分析
Hadoop 1.0与Hadoop 2.0资源管理方案对比
Hadoop 2.0中单点故障解决方案总结
Hadoop 2.0 (YARN)中的安全机制概述
Hadoop 新特性、改进、优化和Bug分析系列1:YARN-378
Hadoop 新特性、改进、优化和Bug分析系列2:YARN-45
Hadoop 新特性、改进、优化和Bug分析系列3:YARN-392
Hadoop版本选择探讨
探究提高Hadoop稳定性与性能的方法
《Effective C++》读书笔记(第一部分)
Hadoop分布式环境下的数据抽样
Hadoop计算能力调度器算法解析
如何编写Hadoop调度器
数据结构之红黑树
Hadoop pipes设计原理
《C++ Primer plus》学习笔记之”类”
《C++ Primer plus》学习笔记之”类继承”
《C++ Primer plus》学习笔记之”C++中的代码重用”
《C++ Primer plus》学习笔记之”异常”
《C++ Primer plus》学习笔记之”RTTI”
Hadoop pipes编程
Hadoop Streaming高级编程
《C++ Primer plus》学习笔记之”标准模板库”
《C++ Primer plus》学习笔记之”输入输出库”
Linux Shell 命令总结
算法之图搜索算法(一)
awk使用总结
素数判定算法
《C++ Primer plus》学习笔记之“函数探幽”
使用Thrift RPC编写程序
如何在Hadoop上编写MapReduce程序
怎样从10亿查询词找出出现频率最高的10个

如何拍出和明星一样美爆的自拍照?斯坦福大学用卷积神经网络建模告诉你

于2017-04-01由小牛君创建

分享到:


斯坦福大学Andrej Karpathy对自拍建模,用卷积神经网络研究自拍要领,发现了自拍的关键:1. 首先你得是女的,女性得分高。2. 脸要占图三分之一。3. 砍掉额头。4. 展示长发。5. 脸要过饱和。6. 要加滤镜。7. 要加边框。

原文作者:Mahdi Kalayeh ,本文由大数据培训,就上小牛学堂翻译组Ms. X翻译,并经由大数据培训,就上小牛学堂编辑发布,拒绝任何不表明译者、来源大数据培训,就上小牛学堂和本文连接的转载。

大数据培训,就上小牛学堂

卷积神经网络(convolutional neural networks)非常强大:能识别事物、地点和个人照片中的人物、标志、人、自驾车、农作物、森林和航空影像里的交通、医学图像的各种异常和其他各种有用的东西。再过一段时间,这些强大的图像识别模型也可以用来消遣和娱乐了。在这个有趣的实验中,我们要做的事情有:我们将采用最先进的参数达到140亿的卷积神经网络,从网上搜集2百万自拍照作为训练集,来训练它给自拍照进行好坏分类。为什么做这个实验呢,因为它简单,因为我们可以。而且在这个过程中,我们也会学习如何拍摄更好的自拍照。

“放心,我会去工作的,但是首先让我发张自拍照吧。”

卷积神经网络(convolutional neural networks)

在开始之前,让我们先简单介绍一下卷积神经网络(简称ConvNets)以防有些读者会困惑。可以说,假如ConvNets是强大的锤子,那么计算机视觉问题就是钉子。如果你在2015年看到或者读到任何有关计算机识别图片或视频的信息,肯定都会涉及到ConvNets。一般的例子有:

大数据培训,就上小牛学堂

(用到ConvNets的例子很多,上图给出的例子自左顺时针向右分别是:在街景图片中给门牌号码分类、识别医学影像中的异常、识别汉字、交通标志和面孔。)

简单介绍一下历史。ConvNets有一个很有趣的背景故事。ConvNets是由Yann Lecun等人在1980年代首先发现(基于Fukushima等人早期的一些工作)。在1993年,LeNet 1(ConvNets当时的名字)就能识别数字(链接是这个有趣的例子)。然而,这些模型大多被计算机视觉的人忽略了,因为人们认为他们不会扩展到“真实世界”的图像。直到2012年,当我们终于有足够的计算能力(GPU,感谢NVIDIA)和足够的数据(感谢ImageNet),Alex Krizhevsky、Ilya Sutskever和Geoff Hinton第一次验证验证了这些模型,并赢得了2012年ImageNet挑战(相当于:计算机视觉的世界杯),粉碎他们的竞争(16.4%的误差,对第二名26.2%的误差)。

我碰巧第一时间见证了这一重要时刻,因为在过去几年中ImageNet挑战是由Fei-Fei Li实验室(我所在的实验室)组织的,所以我记得当我同事在提交日志中发现ConvNet时难以置信的喘气(非常厉害)。我记得当时我们在房间里来回踱步试图去消化刚才发生的事情。在接来的几个月里,ConvNets从被怀疑笼罩的模糊模型变成计算机视觉的新星,成为几乎每一篇计算机视觉论文的核心模块。ImageNet挑战反映了这一趋势——2012年ImageNet挑战只有一个ConvNet条目,此后的2013年和2014年,几乎所有条目都使用ConvNets。同样有趣的是,每年赢得的团队会立即组建成一个公司。

在接下来的几年,我们完善、简化扩大了2012年最初始“AlexNet”架构(对的,我们给他们命的名),2013年有了“ZFNet”,2014年是“GoogLeNet”(理解吗?因为它像LeNet却来自Google?哈哈),以及“VGGNet”。总之,我们现在知道的ConvNets有了如下特点:

简单:从原始图像开始,一个操作一遍又一遍地重复几十次;

快速,在几十个毫秒就能处理一幅图像;

运行良好(如:这个帖子里演示了比GoogLeNet好的我试图分类图像的过程);

同时,ConvNets和我们大脑的视觉皮层一定程度类似(可以看这篇论文)。

幕后

ConvNets到底如何工作的呢?当你想探究背后的原理,你会发现一个简单的计算主题一遍又一遍的重复。下面的GIF图演示了一个小ConvNet处理的整个计算过程:

卷积神经网络

(推理过程的说明)

在左边,我们输入原始的图片。上图的左边代表我们输入的原始图像像素,我们用三维网格数字在表示。例如,一个256*256的图像表示为一个256*256*3的数组(最后的3代表红、绿、蓝)。然后我们进行卷积(convolution),这是一个奇特的方式来说我们用小过滤器在图像空间展开(slide over)。不同的过滤器对图像中不同的特征有反应:比如有些过滤器对水平边缘有强烈反应,有些可能会对有红色边缘的区域反应等等。假设我们有10个过滤器,这样我们就可以把原始图像(256,256,3)转化为一个(256,256,10)的“图像”,我们丢弃了原始图像的信息,只保留图像中对10个滤波器有反应的位置。有点像我们把三个颜色通道(红、绿、蓝)现在换成10个对过滤反应的通道(见上面右边gif图像)。

现在,我已经解释了图像激活后的第一列,那么接下来的其他所有列是什么呢?一旦产生新列,他们是完全相同的操作重复一遍又一遍。下一列将对应于另一组过滤器过滤前面产生的列,逐步检测越来越复杂的视觉模式,直到最后一组过滤器计算图像中整个视觉类的概率(如狗/蟾蜍)。显然,我略掉了一些内容,但这就是基本要点:就是从头到尾的卷积。

训练。我们已经明白一个ConvNet是由一个大量滤波器构成,但是我们怎么知道要什么样的过滤器呢?我们不知道——我们随机初始化过滤器,然后随着不断训练他们。例如,我们输入一张图片给一个有随机过滤器的ConvNet,它可能会说,54%确定那是一只狗。然后我们告诉它,实际上是蟾蜍,那么ConvNet会有一个数学过程来稍微改变过滤器,使它下次看到同一幅图像时更可能识别出是蟾蜍。然后我们用数以百万计的图像来重复这个过程上千万/上亿万次。自动的,ConvNet里的不同过滤器和计算路径将逐渐调整自己来感应图像里重要的东西,比如先眼睛,然后头部,然后整个身体等等。

大数据培训,就上小牛学堂

(借用Matth Zeiler卷积网络的可视化和理解作为例子来说明训练ConvNet的12个随机过滤器。这里的过滤器在处理的第三阶段,似乎在寻找蜂巢像模式,或车轮/躯干/文本等。再一次,我们不指定滤波器,它自己生成,我们能监督。)

另一个完全训练不错的可视化ConvNet,可参见Jason Yosinski等人的deepvis项目。它包括一个ConvNet在你电脑摄像头里实时运行的有趣演示,Jason的这个视频很好的说明了(译者注:需翻墙)。

总之,整个训练过程类给孩子展示很多事物的图片,他/她必须慢慢想出通过图像中哪些特征来区分这些东西。或如果你喜欢你的解释技术,那么ConvNet只是表达了一个以过滤器为参数的从图像像素到类概率的函数,然后我们运行随机梯度下降来最优化损失函数。或者如果你碰巧对AI/大脑/奇点概念着迷,那么可以理解这个函数为一个“深度神经网络”,过滤器是神经元,完整的ConvNet是一块自适应的、模拟视觉皮层组织。

训练ConvNet

关于ConvNet最棒的事情就是你可以用你喜欢的任何图片(和一些标签)来训练它,然后ConvNet会学会识别这些标签。在我们的实验中,我们用一些好的和坏的自拍照来训练一个ConvNet,然后它会自动学会通过照片里哪些地方来把这些自拍照分成两类。所以,让我们先抓取一些自拍照吧:

1.我写了一个快速脚本来收集标有#自拍的图片。最终得到约500万张图片(对于ConvNet,总是有越多越好)。

2.我用另一个ConvNet把这些图片缩小到约200万张,至少包含一张脸。

3.现在该决定哪些自拍照是好哪些是坏了。直观上,我们要计算有多少人看到了这张自拍,然后把喜欢这张自拍的人数作为观众规模的函数。我把所有的用户根据他们的关注数量分类。基于标签会吸引更多眼球的假设,对除了自拍标签外还有其他标签的照片给予小加分。然后对100组照片按照这个方法整理,并根据喜欢人数排序。我只计数了在线时间超过一个月的自拍照来保证每一张都有稳定的喜欢数量。我把排名前50名的自拍照定义为积极自拍照,后50名为消极自拍照。通过试图把可能看过自拍照人数进行标准化,我们最终基于二元分割把数据分成了两半。在这个过程中,我还过滤得到了有最多关注者、最少关注者和有很多标签的图片。

3.把这处理好的100万好自拍照和100万自拍照的数据集训练一个ConvNet。

你可能不认同我决定自拍照是好是坏的方法——例如,如果有人发布了一个很好的自拍,但是是在深夜,所以也许并不会有很多人看到它,因而它就不是那么受欢迎了?你是对的——它几乎肯定是错误的,但它只要对的次数更多,那这个ConvNet就能处理好。它不会感到困惑或沮丧,它只用所给的得出最好的。看看下面一些训练图像的例子,就能了解区分两类数据有多难。如果我给你这些图片中的任何一张,你能告诉为属于哪一类吗?

大数据培训,就上小牛学堂

(我们训练数据中好自拍和坏自拍的例子。这些数据作为学习材料输入给ConvNet)

训练细节。扔掉一些技术方面的细节,我用Caffe来训练ConvNet。我使用了ImageNet上已经训练好的一个VGGNet,然后用自拍数据集来微调。用一个NVIDIA K40的GPU整晚训练模型训,并禁用了dropout(译者注:dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来),因为没有它有更好的结果。我也尝试过一个用面孔数据集训练好 的VGGNet,,但是没有获得从ImageNet VGGNet pretrained与面孔,但比从一个ImageNet检查点开始获得的结果好 。最终的模型在我验证的数据分割中 获得60%的精度(50%是随机猜测)。

什么构成了一个好的#自拍?

好了,我们收集了200万自拍,基于它们获得的喜欢数(控制了关注者数量)决定自拍照是好是坏,然后把数据输入Caffe来训练一个ConvNet。这个ConvNet“看”这200万张自拍照中每一张数十次,然后微调它的过滤器以最好地实现好坏照片的区分。我们不能很容易地检查它到底发现了什么(1.4亿个参数混杂在一起定义了过滤器)。不过,我们可以用它从没看过的自拍图片来松散(loose),试图通过看它对图片的坏好区分来看出些端倪。

我从测试数据(这个ConvNet从没看过)中取了5万张自拍第可视化。作为第一个可视化,在下图中我展示了一个连续的可视化,自拍中最好的在最上面一行,最糟糕的在放在最下面一行,每一行之间是连续变化的:

大数据培训,就上小牛学堂

(ConvNet判断的自拍照,从好(最上面)到坏(最下面))

结果很有趣的。让我们看下ConvNet认为5万张自拍中最好的100张:

大数据培训,就上小牛学堂

(ConvNet认为5万张自拍中最好的100张)

如果你想看更多,这里是1000张(3.5MB)最好自拍的链接。你注意到ConvNet可能的一个区分模式了吗?我注意到了一些,如果你发现了其他的,我很乐意在评论中听到。拍一张好的自拍,需要:

❶女性。女性排名一直都高于男性。特别是在前100名没有一个男的。

❷脸应该占据图片的是是1/3左右。发现排名靠前的脸部位置和姿势保持一致。脸总是占据了图片约1/3,位置在顶部的中心并稍微倾斜。这也让我到:

❸切掉你的额头。会怎样?它看起来是一个受欢迎的策略,至少对女性。

❹展示你的长发。发现排名中出现频率多的有,长发超过肩膀的。

❺加重脸的饱和度。发现出现频率多的有,光线过度饱和,这常常使面部看起来更加统一和淡出。

❻相关的还有,加一个滤镜。黑白照片似乎表现很好,大多数排名靠前的图片都加了某种滤镜,淡化了图片,降低了对比度。

❼添加一个边框。你会发现这些照片中频繁出现一个水平/垂直的白色边框。

有趣的是,不是所有这些规格适合男性。我在前2000名图片中人工选出了男性的自拍照,如下:

大数据培训,就上小牛学堂

(前2000名自拍照中最好的几个男性自拍照)

在这种情况下,我们看到看不到任何没有额头的。相反,大多数自拍似乎用了一个广角的镜头,图片中可以看到整个头部和肩膀。看起来大多数自拍都有稍长的头发向上梳起的漂亮发型。不过,我们也能看到很多自拍都淡化了面部特征。

让我们也看下一些这个ConvNet认为不会得到很多喜欢的坏自拍。 这次我给出的图像格式小很多,并且没那么可识别,这是因为我的目的是让我们了解大概的模式,所以降低了自拍照的质量,不关注刚好拍了坏自拍的人。他们有:

大数据培训,就上小牛学堂

(根据卷积神经网络,5万张自拍里最坏的300张。)

即使在如此小的分辨率,一些模式也明显出现了。不要:

❶在光照不好自拍。ConvNet很一致的把偏暗的照片(这些照片也经常有很多噪点排名很低。

❷把脑袋构图太大。大概没有人想看到这种近距离视角。

❸集体照。和你的朋友一起自拍很有趣,但效果似乎不是很好。

❹保持简单,你一个占用整个空间。但不要空间太大。

❺最后一点,注意造就一个好自拍或坏自拍还与照片的风格有关,而不是最原始人的魅力。

❻同样,可以松一口气,最好的自拍和那个露最多皮肤的人没关系。我曾经担心了一会儿,我的有1.4亿惊人参数的ConvNet最后是一个简单的皮肤纹理计数器。

❼名人。作为最后一个有趣的实验,我在几个著名名人自拍照上运行ConvNet,并对结果连续可视化排序,最好的自拍在顶部,然后按照分数降低向右边和底部排列。

大数据培训,就上小牛学堂

(根据卷积神经网络对名人自拍评价。最有吸引力的自拍:左上角,然后随质量下降先向右边再向底部排列

有趣地是,发现我们之前观察到的好自拍一般法则(不要集体照片),被那张有名的来自奥斯卡Ellen DeGeneres等人的集体照打破,ConvNet这是一张很好的自拍,把它排在了第二行!太棒了!

我们另一个好自拍一般法则(不要男性)被 Chris Pratt的身体完败(也排在第二行),还要荣幸的提到抬起眉毛 的Justin Beiber和tephen Collbert / Jimmy Fallon duo(第3行)。 James Franco的自拍比 Chris Pratt露得更多,但是ConvNet并没有很看好(第4行)。我也是。

最后,再次发现风格的重要性。有几个无可争议好看的人,因为坏的构图(如J Lo脑袋拍得太大),或者光线不好等原因拍到了列表的底部。

探索更多#自拍

另一个有趣的自拍可视化,我们尝试用t-SNE来展示。t-SNE是一种非常好的算法,我几乎想在任何事情上运行,因为它运用广又非常高效——它输入一些东西(比如我们实验的图片),然后把具有相似的东西放在一起展示出来。你可以用t-SNE展示非常多事情,比如Netflix的电影文字Twitter个人资料ImageNet的图片,或者任何你有一定数量的东西,并能比较两两相似度。在我们的实验中,我们基于ConvNet认为的相似度展示自拍。用技术术语来说,我们的方法是在最后的全连接层基于fc7激活的L2规范。可视化结果如下:

大数据培训,就上小牛学堂

(自拍的t-SNE可视化,点击下载高分辨率图(9MB))

找到自拍的最佳裁剪

我们进行的另一个有趣实验是用ConvNet自动寻找最好的自拍裁剪。具体来说,我们取一张图片,随机尝试各种裁剪,然后让ConvNet选出一个看起来最好的。在下面四个处理的例子中,左边是原始的自拍,右边是ConvNet认为最好的裁剪:

大数据培训,就上小牛学堂

(四组都包括了原始图片(左边的)和ConvNet认为最好的裁剪过的(右边))

发现ConvNet喜欢让头部占据图片的1/3,然后剪切掉额头。有趣的是,右下方的那组,ConvNet决定摆脱自拍里面的“自拍者”,选择了完全裁剪掉自拍者的那张:)你还可以看到更多“粗鲁”裁剪的有趣例子:

大数据培训,就上小牛学堂

(和上图一样,左边是原始图片,右边是裁剪过的。右边的那组是我最喜欢的。)

在任何其他高级用户询问前:是的,我试过在ConvNet前和图片后插入一个空间转化层,然后我bp微调成6个参数来定义任意角度变化的裁剪。不幸的是,我运行不好——优化有时会卡住,或

随机漂移。我也试过约束转换比例/平移,但是没有帮助。幸运的是,当你的转化有三个有界参数时,我们可以执行全局搜索(如上图所示)。

你的自拍怎么样?

好奇这个神经网络怎么看你的自拍吗?我把这个神经网络打包成了一个Twitter机器人,你可以很容易找到。(这个机器人只有约150行Python语句,包括所有的Caffe/Tweepy代码)。附上你的图片(或链接)发推特@deepselfie,这个机器人会自动给你的图片打分意见。图片最好是正方形,否则机器人会压缩图片成正方形,恶化结果。机器人应该会在一钟内回复,否则出现了什么错误(请过一会儿再试)。

大数据培训,就上小牛学堂

(与自拍机器人互动的例子@deepselfie

在任何人问起前,我也尝试过给一个较小版本的ConvNet端口,让其可以在iOS上运行,这样你可以在自拍时享受实时反馈,但却发现对于一个快速小项目而言太复杂了,比如,由于没有类CUDA支持,我首先尝试写自己的片段着色器,然后发现只有一些只有CPU线程的版本,我不能让运行好并实现实时。而且我还有真正的工作要做。

结论

我希望我让你感受到了卷积神经网络有多么强大。你给他们一些有标签的示例图片,他们就能自动学会识别这些事情,而且运行良好,且迅速(至少在测试时,一旦他训练好了就很快)。当然,我们仅仅只触及了表面——ConvNet在许多神经网络中作为一个基本构建模块,不仅能对图像/视频进行分类,还可以进行分割、检测和描述,无论是在云端或机器人。

如果你想了解更多看,现在初学者的最佳起点可能是迈克尔·尼尔森的教程。然后,我会鼓励你看Andrew Ng在Coursera上的课程。接下来看CS231n的课程笔记/作业。这门课是去年冬季我和Fei-Fei在斯坦福大学一起授课,专门介绍ConvNets的课程。如果你有时间参加,我们也将在2016年1月再次开课。想要了解更多,我会推荐Hugo Larochelle的神经网络课,或者由Yoshua Bengio、IanGoodfellow和Aaron Courville正在撰写的书《深度学习》

当然和看书比,通过实际操作你将学习更多,所以我建议你尝试101 Kaggle挑战,或者开发你自己的项目。如果是这样,我强烈建议你不仅操作,还要记录这个过程放在任何人都能看到的地方,例如r/机器学习等已经积累的不错的社区。至于工具推荐,现在三种常见的选项是:

  • Caffe(C++,Python/Matlab封装),过去我常常用这个。如果你想做一些基本的图片分类,那么Caffe是最简单的方式,很多情况下你不需要写代码或脚本,只需要调用。
  • 基于theano的深度学习库(Python),如KerasLasagne,这个更灵活。
  • Torch(C++,Lua),最近的研究中我用这个。对于高级用户,我非常推荐这个,因为它用简单的抽象就实现了自由、灵活、速度。

其他其他一些刚更新/用得不多,但有前途的库包括NervanaNeonCGT,或者Jul里的Mocha

最近,有一些公司想把深度学习带给大众,比如MetaMind,提供web界面允许你通过拖放图片训练一个ConvNet(所有的细节他们在云端处理)。MetaMind和Clarifai同样提供ConvNet REST APIs。

 

就这样吧,下次见!

英语原文:What a Deep Neural Network thinks about your #selfie

End.