论文笔记:Your “Flamingo” is My “Bird”: Fine-Grained, or Not

Your “Flamingo” is My “Bird”: Fine-Grained, or Not

2021 CVPR,这还是第一篇看到还有从人工研究实验到模型的论文

0 摘要

本文动机:在不同的专业水平下,如何为定制不同的细粒度定义。重新设想了FGVC的设置,从单标签分类到从上到下遍历预定义的从粗到精标签层次结构

  1. 进行了全面的人类研究,确认了大多数参与者都喜欢多粒度标签。

  2. 关键直觉:粗粒度标签的预测不利于细粒度特征学习,而细粒度特征有利于粗粒度分类。措施:

    1. 用特定级别的分类将粗粒度特征与细粒度特征分开
    2. 细粒度的特征可以参与粗粒度的标签预测
  3. 实验表明卓越的性能,比单标签FGV表现好。简单容易实施,无参数。

  4. code:https://github.com/PRIS-CV/Fine-Grained-or-Not

1 引言

本文没有刻意追求性能的提高,而是对粒度的基本原理,对细粒度分类本身的定义提出了疑问。用于目前数据集的细粒度专家级标签是否确实传达了最终的用户习惯。答案是主观的,而且和人的知识背景密切相关。那么,如何针对细粒度内容的主观定义,设计出最适合FGVC实际使用场景的系统?也就是“界门纲目科属种”,对于普通人来说,那个级别是最合适的。

  1. 招募志愿者进行研究。
  2. 根据结果扩展了细粒度视觉分类问题,从单标签分类问题扩展到层次结构上的多个标签预测问题。最容易的做法是在每个层级上都进行分类,尽管确实可以作为基准,但是并不能从标签的层次关系中受益。

两个关键观察:

  1. 粗粒度标签的预测不利于细粒度特征学习
  2. 细粒度特征有利于粗粒度分类

基于上述观察做出的举措:

  1. 使用了一个多任务学习框架,执行逐级特征分解,避免粗对细的不利影响。
  2. 在前向传播时,用细粒度特征通过特征级联参与粗粒度标签的分类。

本文贡献:

  1. 重新设想FGVC问题的设置,适应“细粒度”的主观定义。用从粗到细、从上到下的层次结构取代单标签分类。
  2. 发现了对内在的粗细层次关系的重要见解
  3. 通过将粗细粒度解耦,实现出色的性能

2 相关研究

FGVC

多任务学习MTL

多任务学习旨在利用任务之间的公共信息来提高模型的通用性。在深度学习中,通过设计和优化网络鼓励在多任务监督下共享表示形式。硬参数共享是将参数集划分为共享的和特定于任务的算子。软参数共享中,每个任务都有参数集,引入正则化来鼓励跨任务。

3 人为研究

数据

在CUB数据集上在种(specie)的基础上增加了两个标签:目(order)和科(family),每个图片就有了三个标签,从粗到细依次是:目->科->种。

参与者

200名年龄、性别和教育水平不同的参与者进行了初始测试,以了解他们对鸟类的熟悉程度,存在“长尾”分布。因此,抽取了50位参与者,专业知识遵循高斯分布,将他们分为5个组([第1组,第2组,…,第5组]),组别越大,知识越多。

实验设置

  1. 第一个问题:从不同级别的标签中选择最合适的一个(或者都不合适,直接跳过问题2到下一张图)
  2. 第二个问题:你是否觉得多于一个标签更合适。

实验结果

问题一的结果:

image-20210524210403725

问题二的实验结果:

image-20210524211216069
  1. 无论在第一阶段选择什么标签(“无”除外),大多数参与者都会选择多个标签
  2. 对于单一标签,知识更多的人倾向于选择更细粒度,知识少的人倾向于选择更粗粒度
  3. 不管知识的差距,在多个标签下的选择已经大大收敛

4 方法

image-20210524212945214 image-20210524212811859

4.1 多粒度标签联合学习

设置层次结构为2,训练时通过引入超参数来控制每个任务的相对重要性:
α L C E ( y ^ 1 , y 1 ) + β L C E ( y ^ 2 , y 2 ) \alpha L_{CE}(\hat{y}^1,y^1) + \beta L_{CE}(\hat{y}^2,y^2) αLCE(y^1,y1)+βLCE(y^2,y2)
α \alpha α较大时,主要训练粗粒度分类器, β \beta β较大时,主要训练细粒度分类器。

image-20210524214039563

结论:粗标签预测损害细粒度特征学习,细粒度特征有利于粗分类器

4.2 解耦和加强

两方面考虑:

  1. 为了限制不同粒度的标签预测之间的负传递,通过构造特定粒度的分类头来明确区分决策空间
  2. 通过允许细粒度特征参与粗粒度标签预测,利用梯度来实现更好的分离,来实现正向转移的潜力。

具体做法:

  1. 先将 f f f分为 K K K个相等的部分,每个部分代表了负责一个分类器 G k ( ) G_k() Gk()的特征 f k f_k fk

  2. 为了允许更细粒度的特征共同预测粗粒度标签 y k y^k yk,我们将特征 f k f_k fk与所有其他更细粒度特征串联起来作为分类器 G k G_k Gk的输入。

  3. 引入梯度控制器 Γ ( ) \Gamma() Γ(),在反向传播阶段,只沿着其自身的特征维度传播一个分类器的梯度流:
    y ^ k = G k ( C O N C A T ( f k , Γ ( f k + 1 ) , . . . , Γ ( f K ) ) ) \hat{y}^k=G_k(CONCAT(f_k,\Gamma(f_{k+1}),...,\Gamma(f_{K}))) y^k=Gk(CONCAT(fk,Γ(fk+1),...,Γ(fK)))

5 实验、结果和分析

数据集构造:

数据集层次
CUB3
FGVC-Aircraft3
Stanford Cars2

基线:

模型说明
Vanilla single一个主干网络,多个分类器
Vanilla multi每个分类各有一个主干网络
Ours singleVanilla single基础上,将f分割成与分类器数相等的段数,每个段独立地负责一个粒度的分类
Ours加上增强
Ours MC、Ours NTS、Ours PMG

实验结果:

image-20210524220147435

  1. 模型在解决带有多粒度标签输出的FGVC问题有效。不仅能轻松插入现有模型,而且不会破坏其原始功能
  2. 解耦模块确认了标签粒度之间特征缠结的严重性,增强模块可以有效地提高粗粒度下的分类性能
  3. 进一步进行模型可视化。不同层次的分类器参与了不同比例的视觉区域。

image-20210524221115241

标签层次:

Ours_HC、Ours_DFT分别用两种聚类方法自动构造层次标签。

  1. 手动层次结构性能最佳,这表明在语义上定义的父子关系倾向于鼓励交叉粒度信息的改变
  2. 传统的FGVC问题受益于多粒度标签设置,无论使用哪种标签层次

6 讨论

  1. MTL之外:通过元学习(meta learning),将其视为一系列针对多个学习情境而优化的相关任务,而不是一次学习多粒度标签预测任务。
  2. 从分类到检索:分类局限性:固定的标签数目使其很难应用到某些现实场景中。但是,通过将图像投影到一个通用的嵌入空间中,不仅灵活,而且还可能放松粒度解释方法进入模型设计的过程。
  3. 重新思考预训练:预训练会导致与FGVC任务潜在不匹配的代价。本文提出粗略的特征学习最好与细粒度的特征学习分开。

7 结论

  1. 重新设想了细粒度视觉分类的问题,从常规的单标签输出设置到粗粒度多粒度标签预测。重要的是如何探索跨粒度的正向信息交换
  2. 设计了一个简单有效的方案,实验验证了方法的有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值