DeepFashion︱衣物时尚元素关键点定位+时尚元素对齐技术

2023-12-21 03:32

本文主要是介绍DeepFashion︱衣物时尚元素关键点定位+时尚元素对齐技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

香港中文大学最近的研究成果:Fashion Landmark Detection in the Wild
这里写图片描述

github地址:https://github.com/liuziwei7/fashion-landmarks

这项工作提出了时尚关键点检测或时尚对齐(通过三层级联网络),预测关键点位置上的时尚物品,如领口的角落,裙摆,袖口,同时实现了时尚衣物检索功能。

.


一、时尚数据集:Large-scale Fashion (DeepFashion) Database

网址:http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html
可扫码看到这一数据集:
这里写图片描述

目前有以下几类数据集:
1. Category and Attribute Prediction Benchmark
这里写图片描述

  1. In-shop Clothes Retrieval Benchmark
    这里写图片描述
  2. Consumer-to-shop Clothes Retrieval Benchmark
    这里写图片描述
  3. Fashion Landmark Detection Benchmark
    这里写图片描述
    .

二、预训练好的caffemodel

三个预先训练好的:

  • 3-stage cascaded CNN models trained on upper-body clothes of Fashion
    Landmark Detection Benchmark (FLD).
  • 3-stage cascaded CNN models trained on lower-body clothes of Fashion
    Landmark Detection Benchmark (FLD).
  • 3-stage cascaded CNN models trained on full-body clothes of Fashion
    Landmark Detection Benchmark (FLD).
    .

三、服装对齐技术

这里写图片描述

结果:
这里写图片描述
.


四、应用一:用深度学习算法感知你的穿衣风格

来源于:大数据与多模态计算公众号

人们常说“所见即所得。”在推荐系统中,视觉信息也扮演着十分重要的角色,尤其是在服装、珠宝、装饰等外观对人们的选择起着重大作用的领域中。因此,研究用户喜好和商品特性的视觉维度变成了一个很重要的任务。
近年来,服装等商品的搭配、推荐受到了广泛的关注,并在基于视觉的推荐问题中取得了一定的成果。但是,目前工作对于商品的表征,往往是在一个通用的视觉特征空间中,比如CNN (Convolutional Neural Networks)网络的输出层特征。这样的视觉特征表示,对商品的类别比较敏感,却难以建模商品的不同风格。如下图所示,我们根据CNN网络的输出层特征对Amazon数据中的服装商品进行聚类,每一行表示一个类别。可以看到,不同类别的服装(比如,上衣、裙子、裤子、鞋等)被聚类到了一起,而不同风格的服装(比如,正式、休闲、运动等)没有被聚类到一起,甚至男装和女装间的区分度也很低。
这样的视觉特征表示很难有效地用于推荐系统中,因为相似风格的商品往往会被同一个人同时购买,但在视觉特征空间中却并不相似,这就为提升推荐效果带来了难度。比如,西裤和皮鞋一般是搭配在一起并被同时购买的,但西裤和皮鞋的相似度要远远小于西裤和牛仔裤的相似度。
根据上面的观察,我们提出了一个假设:一个商品(item)由风格(style)和类别(category)两部分构成,并且满足:
商品(item)= 风格(style)+ 类别(category)

基于上面的假设,我们提出了DeepStyle方法,学习用户的喜好和商品的风格属性,并应用于基于视觉的推荐中。
这里写图片描述
在DeepStyle模型中,我们将每个商品的图片输入到CNN网络中,其中这个CNN网络在ImageNet上经过了预训练。经过CNN,我们可以得到每个商品的视觉特征向量。然后,根据前文的假设,我们从商品的视觉特征向量中减除了该商品对应类别的隐含表达,进而得到了商品的风格特征向量。
随后,我们将得到的风格特征向量输入到BPR (Bayesian Personalized Ranking)框架中实现个性化推荐。对每个用户,采样正负商品样本对(正样本表示实际购买了的商品,负样本表示没有购买过的商品),通过优化,尽量扩大该用户和正样本的相似度,减小和负样本的相似度。我们的模型以用户的实际购买记录为监督进行训练,以SGD (Stochastic Gradient Descent)进行参数学习,直至模型收敛。
还对模型学习得到的商品风格特征向量进行了聚类,如下图所示,每一个方框中的商品属于一个类别:
这里写图片描述
可以看到,DeepStyle学到的风格特征可以很好地表征商品的不同风格,有效地挖掘用户的喜好,而在训练过程中完全没有商品风格方面的监督信息。
.


延伸一:DeepFashion: Powering Robust Clothes Recognition and Retrieval with Rich Annotations (CVPR 2016)

来源:基于深度学习的视觉实例搜索研究进展
介绍了衣服识别和搜索,同样是与实例搜索相关的任务,来自于香港中文大学Ziwei Liu等人的工作。首先,本篇文章介绍了一个名为DeepFashion的衣服数据库。该数据库包含超过800K张的衣服图片,50个细粒度类别和1000个属性,并还额外提供衣服的关键点和跨姿态/跨领域的衣服对关系(cross-pose/cross-domain pair correspondences)

然后为了说明该数据库的效果,作者提出了一种新颖的深度学习网络,FashionNet——通过联合预测衣服的关键点和属性,学习得到更具区分性的特征。该网络的总体框架如下所示:
这里写图片描述
FashionNet的前向计算过程总共分为三个阶段:第一个阶段,将一张衣服图片输入到网络中的蓝色分支,去预测衣服的关键点是否可见和位置。第二个阶段,根据在上一步预测的关键点位置,关键点池化层(landmark pooling layer)得到衣服的局部特征。第三个阶段,将“fc6 global”层的全局特征和“fc6 local”的局部特征拼接在一起组成“fc7_fusion”,作为最终的图像特征。FashionNet引入了四种损失函数,并采用一种迭代训练的方式去优化。这些损失分别为:回归损失对应于关键点定位,softmax损失对应于关键点是否可见和衣服类别,交叉熵损失函数对应属性预测和三元组损失函数对应于衣服之间的相似度学习。作者分别从衣服分类,属性预测和衣服搜索这三个方面,将FashionNet与其他方法相比较,都取得了明显更好的效果。

总结:当有足够多的有标注数据时,深度学习可以同时学习图像特征和度量函数。其背后的思想就是根据给定的度量函数,学习特征使得特征在该度量空间下具有最好的判别性。因此端到端的特征学习方法的主要研究方向就是如何构建更好的特征表示形式和损失函数形式。


公众号“素质云笔记”定期更新博客内容:

这里写图片描述

这篇关于DeepFashion︱衣物时尚元素关键点定位+时尚元素对齐技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/518505

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

Python中如何控制小数点精度与对齐方式

《Python中如何控制小数点精度与对齐方式》在Python编程中,数据输出格式化是一个常见的需求,尤其是在涉及到小数点精度和对齐方式时,下面小编就来为大家介绍一下如何在Python中实现这些功能吧... 目录一、控制小数点精度1. 使用 round() 函数2. 使用字符串格式化二、控制对齐方式1. 使用

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W