[CVPR 2021] Your “Flamingo“ is My “Bird“: Fine-Grained, or Not

Your “Flamingo” is My “Bird”

  • 对于如下图片,FGVC 的目标是让模型识别出 “flamingo”,但对于大部分业余爱好者而言,模型只需要将其分类为 “bird” 即可,不同的人群对 “细粒度” 的定义是不同的。为了满足具有不同专业知识的用户,作者修改了传统的 FGVC 设定,将其由单标签分类更改为了一个层次多粒度分类问题,例如对于如下图片,模型需要输出 “bird” ⇒ “Phoenicopteriformes” (order) ⇒ “Phoenicopteridae” (family) ⇒ “flamingo” (species)
    在这里插入图片描述
  • 为了验证多粒度分类的必要性,作者还招募了 50 个志愿者,基于 CUB-200-2011 鸟类数据集开展了一个 Human Study 来证明 (i) 现有 FGVC 模型输出的细粒度标签并不符合实际应用中人们对标签粒度的不同主观需求;(ii) 输出多粒度标签有助于满足不同人群的实际需求
    在这里插入图片描述

Method

Cooperation or Confrontation?

  • 层次多粒度分类模型可以看作是一个 multi-task 模型,因此作者首先设计了一个简单的实验来理解不同粒度的分类任务之间的相互作用关系。具体而言,作者给 CUB-200-2011 鸟类数据集中的每张图片都分配了 order 和 family 标签,训练时采用如下损失函数来进行 order 和 family 的层次多粒度分类任务:
    在这里插入图片描述其中, α , β \alpha,\beta α,β 用于控制粗细粒度分类任务的重要程度, y 1 , y 2 y^1,y^2 y1,y2 为 order 和 family 标签
  • 由图 (a) 可以看出,保持 α = 1 \alpha=1 α=1 并将 β \beta β 不断增大 (增大细粒度分类任务的重要程度),模型在粗粒度任务上的性能也得到了提升。由图 (b) 可以看出,保持 β = 1 \beta=1 β=1 并将 α \alpha α 不断增大 (增大粗粒度分类任务的重要程度),模型在细粒度任务上的性能有了下降。也就是说,粗粒度标签分类任务会损害细粒度标签分类任务的性能,但细粒度标签分类任务却有利于粗粒度标签分类任务
    在这里插入图片描述

Disentanglement and Reinforcement

  • 基于上述结论,作者提出了如下图所示模型,其中, x x x 为输入图像, F ( ⋅ ) \mathcal F(\cdot) F() 为 CNN backbone, f = F ( x ) f=\mathcal F(x) f=F(x) G 1 ( ⋅ ) , . . . , G K ( ⋅ ) \mathcal G_1(\cdot),...,\mathcal G_K(\cdot) G1(),...,GK() K K K 个分类器,用于输出 K K K 个不同粒度的预测结果 ( y ^ k = G k ( f k ) \hat y^k=G_k(f_k) y^k=Gk(fk)),每个分类器都采用交叉熵损失
    在这里插入图片描述
  • 为了缓解粗粒度预测任务对细粒度预测任务的消极影响,作者使用了 K K K 个不同的分类器来输出不同粒度的预测结果,并且将 f f f 分为 K K K 份,分别提供给 K K K 个分类器。为了让细粒度预测任务增强粗粒度预测任务的性能,作者让细粒度特征参与粗粒度预测任务。具体而言,对于 G k ( ⋅ ) \mathcal G_k(\cdot) Gk(),作者将 f k , f k + 1 , . . . , f K f_k,f_{k+1},...,f_K fk,fk+1,...,fK 进行连接作为分类器输入。为了避免粗粒度预测任务在反向传播时更新细粒度特征,作者限定细粒度特征参与粗粒度预测任务时不进行 BP
    在这里插入图片描述

Experiment

  • Datasets: 作者在 3 个常用的 FGVC 数据集上进行了实验,并通过追踪细粒度标签在 Wikipedia 网页上的父结点来为数据集中的图片构建标签层次。(i) 对于 CUB-200-2011 鸟类数据集,作者将数据集标签扩充为了 3 层的标签层次,包括 13 orders (e.g., “Passeriformes” and “Anseriformes”), 38 families (e.g., “Icteridae” and “Cardinalidae” ) and 200 species (e.g., “Brewer Blackbird” and “Red winged Black-bird”);(ii) 对于 FGVC-Aircraft 数据集,作者直接采用了数据集中的 3 层标签层次,包括 30 makers (e.g., “Boe-ing” and “Douglas Aircraft Company”), 70 families (e.g.,“ Boeing 767”,“ Boeing 777”), and 100 models (e.g., “767-200”, “767-300”);(iii) 对于 Stanford Cars 数据集,作者将数据集标签扩充为了 2 层的标签层次,包括 9 car types (e.g., “Cab” and “SUV”) and 196 specific models (e.g., “Cadillac Escalade EXT Crew Cab 2007” and “Chevrolet Avalanche Crew Cab 2012”)
  • 作者基于新构建的数据集开展了层次多粒度分类实验,backbone 采用 ResNet50,avg_acc 表示模型在不同粒度分类任务上的平均精度。Vanilla single: one single shared network backbone with multiple classification heads appended to the end;Vanilla multi: one independent network backbone for each label prediction;Ours single: 将作者提出的 Disentanglement 技巧用于 Vanilla single;Ours: 作者提出的完整模型;Ours MC, Ours NTS, Ours PMG:作者模型采用了不同的 SOTA FGVC 模型作为 backbone。结果表明,新模型性能好于所有 baseline 模型,并且其作为一种通用方法,当使用性能更强的 backbone 时性能还能进一步提升。并且注意到,Vanilla multi 在细粒度分类任务上表现很好,而粗粒度任务上表现不佳,这进一步说明了分解不同粒度的分类任务以及用细粒度分类任务增强粗粒度分类任务性能的重要性
    在这里插入图片描述
  • 作者在传统的 FGVC 设置下也进行了实验 (与上面的实验设置相比,仅仅是把分辨率设置为了 448 × 448 448\times448 448×448),通过使用 PMG 作为 backbone,新模型达到了新的 SOTA
    在这里插入图片描述
  • 作者最后还进行了一些可视化工作,就是利用 Grad-Cam 通过计算不同粒度的分类器损失在图像 x x x 上的梯度来可视化分类器关注的区域。可以看到,与 Vanilla Single 不同,作者提出的模型中,越细粒度的分类器关注的区域大小越小,这说明模型将不同粒度的分类任务进行了解耦
    在这里插入图片描述

Discussions

在这里插入图片描述

References

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值