前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于 Milvus 的 VOVA 拍照购实践

基于 Milvus 的 VOVA 拍照购实践

作者头像
Zilliz RDS
发布2021-04-12 16:56:15
4940
发布2021-04-12 16:56:15
举报

✏️ 作者介绍:

Jessie Ji,VOVA 算法部 Java 开发工程师

项目背景

VOVA 是一个面向全球市场的新兴跨境电商平台,专注于外贸出口,客户遍布六大洲一百多个国家和地区。VOVA 支持 20 种主流语言和 35 种主流货币,拥有数百万件高品质、高性价比的产品,为用户提供最新的全球平价商品和轻松有趣的购物体验。

近几年,网络购物平台日益流行,大众对网购的热情也日益高涨。但是大部分传统购物网站只支持关键词搜索,当用户无法用词汇准确描述商品时,就很难搜索到心仪的商品。因此,通过图片搜索相似产品,能够帮助用户更准确地找到想要的商品。为方便用户体验快捷的一站式购物,VOVA 全新推出拍照购功能。如果消费者在影视屏幕、广告牌、报刊杂志、行人身上等任何地方看到自己喜欢的商品,他们只需拍照并上传至 VOVA 平台,便可找到相似商品。

系统流程

拍照购系统会根据用户上传的商品图片,对商品库中商品照片进行检索并返回给用户最相似的商品图片。如下图所示,系统流程分为数据导入(蓝线)和查询(橙线)两个阶段,涉及三个关键步骤:

  1. 使用 YOLO 模型进行端侧目标检测
  2. 使用 ResNet 网络提取图片特征向量
  3. 使用 Milvus 进行向量相似度检索

目标检测端

目前,仅 VOVA App 端支持拍照购功能。我们首先在端侧部署 YOLO 算法模型对用户拍摄的图片进行目标检测。YOLO 算法全称是 You Only Look Once: Unified, Real-Time Object Detection。作为一个 one-stage 检测算法,YOLO 仅使用一个 CNN 网络来直接预测不同目标的类别与位置。YOLO 系列算法已经迭代至第五代,且模型较小,适合移动端部署。YOLO 采用卷积网络来提取特征,然后使用全连接层获取预测值。YOLO 的卷积网络结构参考 GooLeNet 模型,包含 24 个卷积层和 2 个全连接层,如下图所示。输入图像大小为 448 * 448,经过若干个卷积层与池化层,变为 7 * 7 * 1024 维张量(图中倒数第三个立方体),最后经过两层全连接层,输出张量维度为 7 * 7 * 30。网络的预测值 P 是一个二维张量,其 shape 为 [batch,7*7*30] 。采用切片,那么 P[:,0:7*7*20] 就是类别概率部分,而 P[:,7*7*20:7*7*(20+2)] 是置信度部分,最后剩余部分 P[:,7*7*(20+2):] 是边界框的预测结果。

图片特征向量提取

本项目采用深度残差网络(Deep residual network, ResNet)模型对库内现有的图片以及经过端侧检测的新上传图片进行特征提取,并转化为特征向量。ResNet 模型针对深度网络的退化问题而提出。随着学习网络的深度增加,网络准确度会出现下降的现象。如下图所示,ResNet 网络参考了 VGG19 网络,在其基础上进行了修改,通过短路机制加入了残差单元。2014 年提出的 VGG 网络只有 19 层,而 2015 年推出的 ResNet 网络则多达 152 层。ResNet 结构易于修改和扩展。改变 block 内的 channel 数量以及堆叠的 block 数量,即可轻松调整网络的宽度和深度,得到不同表达能力的网络,有效地解决网络的“退化”问题。只要训练数据足够,可以通过逐步加深网络获得表达性能更佳的模型。通过模型训练,我们提取每张图片的特征,并转化为 256 维的浮点向量。

相似向量检索

目前 VOVA 拥有超过 3 千万张商品图片,且实际的数据量还在成倍增长。为了从如此庞大的图片库中快速地检索出最相似的商品图片,我们采用 Milvus 作为特征向量相似度计算引擎。相比于Faiss、Annoy 等向量开发库,Milvus 是一个可以开箱即用的工具。Milvus 不仅集成了不同的索引库,还支持不同的索引类型和相似度计算方式。此外,Milvus 官方还提供多种语言的 SDK 和插入、查询等丰富的 API 可供调用,方便项目组直接入手,降低学习成本。在检索速度上,十亿向量查询时单条向量查询时间不高于 1.5 秒,批量查询的平均时间不高于 0.08 秒。因此 Milvus 能够实现十亿级别向量的毫秒级检索。实际实践过程中,我们参照了Milvus 的分片中间件解决方案 Mishards 组件搭建高可用的服务集群,其大致结构如下图所示。使用具有水平扩展能力的 Milvus 集群,能够较好地满足该项目对海量向量数据的高性能检索需求。

系统界面展示

如下图所示,用户上传商品图片后即可查询外观相似的商品,找到心仪的产品。

结语

目前,拍照购功能已上线,且运行稳定。越来越多用户通过拍照购购买商品。VOVA 将持续优化本项目中运用的模型,并关注后续的 Milvus 版本更新,从而为用户提供更好的购物体验。

参考资料

YOLO

https://arxiv.org/pdf/1506.02640.pdf

https://arxiv.org/pdf/1612.08242.pdf

https://zhuanlan.zhihu.com/p/35325884

ResNet

https://arxiv.org/abs/1512.03385

https://www.cnblogs.com/shine-lee/p/12363488.html

Milvus

https://milvus.io/cn/docs/overview.md

About Zilliz

Zilliz 以重新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。

Zilliz 构建了 Milvus 向量相似度搜索引擎,以加快下一代数据平台的发展。Milvus 目前是 LF AI & Data 基金会的孵化阶段项目,能够管理大量非结构化数据集。我们的技术在新药发现、计算机视觉、推荐引擎、聊天机器人等方面具有广泛的应用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目背景
  • 系统流程
  • 目标检测端
  • 图片特征向量提取
  • 相似向量检索
  • 系统界面展示
  • 结语
  • 参考资料
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档