基于深度学习的商品检索技术
oolxs
8年前
<p>深度学习大讲堂是高质量原创内容的平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息!</p> <h2><strong>摘要</strong></h2> <p>商品检索是一门综合了物体检测、 图像分类以及特征学习的技术。 近期, 很多研究者成功地将深度学习方法应用到这个领域。 本文对这些方法进行了总结, 然后概括地提出了商品特征学习框架以及垂类数据挖掘方式, 最后介绍了商品检索技术在服装搭配中的应用。</p> <h2><strong>前言</strong></h2> <p>几年前,当人们还在感叹于网页购物的快速便捷时,各大电商巨头就“悄悄地”将它们的购物应用推广到了用户的手机里。从那一刻起,用户购买的习惯也在悄悄地发生着改变:人们不再局限于时间与地点,只要拥有一部联网的手机,就能轻松获取想要的商品。发展至今,移动设备的安全、高速等特点越来越获得人们的认可,也使得移动购物行为变得更加普遍。然而目前PC和Mobile终端中,用户基本都是通过文本关键词获取目标商品,这种单一的关键词描述有时很难获取用户的真实需求。为此,电商们也进行了很多改进。其中最有效的一些做法是构建高度结构化的后台商品数据库。其目的是能够通过分析用户的查询来推荐一些更加精细粒度、时效性好、热度高的商品品类;并提供给用户一个限定了价格、品牌、风格等等的商品候选集合。这种基于文本的由粗到精的推荐方式, 能够很好的帮助用户定位到具有精细且具体标签的商品。然而,当用户需求的商品的周边信息不明确时,很难通过抽象出有限的关键词来进行检索。这类商品包括:未知品牌的化妆品,样式新颖的家具或者时尚流行的服装等(如图1)。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/6eec7892eeb88cb025b4c60e246aa133.jpg"></p> <p style="text-align: center;">图 1:一些难以用关键词描述的商品</p> <h2><strong>所见即所得</strong></h2> <p>对于上述的问题,可以用一句话归结为:当需求物品难以用文本量化描述时, 给定它的一张图像,是否有可能推荐给用户相关的商品? 可以想象这样的场景: 当你看到一件喜欢的物品,只通过手机拍照将其图像上传购物网站,就能获取实物购买信息。如果商品检索能做到这样的“所见即所得”, 必将会给有购物需求的用户带来很大的便捷。</p> <p>“所见”如何才能变成“所得”呢? 在回答这个问题之前, 首先需要了解商品检索中的难点问题:</p> <h2><strong>商品细品类繁多</strong></h2> <p>小到柴米油盐,大到家具电器, 都可以称为商品。而且很多商品都包括多级且细致的分类。例如,家具可分为卧室家具、客厅家具、餐厅家具、书房家具等;服装的一级品类包括女装、男装、内衣、配饰与童装童鞋等, 女装又可分为连衣裙、T恤、雪纺衫等; 母婴中的童车童床类别可分为安全座椅、婴儿推车、婴儿床、婴儿床、垫餐、椅学步车等。由此可见, 好的检索技术不仅要识别这么多的商品类别, 并且需要区分每个类别下的不同商品实例; 同时后台商品数据库应该具有很高的覆盖面。图2给出了一个电商网站对商品品类的划分。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/71cb4df5f3db6f7a59c7b09b8b1550a0.jpg"></p> <p style="text-align: center;">图 2:多种多样的商品</p> <h2><strong>同款与相似款的混淆</strong></h2> <p>根据多级类目或属性进行商品划分的方式,尽管区分了大多数具有精细语义的商品,但在区分同款与相似款上的作用仍然是有限的,即无法确认两件分为一个类别的商品是相同款。 举例来说,已知两个人都穿着白色短袖圆领T恤, 因为姿态、角度、光照等影响,有可能会使得相似款更像同款,或者同款被误识别为相似款。这就是计算机视觉中经常碰到的类内差异性与类间相似性问题。 图3的例子可以说明这两个问题。 左侧(a)中的上衣是同一款衣服,但由于人体姿态、悬挂方式、手臂遮挡、光线等问题的存在,使得它的颜色以及长度等表观属性具有很大的差异性; 三款相似的黑色印花连衣裙如(b)所示,它们拥有相似的不规则的印花图案,以及黑色的底色和A字裙摆;这些特点都让他们很相似,但从袖型可看出它们非同款。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/1340d5a3b2d1ccb4a1f65168e3592a7e.jpg"></p> <p style="text-align: center;">图 3:同款与相似款服饰图像</p> <p>其实,计算机视觉的各个领域都在解决这样的“所见即所得”难题, 即如何让机器能够自动准确的理解图像内容。 随着深度学习的兴起, 包括人脸识别、 图像分类与物体检测在内的方向都取得了很多重要的进展, 也为深度学习在商品检索中的应用奠定了坚实的基础。</p> <p>概括的讲, 为达到“所见即所得”的目标, 商品检索技术的框架中需要包含以下三个部分:</p> <p>(1) 商品主体检测: 用于自动定位用户感兴趣的商品,去除背景、多主体等因素的影响,也有利于抽取的语义特征的对齐。</p> <p>(2) 商品品类识别:通过识别商品的主体的品类, 使得在检索时可以在商品子数据子库进行搜索,提升检索的效果与效率。</p> <p>(3) 商品特征表示: 通过学习获得商品主体的判别性特征, 使得同款商品距离更近且非同款商品相距更远; 对光照、姿态、遮挡等变化有一定的鲁棒性。</p> <h2><strong>服饰检索技术回顾</strong></h2> <p>基于拍照的商品检索问题本质是一个跨域(cross-domain)图像检索问题: 需要根据用户输入的移动拍照图像, 从电商库中获取同款或是非常相似的商品图片列表。这些特点决定了商品检索是一项综合性的图像处理技术——它涉及图像识别、检测、特征学习等各方面的内容。</p> <p>其中, 服装垂类检索是商品检索中一个重要的问题。因为服装包含非常多的细品类, 而且存在非常多的视觉变化, 如光照、形变、视角、尺度、背景影响等等。解决服装检索的技术能够很好的被推广到其他垂类上。当前,很多学者和研究机构都尝试基于深度学习进行服装检索技术的探究与创新。 下文将回顾三篇基于深度学习来解决跨域服装检索问题的文章。</p> <h2><strong>Where-to-Buy-It (WTBI)</strong></h2> <p>这篇文章发表于ICCV2015,作者是来自北卡罗来纳大学教堂山分校的M. Hadi Kiapour。作者把street-to-shop的服装检索场景, 形式化为cross-domain的商品相似度学习问题, 并设计了一种用于特定类别的相似度计算的网络参数学习方式。整个学习流程如图4所示。 首先, 利用裙子、外套、上衣、裤子、裙子等五个主要的商品类别的同款标注图像, 基于cross entropy loss训练一个通用商品的同款判别模型; 然后, 对于特定细分类的商品检索模型学习问题, 采用其对应的同款训练数据进行网络参数微调, 将通用同款模型迁移成特定类别的同款模型。 在进行方法验证时, 文中还收集了40万的电商数据,以及近4万组的street-to-shop的同款商品数据。 实验表明, 通过这种“由粗到细”方式学习到的相似度量网络, 比基于ImageNet训练的深度特征有更好的检索性能。 但此文只基于离线CNN特征学习相似度, 并没有进行端到端的检索模型的探索。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/c92ba28cb9c16912d57303138583932b.jpg"></p> <p style="text-align: center;">图 4基于特定类别的度量学习网络</p> <h2><strong>Dual Attribute-aware Ranking Network (DARN)</strong></h2> <p>这篇文章发表于ICCV2015,作者是来自新加坡国立大学的 Junshi Huang。此文与WTBI方法相比的不同在于: 在处理街拍场景(street scenario)与电商场景(shopping scenario)服装图像之间的检索问题时, 提出了一种端到端的双路神经网络模型(DARN)来学习深度特征,如图5所示; 其中一路网络学习街拍场景下的服装特征;另一路网络学习电商场景下的服装特征。为了提升图像检索特征的判别能力, 作者还采用了多种标注数据来监督网络的学习过程: 多标签的属性标注与服装同款ID标注。为此,在设计网络损失时, 同时采用了基于多标签属性数据的cross-entropy loss以及服装同款ID数据的triplet loss。总的来看, 网络的输出特征同时隐含了局部语义属性的判别能力以及全局表观的区分性, 在检索效果的提升上具有很好的互补性。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/5b4a1d1bdb749edc77c32e1ea032965e.jpg"></p> <p style="text-align: center;">图 5:DARN方法的网络结构</p> <h2><strong>DeepFashion</strong></h2> <p>这篇文章发表于CVPR2016,作者是来自香港中文大学的Ziwei Liu。为了使服饰识别相关的研究更加贴近实际应用场景, 作者收集了一个规模更大且语义标注更全面的服装数据集DeepFashion; 它在图像数目、类别与属性数目、同款对、位置标定与数据开放等方面都占据优势。其与WTBI和DARN中的数据库对比如表格1所示。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/2063df16a1d5684e0f574ffa9cc1a18d.jpg"></p> <p style="text-align: center;">表格 1:DeepFashion与WTBI、DARN中图像数据库对比</p> <p>此文还提出了一种FashionNet, 融合了大类、属性、服装ID以及关键点四种监督信息来进行服装特征学习。它的创新之处是, 设计了分别对全局表观以及局部部件进行特征学习的网络; 其中的局部网络结构利用了服装局部关键点对卷积特征响应图进行对齐,避免了关键点所在部件的变化带来的影响。整个网络结构如图6所示。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/ab24ac2afd38ce302d67350dbdaec141.jpg"></p> <p style="text-align: center;">图 6:FashionNet网络</p> <h2><strong>方法总结</strong></h2> <p>复杂体系下的商品类别识别以及检索问题的解决, 不仅在于网络结构的设计,而且需要多种类型的标注数据来约束整个网络的训练; 这些数据包括商品位置、商品类别、 商品属性以及商品同款数据等; 由此, 检索结果与查询图像才能具有全局表观相似性与局部语义一致性。当然, 对于如何结合这些监督数据进行学习仍有待进一步探索; 是否端到端网络的性能一定优于分段学习网络也犹未可知。 与传统方法相比, 此类深层神经网络模型在进行商品检索特征学习时并没有脱离一般图像检索的特征学习框架: 不仅需要在前端进行语义对齐, 也需要在后端提升特征判别性。总的来说, 以上深度学习方法的探索与创新, 都将为商品检索技术趋于实用化打下扎实的基础。</p> <h2><strong>特征学习框架</strong></h2> <p>尽管以上的论文主要在探究服装类商品的检索技术, 但这些方法在其他的商品垂类上也是适用的。如图7所示, 这些方法可概括成一套特征学习框架,。图中三个部分的意义分别是: </p> <p>(1) 商品图像预处理。商品有刚体(如鞋子、箱包、化妆品等)与非刚体(如男装、女装、童装等)之分, 姿态、形变、尺寸等差异很大; 因此, 需要采用一定的语义对齐方式使得模型对这些变化鲁棒, 常见操作有商品检测框对齐、旋转对齐、局部关键点对齐等。</p> <p>(2) 全局表观与局部语义特征融合。将一个商品图像映射为一个特征的方法有很多; 为了使得到的特征具有很好的判别性, 多种语义监督信息被用于引导模型的学习。以服装垂类为例, 最终的特征不仅需要区分语义(如服装的袖长、 领型、 扣型等), 也需要能衡量表观的相似性(如颜色、 纹理等)。 因此, 这类监督数据的收集也是整个特征学习框架的重要组成。</p> <p>(3) 特征降维。 特征的学习是一个精益求精的过程, 维度低且判别性好的特征才能保证检索的性能与效率。用于降维学习的数据一般是商品同款数据; 常用的降维方式有线性判别分析(LDA)、 图像分类与度量学习等。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/45c541e48b53553e75c94c0e4e816e0c.jpg"></p> <p style="text-align: center;">图 7:商品垂类特征学习框架</p> <h2><strong>垂类数据挖掘</strong></h2> <p>基于这套框架,特征学习就可以依靠大量的标注数据来完成。如何来获取标注数据呢? 简单粗暴的全量数据标注会非常耗时耗力。 这里针对同款数据与类别数据分别给出了数据挖掘的方法, 如图8所示。</p> <p>(a)同款数据挖掘。 基于已有的检索特征模型以及大类属性分类模型, 可以将互联网数据按照类别预测结果进行划分, 并根据子类进行单独的聚类。 对于每个cluster, 根据一些准则(如特征数目、平均距离、距离方差等)来判定噪声并进行筛选; 最后通过人工标注的方式进一步切分每一个cluster来获取同款的商品。</p> <p>( b) 类别数据挖掘。 首先, 通过爬虫抓取以及人工构造的方式, 可以获得大量的关键词集合; 并将它们进行多词组合的方式在图像搜索引擎获取top-K的检索结果, 放入类别图像候选集合; 之后, 基于已有的大类属性模型, 对候选集进行提纯, 去除低质量以及语义错误的图像。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/260b8a733cf24f9ed9e3596c0fd1a82a.jpg"></p> <p style="text-align: center;">图 8:同款与类别数据挖掘</p> <h2>技术应用</h2> <p>本节介绍一种新商品检索技术应用方向: 服装搭配。 服装搭配是指根据用户给定的一件衣服单品, 推荐出能够与之搭配的时尚款式。它的应用场景包括时尚资讯推荐、电商导购等。由于服饰品类繁多、穿着标准各异, 如何定义并获取时尚的款式以及给用户个性化推荐搭配方案, 都面临很大的挑战。 下文将围绕这两个问题, 介绍一种基于商品检索技术的服饰搭配方法。</p> <h2><strong>定义时尚款式</strong></h2> <p>“工欲善其事必先利其器”。在服饰搭配过程中,构建时尚款式的数据库是非常必要的。然而,时尚是一种比较感性的认识, 且人们对于时尚的理解各不相同,“时尚款式”的定义是没有一个统一的量化标准的。下图给出了一些时尚图像的例子, 可以看出, 图像中服装的时尚取决于很多方面: 服装样式、发型、 鞋子、 拍照场景、 身材等等。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/ef73d8f8f6b7c8abaf05304ce1ff17f9.jpg"></p> <p style="text-align: center;">图 9:时尚库中的四款搭配</p> <p>为了解决这个难题,数据来源选自多个顶级时尚网站。这些网站往往通过时尚达人编辑的方式来推荐出时尚图片,确保了服装的时尚性与新颖性; 除此之后, 从视觉上影响图像时尚程度的因素还有很多, 如背景灰暗、T台秀、非全身图、身材差、分辨率低等; 基于这类数据训练低质图片过滤模型, 就能获取最终的高质时尚库。</p> <h2><strong>服装搭配技术</strong></h2> <p>简单讲,服饰搭配就是一种通过用户上衣(下装),推荐时尚下装(上衣)的技术。这里根据优化目标的不同将现有方法分为两大类: 基于上下衣度量学习的方法以及基于相似服饰检索的方法。前者的实现基于不同服装部件的度量学习: 适合搭配的上下装距离应该尽量的近,而不适合搭配的则要尽量的远。 后者假定时尚库的图像拥有优质的搭配, 将用户服装单品输入时尚服装数据库的检索引擎, 获得语义与表观相似的时尚推荐结果。目前,时尚搭配App— <strong>FOLLOW</strong> , 采用的就是基于检索技术的解决方案。 图10中个给出了 <strong>FOLLOW</strong> 搭配的效果, 欢迎扫码试用。</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/3391589b25aec08ebc90bf8d2198ff46.jpg"></p> <p style="text-align: center;">图 10:服饰搭配。上排:灰色短袖T恤;下排:黑色七分阔腿裤</p> <p style="text-align:center"> </p> <p>总结与展望</p> <p>本文回顾了基于深度学习的服装检索技术,并且基于这些方法, 概括出一套通用的商品特征学习框架。针对不同种类商品图像的采集, 给出了基于图像搜索引擎的数据挖掘方法。后续仍有待进一步探究的方向包括多品类商品检索技术、基于大规模同款数据的特征学习以及全自动数据挖掘方法等。</p> <p> </p> <p> </p> <p> </p> <p> </p> <p>来自:http://mp.weixin.qq.com/s?__biz=MzI1NTE4NTUwOQ==&mid=2650325442&idx=1&sn=999ca95c21c165b6052503ffca4497e1&chksm=f235a6c8c5422fde6528e853e1c1975e84bd9f2a004e204a776d087f5f44976bc2bfaf6b294e&scene=2&srcid=0912DtxUM1FTFoRCjUCohc3n&from=timeline&isappinstalled=0</p> <p> </p>