PMG:基于渐进式多粒度拼图块训练的细粒度视觉分类——【ECCV_2020_论文学习】


Fine-Grained Visual Classification via Progressive Multi-Granularity Training of Jigsaw Patches


8_ECCV_2020_基于渐进式多粒度拼图块训练的细粒度视觉分类

源码链接

推荐查阅:

Backbone : VGG-16 | ResNet50 【 有源码、思路不错】
创新思路: 拼图 + 多尺度(粒度) + 渐进式训练

9-8

该网络的优势:

1:新颖的训练策略:渐进式的方式融合多粒度特征
2:一个简洁的拼图生成器:生成包含不同粒度等级信息的图像
3:端到端的网络,只需分类标签即可训练,属于弱监督方法
4:测试时,一个网络推理一次即可(易于推理部署)
5:在当前取得了SOAT的性能

  • 该论文思路创新,所参考的 主要 Paper 如下
  • 【渐进式策略】 Progressive growing of gans for improved quality, stability, and variation. arXiv preprint arXiv:1710.10196 (2017)
  • 【拼图网络】Iterative reorganization with weak spatial constraints: Solving arbitrary jigsaw puzzles for unsupervised representation learning. In: CVPR (2019)
  • DCL: Destruction and construction learning for fine-grained image recognition. In: CVPR (2019)

adopting the jigsaw puzzle solution as the initialization to a weakly-supervised network

摘要

由于类内对象本身的细微变化,细粒度视觉分类(FGVC)比传统的分类任务更具挑战性。最近的工作主要通过关注如何定位最具辨别力的部分、更多互补部分和各种粒度的部分来解决这个问题。然而,对于哪些粒度最具区分性,以及如何跨多粒度融合信息,所做的工作较少。在这项工作中,我们提出了一种新的细粒度视觉分类框架来解决这些问题。特别地,我们提出:(i)一种新的渐进式训练策略,该策略在每个训练步骤中添加新的层,以利用在最后一步和前一阶段发现的较小粒度信息。(ii)一个简单的拼图生成器,用于形成包含不同粒度级别信息的图像。我们在几个标准FGVC基准数据集上获得了最先进的性能,其中提出的方法始终优于现有方法或提供有竞争力的结果。

关键词:细粒度视觉分类、渐进式训练、多粒度、拼图

1 Introduction

细粒度视觉分类(FGVC)旨在识别给定对象类别的子类,例如不同种类的鸟类以及汽车和飞机模型。这是一个比传统分类更具挑战性的问题,因为子类别之间存在本质上微妙的类内对象变化。 迄今为止,最有效的解决方案依赖于通过显式检测语义部分[11,38,35,12,36]或隐式显著性定位[31,10,4,24],在局部可鉴别区域提取细粒度特征表示。因此,此类局部鉴别特征被集体融合以执行最终分类。

早期的工作主要是在手动标注的帮助下发现区分区域[2,21,34,37,16]。然而,人工标注很难获得,并且往往容易出错,导致性能下降[38]。因此,研究重点已转移到仅给出类别标签的弱监督训练模型上[38,35,31,4]。这些模型背后的成功在很大程度上归功于能够定位更具辨别力的局部区域进行下游分类。然而,对于(i)哪些粒度是这些局部区域中最具辨别力的,例如鸟的头部或喙,以及(ii)如何将不同粒度的信息融合在一起以达到分类精度,例如头部和喙可以一起工作,很少或几乎没有做过任何推进。

然而,跨各种粒度的信息有助于避免大的类内变化的影响。例如,专家有时需要利用鸟头的整体结构和鸟喙形状等更精细的细节来识别鸟。也就是说,仅仅识别有区别的部分往往是不够的,还不足以确定这些部分之间如何以互补的方式相互作用。最近的研究集中于“放大”因素[11,36],即不仅识别零件,还关注每个零件内真正有区别的区域(例如,喙,而不是头部)。然而,这些方法大多只关注少数几个部分,而忽略了其他部分,因为它们的放大程度超出了简单的融合。更重要的是,他们没有考虑如何以协同方式将不同放大部分的特征融合在一起。与这些方法不同的是,我们进一步认为,不仅需要识别部件及其最具辨别力的粒度,还需要同时识别不同粒度的部件如何有效合并。

Main contributions of this paper can be summarized as follows:

  1. 我们提出了一种新的渐进式训练策略来解决细粒度分类问题。它在不同的训练步骤中运行,并在每个步骤中融合来自先前粒度级别的数据,最终 获得 跨不同粒度的内在互补属性,以进行细粒度特征学习。
  2. We adapt a simple yet effective jigsaw puzzle(拼图) generator to form different levels of granularity. This allows the network to focus on different “scales” of features as per prior work.
  3. The proposed Progressive Multi-Granularity (PMG) training framework obtains state-of-the-art or competitive performances on all three standard FGVC benchmark datasets.

3-1

Fig. 1.(上图) Illustration of features learned by general methods (a and b) and our proposed method (c and d). ( 通用方法 和 我们提出方法的对比 )

  • (a) Traditional convolution neural networks trained with cross entropy (CE) loss tend to find the most discriminative parts. ( 传统方法:试图找到最具有可判别性的区域)
  • (b) Other state-of-the-art methods focus on how to find more discriminative parts. ( 别的先进方法关注于:如何找到更多 可判别特征区域 )
  • ( c ) Our proposed progressive training (Here we use last three stages for explanation.) gradually locates discriminative information from low stages to deep stage. And features extracted from all trained stages are concatenated together to ensure complementary relationships are fully explored, which is represented by “Stage Concat.” (我们提出 —— 渐进式训练,从 low stages to deep stage 逐步定位可判别信息,对所有阶段提取到的特征 concatenated together 确保 互补信息能够充分挖掘到 )
  • (d) With assistance of jigsaw puzzle generator the granularity of parts learned at each step are restricted inside patches.( 通过 jigsaw puzzle generator 【拼图生成器】来限制每个阶段的学习粒度 )

2 Related Work

2.1 Fine-Grained Classification

3-2

3-3

来自不同部分的融合特征仍然是一个挑战性的问题,但很少有人对此做出努力。在这项工作中,我们试图基于细粒度对象的固有特性来解决这个问题:尽管类内变化很大,但细微的细节显示出局部区域的稳定性。因此,我们引导网络从小粒度到大粒度逐步学习特征,而不是首先定位区分性特征。(上面一段的翻译)

2.2 Image Splitting Operation

在以前的工作中,将图像分割为大小相同的片段已用于各种目标。其中,一个典型的解决方案是解决 jigsaw puzzle [6,29] 。它还可以进一步采用拼图解决方案作为弱监督网络的初始化,从而获得更好的转换性能【33】。 该方法有助于网络利用图像的空间关系。In one-shot learning,使用图像分割操作进行增强,分割两幅图像,交换其中的一些补丁,生成新的训练补丁。在最近的研究中,DCL[4] 首先对FGVC采用图像分割操作,通过破坏全局结构来强调局部细节,并重建图像来学习局部区域之间的语义关联。然而,它在整个训练过程中分割相同大小的图像,这意味着很难利用多粒度区域。在这项工作中,我们使用一个拼图生成器来限制每个训练步骤中学习区域的粒度。

2.3 Progressive Training

这里 Trick 的使用,就一定程度上体现,各个AI赛道,领域 Trick 交叉创新的特点

  • 例如本文的多粒度拼图,是否能够在 超分和修复(SISR & IR)领域产生意外惊喜(迁移成果)呢

3-4
3-5

3 Approach

3.1 Network Architecture
3.2 Progressive Training

我们采用渐进式训练,首先对低级阶段进行训练,然后逐步增加新的训练阶段。由于低阶的感受域和表征能力有限,网络将被迫首先利用来自局部细节(即对象纹理)的鉴别信息。与直接训练整个网络相比,当特征逐渐进入更高的阶段时,这种增量性质允许模型定位从局部细节到全局结构的可鉴别信息,而不是同时学习所有粒度。

3.3 Jigsaw Puzzle Generator【目的和好处】

3-8

使用 拼图生成器 给模型训练带来的好处

需要澄清的是,拼图生成器不能始终保证所有小于补丁( patch )大小的部件(parts)的完整性。虽然可能存在一些小于补丁大小的部分,但这些部分仍有分割开的机会。然而,对于模型训练来说,这应该不是一个坏消息,因为我们采用了随机裁剪,这是在拼图生成器之前的一种标准数据扩充策略,导致补丁与之前迭代的补丁不同。

由于拼图生成器,在本次迭代中分割的小的有区别的部分,在其他迭代中并不总是分割。因此,它带来了一个额外的优势,即迫使我们的模型在特定的粒度级别上找到更多有区别的部分。

3.4 Inference

推理时 只用 y_concat ,则可以把 其他三个阶段网络 FC 层 移除,可以降低 推理时的计算开销;

3-9

下面这段,我的理解是:当细粒度分类 针对一些相对平滑的数据分类,那么推理时 只用 y_concat 即可

在这里插入图片描述

4 Experiment Results and Discussion

每个大章节的引言,叙述各个小节的主要内容:

4-0

4.1 Implementation Details

4-1

4.2 Comparisons with State-of-the-Art Methods

这里主要关注四个有源码的方法

  • DCL、S3N、ACNET 、PMG ,其中可以看到,PMG 在三个数据集上的表现相对最好,( Stacked LSTM (CVPR19) [12] 指标高、没有找到源码 )

4-2

这里补充一个 CVPR2020 ACNET 的 Top-1 Acc. (%)

Method Base Model CUB (%) CAR (%) AIR (%)
ACNET VGG-16 87.8 94.3 91.5
ACNET ResNet-50 88.1 94.6 92.4
4.3 Ablation Study

这一块,结合代码、分析相关参数

4.4 Visualization

4-8

Figure 3 - 热力图,如下

a、b、c 是 本文所提网络 第 3、4、5 阶段特征的激活图,d、e、f 是 Resnet50 ( base model ) 激活图

9-6

5 Conclusions

本文将渐进式训练策略应用于细粒度分类任务中,提出了一种称为渐进式多粒度(PMG)训练的新框架,该框架包括两个主要部分:(i)一种以渐进方式融合多粒度特征的新训练策略,以及(ii)一个简单的拼图生成器,以形成包含不同粒度级别信息的图像。我们的方法可以端到端地进行训练,除了类别标签之外,无需其他手动注释,并且在测试期间只需要一个网络和一个传播。


📙 预祝各位 前途似锦、可摘星辰


  • 🎉 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
  • ❤️ 过去的每一天、想必你也都有努力、祝你披荆斩棘、未来可期

9-9

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 14:04:03       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 14:04:03       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 14:04:03       57 阅读
  4. Python语言-面向对象

    2024-07-11 14:04:03       68 阅读

热门阅读

  1. python的类变量和实例变量

    2024-07-11 14:04:03       23 阅读
  2. JDK-CompletableFuture

    2024-07-11 14:04:03       24 阅读
  3. Python 获取 SQL 指纹和 HASH 值

    2024-07-11 14:04:03       25 阅读
  4. 井字棋 AI-Python

    2024-07-11 14:04:03       24 阅读
  5. android解锁remount

    2024-07-11 14:04:03       27 阅读
  6. 洛谷 P3008 [USACO11JAN] Roads and Planes G

    2024-07-11 14:04:03       22 阅读
  7. 2.Spring的IOC容器里面加入对象的常见方式

    2024-07-11 14:04:03       24 阅读
  8. React基础学习-Day02

    2024-07-11 14:04:03       19 阅读
  9. MyClass.static_method() 加不加括号有什么区别

    2024-07-11 14:04:03       23 阅读
  10. AcWing 1633:外观数列

    2024-07-11 14:04:03       25 阅读