Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Servlet-过滤器入门
Servlet 过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的: 1. 在客户端的请求访问后端资源之前,拦截这些请求。 2. 在服务器的响应发送回客户端之前,处理这些响应。
用户2146693
2019/08/08
4020
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
4270
Servlet过滤器,Servlet过滤器创建和配置
第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法。        第一方法是过滤器中的init()方法用
别先生
2017/12/29
1.1K0
Servlet过滤器,Servlet过滤器创建和配置
Filter过滤器
过滤器 过滤器(Filter)是J2EE Servlet模块下的组件,作用是对URI进行统一拦截处理。Filter通常用于应用程序层面进行请求的前置处理 过滤链 Filter开发 开发过滤器三要素: 任何过滤器都要实现 javax.servlet.Filter 接口 在Filter接口的doFilter()方法中编写过滤器的功能代码 public class FirstFilter implements Filter { /** * 初始化 * * @param f
Breeze.
2022/07/12
5600
Filter过滤器
javaee的OA项目(六)过滤器的使用,解决中文乱码的过滤器和使用过滤器实现拦截判断
A、目前使用的baseServlet的优点就是方便可以进行乱码的统一的处理,但是如果我们以后不使用servlet,那么我们在进行中文乱码处理的时候就需要在每一个servlet 中去书写,但是比较麻烦。 B、在进行登陆拦截处理的时候,我们需要把拦截的代码在每一个页面中重复的书写,这样,就会变的非常的麻烦。
一写代码就开心
2021/06/17
1.1K0
javaee的OA项目(六)过滤器的使用,解决中文乱码的过滤器和使用过滤器实现拦截判断
Java Web Servlet过滤器
  过滤器就是可以对浏览器向jsp,servlet,html等这些web资源发出请求和
Hongten
2018/09/13
7400
Filter 过滤器
1、Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 2、Filter 过滤器它是 JavaEE 的规范。也就是接口 3、Filter 过滤器它的作用是: 拦截请求,过滤响应。 拦截请求常见的应用场景有: 1、权限检查 2、日记操作 3、事务管理 ……等等
愷龍
2022/10/04
8290
Filter 过滤器
Java 中的 Filter 过滤器详解
Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。
Java团长
2018/07/23
1.9K0
java过滤器怎么使用(过滤器滤纸怎么配置)
过滤器的作用:用于过滤请求,在请求发出前后,做一些检查或操作,配置及使用步骤如下:
全栈程序员站长
2022/07/28
1.3K0
java过滤器怎么使用(过滤器滤纸怎么配置)
Java框架中常见的几个过滤器——JSP、Spring Boot、Servlet过滤器、Struts2拦截器
JSP过滤器是在JSP页面生成之前或之后执行的一种过滤器,它可以对请求进行拦截、处理和转发,还可以对响应进行修改和过滤。使用JSP过滤器可以实现很多功能,例如字符编码转换、登录验证、请求日志记录等。
秋名山码神
2023/10/16
7420
Java框架中常见的几个过滤器——JSP、Spring Boot、Servlet过滤器、Struts2拦截器
Servlet 过滤器和异常处理
Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet。Servlet 过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。调用 Servlet 前调用所有附加的 Servlet 过滤器。
Carlos Ouyang
2019/08/19
1.2K0
Servlet 过滤器和异常处理
Javaweb核心之servlet规范过滤器-----Filter
过滤器——Filter,它是JavaWeb三大组件之一。另外两个是Servlet和Listener。
楠羽
2022/11/18
4630
Javaweb核心之servlet规范过滤器-----Filter
Filter过滤器
1、Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
一个风轻云淡
2022/11/15
3570
Filter过滤器
代码审计 | Java Web 过滤器 - filter
filter 被称为过滤器,是 Servlet 2.3 新增的一个特性,同时也是 Serlvet 技术中最实用的技术。
TeamsSix
2022/09/20
5140
代码审计 | Java Web 过滤器 - filter
Servlet与过滤器
Server+Applet,是一种服务器端的Java应用程序 只有当一个服务器端的程序使用了Servlet API的时候,这个服务端的程序才能称之为Servlet
xiaozhangStu
2023/05/04
3070
五分钟急速上手过滤器监听器实战
    Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器。
上分如喝水
2021/08/16
2790
五分钟急速上手过滤器监听器实战
Listener监听器和Filter过滤器
1、Listener监听器它是JavaWeb的三大组件1之一。JavaWeb的三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。 2、Listener它是JavaEE的规范,就是接口。 3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。
技术交流
2022/11/18
3960
Listener监听器和Filter过滤器
JavaWeb(五)Filter过滤器
Filter过滤器 Fileter介绍 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能 Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过F
二十三年蝉
2018/02/28
1.2K0
JavaWeb(五)Filter过滤器
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
上一篇主要介绍了Spring Secuirty中的过滤器链SecurityFilterChain是如何配置的,那么在配置完成之后,SecurityFilterChain是如何在应用程序中调用各个Filter,从而起到安全防护的作用,本文主要围绕SecurityFilterChain的工作原理做详细的介绍。
fullstackyang
2024/06/02
6130
Spring Security 6.x 过滤器链SecurityFilterChain是如何工作的
实现Struts2中对未登录的jsp页面进行拦截功能(采用的是Struts2中过滤器进行过滤拦截)
Struts2中拦截器大家都很经常使用,但是拦截器只能拦截action不能拦截jsp页面。这个时候就有点尴尬了,按道理来说没登录的用户只能看login界面不能够通过输入URL进行界面跳转,这显然是不合理的。这里介绍Struts2中Filter实现jsp页面拦截的功能。(有兴趣的人可以去研究Filter过滤器的其它用法,因为利用过滤器也可以实现action拦截的功能)
林老师带你学编程
2022/11/30
1.2K0
推荐阅读
相关推荐
Servlet-过滤器入门
更多 >
LV.1
这个人很懒,什么都没有留下~
交个朋友
加入[腾讯云] DeepSeek开发者交流群
前沿技术深度讨论 发展开发者人脉圈
加入腾讯云技术交流站
洞悉AI新动向 Get大咖技术交流群
加入AICoding云开发技术交流群
智能编码实践分享 聚焦AI+云开发
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档