闲鱼亿级商品结构化背后的思考和演进

1. 缘起

闲鱼是一个典型的C2C场景的闲置交易平台。每一个在闲鱼的用户都能享受到自由交易的乐趣。在这里,可能你只要简单的输入商品名,商品价格,库存等信息就能完成一个商品的发布。即使是发布之后,你也能够随时修改价格,内容等信息。充分的自由是闲鱼活力的来源,可是这对于一个电商品台来讲却有着难言的痛苦。本文要说的商品结构化就是痛点之一。java

商品结构化为何重要?结构化信息是平台认识商品的一个基础。只有平台了解商品的各个属性,才能准确地将适合的商品推荐给适合的用户。这样才能更加高效地为买卖家用户创造价值。android

而因此C2C平台的商品结构化之因此难,是由于C商家完成结构化的负担重而动力不足。怎样让用户以最小的成本,来完成结构化就是一个很是大的挑战。咱们不能寄但愿于商家后台这样很重的解决方案,咱们须要的是一个简单高效灵活的解法。算法

2. 技术破题

怎么解决?首先咱们从整个C2C商品发布的全周期作一个方案的对比分析。网络

  1. 方案一 离线式方案

改方案包括算法关联&社会化方案。算法关联方案是经过技术手段对用户发布的商品进行分析,从而进行同款的关联或是属性打标。社会化方案核心是将商品结构化包装成一个活动。这样能经过用户参与答题的方式,进行商品结构化的关联。离线方案核心的缺点是关联链路太长,数据回流慢。更为重要的问题是分析出的数据没有用户确认,没法在显示域中使用。架构

  1. 方案二 手动关联方案

这个是发布中的处理方案。这个方案多是最为直观的方案。发布过程当中,引导用户作属性打标或者同款商品的关联。这个方案的优势是简单直观。缺点一样明显:彻底将成本转嫁给用户。对C卖家来讲,每增长一个发布选择项,均可能致使用户流失。这个方案能够作为结构化的补充,却不是咱们寻找的最优解。框架

咱们的思考:咱们可否在保障实时性的前提下,实现一个高效低成本的方案呢?答案就是本文给出的方案:智能发布方案。若是闲鱼用户在发布阶段就能将准备发布的商品自动关联上手淘的商品库中的某个商品。该商品就能使用同款商品的若干结构化信息,商品结构的化的问题不就迎刃而解了么?工具

方案对比性能

  智能发布 手动关联 离线方案
用户成本
实时性 极高
准确性 较高

可见智能发布方案是一个成本和效果最为均衡的方案。测试

3. 产品逻辑

先从经过下图,了解一下产品核心逻辑:(以视频发布为例)优化

简单拆解:

  1. 主体对焦

做为智能识别的开始。咱们须要经过AI算法识别出端侧的拍摄的主体对象。同时还经过tracking 算法对物体作短暂的跟踪对焦。这样作的目的是跟用户对识别物体目标保持一致。

  1. 智能识别&引导

咱们会在用户拍摄过程当中对被拍摄物体进行实时识别。而且咱们很是创新地经过算法,引导用户拍摄目标对象的核心信息。这里引导的做用是为了放大算法的效果。俗话说巧妇难为无米之炊。若是用户拍摄的内容没有目标的核心信息,算法也很难作出精准的预测。

  1. 结果反馈&用户确认

当用户拍摄完成,咱们会以同款的方式,让用户进行一个简单的选择。一旦用户选中某个商品(能够不选)就能完成结构化关联。至此咱们将复杂的商品结构化问题,转变成用户手指简单的一点。用户的结构化成本已经微乎其微。

4. 架构设计

4.1 技术挑战

综上智能发布的核心解法是将商品结构化的产品问题,转变成同款商品匹配这样的技术问题。

因此咱们的核心技术挑战:

1. 在发布阶段进行商品识别的实时性保障

2.怎样经过压榨AI的能力从而最大化同款商品的匹配成功率

那技术上可行么?从闲鱼角度解这个问题,咱们有三大技术优点:

  1. 以AliNN为表明的移动AI解决方案使得端侧AI计算成为可能
  2. 咱们有这个星球上可能最大的商品信息库(淘宝&天猫)
  3. 阿里达摩院雄厚的AI能力

咱们能够经过前置部分AI能力到端侧,大幅度提高链路的实时性。同时咱们将AI识别能力和淘系商品库作结合,完成同款商品匹配的功能。

为了作到上面的能力,咱们构建了完整的智能发布技术架构

4.2 逻辑架构

首先介绍咱们的逻辑架构

总体设计上面分为三层:

  1. UI 展现和交互层。核心是处理用户输入和结果反馈。
  2. 逻辑处理层。主要是控制智能识别管线的运做逻辑和子模块处理结果的分发
  3. 框架层主要是各个核心处理子模块

4.3 架构细节

细节来讲,咱们经过协同flutter,java/Oc和C++三层逻辑来构建高效的识别能力。以下图所示:

主要设计考量:

  1. 充分利用不一样的技术,最大化研发效能。

    咱们充分利Flutter多端一致性的优点在UI层使用Flutter进行开发。同时咱们将部分共同的算法下沉到C++层。这样能大幅提高两端逻辑的复用率和一致性。

  2. 充分利用端侧的计算能力

    1. 模糊检测,类似度检测,主体识别,tracking这些算法都是在端侧实现的。除了充分利用端侧的计算能力外,更重要的是提高拍摄过程当中的处理效率。最大化下降对网络请求的依赖。
    2. 经过极致的压缩算法,将最终上传的图片大小控制在10K左右。即使是4次请求也不过40K。能够说对用户流量不会构成压力。
  3. 管线编排系统

考虑到后期系统的持续优化,对子模块的处理逻辑的调整不可避免。所以咱们设计了一个灵活的管线来管理全部的处理逻辑。该管线能灵活组合java/Oc和C++的能力。而且能够方便作到子功能的顺序调整和功能增减。架构设计以下所示(以android为例):

  1. 用户隐私的保护

用做识别的图片会作加密处理,将用户隐私泄露的风险下降到最小。出如今公域中的图片地址都是没法直接访问的。即使泄漏用户的隐私也能够保全。

4.4 算法架构

算法侧的咱们也作了大量的优化。

智能发布的最核心算法是同款商品的匹配算法。咱们将单帧的预测算法改进为多帧预测。而且咱们创新性地将算法和交互作深度融合,极限压榨算法的极限能力。过程以下所示:

若是算法发现当前帧若不足以做出较为准确的算法预测,则将图像信息向后传递。在传递过程当中,及时经过文案引导用户拍摄算法所须要的信息。依次迭代直到完整预测出商品信息。算法处理逻辑以下图所示。

5.效果

实时性处理性能:通过咱们的测试,识别过程除主动提示外对用户无明显感知。用户的正常拍摄过程无掉帧等性能问题。

同款商品识别效果方面:

整体上基于多帧识别准确度相比单帧提高约20%

受限数据披露限制,不方便贴出分类目具体测试数据。给出几个相对明确的结论:

通过咱们的试验,咱们发如今彩妆/香水/美妆工具、美容仪、玩具等标品类目中识别率比较高。这些商品的核心信息每每容易在物品表面找到,容易识别。

而在非标品或者半标部分,例如童装,运动鞋等识别率相对较低。这些商品的信息每每在外形中透出不足。这时候算法就须要用户配合拍摄例如品牌这样的核心信息。整体来讲识别难度更大。

6. 将来

智能发布将在9月份的版本中跟你们见面,欢迎你们试用&反馈。首先上线的是视频发布的部分,后续还会增长图片,活动等场景。经过智能识别的项目,咱们相信必定能够不断提高闲鱼商品结构化率。

经过该项目咱们不只构建了闲鱼完整的对商品的实时识别能力。同时也沉淀了图片预处理,tracking等一批端计算核心算法。基于此,咱们彻底能够将更加实时的AI的能力赋能给更多场景(例如扫指定商品或者logo参加特定活动等)。

咱们畅想的将来发布是一个高度智能化的发布。基于摄像头对商品作深层次理解,系统直接给出商品信息,结构化标签,推荐价格,甚至新旧程度等发布要素。用户所要作的仅仅就是一个确认。今天的智能发布只是咱们伟大征程的第一步,咱们会向着目标不断努力!


原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索