摘要
细粒度分类往往需要识别特定的对象部分,例如鸟类的喙形状和翅膀图案。传统的解释性方法通常提供单一的归因图,而本文提出的 PDiscoNet 旨在仅使用图像级别的类别标签,发现对象的部分,鼓励模型首先检测这些部分,然后使用它们推断类别。这有助于我们更好地评估模型是否真的关注了正确的细节。PDiscoNet 通过使用一些先验知识,鼓励部分具有区分性、紧凑性、相互独立、对刚性变换具有等变性,并且在至少一些图像中活跃。此外,论文还提出了一种部分丢弃的方法,以及部分特征向量调制,以防止单一部分在分类中占主导地位,并使来自每个部分的信息对分类器来说具有可区分性。
拟解决的问题
论文旨在解决细粒度识别中,模型如何基于图像级别的类别标签自动发现和利用对象的特定部分,以提高识别的准确性和可解释性。
创新之处
- 部分发现:PDiscoNet 能够在没有部分注释的情况下,通过图像级别的类别标签发现对象的部分。
- 部分丢弃:提出了一种新的正则化方法,即部分丢弃,以防止单一部分在分类中占主导。
- 部分特征向量调制:通过调制增加了部分特征的区分性,使得分类器能够从每个部分获得独特的信息。
方法
细粒度分类任务中,区分相似子类别通常需要识别对象的特定部分。PDiscoNet 旨在通过图像级别的类别标签来发现这些部分,并利用它们进行分类。
简述工作流程:
特征提取:
- 输入图像通过一个预训练的卷积神经网络(CNN)提取特征,生成特征张量 Z。
部分原型初始化:
- 初始化 K+1 个部分原型 ,这些原型是网络需要学习的参数,代表图像中潜在的对象部分特征。
注意力图计算:
- 使用特征张量 Z 和部分原型 计算注意力图 。这涉及到计算特征向量与部分原型之间的相似度,并通过 Softmax 函数归一化,得到每个部分的重要性图。
部分特征向量生成:
- 利用注意力图 对特征张量 Z 中的特征向量进行加权,计算每个部分的加权平均特征向量 。
调制向量应用:
- 对每个部分特征向量 应用调制向量 ,以增强部分特征的区分性。
分类器处理:
- 使用线性分类器 对每个调制后的向量 ⊙ 进行处理,生成类别得分。
损失函数定义:
- 定义多种损失函数来训练网络,包括分类损失、集中损失、正交损失、等变性损失和存在损失,以确保学习到的部分特征具有所需属性。
模型训练:
- 使用反向传播算法根据损失函数对网络参数进行更新,包括部分原型 、调制向量 以及 CNN 的权重。
特征提取:使用 CNN 作为基础模型来提取输入图像 X 的特征张量 Z。
注意力图计算:使用 K+1 个部分原型 与特征向量 之间的负平方欧几里得距离,通过 1x1 卷积和 softmax 函数计算 K+1 个注意力图 :
其中K 表示的是模型试图发现的对象的部分的数量(喙、翅膀、尾巴、身体等),这些部分对于区分不同的鸟类种类可能是关键的。每个部分都由一个对应的部分原型 表示,网络通过学习这些原型来识别图像中相应的部分。
每个注意力图 的每个元素 表示特征张量中位置 (i,j) 处的像素属于第 k 个部分的“关注度”或“重要性”。
部分特征向量计算:计算部分向量 ,D为通道数,为对应注意力图加权的特征向量 的平均值:
调制向量: 用于增强部分特征的区分性,通过逐元素乘法与部分向量 结合
部分丢弃:为了防止最具区分性的部分使其他部分变得不必要,PDiscoNet 在训练过程中随机丢弃一部分特征,鼓励模型发现多样的区分性部分。
分类器:使用相同的线性分类器 对所有部分特征向量进行分类
损失函数:
-
分类损失 :交叉熵损失,用于优化分类性能。
-
集中损失 :鼓励紧凑和连续的图像区域:
分别代表垂直和水平的空间方差。
-
正交损失 :通过余弦距离鼓励部分向量的不相关性:
-
等变性损失 :通过鼓励注意力图对图像的刚性变换等变:
-
存在损失 :鼓励每个部分在一批图像中至少出现一次:
结论
PDiscoNet 能够在不同的数据集上发现语义一致的部分,并且与现有的部分发现方法相比,在部分定位和语义一致性方面取得了更好的结果,同时没有牺牲下游分类任务的准确性。论文还指出,尽管取得了进展,但在提高模型的可解释性方面仍有改进空间,例如通过限制背景信息对部分特征表示的影响。作者希望 PDiscoNet 的方法能够为细粒度视觉分类的模型提供更多的可解释性,并通过丰富模型与其最终用户的交互,促进对该领域更深入的理解。