CenterTrack:Tracking Objects as Points

由CenterNet伸展过来,通过在原CenterNet模型上,输入增加4通道(上一帧图像和检测结果),输出增加2通道(位置偏移)。通过位置偏移和上一帧的对象关联起来,实现多目标跟踪

CenterNet

一个Anchor free的目标检测模型,把目标视为一个点。其输出为位置+Size,通过位置和Size恢复bounding Box。

当训练时的位置label为以物体中心为均值的高斯分布(方差与物体大小有关)。当存在多个对象时,高斯分布交集部分,其label取较大值的那个。因此其label Y ∈ [ 0 , 1 ] W R × H R × C Y\in [0,1]^{{W\over R} \times {H \over R}\times C} Y[0,1]RW×RH×C,其中 R R R为下采样倍率, C C C为类别数,即COCO中为80。其训练loss即为Focal loss(无类别平衡系数,而是通过指数 α = 2 \alpha=2 α=2 β = 4 \beta=4 β=4 来平衡类别权重):
L k = 1 N ∑ x y c { ( 1 − Y ^ x y c ) α log ⁡ ( Y ^ x y c )  if  Y x y c = 1 ( 1 − Y x y c ) β ( Y ^ x y c ) α log ⁡ ( 1 − Y ^ x y c )  otherwise  L_{k}=\frac{1}{N} \sum_{x y c}\left\{\begin{array}{ll} \left(1-\hat{Y}_{x y c}\right)^{\alpha} \log \left(\hat{Y}_{x y c}\right) & \text { if } Y_{x y c}=1 \\ \left(1-Y_{x y c}\right)^{\beta}\left(\hat{Y}_{x y c}\right)^{\alpha} \log \left(1-\hat{Y}_{x y c}\right) & \text { otherwise } \end{array}\right. Lk=N1xyc(1Y^xyc)αlog(Y^xyc)(1Yxyc)β(Y^xyc)αlog(1Y^xyc) if Yxyc=1 otherwise 

当测试时,predicate的局部最大值(且大于阈值)即为检测对象所在位置(局部最大值仅与周围8个点的值对比)。同时其值即为置信度Confidence。

同时还有个双通道的输出 S ^ ∈ R W R × H R × 2 \hat{S} \in \mathbb{R}^{\frac{W}{R}\times \frac{H}{R} \times 2} S^RRW×RH×2用于size尺度回归。这部分仅对物体的中心点计算L1 Loss
L size = 1 N ∑ i = 1 N ∣ S ^ p i − s i ∣ L_{\text {size}}=\frac{1}{N} \sum_{i=1}^{N}\left|\hat{S}_{\mathbf{p}_{i}}-\mathbf{s}_{i}\right| Lsize=N1i=1NS^pisi

CenterTrack

CenterTrack:Tracking Objects as Points_第1张图片
模型输入为当前帧 I m a g e   I t Image \ I^t Image It,上一帧 I m a g e   I t − 1 Image \ I^{t-1} Image It1和上一帧所有跟踪对象 T r a c k s   T t − 1 Tracks \ T^{t-1} Tracks Tt1。其中 T r a c k s   T t − 1 Tracks \ T^{t-1} Tracks Tt1是把上一帧的所有检测到的对象,把每个对象(大于阈值)转为一个高斯分布,然后叠在一个heatmap里。与CenterNet里生成label方式不同的是,CenterNet里是考虑类别的,不同类别的物体在不同的channel里。而这里不考虑类别,所以只有一个通道。

模型输出结果除了CenterNet的检测结果(  Detections  Y ^ ( t )  size  S ^ ( t ) \text { Detections } \hat{Y}^{(t)} \quad \text { size } \hat{S}^{(t)}  Detections Y^(t) size S^(t))外,多加了个2通道的 Offset  O ^ ( t ) \text {Offset} \ \hat O^{(t)} Offset O^(t),用于得到跟踪对象的偏移量,训练Loss也是L1,也是只对物体的中心点计算损失。这部门就类似于光流预测(中心点的光流)

得到偏移量后,就可以将两帧关联起来了,然后根据当前帧的检测结果的置信度 w w w从高到低,按最近匹配去关联上一帧的未匹配对象。若在半径 k k k内没匹配到对象,则认为是新目标。

Training on video data

在infer时,输入的 T r a c k s   T t − 1 Tracks \ T^{t-1} Tracks Tt1可能存在很多干扰,假正例,误差,漏检等。因此在训练时也加入一些抖动模拟误差(Tips:有点奇怪为什么还要在输入加上 T r a c k s   T t − 1 Tracks \ T^{t-1} Tracks Tt1

你可能感兴趣的:(目标跟踪)