杭州知衣科技有限公司是一家以人工智能技术为驱动的国家高新技术企业,致力于将数据化趋势发现、爆款挖掘和供应链组织能力标准化输出,打造智能化服装设计的供应链平台。知衣成立于 2018 年 2 月,同年获得千万美金 A 轮融资;2021 年完成由高瓴创投、万物资本领投的 2 亿人民币 B 轮融资,同年入围“杭州市准独角兽企业榜单”。
知衣凭借图像识别、数据挖掘、智能推荐等核心技术能力,不断升级服务体系,自主研发了知衣、知款、美念等一系列服装行业数据智能 SaaS 产品,为服装企业和设计师提供流行趋势预测、设计赋能、款式智能推荐等核心功能,并通过 SaaS 入口向产业链下游拓展,提供一站式设计 + 柔性生产的供应链平台服务。目前已服务 UR、唯品会、绫致、赫基、太平鸟、海澜之家、森马等数千家时尚品牌和平台。
自建 CDH 集群运维比较复杂,需要专业的人员进行集群的运维管理。出现问题时依赖公开技术文档排查原因,解决问题的效率比较低。
一次批量识别图片的工作量很大,线下的 GPU 服务器计算性能有瓶颈。
知衣科技的业务系统一开始就部署在阿里云,同时在 IDC 机房部署了 10 台服务器搭建 CDH 集群,构建 Hive 数仓。计算过程是先将云上生产环境数据同步到 CDH,在 CDH 集群进行计算后将计算结果再回传到阿里云上提供数据服务。
当前知衣在阿里云上的整体方案架构如下,大致分为产品层、服务层、数据层以及大数据平台。
自建 CDH 集群虽然节省了计算费用,但是也带来不少问题,最主要的是运维复杂,人力投入大。
为了降低运维复杂度,知衣科技将计算任务迁移到 MaxCompute,直接基于 DataWorks 进行任务编排调度。
同时,基于 Elasticsearch 构建即席查询。知款聚焦于快速发现时尚趋势灵感,集成了社交平台、品牌秀场、零售及批发市场、淘系电商、时尚街拍五大图源,海量的设计灵感参考,帮助服装品牌及设计师快速准确地预判时尚风向,掌握市场动态。其中趋势分析板块需要对某个季度下各种组合条件下的设计要素标签进行统计分析,并输出上升、下降以及饼图等指标。这也是知衣平台数据量最大的查询场景,扫描分析的数据量会接近百万量级。

阿里云托管版 Elasticsearch 相比较开源版本最大优点就是开箱即用免运维,特别是支持达摩院的 Proxima 向量检索引擎,非常适合知衣的多维查询和统计分析场景。后面会在图片识别展开讲述 Proxima 向量引擎。
知衣的核心功能场景是以图搜图,前提是需要对海量的图片库数据进行识别。以离线的方式对图片库的所有图片进行机器学习分析,将每一幅图抽象成高维(256 维)特征向量,然后将所有特征借助 Proxima 构建成高效的向量索引。
模型训练
图片识别之前需要训练模型。由专业的服务行业背景的人员对图片库进行标注,然后线下部署的 GPU 集群从阿里云对象存储 OSS 批量拉取已标注的图片进行训练。为了降低标注的成本,知衣科技采用了主动学习(Active Learning)方法,即基于一部分已标注的图片由机器学习训练出一个模型,然后对未标注的图片进行预测,让人工对预测结果再次进行确认和审核,再将标注的数据使用监督学习模型继续进行模型训练,逐步提升模型效果。
批量图片识别
模型生成以后打包到 Docker 镜像,然后在 GPU 节点上运行容器服务就可以对海量的服装图片进行识别,提取出高维的特征向量。因为提取的特征向量数据量很大且需要进行清洗,知衣科技选择将特征向量先缓存在阿里云日志服务 SLS,然后通过 DataWorks 编排的数据开发任务同步 SLS 的特征向量并进行包含去重在内的清洗操作,最后写入向量检索引擎 Proxima。
一次批量识别图片的工作量很大,线下的 GPU 服务器计算性能有瓶颈,所以知衣科技借助云上弹性的 GPU 资源做计算资源的补充。线下 GPU 和云上 GPU 组成一个计算资源池,共同消费同一批需要进行图片识别的计算任务,效率大大提升。云上购买的是 GPU 抢占式实例,一般是按量价格的 2 ~ 3 折,可进一步降低成本。
单词图片识别
以在线 serving 的模式,在 Web 前端提供单次单张图片识别功能,比如用户上传一张图片,通过模型的推理输出如下结果:

以图搜图
构建好服装图片的特征向量库,我们就可以实现以图搜图的功能。当用户上传一张新图片的时候,我们用之前的机器学习方法对其进行分析并产出一个表征向量,然后用这个向量在之前构建的向量索引中查找出最相似的结果,这样就完成了一次以图片内容为基础的图像检索。选择合适的向量检索引擎非常重要。

初期,知衣科技选择 Faiss 部署分布式服务,在多台 GPU 服务器上部署特征向量搜索匹配服务,将搜索请求分发到每台 GPU 子服务进行处理,然后将 TOP N 的相似结果数据汇总返回给调用方。
在使用 Faiss 的过程中,知衣技术团队也遇到了实际的困难,例如:稳定性问题、GPU 资源不足、运维成本高、带宽争抢、特定场景下召回结果集不足等。当然这并不是 Faiss 本身的问题,而是需要投入更多人力开发运维分布式系统才能匹配业务需求。
借助阿里达摩院自研的向量检索引擎 Proxima,知衣实现了对大数据的高性能相似性搜索,Proxima 集成在之前在用的阿里云托管版 Elasticsearch。Proxima 功能和性能上与 Faiss 相比各有千秋,主要是针对 Faiss 使用上的困难,Elasticsearch + Proxima 解决了以下问题:
稳定性提升:开箱即用的产品服务 SLA 由阿里云保障,多节点部署的高可用架构。到目前为止,极少碰到接口超时问题。
算法优化:基于图的 HNSW 算法不需要 GPU,且与 Proxima 集成做了工程优化,性能有很大的提升(1000 万条数据召回只需要 5 毫秒)。目前业务发展特征向量已经增长到 3 亿。
运维成本降低:分片基于 Elasticsearch 引擎,数据量大的情况下直接扩容 Elasticsearch 计算节点就可以。
无带宽争抢:以图搜图的服务直接部署在云上,不占用专线带宽,图搜场景下没有再出现超时查询告警。
召回结果集满足业务需求:Proxima 也是基于 segment 分片取 Top N 相似,聚合后再根据标签进行过滤。因为 segment 较多,能搜索到的数据量相较之前的方案有了明显的增长。
批量识别图片的效率大大提升,且有效降低了计算资源的成本。
开箱即用的产品服务 SLA 由阿里云保障,多节点部署的高可用架构,有效提升了系统的稳定性。到目前为止,极少碰到接口超时问题。