此论文中提出了一个新的计算机视觉问题“Open World Object Detection”。模型的任务有:
- 在没有明确的监督时,模型能够识别尚未引入的目标为“unknown”
- 当对应的标签逐渐加入时,模型能够逐渐地学习未知目标类别,且不遗忘原先已经学习到的已知类别。
前言
目标检测器将未知目标检测为背景,所以Open set和Open World 图像分类上的进展不能够迁移到Open World 检测任务上来。未知类别的实例和已知类别的实例被引入到目标检测其中,由于未知类别没有被标准,当模型被训练的过程中,这些未知的实例会被明确地学习为背景。
开放世界目标检测集比现有的封闭世界、静态学习数据集要更加自然。现实世界种类多种多样。假设在推理阶段所有的类别都在训练阶段是可见的这一想法是不成熟的;最自然且真实的做法是目标检测器将未知目标预测为“unknown”,已知类别的目标预测为相对应的类别。随着未知类别的信息可用时,系统将它们合并到已经存在的知识库中。
Open World Object Detection
在任意时间
t
t
t,定义已知的目标类别集合为
κ
t
=
{
1
,
2
,
?
?
,
C
}
?
N
+
\kappa^{t} = \left\{ 1, 2, \cdots, C \right\} \subset \mathbb{N}^{+}
κt={1,2,?,C}?N+,其中
N
+
\mathbb{N}^{+}
N+为正整数集合。为了能够真实地模拟现实世界的动态,假设存在未知类别集合
U
=
{
C
+
1
,
?
?
}
U = \left\{ C+1, \cdots \right\}
U={C+1,?}。假设已知目标类别
κ
t
\kappa^{t}
κt在数据集
D
t
=
{
X
t
,
Y
t
}
D^{t} = \left\{ X^{t}, Y^{t} \right\}
Dt={Xt,Yt}中被标注,其中
X
X
X表示输入图片,
Y
Y
Y表示标签。输入图片集合包含
M
M
M个训练图像,
X
t
=
{
I
1
,
?
?
,
I
M
}
X^{t} = \left\{ I_{1}, \cdots, I_{M}\right\}
Xt={I1?,?,IM?},对应的标签集合为
Y
t
=
{
Y
1
,
?
?
,
Y
M
}
Y^{t} = \left\{ Y_{1},\cdots, Y_{M}\right\}
Yt={Y1?,?,YM?}。每一个
Y
i
=
{
y
1
,
y
2
,
?
?
,
y
k
}
Y_{i} = \left\{ y_{1}, y_{2}, \cdots, y_{k}\right\}
Yi?={y1?,y2?,?,yk?}包含
k
k
k个目标的类别和位置信息,
y
k
=
[
l
k
,
x
k
,
y
k
,
w
k
,
h
k
]
y_{k} = \left[ l_{k}, x_{k}, y_{k}, w_{k}, h_{k} \right]
yk?=[lk?,xk?,yk?,wk?,hk?],其中是
l
k
∈
κ
t
l_{k} \in \kappa^{t}
lk?∈κt是类别信息,
[
x
k
,
y
k
,
w
k
,
h
k
]
\left[ x_{k}, y_{k}, w_{k}, h_{k} \right]
[xk?,yk?,wk?,hk?]分别是bbox的中心点位置,宽和高。
Open World Object Detection 训练一个目标检测模型
M
C
M_{C}
MC?检测原先遇到的所有
C
C
C个目标类别。更重要的是,模型
M
C
M_{C}
MC?能够辨认出属于已知类别集合
C
C
C中的测试实例,并且也能够通过将它分类为unknown识别出一个新的或者从未见过的类别,unknown表示为标签
0
0
0。然后实例的未知类别集合
U
t
U^{t}
Ut可以提送给人类用户,人类用户可以识别出
n
n
n个新类别,并且给检测器提供训练样例。不需要在全部数据集上重头训练,学习者递增地增加
n
n
n个新类别并且自我更新生成模型
M
C
+
n
M_{C+n}
MC+n?。已知类别集合同样被更新为
κ
t
+
1
=
κ
t
+
{
C
+
1
,
?
?
,
C
+
n
}
\kappa^{t + 1} = \kappa^{t} + \left\{ C+1, \cdots, C+n \right\}
κt+1=κt+{C+1,?,C+n}。
ORE
Contrastive Clustering
神经网络是一个通用的函数逼近器,隐含层中学习到的潜在表征控制着函数的表达。假设在目标检测器的潜在空间中学习明确区分类别具有双重效果。首先,它帮助模型辨别出一个未知实例的特征表示不同于已知类别实例的特征表示,这能够帮助模型将未知实例判定为新类别。再者,它帮助学习新类别实例的特征表示,不需要在隐含空间中与先前已知类别特征重叠,这能够帮助模型逐渐学习但是不遗忘。
隐含空间中的类间距可以作为一个在开放世界方法中识别未知实例的理想特征。一个自然实现的方法是将其建模成一个对比聚类问题(Contrastive Clustering problem),相同类别的实例被强行保持接近,而不同类别的实例则会被分开。
对每个已知类别
i
∈
κ
t
i \in \kappa^{t}
i∈κt, 我们维持一个原型向量
p
i
p_{i}
pi?。对于一个目标类别
c
c
c,
f
c
∈
R
d
f_{c} \in \mathbb{R}^{d}
fc?∈Rd是一个由目标检测器中间层生成的一个特征向量。定义对比损失函数(contrastive loss)如下:
L
c
o
n
t
(
f
c
)
=
∑
i
=
0
C
l
(
f
c
,
p
i
)
,
w
h
e
r
e
l
(
f
c
,
p
i
)
=
{
D
(
f
c
,
p
i
)
i
=
c
m
a
x
{
0
,
Δ
?
D
(
f
c
,
p
i
)
}
o
t
h
e
r
w
i
s
e
\begin{matrix} L_{cont} \left( f_{c} \right) = \sum_{i=0}^{C}l \left( f_{c}, p_{i} \right), where \\ l \left( f_{c}, p_{i} \right) = \left\{\begin{matrix} D\left( f_{c}, p_{i} \right)& i=c\\ max\left\{ 0, \Delta - D\left( f_{c}, p_{i} \right) \right\} & otherwise \end{matrix}\right. \end{matrix}
Lcont?(fc?)=∑i=0C?l(fc?,pi?),wherel(fc?,pi?)={D(fc?,pi?)max{0,Δ?D(fc?,pi?)}?i=cotherwise?? 其中
D
D
D是任何距离函数,
Δ
\Delta
Δ定义相同和不相同类别的临近程度。最小化这个对比损失函数能够保证在隐含空间中的类间距离。
每个类别对应的特征向量均值被用来建立类别原型集合
P
=
{
p
0
?
p
c
}
P = \left\{ p_{0} \cdots p_{c}\right\}
P={p0??pc?}。当整个网络端到端训练时,随着组成特征的逐渐变化,类别原型应当逐渐进化。我们维持一个固定长度的队列
q
i
q_{i}
qi?,每个类别存放对应的特征。特征商店
F
s
t
o
r
e
=
{
q
0
?
q
C
}
F_{store} = \left\{ q_{0} \cdots q_{C} \right\}
Fstore?={q0??qC?},在对应队列中存放类别特定特征。
算法1给出了在计算聚类损失时,类别原型是如何被管理的。在一个特定的迭代次数
I
b
I_{b}
Ib?之后,loss才会被计算。这使得初始特征嵌入成熟,从而能够编码类别信息。迭代次数为
I
b
I_{b}
Ib?时,开始计算聚类损失。以后每一个
I
b
I_{b}
Ib?,一个新的类别原型集合
P
n
e
w
P_{new}
Pnew?被计算出来,已经存在的原型
P
P
P通过一个动量参数
η
\eta
η衡量
P
P
P和
P
n
e
w
P_{new}
Pnew?。聚类损失计算添加到标准检测损失函数之中,并反向传播进行端到端学习。
Auto-labelling Unknowns with RPN
我们提出自动地标注图像中的一些物体作为潜在的unknown物体。给定一个输入图像,RPN生成前景和背景的预测bbox集合和其对应的分数。我们将具有高目标分数但是与gt目标不重合的候选者标记为可能的unknown物体。简单地,根据目标分数进行排序,我们选择前
k
k
k个背景区域候选者作为unknown目标。
Energy Based Unknown Identifier
给定隐含空间
F
F
F中的特征
f
∈
F
f \in F
f∈F和它们相应的标签
l
∈
L
l \in L
l∈L,我们寻求学习一个能量函数
E
(
F
,
L
)
E\left( F, L\right)
E(F,L)。基于energy based models(EBMS)学习函数
E
(
?
)
E\left( \cdot \right)
E(?),使用一个输出标量
E
(
f
)
:
R
d
→
R
E\left( f \right) : \mathbb{R}^{d} \rightarrow \mathbb{R}
E(f):Rd→R评估观察到的变量
F
F
F和输出变量的可能集合
L
L
L之间的兼容性。EBMS为分布中的数据赋值低能量值,反之亦然,这促使我们使用能量度量样本是否来自于未知类别。我们使用Helmholtz free energy方程,
L
L
L中的能量值在方程中被组合。
E
(
f
)
=
?
T
l
o
g
∫
l
′
e
x
p
(
?
E
(
f
,
l
′
)
T
)
E\left( f \right) = - T log \int_{{l}'} exp \left( - \frac{E\left( f, {l}'\right)}{T}\right)
E(f)=?Tlog∫l′?exp(?TE(f,l′)?) 其中
T
T
T是温度参数。在经过softmax层之后的网络输出和类别特定能量值的吉布斯分布之间存在一个简单的关系,可以表示如下:
p
(
l
∣
f
)
=
e
x
p
(
g
l
(
f
)
T
)
∑
i
=
1
C
e
x
p
(
g
i
(
f
)
T
)
=
e
x
p
(
E
(
f
,
l
)
T
)
e
x
p
(
?
E
(
f
)
T
)
p\left( l | f \right) = \frac{exp\left( \frac{g_{l}\left( f\right)}{T}\right)}{\sum_{i=1}^{C}exp\left( \frac{g_{i}\left( f \right)}{T}\right)} = \frac{exp\left( \frac{E \left( f, l \right)}{T}\right)}{exp\left( - \frac{E \left( f\right)}{T}\right)}
p(l∣f)=∑i=1C?exp(Tgi?(f)?)exp(Tgl?(f)?)?=exp(?TE(f)?)exp(TE(f,l)?)? 其中
p
(
l
∣
f
)
p\left( l | f \right)
p(l∣f)为标签
l
l
l的概率密度函数,
g
l
(
f
)
g_{l}\left( f\right)
gl?(f)是分类头的第
l
t
h
l^{th}
lth个分类logit。使用这样的对应关系,我们以它们的logits形式定义分类模型的自由能方程如下:
F
(
f
;
g
)
=
?
T
l
o
g
∑
i
=
1
C
e
x
p
(
g
i
(
f
)
T
)
F\left( f; g \right) = -T log \sum_{i=1}^{C} exp \left( \frac{g_{i}\left(f\right)}{T}\right)
F(f;g)=?Tlogi=1∑C?exp(Tgi?(f)?) 上述的方程将标准Faster R-CNN中的分类头转换成一个能量函数。由于使用对比聚类在隐含空间中有清晰的间距,能量level上的已知类别和未知类别数据点有较清晰的分解,如下图所示。我们使用偏移韦伯分布(shifted Weibull distributions)对已知和未知能量值的能量分布进行分别建模,为
ξ
k
n
(
f
)
\xi_{kn}\left( f \right)
ξkn?(f)和
ξ
u
n
k
(
f
)
\xi_{unk}\left( f \right)
ξunk?(f)。相比较于Gamma,Exponential和Normal分布来说,这些分布能够与一个小验证集合的能量数据吻合。如果
ξ
k
n
(
f
)
<
ξ
u
n
k
(
f
)
\xi_{kn}\left( f \right) < \xi_{unk}\left( f \right)
ξkn?(f)<ξunk?(f),学习到的分布可以将一个预测值标记为“unknown”。
Alleviating Forgetting
识别出未知类别之后,对一个open world 检测器来说,另一个最重要是当未知类别被标记的样本提供之后,检测器学习新类别的能力。由于不再从头开始训练,先前任务的数据不再出现。仅仅用新类别样本数据进行训练会导致原先类别的灾难性遗忘。目前已经有很多相关算法可以减轻这种遗忘,比如参数正则化,exemplar replay和元学习等等。
ORE使用相对简单的方法减轻遗忘。我们先保存一个平衡的样本合集并且每一次增量学习时,finetune模型。在每一点,我们保证每个类别有最小
N
e
x
N_{ex}
Nex?实例出现在样本集合中。
实验和结果
数据
我们将所有的类别组合成任务集合
T
=
{
T
1
,
?
?
,
T
t
,
?
?
}
T=\left\{ T_{1}, \cdots, T_{t}, \cdots \right\}
T={T1?,?,Tt?,?}。当学习任务
T
t
T_{t}
Tt?是,
{
T
τ
:
τ
<
t
}
\left\{ T_{\tau }: \tau < t \right\}
{Tτ?:τ<t}中的所有的类别都被当做已知类别,
{
T
τ
:
τ
>
t
}
\left\{ T_{\tau }: \tau > t \right\}
{Tτ?:τ>t}中的所有的类别都被当做未知类别。
Evaluation metrics
一个未知物体很容易被混淆成一个已知物体,我们使用Wilderness Impact(WI)作为明确描述这种行为的指标。
W
i
l
d
e
r
n
e
s
s
I
m
p
a
c
t
(
W
I
)
=
P
κ
P
κ
∪
U
?
1
Wilderness Impact \left( WI\right) = \frac{P_{\kappa}}{P_{ \kappa \cup U}} - 1
WildernessImpact(WI)=Pκ∪U?Pκ???1 其中
P
κ
P_{\kappa}
Pκ?是测试在已知类别上的模型精度,
P
κ
∪
U
P_{ \kappa \cup U}
Pκ∪U?是测试在已知和未知类别上模型的精度。当未知类别添加到测试数据集时,因为精度一定不能下降,WI应当较小。
除了WI,我们还使用了Absolute Open-set Error(A-OSE)记录未知类别被误分到已知类别的个数。
为了能够量化模型添加新标签类别下的递增学习能力,我们计算了IoU阈值为0.5的mAP值。
实现细节
ORE以ResNet-50以基地的标准Faster RCNN作为检测器。由于递增分类方法,为了能够在分类头掌控不同数量的类别,我们对最大类别数量设置一个界限,并且修改损失仅仅考虑类别信息。具体实施是对看不到的类别的分类logits设置一个大负数
v
v
v,于是就可以使得它们对softmax的贡献可忽略不计(
e
?
v
→
0
e^{-v} \rightarrow 0
e?v→0)
我们使用学习率为0.01的SGD优化函数。
More Details on Contrastive Clustering
在隐含空间中使用对比簇能够增强分离性表现在两个方面:第一是他能够保证模型从已知类别中分离并聚集成未知类别簇,从而提升未知类别的识别;第二是它能够保证每一类别的实例与其他类别相分离,环节遗忘问题。2048维特征向量来自于RoI head的残差块。对比loss被添加到Faster R-CNN loss中,并且整个网络端到端训练。于是,在Faster R-CNN pipeline中,网络前面的部分和在RoI head中包残差块都能从对比簇loss的梯度中得到更新。
Results
"Oracle"检测器作为参考,在任何时间点,包含所有已知和未知的类别。学习完每一个任务之后,使用WI和A-OSE度量标准量化未知类别实例被任何已知类别混淆的程度。
visualization
在任务1中,图例相对于任务引入20类,类别20表示unknown类别。从子图(a)中可以看出,unknown实例也聚集成簇,这增强了在对比聚类中使用的自动标记未知类别的质量。从子图(b)中展示了在训练迭代步数中的对比聚类loss,我们能够看到逐渐下降的趋势,表示模型有很好的收敛。
附录
韦伯分布
韦伯分布(Weibull distributions):从概率论和统计学角度看,Weibull distributions是连续性的概率分布,其概率密度为:
f
(
x
;
λ
,
k
)
=
{
k
λ
(
x
λ
)
k
?
1
e
?
(
x
/
λ
)
k
x
≥
0
0
x
<
0
\begin{matrix} f\left(x ; \lambda, k \right) = \left\{\begin{matrix} \frac{k}{\lambda} \left( \frac{x}{\lambda}\right)^{k-1} e^{- \left( x/\lambda \right)^{k}}& x \geq 0\\ 0 & x < 0 \end{matrix}\right. \end{matrix}
f(x;λ,k)={λk?(λx?)k?1e?(x/λ)k0?x≥0x<0??
|