代码 https://github.com/yangze0930/NTS-Net
- Learning to Navigate for Fine-grained Classification
- Abstract
细粒度分类由于难以找到有区分度的特征而具有很大的挑战性. 要找到这些微妙的特征来完全描述物体并不是一件简单的事. 针对这种情况, 我们提出了一种新的自我监督机制, 在不需要限定 bounding box/part 标注的情况下, 有效地定位信息区域. 我们的模型被称为 NTS.NET 的 Navigator-Teacher-Scrutinizer 网络, 由 Navigator agent,Teacher agent 和 Scrutinizer agent 组成. 考虑到区域的信息量与为 ground truth 类的概率之间的内在一致性, 我们设计了一种新的训练范式, 使 Navigator 能够在 Teacher 的指导下检测出信息量最大的区域. 然后, 仔细检查 Navigator 推荐的区域并做出预测. 我们的模型可以看作是一个多 agent 的合作, agent 之间相互受益, 共同进步. NTS.NET 可以端到端的训练, 同时在推理过程中提供精确的细粒度分类预测以及高信息量的区域. 我们在广泛的基准数据集上实现了最先进的性能.
1 Introduction
细粒度分类的目的是区分一个普通类的从属类, 例如区分野鸟种类, 汽车型号等. 这些从属类通常由领域专家用复杂的规则定义, 这些规则通常关注特定区域的细微差异. 虽然深度学习推动了许多计算机视觉任务的研究[24,38,33], 但其在细粒度分类中的应用或多或少不尽人意, 这在很大程度上是由于难以找到信息区域并从中提取有区分度的特征. 对于像鸟一样摆出各种姿势的从属类来说, 情况更糟.
因此, 细粒度分类的关键在于开发自动方法来准确地识别图像中的信息区域. 之前的一些研究 [45,8,3,46,13,2,29] 利用了细粒度的人工标注, 如鸟类分类中的鸟类 parts 标注. 虽然获得了不错的结果, 但它们所需的细粒度人工注释代价高昂, 使得这些方法在实践中不太适用. 其他方法 [49,47,48,43] 采用无监督学习方案来定位信息区域. 它们消除了对昂贵注释的需要, 但缺乏一种机制来保证模型关注正确的区域, 这通常会导致准确性下降.
在本文中, 我们提出了一种新的自监督机制来有效地定位信息区域, 而不需要细粒度的 bounding-box/part 标注. 我们所开发的模型, 即我们称之为 NTS.NET 的 Navigator-Teacher-Scrutinizer 网络, 采用多 agent 合作学习方案来解决准确识别图像中的信息区域的问题. 从直观上看, 被分配为 ground-truth 类的概率较高的区域应该包含更多的对象特征语义, 从而提高整个图像的分类性能. 因此, 我们设计了一种新的损失函数来优化所选区域的信息量, 使其具有与 ground truth 类的概率相同的次序, 并以全图像的 ground turth 类作为区域的 ground turth 类.
具体来说, 我们的 NTS.NET 由一个 Navigator agent, 一个 Teacher agent 和一个 Scrutinizer agent 组成. Navigator 导航模型以关注信息最丰富的区域: 对于图像中的每个区域, Navigator 预测该区域的信息含量, 并使用预测结果推荐信息最丰富的区域. Teacher 对 Navigator 提出的区域进行评价并提供反馈: 对于每个提出的区域, Teacher 对其属于 ground-truth 类的概率进行评价; 置信度评估引导 Navigator 使用我们的顺序一致 (ordering-consistent) 损失函数提出更多的信息区域. Scrutinizer 从 Navigator 中审查建议的区域, 并进行细粒度的分类: 每个建议的区域被扩大到相同的大小, Scrutinizer 从中提取特征; 将区域特征和整体图像特征进行联合处理, 进行细粒度分类. 从整体上看, 我们的方法可以看作是强化学习中的 actor-critic[21]方案, Navigator 是 actor,Teacher 是 critic. 当 Teacher 提供更精确的指导时, Navigator 将定位更具信息的区域, 这反过来也将使 Teacher 受益. 结果, 各 agent 共同进步, 最终得到一个模型, 该模型提供精确的细粒度分类预测以及信息丰富的区域. 图 1 显示了我们方法的概述.
我们的主要贡献总结如下:
- 我们提出了一种新的多 agent 合作学习方案, 以解决在细粒度分类任务中不需要 bounding-box/part 标注的情况下准确识别信息区域的问题.
- 我们设计了一种新的损失函数, 通过使区域的信息量和其被判定为 ground-truth 类的概率具有一致性, Teacher 可以引导 Navigator 定位图像中信息量最高的区域.
- 我们的模型可以端到端的训练, 同时提供精确的细粒度分类预测, 以及在推理过程中提供高信息区域. 我们在广泛的基准数据集上实现了最先进的性能.
本文的其余部分组织如下: 我们将在第 2 节回顾相关的工作. 在第 3 节中, 我们将阐述我们的方法. 实验结果在第 4 节给出并分析, 最后在第 5 节总结.
- 2 Related Work
- 2.1 Fine-grained classification
有各种各样的方法被设计来区分细粒度的类别. 由于一些细粒度分类数据集提供了 bounding-box/part 注释, 早期的作品 [45,8,2] 在训练和推理阶段都利用了这些注释. 然而, 在实际部署模型时, 将没有可用的人工注释. 后来, 一些作品 [3,46] 只在训练阶段使用 bounding-box/part 注释. 在这种设置下, 框架非常类似于检测: 选择区域, 然后对 pose-normalized 的对象进行分类. Jonathan 等人 [22] 使用共分割和对齐的方法生成没有 part 标注的 part, 但训练时使用了 bounding-box 标注. 最近, 出现了一种更普遍的设置, 它在训练或推理时都不需要 bounding-box/part 注释. 这个设置使细粒度分类在实践中更有用. 本文主要考虑最后一种设置, 即在训练或推理阶段不需要 bounding-box/part 标注.
为了在没有细粒度注释的情况下学习, Jaderberg 等人提出了 Spatial Transformer Network 来显式地操作网络内的数据表征, 并预测信息区域的位置. Lin 等 [28] 使用双线性模型构建整幅图像有区分度的特征; 模型能够捕获不同从属类之间的细微差别. Zhang 等人 [47] 提出了一种两步法来学习一组 part 检测器和 part 显著性映射. Fu 等 [12] 使用替代优化方案训练注意力 proposal 网络和基于区域的分类器; 它们表明两项任务是相关的, 并且可以相互受益. Zhao 等人 [48] 提出了 Diversified Visual Attention Network (DVAN), 明确追求注意力的多样性, 更好地收集具有区分度的信息. Lam 等人 [25] 提出了一种 Heuristic-Successor Network (HSNet)来将细粒度分类问题制定为图像中信息区域的顺序搜索问题.
2.2 Object detection
早期目标检测方法采用 SIFT[34]或 HOG[10]特征. 最近的工作主要集中在卷积神经网络. R-CNN[14],OverFeat[40],SPPnet[16]等方法采用传统的图像处理方法生成对象 proposals, 并进行类别分类和 bounding box 回归. 稍后的工作, 如 Faster R-CNN[38]提出 Region Proposal Network (RPN), 以生成 proposal.YOLO[37]和 SSD[31]通过采用 single-shot 架构, 在 Faster R-CNN[38]上提高了检测速度. 另一方面, Feature Pyramid Networks (FPN)[27]专注于更好地解决多尺度问题, 并从多个特征 maps 生成 anchors. 我们的方法需要选择信息区域, 这也可以看作是目标检测. 据我们所知, 我们是第一个将 FPN 引入细粒度分类的人, 同时消除了人工注释的需要.
2.3 Learning to rank
在机器学习和信息检索领域 [30] 中, 排名学习正在引起人们的关注. 训练数据由带有指定顺序的 item 列表组成, 而目标是学习 item 列表的顺序. 设计了排序损失函数来惩罚排序错误的配对.
表示用于排序的对象,
表示对象的索引, 其中 表示 应该排在 的前面.表示排序函数的假设集. 其目标是找到能够最小化定义在
的某损失函数的排序函数. 有很多的排序方法. 通常, 这些方法被分成三类: the point-wise approach [9], pair-wise approach [18,4] 和 list-wise approach[6,44].
point-wise 方法为每个数据赋予一个数值分数, learning-to-rank 问题被看作回归问题, 使用 L2 损失函数, 如下:
pair-wise 排序方法中, learning-to-rank 问题被看作分类问题, 即学习一个二分类器去选择概率最高的对. 假设 的值为 0 或 1,=0 意味着 排在 前面. 然后损失被定义在所有的对上, 如等式 2 所示, 其目标是找到最优 去最小化错序对的平均数量:
list-wise 方法直接优化整个列表, 可见其看作排列的分类问题.为排序函数, 损失定义为:
在我们的方法中, 我们的 navigator 损失函数采用了 multi-rating pair-wise 排序损失, 使区域的信息量和被判定为 ground truth 类的概率之间具有一致性.
- 3 Methods
- 3.1 Approach Overview
我们的方法是基于信息区域有助于更好地描述目标的假设, 因此将信息区域的特征与完整图像融合将获得更好的性能. 因此, 目标是定位对象中信息最丰富的区域. 我们假设所有区域都是矩形的, 我们将 表示为给定图像中所有区域的集合. 我们定义信息函数
以评估区域 有多少的信息, 且定义置信度函数
为分类器去评估区域属于 ground turth 类的置信度. 如第一节所说的, 有着更多信息的区域应该有着更高的置信度, 因此下面的条件应被满足:
我们使用 Navigator 网络去近似信息函数 ,Teacher 网络去近似置信度函数. 为了简化, 在区域空间 选择 M 个区域 , 对于每个区域,Navigator 网络评估其信息量,Teacher 网络评估其置信度. 为了满足条件 1(condition 1), 我们优化 Navigator 网络去使
有相同的顺序.
随着 Navigator 网络按照 Teacher 网络的要求进行改进, 它将产生更具信息的区域, 帮助 Scrutinizer 网络做出更好的细粒度分类结果.
在 3.2 节中, 我们将描述 Navigator 如何在 Teacher 的监督下提出信息区域. 在第 3.3 节中, 我们将介绍如何从 Scrutinizer 获得细粒度的分类结果. 3.4 节和 3.5 节将分别详细介绍网络架构和优化.
3.2 Navigator and Teacher
导航到可能的信息区域可以看作是一个区域推荐问题, 该问题在 [41,11,1,7,20] 中得到了广泛的研究. 其中大多数都基于滑动窗口搜索机制. Ren 等人 [38] 引入了一种新的区域推荐网络 (region proposal network ,RPN), 该网络与分类器共享卷积层, 并降低了计算 proposals 的边际成本. 他们使用 anchors 来同时预测多个区域 proposals. 每个 anchor 都与滑动窗口的位置, 长宽比和方框比例相关联. 受 anchors 想法的启发, 我们的 Navigator 网络将图像作为输入, 生成一系列的长方形区域
, 每个区域都有一个表示区域信息量的分数(图 2 表示了我们 anchors 的设计). 对于大小为 448 的输入图像 X, 我们选择尺度为{48,96,192}, 比率为{1:1, 3:2, 2:3} 的 anchors, 然后 Navigator 网络将生成表示所有 anchors 信息量的列表. 我们如等式 4 一样排序信息列表, 其中 A 表示 anchors 的数量,表示顺序信息列表中的第 i 个元素:
为了减少区域的冗余量, 我们在区域中, 基于其信息量, 采用 non-maximum suppression (NMS)方法. 然后我们使用 top-M 的信息区域
, 并将他们输入 Teacher 网络去得到置信度
. 图 3 展示了 M=3 的概述, 其中 M 是一个表示有多少区域被用来训练 Navigator 网络的超参数. 我们优化 Navigator 网络去使
有相同的顺序. 每个推荐的区域通过最小化 ground truth 类和预测置信度之间的交叉熵损失去有优化 Teacher.
3.3 Scrutinizer
随着 Navigator 网络的逐步收敛, 将产生具有对象特征的信息区域, 帮助 Scrutinizer 网络进行决策. 我们使用 top-k 个信息区域结合完整图像作为输入来训练 Scrutinizer 网络. 换句话说, 这些 K 个区域用于促进细粒度识别. 图 4 展示了 K = 3 时的过程. Lam 等人的 [25] 表明, 使用信息区域可以减少类内方差, 并有可能在正确的标签上产生更高的置信度分数. 我们的对比实验表明, 添加信息区域显著提高了大量数据集的细粒度分类结果, 包括 CUB-200-2001,FGVC Aircraft 和 Stanford Cars, 如表 2,3 所示.
3.4 Network architecture
为了获得区域 proposals 与特征图中特征向量的对应关系, 我们使用不使用全连接层的全卷积网络作为特征提取器. 其中, 我们选择在 ILSVRC2012[39]上预训练好的 ResNet-50[17]作为 CNN 特征提取器, Navigator,Scrutinizer,Teacher network 都共享特征提取器中的参数. 我们表示特征提取器中的参数为 W. 对于输入图像 X, 提取的深度表征被表示为 X?W,? 表示卷积, 池化和激活操作的组合.
Navigator network. 受 Feature Pyramid Networks (FPN) [27]设计的启发, 我们使用了一个具有横向连接的自顶向下结构来检测多尺度区域. 我们使用卷积层逐层计算特征层次, 后面跟着 ReLU 激活和 max-pooling. 然后我们得到一系列不同空间分辨率的特征图. 较大的特征 maps 中的 anchors 对应较小的区域. 图 4 中的 Navigator 网络显示了我们的设计草图. 利用不同层次的多尺度特征图, 可以生成不同尺度和比例的区域信息. 在我们的设置中, 我们使用尺度为 {48*48,96*96,192*192} 的区域对应尺度为 {14*14,7*7,4*4} 的特征图. 我们将 Navigator 网络中的参数表示为(包括特征提取器中的共享参数).
Teacher network. Teacher 网络 (图 3) 近似于映射
, 表示每个区域的置信度. 接收 M 个来自 Navigator 网络的尺度归一化后(224*224) 的信息区域
,Teacher 网络输出置信度作为 teaching 信号, 帮助 Navigator 网络学习. 除了特征提取器中的共享层外, Teacher 网络还有一个全连接层, 共有 2048 个神经元. 为方便起见, 我们将 Teacher 网络中的参数表示为.
Scrutinizer network. 接收到 Navigator 网络的 top-K 个信息区域后, 将这 K 个区域调整到预先定义的大小 (实验中使用 224*224), 并将其输入特征提取器生成这 K 个区域的特征向量, 每个区域的长度为 2048. 然后, 我们将这些 K 个特征与输入图像的特征连接起来, 并将其输入到一个具有 2048*(K + 1) 个神经元的全连接层 (图 4). 我们使用函数 来表示这些转换的组成. 我们将 Scrutinizer 网络中的参数表示为.
3.5 Loss function and Optimization
Navigation loss. 将 Navigator 网络中预测的 M 个最具信息的区域表示为
, 其信息量表示为=
,Teacher 网络预测的置信度表示为=
. 然后 navigation 损失被定义为:
其中, 函数 f 是 non-increasing 函数, 用于当 时, 鼓励 , 在我们的实验中, 使用 hinge 损失函数
. 该损失函数惩罚 和中错序的对, 鼓励 和中有着相同顺序的对. navigation 损失函数是可微的, 在后向传播中根据链式规则估计关于 的导数, 我们能够得到:
该等式遵循定义
Teaching loss. 我们定义 Teaching 损失 为:
其中 是置信度函数, 将区域映射到其判定为 ground truth 类的概率. 等式 7 的第一项是所有区域交叉熵损失的总和, 第二项是整张图的交叉熵损失
Scrutinizing loss. 当 Navigator 网络导航到最具信息的区域
,Scrutinizer 网络得到细粒度识别结果
. 我们设置交叉熵损失为分类损失:
Joint training algorithm. 总损失被定义为:
其中λ和μ为超参数. 在我们的设置中,λ=μ= 1. 总体算法可见算法 1. 我们使用随机梯度法来优化.
- 4 Experiments
- 4.1 Dataset
我们在 Caltech-UCSD Birds (CUB-200-2011)[42],Stanford Cars[23]和 FGVC Aircraft[35]数据集上综合评价了我们的算法, 这些数据集被广泛用作于细粒度图像分类的基准. 我们在所有的实验中都没有使用任何 bounding box/part 标注. 所有 3 个数据集的统计数据如表 1 所示, 我们遵循与表中相同的训练 / 测试分割.
Caltech-UCSD Birds. CUB-200-2011 是一项鸟类分类任务, 有来自 200 种野生鸟类的 11788 张图像. 训练数据与测试数据的比值大致为 1:1. 它通常被认为是最具竞争力的数据集之一, 因为每个物种只有 30 张图像可供训练.
Stanford Cars. Stanford Cars 数据集包含 16,185 张图像, 超过 196 个类, 每个类大约有一个 50-50 的分割. 图片中的汽车是从多个角度拍摄的, 类别通常是在生产年份和车型的级别(例如 2012 年特斯拉 model S).
FGVC Aircraft. FGVC Aircraft dataset 包含 10000 张图像, 超过 100 个类, 训练 / 测试集分割比约为 2:1. 这个数据集中的大部分图像都是飞机. 数据集被组织成一个从细到粗的四级层次结构: Model, Variant, Family, Manufacturer.
4.2 Implementation Details
在所有的实验中, 我们进行预处理图像大小 448*448, 我们设置 M = 6, 这意味着 6 个区域被用于为每个图像训练 Navigator 网络 (对超参数 K 和 M 没有限制). 我们使用全卷积网络 ResNet-50[17] 作为特性提取器和使用 Batch Normalization 作为规范器. 我们使用初始学习率为 0.001 的 Momentum SGD, 并在 60 个 epochs 后乘以 0.1, 我们使用 1e?4 的权重衰减. NMS 阈值设置为 0.25, 不使用预训练的检测模型. 我们的模型对超参数的选择具有鲁棒性.
4.3 Quantitative Results
总的来说, 我们提出的系统优于所有以前的方法. 由于我们不使用任何 bounding box/part 标注, 所以我们不与依赖于这些标注的方法进行比较. 表 2 显示了我们的结果与 CUB-200-2011 之前的最佳结果的对比. ResNet-50 是一个强大的基线, 其本身达到了 84.5% 的精度, 而我们提出的 NTS.NET 的表现明显优于它 3.0%. 与使用 ResNet-50 作为特征提取器的 [26] 相比, 提高了 1.5%. 值得注意的是, 当我们只使用完整图像 (K = 0) 作为 Scrutinizer 的输入时, 我们的精度达到了 85.3%, 也高于 ResNet-50. 这一现象表明, 在导航到信息区域时, Navigator 网络也通过共享特征提取器来促进 Scrutinizer, 从而更好地学习特征表示.
表 3 分别显示了我们在 FGVC Aircraft 和 Stanford Cars 上的结果. 我们的模型实现了最新的最先进的结果, 在 FGVC Aircraft 上得到 91.4% 的 top-1 准确率和 Stanford Cars 上 93.9% 的 top-1 准确率.
4.4 Ablation Study
为了分析我们框架中不同组件的影响, 我们在 CUB-200-2011 中设计了不同的运行, 并将结果报告在表 4 中. 我们使用 NS.NET 表示没有 Teacher 的指导的模型, NS.NET 让 Navigator 网络单独提出区域, 精度从 87.5% 下降到 83.3%, 我们假设这是因为 Navigator 没有收到 teacher 的监督, 将随机推荐区域, 这样导致我们不能从分类中获益. 我们还研究了超参数 K 的作用, 即 使用了多少个 part 区域进行分类. 由表 4 可知, 当 K 从 2 增加到 4 时, 精度仅提高 0.2%, 精度提高很小, 而特征维数几乎翻倍. 另一方面, 当 K 从 0 增加到 2 时, 准确率增加了 2.0%, 这表明简单地增加特征维数只会得到很小的改善, 但我们的多 agent 框架将实现相当大的改善(0.2% vs 2%).
4.5 Qualitative Results
为了分析 Navigator 网络在哪里导航模型, 我们在图 5 中绘制了 Navigator 网络预测的导航区域. 我们使用红色, 橙色, 黄色, 绿色矩形表示导航器网络提出的信息含量最高的四个区域, 红色矩形表示信息含量最高的一个区域. 可以看出, 定位的区域确实为细粒度分类提供了信息. 第一行显示了在 cube -200-2011 数据集中 K = 2 时: 我们可以发现, 使用两个区域可以覆盖鸟类的信息 parts(特别是在第二幅图片中, 即使鸟类的颜色和背景非常相似, 也能区分出来鸟和背景). 第二行是在 CUB-200-2011 中设置 K = 4 时, 我们可以看到鸟类信息最丰富的区域是头部, 翅膀和身体, 这与人类的认知是一致的. 第三行是在 Stanford Cars 中设置 K = 4 时: 我们可以发现, headlamps 和 grilles 被认为是车信息最丰富的区域. 第四行是在 FGVC Airplane 中设置 K = 4 时: Navigator 网络定位了飞机的机翼和机头, 这对分类非常有帮助.
5 Conclusions
本文提出了一种不需要 bounding box/part 标注的细粒度分类方法. 这三个网络: Navigator, Teacher 和 Scrutinizer 相互合作, 相互加强. 我们设计了一个新的损失函数, 它考虑了区域的信息和概率之间的排序一致性. 我们的算法是端到端可训练的, 并在 CUB-200-2001, FGVC Aircraft 和 Stanford Cars 数据集上取得了最先进的结果.
来源: http://www.bubuko.com/infodetail-3719215.html