写点什么

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

  • 2019 年 8 月 20 日
  • 本文字数:2434 字

    阅读完需:约 8 分钟

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

背景

闲鱼是一个典型的 C2C 场景的闲置交易平台,每个在闲鱼的用户都能享受到自由交易的乐趣,只要简单的输入商品名,商品价格,库存等信息就能完成一个商品的发布。充分的自由是闲鱼活力的来源,但是这对于一个电商平台来说是一个挑战。本文要说的商品结构化就是痛点之一。


C2C 平台的商品结构化之所以难,是因为用户完成结构化的动力不足。怎样让用户以最小的成本来完成结构化,我们不能寄希望于商家后台这样很重的解决方案,我们需要的是一个简单高效灵活的解法。


方案选型

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



思路一 离线式方案


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


思路二 手动关联方案


这个是发布中的处理方案。这个方案可能是最为直观的方案。发布过程中,引导用户做属性打标或者同款商品的关联。这个方案的优点是简单直观。缺点同样明显:完全将成本转嫁给用户。对 C 卖家来说,每增加一个发布选择项,都可能导致用户流失。这个方案可以做为结构化的补充,却不是我们寻找的最优解。


我们的思考:我们能否在保障实时性的前提下,实现一个高效低成本的方案呢?


答案就是本文给出的方案——智能发布方案。如果闲鱼用户在发布阶段就能将准备发布的商品自动关联上手淘的商品库中的某个商品。该商品就能使用同款商品的若干结构化信息,商品结构的化的问题不就迎刃而解了么?


方案对比



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


业务逻辑

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



简单拆解:


  1. 主体对焦


作为智能识别的开始。我们需要通过 AI 算法识别出端侧的拍摄的主体对象。这样做的目的是跟用户对识别物体目标保持一致。


  1. 智能识别 &引导


我们会在用户拍摄过程中对被拍摄物体进行实时识别。同时我们引导用户拍摄目标对象的核心信息放大算法的效果。


  1. 结果反馈 &用户确认


当用户拍摄完成,我们会以同款的方式,让用户进行一个简单的选择。


架构设计

技术挑战


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


所以我们的核心技术挑战:


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

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


从闲鱼角度解这个问题,我们有三大技术优势:


  • 以 AliNN 为代表的移动 AI 解决方案使得端侧 AI 计算成为可能

  • 我们有这个星球上可能最大的商品信息库(淘宝 &天猫)

  • 阿里达摩院雄厚的 AI 能力


我们可以通过前置部分 AI 能力到端侧,大幅度提升链路的实时性。同时我们将 AI 识别能力和淘系商品库做结合,完成同款商品匹配的功能。


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


整体架构


首先介绍我们的逻辑架构



整体设计上面分为三层:


  • UI 展示和交互层。核心是处理用户输入和结果反馈。

  • 逻辑处理层。主要是控制智能识别管线的运作逻辑和子模块处理结果的分发

  • 框架层主要是各个核心处理子模块


架构细节


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



主要设计考量:


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


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


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


模糊检测,相似度检测,主体识别,tracking 这些算法都是在端侧实现的。除了充分利用端侧的计算能力外,更重要的是提升拍摄过程中的处理效率。最大化降低对网络请求的依赖。


通过极致的压缩算法,将最终上传的图片大小控制在 10K 左右。即便是 4 次请求也不过 40K。可以说对用户流量不会构成压力。


  1. 管线编排系统


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



  1. 用户隐私的保护


用作识别的图片会做加密处理,将用户隐私泄露的风险降低到最小。出现在公域中的图片地址都是无法直接访问的。即便泄漏用户的隐私也可以保全。


算法架构


算法侧的我们也做了大量的优化。


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


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



效果

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


同款商品识别效果方面:总体上基于多帧识别准确度相比单帧提升约 20%


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


展望

智能发布将在 9 月的版本中跟大家见面,欢迎大家试用、反馈。首先上线的是视频发布的部分,后续还会增加图片,活动等场景。通过智能识别的项目,我们相信一定可以不断提升闲鱼商品结构化率。


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


本文转载自公众号闲鱼技术(ID:XYtech_Alibaba)


原文链接


https://mp.weixin.qq.com/s/PuslaiyDG5XBIPwHRjssig


2019 年 8 月 20 日 08:009731

评论

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

架构师训练营」第 2 周作业

edd

架构 极客大学架构师训练营

学习一下:我的学习之道

非著名程序员

学习 程序员 程序人生 提升认知

Libra教程之:运行自定义move modules

程序那些事

比特币 区块链 以太坊 libra blockchain

架构师训练营-第二周-作业1

狂奔嘀兔纸

极客大学架构师训练营

BAT面试题汇总:分布式+Dubbo +JVM+微服务+多线程+Spring附答案(建议收藏)

程序员生活志

Java spring 面试 分布式 mybatis

架构师训练营第2周总结

Glowry

极客大学架构师训练营

架构师训练营 - 第二周作业

Melo

极客大学架构师训练营 编程的本质与未来 第三课 听课总结

John(易筋)

极客时间 极客大学 架构师 极客大学架构师训练营 编程的未来

训练营第二周总结

Mr冰凉

极客大学架构师训练营--编程的未来 面向对象 依赖倒置原则 -- 第二次作业

John(易筋)

极客时间 极客大学 架构师 极客大学架构师训练营 依赖倒置原则

小师妹学JVM之:深入理解JIT和编译优化-你看不懂系列

程序那些事

Java JVM JIT 签约计划第二季

「架构师训练营」第 2周作业

旭东(Frank)

架构 极客大学架构师训练营

重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

小傅哥

设计模式 小傅哥 重构 代码优化

Week 02- 作业:设计原则

dean

极客大学架构师训练营

训练营第二周作业

Mr冰凉

为什么 Vue 更符合这个时代的大势所趋

葡萄城技术团队

Vue SpreadJS

Redis系列之扫盲篇(一)

z小赵

Java 分布式 高并发系统设计

0616作业2

Geek_10

程序员开发色情游戏,赴日寻找AV女优真人拍摄,结果...

程序员生活志

程序员 游戏开发

设计原则之依赖倒置和接口隔离

林昱榕

极客大学架构师训练营 依赖倒置 设计原则 接口隔离

第二周作业

大雄

依赖倒置

第二周总结

changtai

Libra教程之:来了,你最爱的Move语言

程序那些事

比特币 区块链 以太坊 libra blockchain

基于 Docker 实现 MySQL 主从复制

ytao

MySQL Dockerfile

【架构师训练营】第2周总结

花生无翼

极客大学架构师训练营

依赖倒置原则

Halley

架构师训练营--第二周作业

_MISSYOURLOVE

极客大学架构师训练营 第二周作业

听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理

小林coding

面试 计算机网络 计算机基础

Libra教程之:Libra testnet使用指南

程序那些事

比特币 区块链 以太坊 libra blockchain

架构师实现自己架构的主要手段

_MISSYOURLOVE

极客大学架构师训练营

一款开源的Diffy自动化对比测试框架:超详细实战讲解

狂师

开源 测试 测试驱动开发实战营 自动化测试

金融行业数据库架构实践与运维

金融行业数据库架构实践与运维

闲鱼亿级商品结构化背后的思考和演进_文化 & 方法_意境_InfoQ精选文章