Centernet

Centernet检测

Centernet源码里主要有三个部分的检测代码

  • ctdet(目标检测)
  • human_pose(人体位姿检测)
  • ddd(3D检测)
    对三部分解读如下:

论文解读

centernet是anchor-free的算法,本质上是通过检测到物体中心点之后回归bbox来实现目标检测的。

  • 首先,Centernet分配锚点单纯依靠在图像中的位置,而不像锚框那样用box的重叠面积。这也不用手动设置阈值来区分前景和背景。

  • 其次,Centernet在每个物体上只会设置一个锚点,所以也不需要NMS(非极大值抑制)来选取锚点

  • 最后,Centernet输出结果的分辨率要比传统方法高(下采样率为4)

    ctdet(目标检测)

    在目标检测部分,关键是怎么获取到目标上的锚点。Centernet生成了关键点热力图,热力图尺寸是H*W*C,C是检测目标的类别数,如果是COCO数据集C=80。即针对每一类形成了一张热力图用于训练。Centernet中还用R=4生成了下采样后的热力图。

    Centernet中用几个全卷积网络去预测热力图上的像素值Y:

    • Hourglass network
    • ResNet
    • DLA

    Centernet用高斯函数对GT值进行处理,距离GT值坐标越远,越接近于0。如果同一类的两个高斯值位置重叠,取值最大的那个

    热力图的损失函数如图:
    热力图Focal Loss

    函数里的变量含义可自行查看论文

    因为提取热力图时进行了下采样,热力图的GT点会跟原始图像有位置上的偏差。为了克服这个离散误差,对预测点引入关于位置偏差的损失函数:

    位置偏差损失函数

    预测得到中心点坐标之后,通过回归中心点与bbox的距离,得到预测的bbox。
    bbox损失函数

    最后将三部分损失函数按照一定的权重加和成最终的损失函数:
    Centernet损失函数

    推理过程(从中心点到bounding box):
    先把每一类热力图中的峰值点提取出来,检测值比它的8个邻接点大或相等的点,保留前100的点,

    human pose(人体关键点检测)

    现阶段人体姿态识别主流的通常有2个思路:

    1)Top-Down方法:将人体检测和关键点检测分离,在图像上首先进行人体检测,找到所有的人体框,对每个人体框图再使用关键点检测,这类方法往往比较慢,但姿态估计准确度较高。目前的主流是CPN,Hourglass,CPM,Alpha Pose等。

    2)Bottom-Up方法:先检测图像中人体部件,然后将图像中多人人体的部件分别组合成人体,因此这类方法在测试推断的时候往往更快速,准确度稍低。

    Centernet中人体关键点检测的方法就是典型的bottom-up方法,对于人体关键点检测,Centernet将人体骨骼划分为17个点,形成的关键点热力图中C=17。

    把每个关键点参数化为对于中心点的偏移量,输入网络进行回归。Centernet通过改变loss函数将不可视的关键点忽视了。将预测结果与热力图上最近的点匹配,就能把预测到的关键点分配到最近的人体实例上。

    human pose还有很多好玩的玩法,比如改变关键点的个数,将17个关键点改成15个:
    hp15

    ddd(单目3D检测)

    Centernet在3d物体检测中对每个中心点添加了深度,3D尺寸和方向。Centernet用L1 Loss训练深度检测器,直接对3D尺寸进行回归,对方向的处理是将其分成两个bin,每个bin有4个scalars,对方向进行编码,在一个bin中,2个scalars用于分类,2个用于回归角度。

    相比于其他的3D检测算法,Centernet在3D上并没有亮眼的操作。论文的核心还是ctdet和human pose

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值