@TOC
1. 简介
- 参考论文《Analysis Based on Recent Deep Learning Approaches Applied in Real-Time Multi-Object Tracking: A Review》
- JDE:Joint Detection and Embedding (一阶段:一个端到端的网络同时输出检测结果和对应检测Box的外观特征向量)
- SDE:Separate Detection and Embedding (两阶段:先检测Box, 然后再计算检测Box对应的外观特征向量)
- MOT方法分类:
- 在线方法(Online Method):只使用当前和过去的信息
- 批处理方法(Batch Method):使用未来的信息
1.1 轨迹与检测Box的关联特征
- 运动特征(motion)
- 外观特征(appearance)
- 位置特征(location)
1.1 MOT挑战
- 人体姿势、摄像机视角、照明、遮挡、分辨率、背景杂乱和其他意外场景的复杂变化频繁发生
- 人员拥挤并快速移动 (crowded scenes and fast motion, 如长跑)
1.2 轻量级网络
- SqueezeNet:通过使用 1×1 卷积层“挤压”特征图通道来实现更高的运行速度
- MobileNet: 通过使用低成本的深度卷积层和逐点卷积层替换高资源消耗的卷积层来减少运行时间
- ShuffleNet:通过减少element-wise算子和平衡输入输出通道,在推理过程中降低了MAC(Memory Access Cost),进一步提高了网络运行速度
2. 方法汇总及分类
3. FairMOT
- FairMOT:使用外观特征可以执行长距离的关联,而且可以处理遮挡情况
3.1 One-shot跟踪器中的不公平性问题
3.1.1 Anchors导致的不公平
- 基于anchor的设计不适合学习re-ID特征,尽管检测结果很好,但会导致大量的ID切换,其原因如下:
- re-ID任务得不到公平的学习:导致re-ID特征质量不高
- 一个Anchor对应多个目标:提取的特征在准确性和有区别地表示目标对象方面不是最优的
- 多个Anchors包含同一个目标:一个具体的目标取哪一个Anchor很难准确判断
3.1.2 特征导致的不公平
- 大部分特征在对象检测和re-ID任务间共享,但不同任务需要不同层次的特征
- 对象检测:需要深层抽象特征估计对象的类别和位置
- re-ID任务:需要浅层外观特征,以区分相同类别的不同实例
- 从多任务损失函数优化的角度看,对象检测与re-ID的优化目标是冲突的,所以必须有对应的策略来平衡这个优化
3.1.3 特征维度导致的不公平
- 以前的re-ID,为了在benchmarks上获得好的效果,经常学习高维的特征向量
- 对于one-shot MOT,学习低维特征更好的理由:
- 高维 re-ID 特征显着损害目标检测精度:由于两个任务的竞争,从而对最终跟踪精度产生负面影响 (对象检测的特征维度很低:类别号+box位置),所以需要学习低维re-ID特征以平衡这两个任务
- MOT任务不同于re-ID任务:MOT任务在相邻两帧间执行1到1匹配,而re-ID任务需要查询大量的候选项,因此需要更高维的特征
- 学习低维特征可以提高推理速度
3.2 FairMOT网络组成
- FairMOT主要由以下三部分组成:
- 主干网络
- 对象检测分支
- re-ID分支
3.2.1 主干网络(Backbone Network)
- 为取得最佳的准确度和速度,主干网络使用ResNet-34,把深层聚合(DLA:Deep Layer Aggregation)应用到主敢网络以融合多层特征。不同于原始的DLA,在低级与高级特征间有更多skip链接,类似于特征金字塔(FPN:Feature Pyramid Network)
3.2.2 检测分支(Detection Branch)
- 检测分支构建于CenterNet之上,三个并行的heads附加在DLA-34上,用于分别估计:
- heatmaps
- object center offsets
- bounding box sizes
- 每个head把具有256个channels的3x3卷积应用于DLA-34输出的特征图上,然后由一个1x1的卷积层输出最后的结果
3.2.2.1 热图头(Heatmap Head )
-
此热图头负责估计对象中心的位置
-
如果热图中某个位置的响应与真实对象中心重合,则该位置的响应预计为 1
-
响应随着热图位置和对象中心之间的距离呈指数衰减
-
对于图像中的真实Box的位置:
b i = ( x 1 i , y 1 i , x 2 i , y 2 i ) b^i = (x_1^i, y_1^i, x_2^i, y_2^i) bi=(x1i,y1i,x2i,y2i) -
则对象的中心为:
( c x i , c y i ) = ( x 1 i + x 2 i 2 , y 1 i + y 2 i 2 ) (c_x^i, c_y^i) = (\frac{x_1^i + x_2^i}{2}, \frac{y_1^i + y_2^i}{2} ) (cxi,cyi)=(2x1i+x2i,2y1i+y2i) -
对象中心在特征图中的坐标为:
( c ~ x i , c ~ y i ) = ( ⌊ c x i 4 ⌋ , ⌊ c y i 4 ⌋ ) (\widetilde c_x^i, \widetilde c_y^i) = (\lfloor \frac{c_x^i}{4} \rfloor, \lfloor \frac{c_y^i}{4} \rfloor) (c xi,c yi)=(⌊4cxi⌋,⌊4cyi⌋) -
热图在位置 ( x , y ) (x,y) (x,y)处的响应为:
M x y = ∑ i = 1 N e x p − ( x − c ~ x i ) 2 + ( y − c ~ y i ) 2 2 σ c 2 M_{xy} = \sum_{i=1}^N exp^{-\frac{(x - \widetilde c_x^i)^2 + (y - \widetilde c_y^i)^2}{2 \sigma_c^2}} Mxy=i=1∑Nexp−2σc2(x−c xi)2+(y−c yi)2- N:表示图像中对象的个数
- σ c \sigma_c σc:表示标准偏差
-
热图的损失函数:定义为具有焦点损失(focal loss)的像素级逻辑回归
L h e a t = − 1 N ∑ x y { ( 1 − M ^ x y ) α l o g ( M ^ x y ) , if M x y = 1 ( 1 − M x y ) β ( M ^ x y ) α l o g ( 1 − M ^ x y ) , otherwise ( 1 ) L_{heat} = - \frac{1}{N} \sum_{xy} \begin{cases} (1 - \hat M_{xy})^{\alpha} log (\hat M_{xy}), & \text{if $M_{xy}=1$ } \\ (1 - M_{xy})^{\beta}(\hat M_{xy})^{\alpha} log (1- \hat M_{xy}), & \text{otherwise} \end{cases} \quad (1) Lheat=−N1xy∑{(1−M^xy)αlog(M^xy),(1−Mxy)β(M^xy)αlog(1−M^xy),if Mxy=1 otherwise(1)- M ^ \hat M M^:是估计的热图
- M M M:是真实的热图
- α , β \alpha, \beta α,β:是focal loss中预定义的参数
3.2.2.2 检测框偏移量头(Box Offset Head)
- 检测框偏移量头:使目标的定位更加准确
- 由于最终特征图的步幅为四,因此将引入多达四个像素的量化误差。 该分支估计每个像素相对于对象中心的连续偏移,以减轻下采样的影响。
- 检测框偏移量头输出的估计值:
O ^ = R 2 × H × W \hat O = \mathbb R^{2 \times H \times W} O^=R2×H×W - 对每个真实Box
b
i
=
(
x
1
i
,
y
1
i
,
x
2
i
,
y
2
i
)
b^i = (x_1^i, y_1^i, x_2^i, y_2^i)
bi=(x1i,y1i,x2i,y2i),计算其Offset为:
O i = ( c x i 4 , c y i 4 ) − ( ⌊ c x i 4 ⌋ , ⌊ c y i 4 ⌋ ) O^i = (\frac{c_x^i}{4}, \frac{c_y^i}{4}) - (\lfloor \frac{c_x^i}{4} \rfloor, \lfloor \frac{c_y^i}{4} \rfloor) Oi=(4cxi,4cyi)−(⌊4cxi⌋,⌊4cyi⌋)
3.2.2.3 检测框尺寸头(Box Size Head)
- 检测框尺寸头:负责在每个位置估计目标框的高度和宽度
- 检测框尺寸头输出的估计值:
S ^ = R 2 × H × W \hat S = \mathbb R^{2 \times H \times W} S^=R2×H×W - 对每个真实Box
b
i
=
(
x
1
i
,
y
1
i
,
x
2
i
,
y
2
i
)
b^i = (x_1^i, y_1^i, x_2^i, y_2^i)
bi=(x1i,y1i,x2i,y2i),计算其Size为:
S i = ( x 2 i − x 1 i , y 2 i − y 1 i ) S^i = (x_2^i - x_1^i, y_2^i - y_1^i) Si=(x2i−x1i,y2i−y1i)
3.2.2.4 检测框偏移量和尺寸的损失函数
L b o x = ∑ i = 1 N ∥ O i − O ^ i ∥ 1 + λ s ∥ S i − S ^ i ∥ 1 ( 2 ) L_{box} = \sum_{i=1}^N \| O^i - \hat O^i \|_1+ \lambda_s \| S^i - \hat S^i \|_1 \quad (2) Lbox=i=1∑N∥Oi−O^i∥1+λs∥Si−S^i∥1(2)
- λ s \lambda_s λs:是一个权重参数,在原始的CenterNet中被设置为 0.1 0.1 0.1
3.2.3 Re-ID分支
- Re-ID 分支:旨在生成可以区分对象的特征
- 理想情况下,不同对象之间的亲和力应该小于相同对象之间的亲和力。为了实现这一目标,在主干特征之上应用了一个具有 128 个内核的卷积层,以提取每个位置的 re-ID 特征
- Re-ID中的特征图:
E ∈ R 128 × H × W E \in \mathbb R^{128 \times H \times W} E∈R128×H×W - 在对象中心位置
(
x
,
y
)
(x, y)
(x,y)提出的Re-ID特征为:
E x , y ∈ R 128 E_{x,y} \in \mathbb R ^{128} Ex,y∈R128 - 通过分类任务学习 re-ID 特征。 训练集中,同一个人的不同对象实例被看作同一类。
- Re-ID分支的损失函数:对于每个真实的Box
b
i
=
(
x
1
i
,
y
1
i
,
x
2
i
,
y
2
i
)
b^i = (x_1^i, y_1^i, x_2^i, y_2^i)
bi=(x1i,y1i,x2i,y2i),在热图中获得其中心位置
(
c
~
x
i
,
c
~
y
i
)
(\widetilde c_x^i, \widetilde c_y^i)
(c
xi,c
yi),同时提取到Re-ID特征向量
E
c
~
x
i
,
c
~
y
i
E_{\widetilde c_x^i, \widetilde c_y^i}
Ec
xi,c
yi,然后使用全连接层和softmax把它映射到类分布向量
P = { p ( k ) , k ∈ [ 1 , K ] } P = \{p(k), k \in [1, K]\} P={p(k),k∈[1,K]} - L i ( k ) L^i(k) Li(k):为GT 类标签的 one-hot表示
- K K K: 在训练数据中所有参与人员的数量
- N N N:表示当前图片中人的数量
- Re-ID分支损失函数:
L i d e n t i t y = − ∑ i = 1 N ∑ k = 1 K L i ( k ) l o g ( p ( k ) ) ( 3 ) L_{identity} = -\sum_{i=1}^N \sum_{k=1}^K L^i(k)log(p(k)) \quad (3) Lidentity=−i=1∑Nk=1∑KLi(k)log(p(k))(3)
3.3 FairMOT训练
- 通过把所有损失增加到一起(方程(1)、(2)、(3)),联合训练检测和Re-ID分支
- 检测损失函数如下:
L d e t e c t i o n = L h e a t + L b o x ( 4 ) L_{detection} = L_{heat} + L_{box} \quad (4) \\ Ldetection=Lheat+Lbox(4) - 总的损失函数如下:
L t o t a l = 1 2 ( 1 e ω 1 L d e t e c t i o n + 1 e ω 2 L i d e n t i t y + ω 1 + ω 2 ) ( 5 ) L_{total} = \frac{1}{2} (\frac{1}{e^{\omega_1}}L_{detection} + \frac{1}{e^{\omega_2}}L_{identity} + \omega_1 + \omega_2) \quad (5) Ltotal=21(eω11Ldetection+eω21Lidentity+ω1+ω2)(5) - ω 1 \omega_1 ω1和 ω 2 \omega_2 ω2:是学习参数,用于平衡检测任务和Re-ID任务
3.3.1 训练方法
- 给定一张包含一些对象及其对应 ID 的图像,然后生成热图、检测框偏移量和尺寸图,以及对象的 one-hot 类别表示。这些直值与估计值进行比较,从而获得损失值,以达到训练整个网络的目的
3.4 在线推理
3.4.1 网络推理
- 把尺寸大小为1088x608图片输入网络
- 基于输出的预测热图,根据热图分数执行NMS以提取峰值关键点,当关键点的分数大于阈值时,则保留此关键点
- 基于估计的偏移量和box尺寸,计算检测框
- 在估计的对象中心,计算Re-ID特征
3.4.2 在线关联
- 为第一帧中的每个检测框创建一个跟踪器
- 在后面的帧中,使用两阶段匹配策略把当前帧中的检测框与已有的跟踪器连接起来
- 第一阶段:
- 使用Kalman Filter预测跟踪器下一帧的位置,然后计算当前检测框与Kalman Filter预测位置间的马氏距离 D m D_m Dm (与DeepSORT相同),当 D m > t h r e s h o l d D_m > threshold Dm>threshold,则 D m D_m Dm为无穷大,以避免运动变化大的轨迹
- 计算Re-ID特征间的余弦距离 D r D_r Dr
- 检测框与跟踪器间的距离: D = λ D r + ( 1 − λ ) D m ( λ = 0.98 ) D = \lambda D_r + (1-\lambda) D_m \quad (\lambda = 0.98) D=λDr+(1−λ)Dm(λ=0.98)
- 使用Hungarian algorithm算法进行匹配 (匹配阈值: τ 1 = 0.4 \tau_1 = 0.4 τ1=0.4)
- 第二阶段:
- 对于未匹配的检测框和轨迹,根据预测框与检测框的IoU进行匹配(匹配阈值: τ 2 = 0.5 \tau_2 = 0.5 τ2=0.5)
- 每次匹配成功之后,就更新外观特征以处理外观不断变化的情况
- 最后, 把未匹配的检测框初始化为一个新的跟踪器,对于未匹配成功的跟踪器,保留30帧 以防可以30帧内再次出现
3.5 有效性研究
3.5.1 多层特征融合
- 主干网络分为两类:
- 无多层特征融合:ResNet, RegNet
- 有多层特征融合:FPN, HRNet, DLA, HarDNet
- 主干网络与MOT效果间的关系
- 大而强的主干网络并不总是可以获得好的MOT效果
- Re-ID质量很少受益于大的主干网络
- 多层特征融合比简单使用大而强的网络有明显的优势
- 特征融合(FPN, DLA和HRNet)有效地改善了Re-ID特征的分辨能力
- 多层特征融合是解决Re-ID问题的关键
- 多层特征融合可缓解特征冲突问题:方法是允许每个任务从融合特征中提取其自身任务所需的任何内容
- 大而强的主干网络并不总是可以获得好的MOT效果
3.5.2 特征维度
- 特征维度在平衡检测和跟踪精度方面有着重要的作用
- 学习低维度的特征:有利于提高检测精度和提高推理速度
- 低维特征(如64)比高维特征(如512)有更好的性能
3.5.3 数据关联方法
- 用于数据关联的三个因素:
- 检测框IoU
- Re-ID特征
- 基于Kalman滤波的运动特征
- 以上三个因素用于计算每一对检测框的相似度,其组合效果如下图所示:
- 人员密度:表示每张图片中人员的数量
- 同时进行目标检测和Re-ID所花的时间基本与人员密度无关。
- Kalman Filter和IoU匹配与人员密度关系不是很大,但Re-ID匹配随着人员密度的增加从而线性增加,因为更新每个跟踪器的Re-ID特征需要较多的时间,其时间关系如下图所示:
3.5.4 Re-ID相似度可视化
3.5.5 MOT结果比较
3.5.5.1 One-Shot MOT比较
3.5.5.2 One-Shot和Two-Step MOT比较
3.5.6 训练数据与MOT结果的关系
- 结果表明,本方法不需要大量数据,这在实际应用中是一个很大的优势
3.6 总结
- 当行人相互交叉遮挡时,由于有高质量的Re-ID特征,所以本方法仍可正确地分配ID,以减少ID跳变。其根本原因是使得了多层特征融合策略。
4. 深层聚合(DLA:Deep Layer Aggregation)
- DLA:本聚合架构包含并扩展了密集连接的网络和特征金字塔网络,这些网络具有分层和迭代的跳跃连接,可以加深表示并提高分辨率。
4.1 基本概念
- 聚合:定义为整个网络中不同层的组合
- 深度聚合:如果一组聚合是组合的、非线性的,并且最早的聚合层经过多个聚合
- 模块化设计:由于网络可以包含许多层和连接,模块化设计有助于通过分组和重复来应对复杂性
- 块、阶段:层被分组为块,然后按其特征分辨率分组为阶段。 我们关心的是聚合块和阶段
- 聚合节点(Aggregation Nodes):其功能为组合和压缩它的输入
- 更深的阶段更具语义但在空间上更粗糙
4.2 聚合方法:
- 迭代深度聚合(IDA:Iterative Deep Aggregation):遵循主干架构的迭代堆叠。根据特征分辨率将网络的堆叠块划分为阶段。 从较浅到较深阶段的跳过连接合并尺度和分辨率
- 分层深度聚合(HDA:Hierarchical Deep Aggregation):以树形的方式合并块和阶段以保留和组合特征通道
- HDA 将更浅和更深的层结合起来,以学习更丰富的组合,跨越更多的特征层次结构。而 IDA虽然有效地组合了阶段,但它不足以融合网络的许多块,因为它仍然只是顺序的。
- 分类网络:使用 IDA 和 HDA 增强了 ResNet 和 ResNeXT的功能和性能
- 分级网络:按空间分辨率对块进行分组,每个块内都有残差连接。每个阶段的末尾将分辨率减半,总共有六个阶段,第一阶段保持输入分辨率,而最后阶段是 32倍下采样
4.3 DLA与ResNet的异同点
- 二者有相似数量的层和相同的卷积块
- DLA的参数更少,但性能更好
- DLA-34经ResNet-34都使用基本块,但参数少30%, 而top-1错误率降低了1%