本文对开放世界目标检测任务进行重新梳理,并提出了两种新的衡量指标
针对CEC模块存在理解问题(文中红色问号处)
Revisiting Open World Object Detection
发表于 Computer Vision and Pattern Recognition 2022/01/04
Introduction
(1) 概要
- 领域:目标检测
- 行文目的:OWOD的实验设置不合理(benchmark不合理、度量标准不合理、研究方法不合理)
- 贡献:
- (1)提出了5条基本原则,用以指导OWOD的基准建设
- (2)设计了2种公平的评价指标
(2) OWOD
- closed set object detection(传统意义上的目标检测)
- 只需检测出已知的类别
- 推理阶段也只针对已知类别的检测性能进行评价
- 未知类别的目标可以直接忽略,或者误分类为已知类别
- open world object detection(考虑未知类别)
- OWOD任务包括多个增量子任务
- 每个子任务中,训练阶段:模型仅在已知类别上做训练;测试阶段:模型需正确检测出所有已知类别,针对未知类别需分类为“unkown”
- 人类标注员针对检测出的未知类别进行手工标注,再进入下一个增量子任务(下一次任务中就增加了新的类别标签)
(3) 存在问题及改进
i. 存在问题:(OWOD概念在《Towards open world object detection》中首次提出)
- 基准不合理
- 度量不合理
- 方法不合理
ii. 改进:(本文思路) - 提出5项基准原则,用以指导OWOD基准建设
- 提出2项衡量指标 Unknown Detection Recall (UDR)、Unknown Detection Precision (UDP),更有利于衡量未知类别的检测性能
- 提出1种简单有效的OWOD框架,包含Proposal ADvisor (PAD)模块、Class-specific Expelling Classifier (CEC)模块,解决未知类别与背景、已知类别间的难区分问题:
- PAD模块:
- 无参的模块
- 协助PRN确认未知类别的proposal,引导RPN从背景中识别出未知类的proposal
- CEC模块:
- 标定over-confident activation boundary
- 通过 class-specific expelling function,过滤掉不确定的预测结果,避免将未知类别分类到已知类别
- PAD模块:
(4) 本文贡献
- 总结出5条OWOD基准原则
- 提出2项OWOD评价指标
- 提出一个简单有效的OWOD框架,包含PAD、CEC
- 实验论证了本文提出的OWOD框架在原有指标及新提出的指标上的有效性
Rethinking OWOD
(1) 五原则
- 类别的开放性(Class Openness):
- 已知类别的集合记为
K
\mathcal{K}
- 未知类别的集合记为
U
\mathcal{U}
-
K
∩
U
=
∅
\mathcal{K} \cap \mathcal{U} = \varnothing
- 训练阶段:仅有
K
\mathcal{K}
- 测试阶段:测试集中包含
K
\mathcal{K}
U
\mathcal{U}
- 已知类别的集合记为
- 任务的递增性(Task Increment):
- 前一个个子任务完成后,标注员会介入进行未知类别的人工标注,因此类别数会递增,任务也会呈现递增性
- 在task t阶段:已知类别为
K
t
\mathcal{K}_t
U
t
\mathcal{U}_t
- 在task t+1阶段:原
U
t
\mathcal{U}_t
U
t
(
k
)
\mathcal{U}_t^{(k)}
U
t
(
k
)
∈
U
t
\mathcal{U}_{t}^{(k)} \in \mathcal{U}_{t}
U
t
(
k
)
\mathcal{U}_{t}^{(k)}
K
t
+
1
=
K
t
∪
U
t
(
k
)
\mathcal{K}_{t+1}=\mathcal{K}_{t} \cup \mathcal{U}_{t}^{(k)}
- 重复上述操作,直至未知类别集合为空
- 标注的特异性(Annotation Specificity):
- 标签:
Y
=
[
L
,
B
]
Y = [L, B]
- 训练、验证阶段:仅有已知类别参与训练
- 测试阶段:未知类别也参与测试,L赋值为“Unknown”
- 原OWOD未遵循此原则,使用了包含未知标签的验证集来训练
- 标签:
- 标签的完整性(Label Integrity):
- 测试集中的标注信息应当完备,即所有对象(包括未知类别)在测试集标签中均应标注清楚
- 例如PASCAL VOC的测试集中仅标注了已知的20个类别,对未知类别未标注
- 数据的特异性(Data Specificity):
- 训练集、验证集、测试集之间不允许有交集
- 每个数据集中不能有重复样本
- 否则,会影响评价结果
(2) 原始的ORE原则和本文的5原则对比
使用5原则对COCO数据集进行修改:
(3) 新的评价指标
OWOD任务存需解决的关键难点:
- i)需从背景中识别出未知对象
- ii)需将未知对象与已知对象作区分,确保不能将未知对象错误识别为已知的某个类别
原评价指标不能完全评价OWOD的性能: - standard mAP: 衡量分类性能
- WI、Absolute Open-Set Error(A-OSE)衡量检测未知类别的性能
- 其中,WI不能直接应用于OWOD任务中。
本文提出2个新的评价指标: - UDR(Unknow Detection Recall):
- 衡量未知对象的定位精度
-
U
D
R
=
T
P
u
+
F
N
u
∗
T
P
u
+
F
N
u
\mathrm{UDR}=\frac{\mathrm{TP}_{u}+\mathrm{FN}_{u}^{*}}{\mathrm{TP}_{u}+\mathrm{FN}_{u}}
-
T
P
u
TP_u
-
F
N
u
FN_u
-
F
N
u
∗
FN^*_u
- UDP(Unknow Detection Precision):
- 衡量未知对象的分类精度
-
U
D
P
=
T
P
u
T
P
u
+
F
N
u
∗
\mathrm{UDP}=\frac{\mathrm{TP}_{u}}{\mathrm{TP}_{u}+\mathrm{FN}_{u}^{*}}
Method
(1) PAD(Proposal ADvisior)模块
未知样本标签的缺失,导致RPN很难生成未知样本的proposal,因此本文添加了PAD,辅助RPN针对此类proposal生成。
i) 对RPN的未知proposal结果进行再确认
- RPN获得高分的negative proposal,有可能是被错误分类为背景的未知样本的proposal,记为
P
(
u
)
+
P^{(u)+}
-
P
(
u
)
+
P^{(u)+}
- advisor的实现:选择性搜索(Selective Search)算法
- 步骤一:使用《Efficient Graph-Based Image Segmentation》论文里的方法产生初始的分割区域
- 步骤二:相似度计算后将小的区域进行相互合并
- 重复步骤一、二
- 确认阶段:
- RPN 输出:
P
(
u
)
+
P^{(u)+}
P
~
+
\widetilde{\mathbf{P}}+
-
S
‾
i
=
S
i
×
I
{
max
1
≤
j
≤
∣
P
~
+
∣
(
IOU
(
P
i
(
u
)
+
,
P
~
j
+
)
)
>
θ
}
\overline{\mathbf{S}}_{i}=\mathbf{S}_{i} \times \mathcal{I}\left\{\max _{1 \leq j \leq\left|\widetilde{\mathbf{P}}^{+}\right|}\left(\operatorname{IOU}\left(\mathbf{P}_{i}^{(u)+}, \widetilde{\mathbf{P}}_{j}^{+}\right)\right)>\theta\right\}
- IOU 大于阈值,表示advisor和RPN均认为该区域是positive proposal
- RPN 输出:
ii) 指导未知类别定位任务的无监督训练过程
- 获取到精确的proposal后,将对应类别确认改为“前景”
- 将对应Anchors从negative anchor set中移动到positive anchor set中
- 将新的anchor set 输入到RPN的分类器中,计算损失:
∑
a
∈
A
+
∪
A
(
u
)
+
BCE
(
f
(
a
)
,
1
)
+
∑
a
∈
A
−
\
A
(
u
)
+
BCE
(
f
(
a
)
,
0
)
\sum_{\mathbf{a} \in \mathcal{A}+\cup \mathcal{A}^{(u)+}} \operatorname{BCE}(f(\mathbf{a}), \mathbf{1})+\sum_{\mathbf{a} \in \mathcal{A}^{-} \backslash \mathcal{A}^{(u)+}} \operatorname{BCE}(f(\mathbf{a}), \mathbf{0})
(2) CEC(Class-specific Expelling Classifier)模块
- 问题:未知类别的对象有可能被预测为已知的某类,且赋予较高的置信度
- 解决:Class-specific Expelling Classifier模块
- CEC模块会淘汰掉错误预测为已知类别的对象
-
Φ
(
L
‾
i
c
)
=
L
‾
i
c
−
α
×
1
M
∑
j
∣
B
~
∣
∑
k
∣
B
c
∣
[
I
(
IOU
(
B
~
j
,
B
k
c
)
>
φ
)
×
L
~
i
c
]
\Phi\left(\overline{\mathbf{L}}_{i}^{c}\right)=\overline{\mathbf{L}}_{i}^{c}-\alpha \times \frac{1}{M} \sum_{j}^{|\widetilde{\mathbf{B}}|} \sum_{k}^{\left|\mathbf{B}^{c}\right|}\left[\mathcal{I}\left(\operatorname{IOU}\left(\widetilde{\mathbf{B}}_{j}, \mathbf{B}_{k}^{c}\right)>\varphi\right) \times \widetilde{\mathbf{L}}_{i}^{c}\right]
- 其中,
Y
=
[
L
,
B
]
\mathbf{Y} = [\mathbf{L}, \mathbf{B}]
-
Y
‾
=
[
L
‾
,
B
‾
]
\overline{\mathbf{Y}}=[\overline{\mathbf{L}}, \overline{\mathbf{B}}]
-
L
~
=
[
L
~
,
B
~
]
\widetilde{\mathbf{L}}=[\widetilde{\mathbf{L}}, \widetilde{\mathbf{B}}]
Experiments
(1) 实验设置
- 算力:8 * Tesla V100
- 模型:标准Faster-RCNN,backbone网络为ResNet-50
- 4个递增任务
- batch_size: 8, optimizer: SGD(lr=0.01, momentum=0.9, weight_decay=0.0001)
- task1:迭代次数 90k
- task2-task4:迭代次数 [52k, 40k, 41k],fine-tuning迭代次数 [4k, 2.5k, 3k]
- RPN的unknow proposals 选前top-50
- advisor的proposals 选前top-50
- advisor的超参
θ
=
0.7
\theta= 0.7
- CEC的超参
ϕ
=
0.9
\phi=0.9
α
=
0.5
\alpha=0.5
(2) 实验结果
- Faster-RCNN
- Faster-RCNN + finetuning
- ORE
- ORE*, 不包含 annotation-leakage EBUI的ORE
- Oracle detector 可认为是OWOD的性能上限
结果分析: - WI指标,体现了本文模型对已知的类别检测性能影响最小
- mAP指标,体现了本文模型在上阶段与当前阶段的任务中,对已知类别检测性能都很好,证明了增量学习的能力
- Faster-RCNN虽然在当前任务上性能好,但对先前的预测结果较差,不符合增量学习要求
- UR、UDP、UDR指标,体现了本文模型能从背景中区分出未知类别的对象,并避免错分为已知类别
(3) 消融实验
论证了各模块的有效性
i) 针对PAD的实验
ii) 针对CEC的实验
不同超参下的性能对比
-
α
\alpha
版权声明:本文为CSDN博主「fe_风满楼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45700830/article/details/122690257
暂无评论