微信邦

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 83682|回复: 0

微信扫一扫识物的技术揭秘:抠图与检索

[复制链接]
发表于 2020-4-24 22:14:21 | 显示全部楼层 |阅读模式
作者:冉辰,腾讯 WXG 后台开发工程师

微信扫一扫识物是典型的“离线写,在线读”的业务,业务数据的存储和检索库的构建都是在离线环节完成。我们通过爬虫系统收录了小程序生态下的商品图片,下载后进行检测抠图,提取检索特征,最终构建成检索库交付到线上环境。这篇文章将主要介绍这一部分的工作。

0 什么是识物

识物是以图像或视频作为输入,用以挖掘微信生态下商品、物品等有价值等信息。这里我们基本覆盖了微信全量优质小程序电商,涵盖上亿商品 SKU,聚合了微信内的搜一搜、搜狗等资讯,最终聚合后呈现给用户。百度识图和阿里拍立淘也是基于该技术发展而来。
工程上,识物工作主要可以分为三块,如图 1 所示:

微信扫一扫识物的技术揭秘:抠图与检索

微信扫一扫识物的技术揭秘:抠图与检索

图1

  • 算法模型
算法侧主要是对检测模型和多类目的检索模型等持续炼丹,检测模型需要返回图片中物品的准确位置;检索模型需要保证同款物品的特征表达越近越好。
  • 离线工程
识物是典型的“离线写,在线读”的业务,业务数据的存储和检索库的构建都是在离线环节完成。我们通过爬虫系统收录了小程序生态下的商品图片,下载后进行检测抠图,提取检索特征,最终构建成检索库 交付到线上环境。这篇文章将主要介绍这一部分的工作
3.在线部署
算法模型和离线生成的检索库最终完成部署,对外服务。用户识物时,检索库会召回一批相似物品,再经过一系列复杂的精排、过滤逻辑,最终返回用户看到的结果。
1 挑战1. 数据版本
数据版本主要分为两类,一是算法模型版本,我们有 10+种业务模型,平均每周有 2-3 个模型迭代升级。二是检索库版本,在模型不迭代的情况下,每天有新数据的合并,即增量迭代;而每次算法模型变更,特征表达发生改变,需要根据新特征重新构建检索库,即全量迭代。
在高频的版本变更场景下,如何兼顾灵活性与安全性。
2. 数据处理性能
目前我们收录的图片数为 10 亿左右,平均每天新增 1500w。除了图片数量多,任务的流程也很多,如图片下载、目标检测、特征提取等任务,每个任务每天都是千万级的数据处理量。
如何高效的处理数据,提升业务的迭代效率。
3. 繁杂的流程
随着业务的发展,简单的业务流程已经不能满足我们日益复杂的业务需求。为了提升业务指标,我们可能还需要图片质量,文本语义,死链、下架商品的过滤等任务。
如何在流程日益变多的情况下,不导致整个系统的臃肿。
4. 数据质量
离线工程属于重流程的业务,数据从产生和落地将经历九九八十一环,任何一环出错都会导致结果有问题。发现问题的时间越晚,修复的成本越高,对业务的影响越难以估计。
如何科学的监控和管理数据质量,使系统有良好的可维护性。
2 数据版本
这里有多种维度的数据版本,例如模型版本,特征版本,检索库版本等,上游环节的版本变更将引发后续环节的变更,最终都将导致检索库版本变更

微信扫一扫识物的技术揭秘:抠图与检索

微信扫一扫识物的技术揭秘:抠图与检索


图2 数据流程简图



2.1 检索库

在我们的业务场景下,检索库的迭代是高频操作,正常情况下每天会增量更新,而模型的变更又会引发检索库全量更新。数据量级上,我们的全量图像是亿级别的,按类目分库后每个类目也是千万级。
我们调研了业界内主要用于图像检索的技术,如图 3 所示。综合考虑后,我们选取了灵活性更强、相对内存占用更小的的 faiss-ivf 作为我们的索引库构建算法。

微信扫一扫识物的技术揭秘:抠图与检索

微信扫一扫识物的技术揭秘:抠图与检索


图3 图像检索库选型

对于每天的增量数据,我们每天对每个类目(10+个类目)都会构造一个对应当天数据检索库。每个类目的全量检索库是由N 天的检索库合并生成(faiss-ivf 特性),2000w 的数据合并仅需要 4 分钟。基于这样的设计,使得我们可以灵活的选取时间窗口的范围,如图 3 所示了窗口为 2 的合并方法。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信邦网联系QQ|Archiver|手机版|小黑屋|鲁公网安备 37082802000167号|微信邦 ( 鲁ICP备19043418号-5 )

GMT+8, 2024-12-22 15:04 , Processed in 0.077358 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2013 Wxuse Inc. | Style by ytl QQ:1400069288

快速回复 返回顶部 返回列表