多类别目标计数 Dilated-Scale-Aware Category-Attention ConvNet for Multi-Class Object Counting 论文笔记
写在前面
过年在家,工作时间减少了很多,玩的也很嗨,花零散时间读完了这篇论文及代码,抽空做个总结。
这篇论文写的是多类别目标计数,思路稍显复杂,改进的空间应该蛮多的。
一、Abstract
单类别目标计数已经取得了不错的效果,但是现实场景仍然是多类别目标计数。该任务难点在于目标标注的收集:回归框标注成本较高,本文提出用点标注的方式进行计数。具体来说,首先将单目标计数密度图改为多类别目标计数图。而由于所有类别的目标都采用同一特征提取器,因此目标特征会在贡献的特征空间内进行交互。所以本文设计了一种多任务结构来抑制目标之间的这种负的交互/联系。
二、引言
目标计数在计算机视觉中很重要,而大部分的方法都是单类别目标计数,因此当改变计数类别时就需要重新训练网络。另外有少量的多类别目标计数,这一应用在现实中更加重要。下面是对计数方法的介绍:
基于检测的方法同时进行检测和计数,但依赖于box的标注,因此主流的目标计数数据集仅仅提供点水平的标注,这对于采用检测的方法来说基本不太可能。
基于回归的方法仅依赖于点的标注且实现了很大的成功,但这类方法大多在点标注上采用一系列的高斯blobs,因此当前基于回归的计数方法很难应用在多类别计数上。
为了解决上述问题,本文提出了一种 Dilated-Scale-Aware Category-Attention ConvNet (DSACA)来实现多类别目标计数。具体来说,DSACS 由两个模块 Dilated-Scale-AwareModule(DSAM) 和 Category-Attention Module (CAM) 组成。首先,利用CNN提取特征图,DSAM 采用不同的膨胀率来同时捕捉大小目标之间的视觉反应,用于融合这些特征图。另外,由于共享目标提取器,预测的密度图彼此会进行交互,促使本文设计一种CAM模块来提供高质量孤立的类别密度图。
本文贡献如下:
- 本文是第一个尝试基于点标注的进行多类别目标计数的方法;
- 提出了DSACA,由 DSAM 和 CAM 模块组成,DSAM 捕捉多尺度信息,CAM 自适应地抑制特征提取时的类别内交互;
- 大量的实验表明本文提出的方法效果很好。
三、方法
如上图所示,提出的方法主要由两个关键模块组成,DSAM 和 CAM。首先利用 VGG16 作为 backbone,但是去掉了 stage_4, 5中的池化层。之后利用 DSAM 提取不同尺度的特征,CAM 用于减少不同类别密度图中的负关联。
A、Multi-Class Object Counting Problem Definition
目前的单类别目标计数方法主要采用高斯核在点标注上滑动,来产生密度图以及预测出单类别的数量。为了实现多类别计数,本文同样采用高斯核,但预测的是所有类别的密度图。
具体来说,对于一幅包含
N
N
N 个类别的物体图像,GT密度图为:
D
=
{
∑
i
=
1
C
1
δ
(
U
1
−
U
i
1
)
∗
G
σ
1
(
U
1
)
⋮
∑
i
=
1
C
n
δ
(
U
n
−
U
i
n
)
∗
G
σ
n
(
U
n
)
⋮
∑
i
=
1
C
N
δ
(
U
N
−
U
i
N
)
∗
G
σ
N
(
U
N
)
D=\left\{\begin{array}{c} \sum_{i=1}^{C_{1}} \delta\left(U^{1}-U_{i}^{1}\right) * G_{\sigma^{1}}\left(U^{1}\right) \\ \vdots \\ \sum_{i=1}^{C_{n}} \delta\left(U^{n}-U_{i}^{n}\right) * G_{\sigma^{n}}\left(U^{n}\right) \\ \vdots \\ \sum_{i=1}^{C_{N}} \delta\left(U^{N}-U_{i}^{N}\right) * G_{\sigma^{N}}\left(U^{N}\right) \end{array}\right.
D=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧∑i=1C1δ(U1−Ui1)∗Gσ1(U1)⋮∑i=1Cnδ(Un−Uin)∗Gσn(Un)⋮∑i=1CNδ(UN−UiN)∗GσN(UN)
其中
U
i
n
U_{i}^{n}
Uin 为第
n
n
n 个类别中的第
i
i
i 个实例。在第
n
n
n 个类别中,共有
C
n
C_{n}
Cn 个实例。
σ
n
\sigma^{n}
σn 为高斯函数中第
n
n
n 个类别的高斯核,取决于第
n
n
n 个类别的相对大小。
B、Dilated-Scale-Aware Module
提出DSAM模块,通过膨胀卷积融合多阶段/尺度的特征信息。提出的 DSAM 应用不同尺度的膨胀卷积分别在 stage_3,4,5 上,之后经过下采样和拼接操作后,一个 3 × 3 3\times3 3×3 的卷积操作用于融合这些多尺度的特征。采用 L 2 ′ L_{2}^{\prime} L2′ 正则化来监督训练过程。
C、Category-Attention Module
虽然DSAM有用,但是不完全有用,因此设计 CAM 来产生区分性强的密度图,主要是分别处理每个类别的空间注意力。具体来说,首先利用距离转换将点图转化为距离图
S
S
S,定义如下:
P
(
x
,
y
)
=
min
(
x
i
,
y
i
)
∈
A
(
x
−
x
i
)
2
+
(
y
−
y
i
)
2
P_{(x, y)}=\min _{\left(x_{i}, y_{i}\right) \in A} \sqrt{\left(x-x_{i}\right)^{2}+\left(y-y_{i}\right)^{2}}
P(x,y)=(xi,yi)∈Amin(x−xi)2+(y−yi)2
其中,
P
(
x
,
y
)
P_{(x, y)}
P(x,y) 表示距离图
S
S
S 位置
(
x
,
y
)
(x,y)
(x,y) 上的值。
A
A
A 为标注点的坐标集合。通过使用阈值
J
J
J 将距离图
S
S
S 上的点划分为
0
−
1
0-1
0−1 来获得伪标签注意力 masks 。
CAM 仅采用 sage_5 上的特征图作为输入,因为该层具有更加丰富的语义信息。之后经过多个卷积和拼接操作来联合多尺度的特征图。这里卷积指的是采用膨胀因子为
1
,
2
,
3
,
4
1,2,3,4
1,2,3,4 的膨胀卷积。空间注意力图的数量等于类别的数量。预测的空间注意力图和预测的密度图相乘就能获得最终的密度图了,这一操作能有效减少类别间的联系。
D、损失函数
利用
L
2
L_2
L2 损失来衡量GT密度图和预测密度图之间的区别:
L
2
=
∑
n
=
1
N
∑
x
=
1
W
∑
y
=
1
H
∣
P
(
n
,
x
,
y
)
′
−
P
(
n
,
x
,
y
)
∣
2
L_{2}=\sum_{n=1}^{N} \sum_{x=1}^{W} \sum_{y=1}^{H}\left|P_{(n, x, y)}^{\prime}-P_{(n, x, y)}\right|^{2}
L2=n=1∑Nx=1∑Wy=1∑H∣∣∣P(n,x,y)′−P(n,x,y)∣∣∣2
其中,
N
N
N 为类别的总数,
W
,
H
W,H
W,H 分别为图像的高和宽。
P
(
n
,
x
,
y
)
′
P_{(n, x, y)}^{\prime}
P(n,x,y)′和
P
(
n
,
x
,
y
)
P_{(n, x, y)}
P(n,x,y)分别表示位置
(
x
,
y
,
z
)
(x,y,z)
(x,y,z) 上的预测密度图和GT密度图的值。采用相同的损失来训练 DASM,即
L
2
p
r
i
m
e
L_{2}^{prime}
L2prime。
采用 BCE 损失来训练 CAM:
L
B
C
E
=
−
1
W
×
H
∑
n
=
1
N
∑
x
=
1
W
∑
y
=
1
H
(
(
T
(
n
,
x
,
y
)
×
log
R
(
n
,
x
,
y
)
)
+
(
1
−
T
(
n
,
x
,
y
)
)
×
log
(
1
−
R
(
n
,
x
,
y
)
)
)
L_{B C E}=-\frac{1}{W \times H} \sum_{n=1}^{N} \sum_{x=1}^{W} \sum_{y=1}^{H}\left(\left(T_{(n, x, y)} \times \log R_{(n, x, y)}\right)\right.\left.+\left(1-T_{(n, x, y)}\right) \times \log \left(1-R_{(n, x, y)}\right)\right)
LBCE=−W×H1n=1∑Nx=1∑Wy=1∑H((T(n,x,y)×logR(n,x,y))+(1−T(n,x,y))×log(1−R(n,x,y)))
其中
T
(
n
,
x
,
y
)
∈
{
0
,
1
}
T_{(n,x,y)}\in {\{}0,1{\}}
T(n,x,y)∈{0,1}表示位置
(
x
,
y
)
(x,y)
(x,y) 处第
n
n
n 个类别的伪标签注意力 mask。
R
(
n
,
x
,
y
)
∈
[
0
,
1
]
R_{(n,x,y)}\in[0,1]
R(n,x,y)∈[0,1] 表示位置
(
n
,
x
,
y
)
(n,x,y)
(n,x,y) 处预测的空间注意力。
训练过程的总损失为:
L
=
L
2
+
L
2
′
+
L
B
C
E
L = L_{2}+L_{2}^{\prime}+L_{BCE}
L=L2+L2′+LBCE
四、实验
A、实施细节
端到端方式训练,采用VGG16预训练权重中的前13个卷积层。高斯初始化因子设为0.01标准差。距离阈值
J
J
J 设为
20
20
20。图像预处理采用随机翻转和图像裁剪,尺寸为
512
×
512
512\times512
512×512。采用Adam优化器更新网络参数,单个NVDIA2080Ti进行训练,实验结果如下:
B、数据集
由于目前没有公开的多类别目标计数数据集,因此利用带有多个单类别目标计数集 RSOC 和目标检测数据集 VisDrone。对于目标检测数据集,通过计算 bouding box 的中心坐标来获得点标注,所有实验均在点标注的情况下进行。
VisDrone-DET Dataset
该数据集包含10209个图像,多个类别,只考虑行人+人融合后的人类数据集以及自行车数据集,其挑战在于目标的尺寸极小。
RSOC Dataset
该数据集包含3057个图像,收集自 Google Earth 和 DOTA 遥感数据集,包含4个类别:建筑物,小的交通工具,大的交通工具和船。特别地,小的交通工具和大的交通工具总是同时出现在图像中,而这刚好满足了多类别目标计数的要求。本文考虑的是其中小的交通工具和大的交通工具子集。其挑战在于 RSOC 数据集中包含有一些背景噪声。
C、评估标准
绝对平均误差 MAE 和均方误差 MSE 是最主要的评价指标,来统计所有类别的平均得分,多类别计数的能力可以表示为:
M
A
E
=
1
M
∑
m
=
1
M
∣
Q
m
′
−
Q
m
∣
,
M
S
E
=
1
M
∑
m
=
1
M
(
Q
m
′
−
Q
m
)
2
,
M
A
E
Average
=
1
N
∑
n
=
1
N
M
A
E
n
,
M
S
E
Average
=
1
N
∑
n
=
1
N
M
S
E
n
,
\begin{aligned} M A E &=\frac{1}{M} \sum_{m=1}^{M}\left|Q_{m}^{\prime}-Q_{m}\right|,\\ M S E &=\sqrt{\frac{1}{M} \sum_{m=1}^{M}\left(Q_{m}^{\prime}-Q_{m}\right)^{2},} \\ M A E_{\text {Average }} &=\frac{1}{N} \sum_{n=1}^{N} M A E_{n}, \\ M S E_{\text {Average }} &=\frac{1}{N} \sum_{n=1}^{N} M S E_{n}, \end{aligned}
MAEMSEMAEAverage MSEAverage =M1m=1∑M∣Qm′−Qm∣,=M1m=1∑M(Qm′−Qm)2,
=N1n=1∑NMAEn,=N1n=1∑NMSEn,
其中
M
M
M 为测试集中图像的数量,
N
N
N 为类别的数量。
Q
m
′
,
Q
m
Q_{m}^{\prime},Q_{m}
Qm′,Qm 为第
m
m
m 幅图像中预测的目标数量和GT数量。
D、Comparisons With the State-of-The-Art
E、消融实验
五、结论
本文提出了 DSACA 框架,能够在只依赖点标注的情况下同时实现最佳的多类别目标计数性能。设计了 DSAM 和 CAM 分别用于克服密度图之间的关联以及缓解多尺度的影响,实验表明效果很好。
写在后面
2021年结束了,2022年,希望有更多的成果发表,早日毕业~
祝大家新年快乐呀~