首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >FashionAI 天池竞赛 - Top5 技术方案简汇

FashionAI 天池竞赛 - Top5 技术方案简汇

作者头像
AIHGF
发布于 2019-02-27 09:54:36
发布于 2019-02-27 09:54:36
1.7K0
举报
文章被收录于专栏:AIUAIAIUAI

原文:FashionAI 天池竞赛 - Top5 技术方案简汇 - AIUAI

主页:http://fashionai.alibaba.com/ 服饰属性标签识别 - Top5-PPT

阿里天池关于服装属性标签识别的竞赛的 Top5 团队的技术方案 PPT 汇总. 可以在竞赛主页观看技术方案的答辩视频.

1. 禾思众成团队

2. JUST GAN 团队

3. 小飞猪团队

在开始我们的展示之前,首先想先问大家一个问题: 如何理解Fashion?其实每个人对fashion都有不同的理解和关注点。因此阿里巴巴在本次竞赛中提供了丰富的数据,从Attributes Recognition 角度去理解Fashion。

数据集照片的属性标签可以分为两大类:长度估计,款式设计 长度估计包括:衣长,裤长,裙长,袖长 款式设计包括:领口,领线 带观众了解一下数据集,数据集又分为两大类,一类是长度估计,包括衣长、裙长、裤长、袖长;另一类是款式设计,大多关注领口的款式,比如V领圆领等。 总的来说,数据集大概有18万的训练图片,可以分为8大类,54小类。

(看几个例子)数据集中有两类图片,一类是模特图,一类是平铺图。左边是两个比较容易的图片(不需要解释为什么容易),右边是一些比较难的图片,他们有遮挡、剪切、多个人、姿势变形、小尺度、旋转等方面的问题.

下面,我向大家介绍一下我们这次提出的解决方案

我们的方案非常直观,分为两个模块,第一个是Detection,第二个是Recognition.

具体的网络框架可以看这幅图,左边是Detection的过程,对输入的图片进行处理,找到图片最重点的区域,右边是recognition,检测到图片区域会经过两个深度卷积神经网络,得到最终的结果。下面我们将对这些模块一一具体讲解。

首先,为什么我们要做detection。大家可以想象一下,不管我们的分类长度估计也好,款式设计也好,首先我们应该做的,是把这件衣服找出来。而detection就能帮助我们完成这件事情,让我们把注意力集中到图片中最关键的区域,这样就可以避免位置和尺度不一带来的干扰。其次是假如图片中有多个人或多件衣服,detection也是可以搞定的,有多少件给你识别多少件出来,这样的情况在生活中是非常常见的.

这是我们detection的整个pipeline,可以分为四步。首先,当然是检测出衣服所在的位置在哪啦(强调“当然是”),然后再经过后面的放大,填充以及数据增强操作.

我们怎么做detection呢。我们采用的是Faster R-CNN, ROIAlign和YOLOv2作为我们的detector,它们都是在学术界非常state-of-the-art的方法,也在一些成熟的产品项目中有应用.

检测出框之后,我们会利用框周围的context信息对原来的框进行补充。好这里问题来了,为什么我们要用context信息呢? 大家可以想象一下,比如对于裙子来说,我们人的腿是不是一个非常有用的参考信息,比如我看到了膝盖,可能就是短裙,我看到脚踝,可能就是长裙。因此,这个context上下文信息是可以引入一些挺有用的参考信息的,对分类也是有帮助的。其次,加context信息可以把一些漏检的区域给补回来,有效地减少缺胳膊少腿的情况. 好,现在问题又来了,怎么设定这个padding的大小呢?这里我们要引入学术圈非常常用的两个数字,一个是512,另一个是448,在训练模型的时候,512 random crop 448是一个非常广泛使用的setting,我们在之后的训练中也用到了。所以,怎么让这个random crop,无论怎么random,都能框住检测的核心区域呢?答案就是,将核心区域的大小缩放到384,这样就能保证,检测核心区域能够永远被框中.

Detection部分的亮点就是这样,下面我将介绍我们的分类模型。我们的base分类模型采用的是DPN和NASNet,其中DPN是imagenet2017 物体定位的冠军,性能非常强大,而NASNet就更有意思了,它是google最近搞出来的,用神经网络生成出来的神经网络。非常推荐去阅读这两篇paper了解更多有意思的细节.

数据集难点。其实在这个task中,有一个提到的难点,这个数据集中有两类的图片,一类是模特图,一类是平铺图。从我们人的直观感受来看,假如衣服穿在人身上,我们人就是一把活的尺子,可以用来丈量衣服的长度,而对于平铺图,就只能通过一些比例,比如长宽比啊去估算了。我们统计了一下数据集的一个分布,发现了一个有趣的事情,在长度估计的类别中,模特图平铺图的比例大概是一半一半,而领口款式设计类的图片全是模特图。我们接下来提出的方案是针对图片有人没人这个特点的,因此只对四个长度类进行设计。

这个是最原始的分类网络,输入图片,输出label。

我们在此基础上,引入了multi task training 的概念,用另一个分支去预测输入图片是模特图还是平铺图,两个分支同时优化整个网络。这样做有什么好处呢?这个好处是体现在分类之前的这个feature F身上的. 原本的 F 只有区分label的能力,网络需要去学习模特图和平铺图之间的共同点,这样是比较困难的;现在F同时具有了判别模特图平铺图的能力,这样在最后一个隐空间学习的时候,能从两个不同的角度去拟合label,这两个角度都是学习同种图片类内的共同点,所以会比较简单。

首先,不知道大家注意到没有,不同长度之间,实际是有一种包含递增的关系的. 像长裙可能有这么多布料,长裙包含这么多布料,它当然包括短裙需要的布料长度. 我们可以利用这种类别与类别之间的递增关系。 另外,如果一个短裙被误判成了这种中长裙,错得不多,但如果预测成了长裙,那错得就很离谱了,显然,错得越离谱需要给更多的惩罚。结合刚刚说到的两点,我们提出了这种 incremental label 的表达方式。 具体是这样的。最原始的label,第一位是1代表第一类,第三位是1代表第三位;可能也有其他人注意到这点,稍微改进成了这种soft label的方式,让ground truth周围的类不会有太大的惩罚;而我们提出的incremental label是这样,一个1代表第一类,三个1代表第三类,六个1代表第六类,用1的数量来表示长度。我们通过实验也发现,这种方式的设计可以大大提升准确率。

下面我们展示一些我们在比赛过程中做的一些不同维度的对比实验

首先这个是我们在本地验证集上的实验结果,我们对比了在所有类别上用原图,加了detection以及加了模特平铺图分支分别的实验结果,可以看到,加了detection对准确率和map的提升非常大,而加了模特平铺图分支之后又能进一步提升.

这个是我们在衣长这个类别上,对比了我们几种创新方案的实验,可以incremental label和soft label的准确率提升都非常大,但map指标反而下降,因此最终我们没有采用这两种方案,用的还是模特平铺图这种在准确率和map都有提升的方案

接下来我带大家做一下性能分析。首先我先解释几个概念,在预测的时候,为了提高分数,我们使用了multi crop testing,具体操作是 : 1crop指的是原图,2crop指的是原图和翻转,5crop指的是对原图进行五种尺度的裁剪,10crop是五种尺度裁剪以及镜像。

下面这个是我们模型的运行效率,推荐大家从下往上看。

最后,总结一下提出的方案.

首先,Detection能够大大地提升准确率,而且它在更加复杂的场景,比如多个物体,或者物体不在图片中心之类的情况,都能够适用,在实际产品中非常具有应用价值;

其次,适当的multi task training可以增强feature的表达能力,在一些具有层级结构label的分类任务中能够起到作用,比如说动植物里面界门纲目科属种的分类就可以这么用;

第三,incremental label的这种表达形式对于具有递增形式label的分类任务是非常有作用的,比如年龄,长度,体积等等

性能分析,上面是在detector和classifier中用的分辨率,检测器速度 下面是分类器速度,当我用用大batch size的时候,由于GPU做了并行优化,可以发现速度明显加快

Invisible是一个特殊的类,它跟其他长度的类或者设计的类没有共性,放在一起会加大网络学习的难度。我们将这个task提前,让模型在前面先判断是否visible,如果是visible的,后面再进行label预测,这样就不会让invisible的图片干扰到label的学习.

这个是novel trail的实验结果,可以看到 incremental label,soft label, invisible的准确率都有提升,但是map降了,所以我们最终的方案并没有采用.

4. BUPT_OVERFITED 团队

5. SIAT-MMLAB-VIP 团队

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年01月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
过滤器Filter精华知识点,怎能不看 ​
过滤器Filter 1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的。 当用户请求某个Servlet时,会先执行部署在这个请求
Java帮帮
2018/03/19
9870
过滤器Filter精华知识点,怎能不看 ​
代码审计 | Java Web 过滤器 - filter
filter 被称为过滤器,是 Servlet 2.3 新增的一个特性,同时也是 Serlvet 技术中最实用的技术。
TeamsSix
2022/09/20
4920
代码审计 | Java Web 过滤器 - filter
Listener监听器和Filter过滤器
1、Listener监听器它是JavaWeb的三大组件1之一。JavaWeb的三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。 2、Listener它是JavaEE的规范,就是接口。 3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。
技术交流
2022/11/18
3840
Listener监听器和Filter过滤器
Java框架中常见的几个过滤器——JSP、Spring Boot、Servlet过滤器、Struts2拦截器
JSP过滤器是在JSP页面生成之前或之后执行的一种过滤器,它可以对请求进行拦截、处理和转发,还可以对响应进行修改和过滤。使用JSP过滤器可以实现很多功能,例如字符编码转换、登录验证、请求日志记录等。
秋名山码神
2023/10/16
7010
Java框架中常见的几个过滤器——JSP、Spring Boot、Servlet过滤器、Struts2拦截器
Java Web从入门到"改行"(3)--过滤器Filter
过滤器顾名思义就是位于中间层起到过滤作用的,用于拦截请求或响应信息。过滤器 (Filter)技术是在Servlet2.3新增的功能,过滤器并不是Servlet,而是位于请求与响应中间起过滤作用的程序。 Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说,就是可以实现web容器对某资源的访问前截获进行相关的处理,还可以在某资源向web容器返回响应前进行截获进行处理。
流川枫
2018/09/12
8120
Java Web从入门到"改行"(3)--过滤器Filter
Servlet-过滤器入门
Servlet 过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 1. 在客户端的请求访问后端资源之前,拦截这些请求。 2. 在服务器的响应发送回客户端之前,处理这些响应。
用户2146693
2019/08/08
3920
Servlet-过滤器入门
Servlet总结四(过滤器)
文章目录 1. Servlet总结四(过滤器的使用) 1.1. 简介 1.2. 过滤器的实现 1.2.1. 重点 1.2.2. 简单的例子 1.2.3. 过滤器的设置 1.2.3.1. 注意 1.2.4. 初始参数的设置和获取 1.2.4.1. 设置初始值 1.2.4.2. 获取初始参数的值 1.2.5. 设置触发的时机 Servlet总结四(过滤器的使用) 简介 在容器调用Servlet的service()的方法钱,Servlet其实并不会知道有请求的到来,而在service()方法执行后,容器真正
爱撒谎的男孩
2019/12/31
4180
拦截过滤器
J2EE核心模式(第二版)中这样写道:使用拦截过滤器,作为一个可插拔式的过滤器,实现请求、响应的预处理和后处理。另有一个过滤器管理器,负责把各个处于松耦合关系的过滤器结合成一个链,并把控制依次委派给合适的过滤器。这样一来,不必改动现有代码就可能以各种方式加入、删除、合并这些过滤器。
源哥
2018/08/28
4950
Java 中的 Filter 过滤器详解
Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Java团长
2018/07/23
1.9K0
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
上一篇主要介绍了Spring Secuirty中的过滤器链SecurityFilterChain是如何配置的,那么在配置完成之后,SecurityFilterChain是如何在应用程序中调用各个Filter,从而起到安全防护的作用,本文主要围绕SecurityFilterChain的工作原理做详细的介绍。
fullstackyang
2024/06/02
5660
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
java过滤器Filter「建议收藏」
Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断如是否有权限访问页面等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应 (Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。它是随你的 web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁,以下通过代码示例来了解它 的使用。
全栈程序员站长
2022/06/27
5750
Web阶段:第十八章:Filter过滤器
Filter,什么是过滤器? 1.Filter过滤器是javaWeb的三大组件之一, 2.三大组件分别是:Servlet程序,Filter过滤器,Listener监听器。 3.Filter是接口。 4.Filter的作用是:拦截请求,过滤响应。
Java廖志伟
2022/09/28
1920
Web阶段:第十八章:Filter过滤器
[javaweb]Java过滤器与包装设计模式的实用案例.
在filter中可以得到代表用户请求和响应的request、response对象,因此在编程中可以使用Decorator(装饰器)模式对request、response对象进行包装,再把包装对象传给目标资源,从而实现一些特殊需求。 一、Decorator设计模式 1.1、Decorator设计模式介绍   当某个对象的方法不适应业务需求时,通常有2种方式可以对方法进行增强: 编写子类,覆盖需增强的方法。 使用Decorator设计模式对方法进行增强。   在阎宏博士的《JAVA与模式》一书中开头是这样描述装
一枝花算不算浪漫
2018/05/18
1.1K0
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
以前我们设置servlet的request和response的编码需要在每个servlet都设置,如果Servlet很多,显得很麻烦,现在我们可以用过滤器很简单的实现这个功能。 还有页面缓存,如果我们的网页是静态的,图片和内容基本上很少变化或者不变化的,我们就可以告诉客户端这个页面你缓存多久~以达到节省流量的目的。
谙忆
2021/01/21
4900
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
java过滤器怎么使用(过滤器滤纸怎么配置)
过滤器的作用:用于过滤请求,在请求发出前后,做一些检查或操作,配置及使用步骤如下:
全栈程序员站长
2022/07/28
1.3K0
java过滤器怎么使用(过滤器滤纸怎么配置)
Java Web Servlet过滤器
  过滤器就是可以对浏览器向jsp,servlet,html等这些web资源发出请求和
Hongten
2018/09/13
7170
Servlet过滤器,Servlet过滤器创建和配置
第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法。        第一方法是过滤器中的init()方法用
别先生
2017/12/29
1K0
Servlet过滤器,Servlet过滤器创建和配置
Servlet 过滤器和异常处理
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。调用 Servlet 前调用所有附加的 Servlet 过滤器。
Carlos Ouyang
2019/08/19
1.2K0
Servlet 过滤器和异常处理
javaee的OA项目(六)过滤器的使用,解决中文乱码的过滤器和使用过滤器实现拦截判断
A、目前使用的baseServlet的优点就是方便可以进行乱码的统一的处理,但是如果我们以后不使用servlet,那么我们在进行中文乱码处理的时候就需要在每一个servlet 中去书写,但是比较麻烦。 B、在进行登陆拦截处理的时候,我们需要把拦截的代码在每一个页面中重复的书写,这样,就会变的非常的麻烦。
一写代码就开心
2021/06/17
1K0
javaee的OA项目(六)过滤器的使用,解决中文乱码的过滤器和使用过滤器实现拦截判断
使用过滤器解决中文乱码问题
在Web.xml文件中,配置过滤器,其过滤器的URL映射可以使用正则表达式进行配置,如实例中使用“/*”来匹配所有请求。
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.5K0
推荐阅读
相关推荐
过滤器Filter精华知识点,怎能不看 ​
更多 >
LV.0
这个人很懒,什么都没有留下~
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档