大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

用深度学习技术来找到 Yelp 上的美图

  • 2017-04-04
  • 本文字数:3453 字

    阅读完需:约 11 分钟

本文翻译自 Finding Beautiful Yelp Photos Using Deep Learning ,原作者为Alex M.,已获得原网站授权。

Yelp 的数据库中已经存储了几千万张相片,用户们现在每天都会上传大概十万张,而且速度还在不断加快。事实上,我们发现相片的上传增长率大于相片的查看率。这些相片反映着本地商业的内容和质量,提供了非常丰富的信息。

关于这些相片非常重要的一方面,就是展示出来的内容的类型。在 2015 年 8 月,我们上线了一套新系统,用于将传统饭店有关的相片分为食物、饮料、外观、内景和菜单等几大类。从那以后,我们又为咖啡店、酒吧等类似的商店上线了类似的系统,以此来帮助用户们尽快发现他们想要寻找的那些相片。最近的一段时间,我们又在研究如何进一步提高用户的满意度,具体方法就是给他们看更多漂亮的图片,改进我们的相片排名系统。

理解相片的质量

对比相片的质量,看起来很像是一件非常主观性的工作。喜欢哪张相片或不喜欢哪张相片,有许多因素会影响这样的决定,而且依正在做搜索的用户个人不同,结论也会有所不同。为了能为Yelp 的用户提供更好的体验,相片理解团队必须担当起这项非常有挑战性的工作:确定哪些特点会让相片更受人喜爱,并研发出一套算法,可以依据这些特点来可靠地对相片做出评判。

首先我们试着为相片构建一个点击率预测器,数据源就是从日志中挖掘出来的点击数据。我们的假设是,那些被点击了更多次数的相片应该很明显地会比其它相片好。可事实上这个想法的效果却没有想象中好,原因有几点。首先,人们常常会点开那些比较模糊、或者里面有非常多文字的相片,这么来看看里面到底是什么内容。另外,因为Yelp 上的相片有许多种展示方法,所以很难有效地对比某些特定相片的指标。

之后,我们试用了好几种不同的计算机视觉技术,试着发现一些相片的内在特征,希望可以直接用于质量评分。比如,对摄影师来说有个非常重要的特征叫“景深”,它用来测量相片有多少内容是在焦点里面的。用浅景深可以非常有效地将相片中的物体与它的背景区别开来,上传到Yelp 的相片也不例外。很多时候,在关于某间饭店的许多张相片中,那些最美的总是那些非常明确地对焦到某个具体物体上的。

景深

亚历山大牛排屋

桌面上的艺术

另一个人们判断相片的非常重要的方法就是对比。对比可以测量出在一张相片中,一个物体和它旁边的物体在亮度和颜色等方面的不同。有许多种公式可以用于计算对比,但大多数都要对比亮度,或者相片中附近区域的光强度。

对比

安东尼点心

Tac N Roll

最后,相片中不同物体之间的相对位置也是一个非常重要地审美方面的考虑。比如研究表明,人们对艺术的对称性有着天生的倾向。另外,有些摄影师也非常推崇所谓的“第三法则”,这是一种将相片中的重要元素都按照某个轴排列起来的方法,以此来创建出一种运动或活力的感觉。

对齐

Traif

Augie Chang 摄影室

用深度学习来构建相片评分模型

所有这些考虑都依赖于对相片内不同区域之间的关系的理解。所以当要实现一个相片评分算法时,我们希望算法中也会把这个关系放在非常重要的地位。结果,我们当时非常抱以厚望的就是卷积神经网络模型,或者说是 CNN

在过去的十年里,卷积神经网络模型在图片分类与处理领域内取得了巨大的成功,比如人脸识别和分子疾病检测等。和普通的神经网络类似,它们都会对输入向量做一系列的转换,并使用输出的错误来动态地改进对未来的预测。可是,CNN 还有另外的几层,用到了上文中我们详细讨论过的几个特征。尤其是卷积层会对相片加以许多过滤器,汇聚层也会缩减之前各层的输出规模,以减少计算量。

为了开发这个模型,我们先要收集训练数据。得到训练数据的方法之一就是手工地为成千上万张相片加上标签,标记成漂亮或不漂亮。可是这样的方法代价太大,太耗时,而且会非常依赖于我们的评分员的喜好。另外,还有一点可供我们利用的就是,在相片被上传到 Yelp 的时候,它们通常都会包含着额外的信息,也就是EXIF 数据

另外,我们发现有个判断质量的非常好的方法,就是相片是不是由单反相机(Digital Single-Lens Reflex Camera,DSLR)拍摄的。单反相机可以让摄影师调节透镜类型和光圈大小,更好地控制把相片里的哪个部分作为焦点。更进一步,单反相机的传感器更大,对光线更敏感,即使在非常昏暗的环境下也可以拍出非常漂亮的相片。最后,总是使用单反相机的人经验会更丰富,也可以抓拍到质量更好的相片。

把这样的相片送给我们的模型去学习,就可以学到这些重要的相片特征,那么即使是在那些不是由单反相机拍出来的相片中,也可以识别出好相片。

即使这张相片是由 iPhone 拍出来的,我们的模型也还是给了它非常高的评分。

我们尝试了好多种方法来训练这个模型。一开始,我们收集了十万张单反相机和非单反相机拍出来的相片,分别标上好的和差的标签,然后送给名为 AlexNet 的模型中去学习,这个模型是由多伦多大学的研究员在 2012 年提出的。为了提高这个模型的精度,我们还用了几百万张相片的数据量去训练了另一个模型。最后,我们还尝试过一个名叫 GoogLeNet 的模型,这是 Google 的研究员在 2014 年开发的,艺术水平非常高,比之前最好的模型的层次还明显深。

同时 Yelp 的工程师们也手工评判了几千张相片,里面的相片都是我们可以非常自信地说非常好或者非常差的。在上面的每个测试中,我们还会把每个模型的训练成果,用于评判这几千张相片,来进一步看看效果。我们发现每经过一次迭代,我们正确判断好图或者差图的能力都得到了提高。

最后,为了把我们模型的判断结果转化为质量评分,我们在模型的最后一层使用了可能性输出的方法,为每一张输入的相片都生成一个确定的标签。换句话说,如果我们的模型认为有 80% 的机会标签应该是“高质量”,那我们就给那张相片打分 0.8。这种方法可以很直观地把一个二元分类器的输出结果转化成了很容易打分的结果。

更进一步

我们的初步分析表明,我们的算法推荐的图片都是那些焦点更突出、更明亮和在审美上使人更愉悦的。可是有些时候也不是让我们非常满意,这就促使我们去找到办法对某些相片进行重新评估和排序。最终,我们为大家提供的系统可以把多种不同的信息整合起来,为商户提供最好的相片,展示给用户。

相片评分算法

商户相片评级流水线

在我们现在的流水线中,我们先用上面描述的模型为一家商户生成所有的品质评分。然后再根据下面的特征对这些得分进行调整:

  • 标志过滤:我们发现商户标志的相片通常被我们的模型打出很高的分,即使用户压根对它们不感兴趣,不会看也不会点击它们。比如说,其中可能会包含一张海报,里面只有饭店的名字。于是,我们就基于相片的亮度直方图的熵训练了一个单独的分类模型,用它来降低这类相片的分值。
  • 分辨率:为了对我们的神经网络的输入进行标准化,也为了加快计算速度,我们在把每张相片输入系统之前都进行了转换,缩小成了 227*227 像素的大小。可是这意味着模型无法判断这样的相片会不会太小,因而无法为用户提供关于商户的足够好的内容。为了处理这样的情况,我们对达不到某个标准的图片降低评分。

最后,我们用上了分类算法算出来的标签,用它们来保证不同种类的相片都可以显示在一家商户的相片列表的前面。

应用:封面相片排序

在 Yelp 上,每家商户的页面都会展示一些最漂亮的相片,我们叫做封面相片。在之前的许多年,我们都是根据喜欢、投票、上传日期和相片标题等来计算、挑选这些相片。可是,这样的方法有许多弊端。

首先,这样的系统非常容易产生选择性偏见。封面相面比别的相片有更多的机会被查看和点击。结果,一旦某张相片出现在了商户的封面上,它就有极大的可能性一直留在那里,即使更有吸引力更有用的相片在之后被上传上来,这一点也很难改变。另外,只是根据喜欢来选定的相片最终有可能会推荐一些“点击诱饵”,比如某些质量很差、也不怎么相关、但却由于包含了某些有引诱性的内容而受到了很多支持的相片。

现在有了排名算法,我们相信出现在饭店首页的封面相片的质量一定会大大提高。大家自己去看看吧

弗里蒙特,Country Way

旧版本

高质量版本

旧金山,Octavia

旧版本

高质量版本

圣克拉拉,Kunjip

旧版本

高质量版本

旧金山,Gary Danko

旧版本

高质量版本

下一步的计划

我们收到的关于这个变化的反响非常好,我们也还有许多可以做的工作,来进一步提供相片的可用性和相关性。相片理解团队正在开发一套更全面的系统,也会把商户的类型和摄影师的身份、以及上文中讨论的用户反馈和品质因素等考虑进来,进一步为 Yelp 的用户提供更好的体验。请期待我们接下来的更新吧

鸣谢:相片排名系统由 Wei-Hong C.、Alex M.、Colin P.、Prasanna S.、Joel O. 和 Frances H. 设计并实现。

2017-04-04 17:162423
用户头像

发布了 152 篇内容, 共 79.5 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

android面试题及答案,我的阿里春招之路分享,附面试答案

欢喜学安卓

android 程序员 面试 移动开发

万字长文,38 图爆肝 Redis 基础!

一个优秀的废人

redis 数据结构 集合 哈希表 跳表

专访彩食鲜 CTO 乔新亮:CTO的“升级”秘笈

IT蜗壳-Tango

库存溯源之批次管理

Geek_vidmje

溯源 供应链 仓储 冷链 wms

MySQL内置函数

Sakura

4月日更

重读《重构2》- 以查询取代临时变量

顿晓

重构 4月日更

FILPool云算力挖矿系统开发源码案例

系统开发咨询1357O98O718

python内置数据结构list、set、dict、tuple(二)

若尘

List 数据结构 set 元组 Python编程

fil云算力挖矿系统开发成功案例丨fil云算力挖矿源码设计

系统开发咨询1357O98O718

IPFS挖矿系统开发详情案例丨IPFS挖矿矿机源码平台

系统开发咨询1357O98O718

Spring Cloud Gateway 和Webflux 请求参数非法字符处理

sN0wpeak

Java Spring Cloud SpringcloudGateway

工作三年,小胖连 HashMap 源码都没读过?真的菜!

一个优秀的废人

扩容 hashmap 源码剖析 HashMap底层原理 加载因子

别再问我 2050 可以干什么,Make a Movie in a Day!

阿里云CloudImagine

电影

华为云薛浩:走进视频“新时代”

华为云开发者联盟

云原生 视频 华为云 vr 图形处理

面试4轮字节Java研发岗,最终拿下2-1Offer(原题复盘)

Java架构追梦

Java 字节跳动 面试

ORC格式和PARQUET格式介绍

五分钟学大数据

hive 存储 4月日更

AUC/ROC:面试中80%都会问的知识点

华为云开发者联盟

机器学习 面试 mindspore roc AUC

Spark内存管理与调优

小舰

4月日更

美国工程院士、谷歌首席架构师 杰夫·迪恩(JeffDean) John 易筋 ARTS 打卡 Week 45

John(易筋)

ARTS 打卡计划

apk优化,996页阿里Android面试真题解析火爆全网,附面试答案

欢喜学安卓

android 程序员 面试 移动开发

智慧平安社区建设--赋能基层治理

13530558032

源中瑞区块链农产品溯源--推动农业科技发展

13530558032

区块链电子合同签约,推动合同签约数字化转型

13530558032

《采访提纲:声网 Agora.io 资深 iOS 开发工程师--龚宇华》

空城机

签约计划 4月日更 热门活动

四两拨千斤——你不知道的VScode编码TypeScript的技巧

葡萄城技术团队

快来,告诉你一个赚钱的秘诀:金钱的秘密

帅安技术

赚钱 秘密 金钱的秘密

浅谈BSS3.0产品“守成”之策中 • 业务提升篇

鲸品堂

系统架构 性能调优

LiteOS内核源码分析:消息队列Queue

华为云开发者联盟

队列 LiteOS LiteOS内核 消息队列Queue 队列池

阿里巴巴研究员吴翰清采访提纲:天才少年之路

Nydia

签约计划

加密原理详解:对称式加密VS非对称式加密

vivo互联网技术

加密 rsa

Redis的AOF方案(Redis持久化)

大数据技术指南

redis 4月日更

用深度学习技术来找到Yelp上的美图_语言 & 开发_Alex M._InfoQ精选文章