[论文笔记]CenterNet 阅读笔记

CenterNet阅读笔记

  • Objects as Points(CVPR 2019)
    • 摘要
    • 1. 引言
    • 2. 相关工作
    • 3. 预备知识
    • 4. 将物体编码为点(Objects as Points)
      • 从点到边界框(From points to bounding boxes)
    • 5. 实现细节
    • 6. 实验
      • 6.1 目标检测(Object detection)
        • 6.1.1 其他实验(Additional experiments)
          • 中心点“碰撞”(Center point collision)
          • 训练和测试分辨率、回归损失、边界框尺寸权重、训练周期(Training and Testing resolution、Regression loss、Bounding box size weight、Training schedule)
      • 6.2 3D检测(3D detection)
      • 6.3 姿态检测(Pose estimation)
    • 7. 结论
    • Appendix A:Model Architecture
    • Appendix B:3D BBox Estimation Details
    • Appendix C:Collision Experiment Details
    • Appendix D: Experiments on PascalVOC
    • Appendix E:Error Analysis
    • 思考

Objects as Points(CVPR 2019)

论文链接:论文链接
代码链接:代码链接

  • 这个团队的还有另一篇关于CenterNet的应用的文章被ECCV 2020接收了
  • 注意,这篇论文提出的检测器叫做CenterNet,还有另一篇文章的名字也叫做CenterNet,(CenterNet: Keypoint Triplets for Object Detection),要注意区分
  • 这篇文章的heatmap和offset的思路来自CornerNet,可以参考一下CornerNet论文

[论文笔记]CenterNet 阅读笔记_第1张图片

摘要

  • 本文将一个对象(object)建模为一个点(keypoint)——它的边界框(bounding box)的中心点(center)
  • 检测器使用关键点估计(keypoint estimation)来找到中心点并回归object的其他属性,例如大小、3D 位置、方向,甚至姿势
    [论文笔记]CenterNet 阅读笔记_第2张图片
  • CenterNet不用进行NMS

1. 引言

  • 目标检测是一个标准的keypoint estimation问题,只需将图像输入到生成heatmap的全卷积网络中。此heatmap的峰值对应于对象中心。feature map上的峰值预测物体边界框的高度和权重。

2. 相关工作

  • CenterNet与one-stage的anchor-based方法十分相似,但有一下三点不同:

    • CenterNet只根据位置来分配 anchor,而不是box的overlap,对前景和背景分类没有手动阈值(没有超参数IoU)
    • 每个物体只有一个正的 anchor,因此不需要非最大抑制(NMS),只需在keypoint heatmap中提取局部峰值即可
    • 与传统的目标检测器(输出stride为16)相比,CenterNet使用更大的输出分辨率(输出stride为4),这就消除了对多个anchors的需求
      [论文笔记]CenterNet 阅读笔记_第3张图片
  • CenterNet与其他keypoint estimation方法的区别:因为对于每一个物体仅仅进行一个中心点的估计,因此不用在检测后进行关键点的组合分组(比如CornerNet估计的是bb的两个corner,那么在一个特征图中会检测出许多的corner,哪些corner属于的是同一个bb呢?这就是组合分组过程)

3. 预备知识

  • I ∈ R W × H × 3 I \in R^{W×H×3} IRW×H×3 是输入图片,目标是产生一个keypoint heatmap Y ^ ∈ [ 0 , 1 ] W R × H R × C \hat Y\in [0,1]^{\frac{W}{R}×\frac{H}{R}×C} Y^[0,1]RW×RH×C,其中 R R R是输出heatmap的stride, C C C是keypoint的类型(例如人体姿态估计中 C = 17 C=17 C=17,目标检测里面 C = 80 C=80 C=80),这里作者将 s t r i d e = 4 stride=4 stride=4,而 Y ^ x , y , c = 1 \hat Y_{x,y,c}=1 Y^x,y,c=1表示检测到的关键点,而 Y ^ x , y , c = 0 \hat Y_{x,y,c}=0 Y^x,y,c=0表示这个点是背景
  • 对于gt上的一个属于第 c c c类的关键点 p ∈ R 2 p\in \mathcal R^2 pR2,可以得到在 s t r i d e = R stride=R stride=R的特征图上的对应点 p ~ = ⌊ p R ⌋ \widetilde p=\lfloor \frac{p}{R}\rfloor p =Rp,使用高斯核 Y x y c = e x p ( − ( x − p ~ x ) 2 + ( y − p ~ y ) 2 2 σ p 2 ) Y_{xyc} = exp (\frac{ −(x− \widetilde p_x)^2+(y− \widetilde p_y)^2}{2σ^2_p} ) Yxyc=exp(2σp2(xp x)2+(yp y)2)将这些gt上的keypoints放置到heatmap Y ∈ [ 0 , 1 ] W R × H R × C Y\in [0,1]^{\frac{W}{R}×\frac{H}{R}×C} Y[0,1]RW×RH×C中,其中 δ p \delta _p δp是一个对象尺寸自适应标准差。如果相同类的高斯值有重叠,那么取较大值作为这个点的值,The training objective is a penalty-reduced pixel-wise logistic regression with focal loss(这句话不知道怎么用中文表述):
    [论文笔记]CenterNet 阅读笔记_第4张图片
    其中 α \alpha α β \beta β是focal loss的超参数, N N N是原图 I I I中keypoint的数量
  • 为了恢复由stride引起的离散化误差,对于每一个中心点额外预测一个local offset O ^ ∈ R W R × H R × 2 \hat O\in\mathcal R^{\frac{W}{R}×\frac{H}{R}×2} O^RRW×RH×2,所有类别共享相同的offset预测,这个预测用下面这个损失来训练:
    L o f f = 1 N ∑ p ∣ O ^ p ^ − ( p R − p ^ ) ∣ L_{off}=\frac{1}{N}\sum_p|\hat O_{\hat p}-(\frac{p}{R}-\hat p)| Loff=N1pO^p^(Rpp^)
    这个训练仅由关键点位置 p ^ \hat p p^来训练,其他位置被忽略

4. 将物体编码为点(Objects as Points)

  • 假设 ( x 1 ( k ) , y 1 ( k ) , x 2 ( k ) , y 2 ( k ) ) (x_1^{(k)},y_1^{(k)}, x_2^{(k)},y_2^{(k)}) (x1(k),y1(k),x2(k),y2(k))是第k个object的bb,它的类别是 c k c_k ck,则它的中心点在 p k = ( x 1 ( k ) + x 2 ( k ) 2 , y 1 ( k ) + y 2 ( k ) 2 ) p_k=(\frac{x_1^{(k)}+x_2^{(k)}}{2}, \frac{y_1^{(k)}+y_2^{(k)}}{2}) pk=(2x1(k)+x2(k),2y1(k)+y2(k)),使用heatmap Y ^ \hat Y Y^来预测所有的中心点。另外,为每一个object k回归size s k = ( x 2 ( k ) − x 1 ( k ) , y 2 ( k ) − y 1 ( k ) ) s_k=(x_2^{(k)}-x_1^{(k)}, y_2^{(k)}-y_1^{(k)}) sk=(x2(k)x1(k),y2(k)y1(k)),为了减少计算量,所有的物体共享预测 S ^ ∈ R W R × H R × 2 \hat S\in \mathcal R^{\frac{W}{R}×\frac{H}{R}×2} S^RRW×RH×2(和上面的offset的预测一样,都是所有类共享),并且使用L1 loss训练
    L s i z e = 1 N ∑ k = 1 N ∣ S ^ p k − s k ∣ L_{size}=\frac{1}{N}\sum_{k=1}^N|\hat S_{p_k}-s_k| Lsize=N1k=1NS^pksk
  • 总的训练目标是
    L d e t = L k + λ s i z e L s i z e + λ o f f L o f f L_{det}=L_k+\lambda _{size}L_{size}+\lambda _{off}L_{off} Ldet=Lk+λsizeLsize+λoffLoff
    使用单一的网络来预测keypoint Y ^ \hat Y Y^,offset O ^ \hat O O^, size S ^ \hat S S^,最终整个网络预测结果的通道数是 C + 4 C+4 C+4
    [论文笔记]CenterNet 阅读笔记_第5张图片

从点到边界框(From points to bounding boxes)

  • 在推理阶段,为每一个类别c单独进行heatmap上的峰值提取。检测其值大于或等于其 8 个邻近点的所有峰值,并保留前 100 个峰值。假设 P ^ c \hat P_c P^c表示为类别c对应检测到的的点集 P ^ = { ( x ^ i , y ^ i ) i = 1 n } \hat P=\{(\hat x_i,\hat y_i)_{i=1}^n\} P^={(x^i,y^i)i=1n},并将 Y ^ x i y i c \hat Y_{x_iy_ic} Y^xiyic作为对应点的置信度度量,在这个位置上生成一个bb
    ( x ^ i + δ x ^ i − ω ^ i / 2 ,    y ^ i + δ y ^ i − h ^ i / 2 ) , x ^ i + δ x ^ i + ω ^ i / 2 ,    y ^ i + δ y ^ i + h ^ i / 2 ) (\hat x_i+\delta \hat x_i - \hat\omega_i/2,\space\space \hat y_i+\delta \hat y_i - \hat h_i/2),\\\hat x_i+\delta \hat x_i + \hat\omega_i/2,\space\space\hat y_i+\delta \hat y_i + \hat h_i/2) (x^i+δx^iω^i/2,  y^i+δy^ih^i/2),x^i+δx^i+ω^i/2,  y^i+δy^i+h^i/2)
    其中 ( δ x ^ i , δ y ^ i ) = O ^ x ^ i , y ^ i (\delta\hat x_i, \delta \hat y_i)=\hat O_{\hat x_i, \hat y_i} (δx^i,δy^i)=O^x^i,y^i是预测的offset, ( ω ^ i , h ^ i ) = S ^ x ^ i , y ^ i (\hat \omega_i,\hat h _i)=\hat S_{\hat x_i, \hat y_i} (ω^i,h^i)=S^x^i,y^i是预测的size
  • 3D检测 和 人体姿态识别 目前我用不到,暂时不看,不过所有的检测在除了keypoint estimation外都需要添加一些属性,这些属性通过添加head来进行预测,总结如下:
    • 目标检测:需要local offset和object size
    • 3D检测:需要3D size,depth,orientation
    • 人体姿态识别:需要joint location,joint heatmap,joint offset

5. 实现细节

  • 在4个架构上进行了实验,分别是RestNet-18,ResNet-101,DLA-34(Deep Layer Aggregation),Hourglass-104;作者还使用可变形卷积层修改了 ResNets 和 DLA-34
  • 各个网络架构如下图:
    [论文笔记]CenterNet 阅读笔记_第6张图片

6. 实验

[论文笔记]CenterNet 阅读笔记_第7张图片

6.1 目标检测(Object detection)

[论文笔记]CenterNet 阅读笔记_第8张图片
[论文笔记]CenterNet 阅读笔记_第9张图片

6.1.1 其他实验(Additional experiments)

中心点“碰撞”(Center point collision)
  • 如果两个不同的对象完全对齐,它们可能会共享同一个中心点。在这种情况下,CenterNet 只会检测到其中一个。但是COCO里面只有总过860001个物体发生了上述问题,<0.1%,比其他方法里面因为IoU阈值导致的bb丢失还少
训练和测试分辨率、回归损失、边界框尺寸权重、训练周期(Training and Testing resolution、Regression loss、Bounding box size weight、Training schedule)
  • 所有实验如下表:
    [论文笔记]CenterNet 阅读笔记_第10张图片

6.2 3D检测(3D detection)

[论文笔记]CenterNet 阅读笔记_第11张图片

6.3 姿态检测(Pose estimation)

[论文笔记]CenterNet 阅读笔记_第12张图片

7. 结论

  • 对于所有任务,预测center point,再对于不同细分任务需要的属性(比如目标检测需要size、offset,3D检测需要depth、3D dimension、orientation)分别设计head即可

Appendix A:Model Architecture

  • 模型架构,上面已经放过这个图了

Appendix B:3D BBox Estimation Details

  • 暂时不看

Appendix C:Collision Experiment Details

  • 这一节就是计算了一下中心点“碰撞”问题的概率,没什么内容

Appendix D: Experiments on PascalVOC

[论文笔记]CenterNet 阅读笔记_第13张图片

Appendix E:Error Analysis

[论文笔记]CenterNet 阅读笔记_第14张图片

思考

  1. 作者提出了“中心点碰撞”的问题,但是没有提出解决方案?????留给我们来解答哈哈哈哈

你可能感兴趣的:(论文笔记,人工智能,深度学习,计算机视觉)