然后,我们对组合后的特征应用非线形变换(ReLU) 后送入后续网络层。网络最后依然设置两路并行的输出通道。第一路输出通道用来基于标签关系树计算概率分类损失函数,通道中的 sigmoid 节点一一对应层级中的每个类别标签,所有 sigmoid 节点按照标签关系树进行组织。第二路输出通道中的 softmax 节点对应最后一层级中彼此互斥的细粒度类别,形成多类交叉熵损失函数让网络在优化时关注细粒度分类的误差。
复合损失函数
给定一幅输入图像
通道中对应赋值向量的所有 sigmoid 节点的联合输出概率可以计算为:
- ,代表层级中第 i 个节点的 sigmoid 输出
- ,代表由标签关系树定义的层级约束
- 用作概率归一化,求和标签关系树上所有的合法赋值
如果输入图像 x 被标注到树中的第 i 个标签上,即
,我们可以计算标签 i 的边缘概率:
分析边缘概率的计算公式,我们可以发现:(1)图中某个标签 的边缘概率依赖于该标签所有的父类节点分数值之和,因为该标签赋值为 1 则其所有的 父节点都应该赋值 1 才能满足层级约束关系。因此,边缘概率的计算可以使得父节点的 分数值影响子节点的预测值。(2)计算层级中间标签的边缘概率时需要包含其所有子类标签对应的联合概率,即可以聚集来自子类的知识。最后,给定 m 个训练样本
,我们最大似然边缘概率得到概率分类损失函数:
- 代表赋值的标签向量,为标注到标签关系树中的标签下标。
为了进一步加强网络对于细粒度叶子节点的区分能力,我们进一步结合多类交叉熵损失函数,形成最后的复合损失函数优化整个网络:
即根据样本是否被标注叶子节点,选择性地结合交叉熵损失函数与概率分类损失函数。
实验
数据集
我们在常用的三套细粒度分类数据集:CUB-200-2011、FGVC-Aircraft、Stanford Cars。依据维基百科为每个数据集设定层级标签关系树,其中 CUB-200-2011 包含 38 orders, 38 families, 200 species 三个层级;FGVC-Aircraft 具有 30 makers, 70 families, 100 models 三个层级;以及 Stanford Cars 具有 9 car types, 196 car makers 两个层级。
实验指标