在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Yelp 是如何使用深度学习对商业照片进行分类的

  • 2015-11-06
  • 本文字数:2403 字

    阅读完需:约 8 分钟

Yelp 是美国最大点评网站,拥有世界各地的 Yelper 上传的成千上万的照片。各种各样的照片给进入当地的商业提供了一个丰富的窗口。通过开发一个照片理解系统使 Yelp 能够创建有关个人照片的语义数据。跟 Yelp 第一次在基于内容的照片多样化方面所做的尝试一样,由系统生成的数据正在增强 Yelp 近期推出的封面照片多样化、标签式照片浏览等服务。

构建一个照片分类器

对于理解照片中的模棱两可的目标,其实有许多不同的方式。一开始,为了帮助简化 Yelp 的问题,Yelp 只专注于将照片分类为几个预定义的类。之后,Yelp 又只专注于关于饭店的照片类别。

事实上将照片进行分类,就可以将其当做机器学习中的分类任务,需要开发一个分类器,Yelp 首先需要做的就是收集训练数据,在图片分类任务中就是收集很多标签已知的照片。Yelp 收集这些信息可以通过几种不同的方式:

  • 照片标题:在很多照片的标题中都包含代表照片自身含义的词汇,例如,很多“菜单”照片的标题中包含单词“菜单”。为了识别这些关于食物的项目,Yelp 依靠自己的菜单结构(例如, http://www.yelp.com/menu/gary-danko-san-francisco/ ),它保留了每种食物的商业名单。Yelp 发现,将列表中的食物项目与照片的标题进行匹配产生了一个高准确率的数据集。
  • 照片属性:当上传照片到 Yelp 上时,用户允许标记照片的一些属性,虽然它们并不总是准确的,但仍然可以很有效地帮助照片分类。
  • 众包:通过众包可以让大众自动参与照片的标注,并同时纠正一些错误的标注。Yelp 已经发现,通过众包 Yelp 通过合理的成本(在时间和金钱)获得了质量总体良好的标签。众包体现了一种群体智能。

一旦 Yelp 有了标签数据,Yelp 就开始采用“AlexNet”形式的深度卷积神经网络(CNNs)来识别这些图片(因为这种方法是一种监督学习方法,非监督学习目前仍然是深度学习的难点方向)。CNNs 是由多个卷积层组成,ReLU 层、pooling 层、局部响应正则化层和全连接层。Yelp 的 CNN 被建立在基于 Caffe 架构的 AWS EC2 GPU 实例上。Yelp 喜欢 Caffe,因为它简单易用、高性能、模块化、开源、还一直在不断完善。为了应对 Caffe 的软件依赖,Yelp 使用 Docker 封装了 Yelp 的 CNN,以便它可以更容易地部署。

Yelp 还创建了抽象,以确保 Yelp 的 CNN 可以很容易地与其他形式的分类器进行集成,包括 CNN 的不同实例。如下图所示,Yelp 的基线是一个“Caffe 分类器”,它通过 Caffe 的方式运行 CNN;它是一个抽象分类器的一种特殊形式,可以采取不同的信号,并执行不同的分类算法。Yelp 目前的“facade”分类器,是一个集成分类器,采用了不同分类结果的加权平均。如果 Yelp 决定进一步集成依赖于其它信号的新的分类器,这将让问题变得更加简单。

Yelp 在一个均匀黄金分割的 2500 张照片的测试集上进行试验,Yelp 目前的“facade”分类器的整体精确度达到了 94%,召回率达到了 70%。根据 Yelp 的描述,虽然这些数字绝对可以再提高,但 Yelp 发现对于下面描述的应用它们已经足够了。

照片分类服务

Yelp 使用面向服务的架构(SOA),Yelp 做了一个 RESTful 照片分类服务,用来支持现有的和即将推出的 Yelp 的应用程序。由于服务预计拥有不止一个分类器(例如,不同的版本或为不同类型的业务),该服务 API 使用一个分类器 ID,一个行业 ID,以及可选的类,然后返回所有属于该行业的照片,其已经通过分类器被归类:

Yelp 使用一个标准的 MySQL 数据库服务器来承载所有的分类结果,所有的服务请求可以通过简单的数据库查询被处理。为了避免更昂贵的实时分类,因为 Yelp 目前的应用并不取决于最新的照片分类,所以 Yelp 只执行线下分类。该架构如下图所示:对于每一个新的分类器,Yelp 扫描所有的照片,并且将分类结果存储在一个数据库中。扫描在计算上消耗很大,但通过将分类器在任意多的机器上进行并行处理,Yelp 可以减轻这一点。扫描结束后,Yelp 会每天自动收集新的照片,并将它们发送到一个进行分类和数据库负载的批次中:

应用:封面照片多样化

一旦有了照片分类服务,就可以有效地增强 Yelp 的许多关键功能。Yelp 的业务详细信息页面显示了一组“封面照片”,基于用户的反馈和某些照片的属性,它们能够通过照片评分引擎进行推荐。但是,目前 Yelp 的封面照片存在一个典型问题,即所选的照片缺乏多样性,例如,如下图所示,所有封面照片都是关于食物的(拉面),用户无法看到其他方面的照片,除非他们点击“查看全部”按钮。

通过照片分类服务,现在就可以让封面照片变得多样化,Yelp 可以容易地确定最高得分的非食品的照片,然后将其纳入封面照片。通过严格的 A / B 测试,Yelp 已经证实饭店的浏览者更愿意看到一个显示突出的“食品”照片和突出的“非食品”照片,以及两个小“食品”的照片和另外两个“非食品”照片,如下图所示。多样化大大增加了 Yelp 用户与照片之间的互动。

应用:标签式浏览照片

因为任何人浏览 Yelp 照片都是在有了解之前,大部分来自于饭店的 Yelp 照片都是食物。但 Yelp 从用户中得到反馈,他们发现用户关心的可不仅仅是食物。有些人使用 Yelp 的图片用来检查一个特殊事件的气氛或导航到一个第一次去的地点,而其他人使用 Yelp 的照片用于一些更严肃的应用,如发现餐厅是否能容纳残疾的顾客。随着标签式照片浏览的推出,所有这些任务现在都变得更容易、更高效。

Yelp 表示,标签式照片浏览是他们的照片分类服务现在提供的最显著的应用。照片现在在各自的标签(类)下进行组织;从下图可以看出,跳到你正在寻找的准确信息现在变得更加容易。

下一步是什么

任何机器学习系统都不可能是完美的。Yelp 表示,如果你想帮助提高 Yelp 照片分类的质量,请随意标注你看到的任何未分类的照片。


感谢杜小芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-11-06 18:003790
用户头像

发布了 268 篇内容, 共 139.0 次阅读, 收获喜欢 24 次。

关注

评论

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

雪天专注行路思考一则

石君

冥想 28天写作

量化交易自动炒币软件开发系统

2021年1月初Java开发从小公司跳槽阿里制胜关键:狂刷17套大厂真题

Java架构追梦

Java 阿里巴巴 架构 面试

Task01-产品类JD对比

遠景

产品 字节跳动 产品经理 JD

花了19998买的学习教程!Android跨进程通信导论,技术详细介绍

欢喜学安卓

android 程序员 面试 移动开发

产品经理训练营-第一周作业

羽室

第一次作业提交

涅米丶

面对疫情,我们正在行动!

anyRTC开发者

uni-app android 音视频 WebRTC 在线教育

Docker发布开发团队2021年三个首选方向;工信部印发《工业互联网创新发展行动计划(2021-2023 年)》

京东科技开发者

云计算

【并发编程】- 内存模型篇

双木之林

并发编程

Soul网关源码阅读(七)限流插件初探

Java 网关 限流

第一章作业

转转

Nginx 最常用的两个功能:负载均衡和缓存

李尚智

Java nginx 架构 并发

产品0期-第一周作业

曾烧麦

产品训练营

产品经理训练营

纳豆卡玛

求职 岗位要求 职能描述

一种分表平滑扩容方案

非著名架构师

什么是产品经理?——课程总结

Deborah

Android入门你值得拥有!史上最通俗计算机网络分层详解,含BATJM大厂

欢喜学安卓

android 程序员 面试 移动开发

张红珊——第一节课作业

zzz

产品经理训练营-第一章作业

泡面加煎蛋

4K高清视频下载(4K视频素材下载)图文教程

科技猫

下载器 4k高清视频下载 4k视频素材下载 8k视频下载 高清视频下载

干货丨深度迁移学习方法的基本思路

博文视点Broadview

Elasticsearch 横向扩容

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

产品经理训练营 学习起点

DB

Redis不仅仅是缓存,还是……

码农译站

数据库 redis 缓存 关系型数据库 非关系型数据库

产品经理训练营第一周作业

Empty

产品经理训练营 极客大学产品经理训练营

IO系列专题分享 - 概览

公众号:程序猿成神之路

io

个人选择理财产品有哪些好方法

v16629866266

开发实战:LocalDateTime转RFC3339格式

worry

6道tomcat面试题,最后两道难倒我了

田维常

面试

场外OTC交易APP系统软件开发

系统开发

Yelp是如何使用深度学习对商业照片进行分类的_语言 & 开发_张天雷_InfoQ精选文章