文 / 知衣科技

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

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

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

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

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

数据采集与数据标注

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

服装组标注

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

服装细节标注

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

机器辅助人工标注

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

模型设计

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

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

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

服装相似度计算

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

搜索效果图

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

模型部署

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

总结与展望

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

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

更多案例:

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

知衣科技应用 TensorFlow 建立服装搜索系统相关推荐

  1. 知衣科技CEO郑泽宇:重新定义服装产业「柔性供应链」

    ​ "从产业的角度上来讲,大家都是在为产业互联网这一件事情而共同努力." 作者|芭芭拉 出品|产业家 "北大学霸""Google高级工程师" ...

  2. 知衣科技:夫妻搭档,创业是件骨子里的事

    一个优秀的团队至少有两到三位核心合伙人各担其责,其中对CEO的要求最高也最全面,CTO则全面负责企业的技术关,同时要具备足够的团队营销能力.知衣科技联合创始人兼CEO郑泽宇,前才云科技联合创始人,美国 ...

  3. 所见即搜,3分钟教你搭建一个服装搜索系统!

    摘要:用MindSpore+Jina,基于Fashion-MNIST Dataset搭建的服装搜索系统. 引言 各位算法萌新们,是不是经常训练了模型却不知道如何部署和应用?或者只会调参但不会前端后端所 ...

  4. 广告界的拼多多!变衣科技凭什么?

    ​ 京东对战阿里.美团对战饿了么.瓜子二手车对战人人车--在一轮又一轮互联网公司的广告大战中,背后有一家"卖武器"的公司赚得盆满钵满--分众传媒. 这一波新上市的互联网公司中,无论 ...

  5. 知帆科技创始人叶茂: 链上数据分析将大有作为

    近年来,我国持续开展电信网络诈骗犯罪打击治理,已经取得了重要成效.随着区块链.人工智能等新兴技术的出现,诈骗分子又找到了新的作案工具,开始利用区块链技术组织诈骗和赃款转移活动,给政法工作带来了新的挑战 ...

  6. 北京百知教育科技有限公司签约易客CRM

    本文讲的是 :  北京百知教育科技有限公司签约易客CRM  ,[IT168 资讯]近日,北京百知教育科技有限公司签约易客CRM,全面启用易客CRM教育版,以期整合学院各个分校资源,提升学院教学水平,提 ...

  7. 打造出移动人体广告,变衣科技完成千万元级Pre-A轮融资

    10月18日消息,变衣科技近日完成千万元级Pre-A轮融资,由真成投资和德同资本共同投资.据悉,本轮融资将用于生产研发和商超点位的投放合作. 变衣传媒是国内首家"人体分众"广告模式 ...

  8. 中流科技联手RedHat建立开放SOA解决方案中心

    中流科技联手RedHat建立开放SOA解决方案中心 2007年3月28日,天津中流科技联手红帽中国(Redhat)联合建立开放SOA解决方案中心,共同发布开放SOA解决方案,以帮助客户实施SOA.开放 ...

  9. 静夜思:“小微科技公司”如何建立自己的竞争优势

    朋友问我了这样一个问题:小型科技公司如何建立自己的竞争优势 引用朋友的话:<天道>里有句话,就是拼在不是人干活的地方干不是人干的活,就是拼的不是人 <天道>里的这话,又虚,又理 ...

最新文章

  1. git 连接到远程的其它分支问题
  2. 数据库:悲观锁与乐观锁
  3. 第二章 栈和队列(1)——顺序存储
  4. DR模式 mysqlABB读写分离
  5. windows tasklist 查看应用、进程
  6. Permutations CodeForces - 736D (矩阵逆)
  7. ASP.NET Core WebListener 服务器
  8. python内置函数面向对象_Pyhton——面向对象进阶二:类的内置函数补充、描述符...
  9. (09)VHDL例化VHDL
  10. php 不同数据库的调用方法,php连接不同数据库的几种方法
  11. Java和C语言动态构造int数组
  12. 遗传算法c语言 x^2,c语言遗传算法 解决 y=x2问题
  13. dlna和miracast可以共存吗_关于无线显示技术,AirPlay,DLNA,Miracast,WiDi 等有何异同?...
  14. 苹果CoreFoundation源代码
  15. 梅花易数C语言实现(六十四卦卦辞用的是python)用了python
  16. 在Web网页里面实现像Excel/WPS条件格式那样根据数据大小自动改变背景颜色(网页数据热力图实现方法)
  17. 读书笔记-干法-反省
  18. 单耳蓝牙耳机怎么连接_蓝牙耳机怎么连接
  19. 怎么制作QQ背景音乐链接
  20. 插画手绘培训,“安利25周年”插画主题创作:畅游RichJay的创业之旅!【信念篇】

热门文章

  1. 【Linux】使用kill命令杀不死进程
  2. Nginx服务使用stream模块TCP代理rtmp视频流
  3. 打开计算机服务的五种方法
  4. 详解sklearn中的make_moons函数
  5. 七、Debian 10 DHCP中继
  6. 35 | 别再说不能使用Join了(这次是优化Join查询-下篇)
  7. Linux基础 ppt pptx
  8. Go bufio.Reader 结构+源码详解 I
  9. PNAS:层级动态是人脑的一个宏观组织原则
  10. 爬虫基础(三)——python爬虫常用模块