知衣科技应用 TensorFlow 建立服装搜索系统

原文链接: https://services.google.cn/fb/forms/TFCS/

文 / 知衣科技

知衣科技应用 TensorFlow 建立服装搜索系统_第1张图片

知衣科技是一家致力于应用图像技术、时序分析、个性化推荐等人工智能技术为各类从事电商及服装行业客户提供最新最前沿数据分析服务的公司,人工智能技术是知衣科技的基因,知衣科技希望通过不断的技术创新,为服装行业客户带来更好的智能服务。

在服装行业中,以服装图像找相似款服装是一个非常强烈的需求,目前也存在一些工具,但是都存在着一定的问题。同款检索而非相似款搜索、搜索准确率低、搜索库较小、缺乏秀场等时尚设计数据等,在实际使用中都较难满足服装从业者们的需求。知衣科技的目标是实现以图找相似款,在开发过程中遇到以下几个难点 : 

  1. 相似服装数据集缺乏
  2. 服装形态各异且是柔性目标

  3. 服装搜索库巨大算力需求巨大

知衣团队基于 TensorFlow 开发一套相似服装搜索系统,该系统包含服装检测、服装特征提取与服装检索等基础算法,本文大致介绍系统的开发流程,以及如何进行模型部署与模型使用。

数据采集与数据标注

海量的标注训练数据是深度学习模型强大识别能力的动力来源,由于服装相似款搜索需求特殊,目前很难从网络上找到大量可用的公开数据集。因此我们采用了人工与机器结合的方法从海量的服装图像库中进行相似款服装数据的抽取与标注 ( 已经有了标注框,由知衣服装检测模型检测,检测模型使用改进版本的 YOLOv3 实现)。由于服装本身的特性,不同季节不同国家不同年份不同秀场不同风格的数据各不相同,如日韩风与欧美风服装风格差异巨大,不同秀场的拍摄差异巨大,不同年份服装流行点发生巨大变化等。
知衣科技应用 TensorFlow 建立服装搜索系统_第2张图片

服装组标注

知衣科技根据服装从业者的常用的服装相似角度定义了一套方案,从服装版型、袖型领型、季节与服装图案面料等作为服装相似度的评判标准,相似的服装定义为一个组并进行标号 ,如上图服装组标注,相似的服装被归为一组,框中为每张图像中相似的服装部分。
知衣科技应用 TensorFlow 建立服装搜索系统_第3张图片

服装细节标注

其次,在服装相似性搜索过程中,除了外形搜索相似,我们还通过定义一些额外的标签来限制搜索空间,保证搜索结果的可靠性,如搜索裙装时不希望出现裤装。所以除了标注相似图像组外,同时对服装的品类、季节、袖型领型等信息进行细节标注,如长袖圆领秋冬款吊带连衣裙,上图服装细节标注,对服装品类风格面料工艺等进行了标注。
知衣科技应用 TensorFlow 建立服装搜索系统_第4张图片

机器辅助人工标注

标注过程如果完全依靠人工会导致标注效率低下,标注质量低的等问题,所以我们采用机器辅助人工标注的方法。先人工标注部分数据,然后进行机器训练,机器来标注数据,人工进行数据修正,机器再次使用标注数据进行优化训练,在机器的帮助下大幅度提高标注效率与标注质量。在标注完成后就得到了所需要的数据集,每个相似组内包含数量不等的若干的图像,同时每张图像还包含了相应的各项细节信息。我们标注了大概 5 万组超过 100 万张相似图像,包含了各种服装品类与各种来源的服装。

模型设计

基于深度学习的图像搜索一般是先使用深度学习模型进行图像特征提取,提取完成后即可得到一个特定的特征向量 (比如 128 维),该特征向量就可以表示该图像,图像搜索本质就是计算图像向量之间的距离,距离越近表示图像越相似,同理服装之间的相似度就是特征向量之间的距离,通常可以使用欧式距离或者余弦距离。做服装搜索就是对需要搜索的服装图像进行特征提取,然后使用取到的特征去特征库中进行匹配,找出最相似的图像。如可以直接使用 VGG16 模型的 4096 的全连接层进行图像的特征表示,也可以来做服装的搜索,但是由于 VGG16 模型训练时使用的是通用类别,对服装特征的提取粒度不够,搜索服装时关注点一般不在服装上,搜索出来的一般是类似场景,而非类似的服装。所以一般来说如果需要进行特定领域的图像搜索,需要收集该领域的数据集进行标注并训练。

知衣科技应用 TensorFlow 建立服装搜索系统_第5张图片

服装搜索模型结构图(多分支)

服装搜索模型训练时可以采用 VGG,ResNet,Inception 系列等模型进行 Finetune,然后进行搜索,但是因为服装的特殊性,通用分类模型结构无法良好的适应服装,有一定的搜索效果,但是比较难满足服装从业者的搜索需求。我们采用 ResNet50 模型作为 BackBone,使用 384 * 384 的输入,利用标注过的海量服装图像进行模型的 Finetune,强化 ResNet50 对服装图像的特征提取能力,通过设计多分支的模型结构进行有效的特征提取,分支分为一个global分支和多个local分支。global同时连接softmax和 triplet_loss,同时进行分类任务和度量学习任务,local 的其他分支只进行分类学习任务,global 分支用于提取全局特征,local 的其他所有分支用于提取服装的细节特征(类似于注意力机制的方法), 在特征维度方面,知衣进行了强力的压缩,主分支使用 128 的特征维度,其他分支均采用 32 * 2 的结构,最终整个特征维度向量为 320 维,良好的进行了特征的压缩。

知衣科技应用 TensorFlow 建立服装搜索系统_第6张图片

服装相似度计算

在搜索时,根据用户的搜索需求,可以使用单个维度特征进行搜索,也可以实时调节各个特征维度的权重,如侧重搜索领型可以将领型分支的相似度权重调高,搜索出来的结果领型相似度高的会被排在前面,实现用户的个性化搜索。

搜索效果图

如上图所示,上传图像后可以进行任意的框选,搜索系统默认搜索情况下,同时把握了包含了服装整体、袖型领型、图案面料等信息,力求帮助找到最相似的服装图像。

模型部署

最后,训练完成的模型去除了 softmax 分类层,保留了基础的 BackBone 模型和多分支结构,专门用于做服装图像的特征提取,并将模型保存为 pb 格式,部署时使用 TensorFlow Serving 作为最终的部署方案。使用 Float16 替换 Float32,减少内存使用和算力消耗进一步加速计算。参考官方的文档,将 pb 模型操作分为了图像预处理、模型计算、结果转换三个部分,最终部署在 1080TI 的 GPU 上,因为做了 FP16 后内存大大减小,单个 GPU 可以同时部署 6 ~ 8 个 Serving 特征提取服务,GPU 的性能被极大利用。每张图像通过模型进行特征提取后,即可将特征送入特征计算库中进行计算,最终得到相似的服装图像列表。

总结与展望

本文以服装搜索为例,介绍了知衣科技如何使用 TensorFlow 来满足服装领域的相似服装搜索需求,包含了服装搜索流程介绍、服装特征提取模型的构建与模型的实际部署使用,TensorFlow 特有的 TensorFlow Serving 帮助降低了模型了部署难度,在模型加速方向也提供很多帮助。

后续,知衣科技会继续研究人工智能在服装行业的应用,不断将新的技术投入到产品服务中,让服装从业者们享受更好的科技福利,TensorFlow 人工智能领域的必备利器。

更多案例:

(点击 “阅读原文“,提交案例,我们将尽快和你联系)

你可能感兴趣的:(知衣科技应用 TensorFlow 建立服装搜索系统)