美文网首页
CornetNet && CenterNet && RepPoi

CornetNet && CenterNet && RepPoi

作者: csuhan | 来源:发表于2019-10-11 20:26 被阅读0次

    CornerNet

    论文名称:CornerNet: Detecting Objects as Paired Keypoints
    论文地址:传送门

    Introduction

    CornerNet最大的创新在于其突破了anchor的限制,使用两个点来表示物体的bounding box,并提出了corner pooling,且取得了不错的效果。

    其指出基于anchor的one-stage detectors通常需要大量的anchor,但最终只提取极少数的box,且导致参数多,计算量大,而其仅通过一个物体的top-left和bottom-right 两个点来确定物体的位置,且不需要各种scale(但事实上其训练速度、测试速度也非常慢)。

    在COCO数据集上其达到了42.2%的mAP。

    Network

    CornerNet采用的backbone为hourglass network(HN),HN的主要特点是重复的bottom-up、top-down操作,使得不同层之间的信息相互融合。


    Hourglass Module

    如图所示,在一张图片经过ConvNet之后,其分别进入两个分支的网络,其分别预测物体的左上角和右下角,然后通过group corner将同一个物体的corner连接起来,接着还设置了一个offset 网络,对预测点进行offset。

    CornerNet

    在进行角点检测的过程中,每一个分支都将产生C个heatmaps,其中C代表物体的类别数,每个heatmap的大小都是H \times W
    对于每一个角,其都只有一个ground truth,但靠近此点的prediction也能产生一个近似的预测,因此不能简单地将其归为negtive。为此本文对每个ground truth点设置了一个半径,半径内的即被认为是positive。而半径设置时需要满足半径内的点组成的box与gt box之间的IoU达到某个阈值(本文为0.3)。

    由于heatmap较小,在映射回去之后会产生较大的误差,因此本文对每个点都设计了一个offset,使得映射回去的点进行一个修正。如下式中,o_k即为offset。
    o_k = (\frac{x_k}{n}-[\frac{x_k}{n}],\frac{y_k}{n}-[\frac{y_k}{n}])
    为此本文采用Smooth L1 Loss来定义offset loss。
    L_{off}=\frac{1}{N} \sum_{k=1}^N SmoothL1Loss(o_k,\hat{o}_k)

    由于作者在前面采用两张heatmap分别预测两个角点,因此需要将两者进行配对(Grouping Corners),在这里作者主要采用了Associative Embedding的思想。在AE中,作者定义了group loss,即L_g,其前半部分是将同一个人体的点pull在一起,后半部分是将不同的人的点push出去,从而使得同一个人的点具有相同的tag,不同人的点具有不同的tag,即同时实现了检测和分组,而不像传统的方法分两个阶段来解决。

    Associative Embedding

    本文中作者指出,对于同一个box的顶点距离也比较近,也可以采用Associative Embedding来实现点的分组。因此定义了L_{pull}L_{push},分别用来将top-left corner和bottom-right corner pull在一起、push awy。其中e_k是两个点的平均值,\Delta设置为1。
    L_{pull} = \frac{1}{N} [(e_{tk}-e_k)^2+(e_{bk}-e_k)^2]
    L_{push}=\frac{1}{N(N-1)} \sum_{k=1}^N \sum_{j=1,j \neq k}^N max(0, \Delta-|e_k-e_j|)

    其实就是在训练时为每个corner分配一个embeddding vector,然后使用Associative Embedding,根据点之间的距离进行grouping。

    Corner Pooling

    Corner Pooling

    一般情况下,物体的角点不会在物体上,我们在寻找物体的角点时,如左上角,一般会先向右看,找到最靠左的点,然后向下看,找到最靠上的点,那么这两个值组成的点便是左上角点;右下角同理。
    具体来说,对于点(i,j),我们对(i,j)(i,H)之间所有的点进行maxpool,将结果赋予t_{ij},同理对水平方向也这样进行。

    Corner Pool

    其示意图如下所示。

    Detection Module

    即经过backbone之后有三个分支,一个类似于residual connection,另外两个负责预测top-left corner,接着进行corner pooling,接着对pool之后的特征图连接,然后分为三个部分,分别预测heatmaps、Embeddings、Offsets,最后以一个multi-task loss进行优化。
    L = L_{det}+ \alpha L_{pull} + \beta L_{push} + \gamma L_{off}

    CenterNet

    论文名称:Objects as Points
    论文地址:传送门

    Introduction

    目标检测当中通常使用bounding box来定位object,目前流行的detector也是基于这种方法:产生大量的可能存在目标的box,这显然是wasteful,inefficient。而本文使用一个中心点来表示物体,使用keypoint estimation对尺寸、3D location、orientation、pose等进行点回归。在COCO数据集上达到28.1% AP时有142 FPS,37.4%时有52 FPS,45.1%时有1.4FPS。

    本文模型的流程十分简单:将影像送入全卷积网络当中,产生一个heatmap,heatmap中的peaks即为目标的中心点。

    在测试时并不需要NMS,因为CenterNet并不需要阈值来区分正样本和负样本,只需要根据heatmap的peaks来确定正样本即可:一个目标仅有一个positive,并不需要选出若干anchor。

    同时CenterNet使用了一个较大的output(反卷积实现的),因此并不需要多尺度anchor。

    事实上CornerNet和ExtremeNet都是对点进行检测,但他们都需要对点进行配对,而CenterNet并不需要这个过程。

    Preliminary

    输入:I \in R^{W \times H \times 3}
    输出:\hat{Y} \in [0,1]^{\frac{W}{H} \times \frac{W}{H} \times C}
    其中C代表关键点的类型,如人体姿态检测C=17,COCO目标检测类别C=80

    Ground Truth: 使用高斯分布将keypoints展开成heatmap。

    Keypoints Loss:Focal Loss

    Offset Loss: \hat{O} \in R^{\frac{W}{H} \times \frac{W}{H} \times 2}

    Size Loss: s_k = (x_2^{(k)}-x_1^{(k)},y_2^{(k)}-y_1^{(k)})\hat{S} \in R^{\frac{W}{H} \times \frac{W}{H} \times 2}

    则总的Loss: L_{det}=L_k+\lambda_{size}L_{size}+\lambda_{off}L_{off}

    网络在每个位置输出C+4个值,其中C为关键点类型数,4表示2个size,2个offset,而每个点的location是根据heatmap的peaks得出的。

    在网络经过不同的backbone(Resnet、Hourglass、DLA)之后,经过一个3 \times 3卷积、Relu、1 \times 1卷积。

    不同的backbone

    从点到bounding box:
    (\hat{x}_i+\delta \hat{x}_i - \hat{w}_i/2,\hat{y}_i+\delta \hat{y}_i - \hat{h}_i/2,\hat{x}_i+\delta \hat{x}_i + \hat{w}_i/2,\hat{y}_i+\delta \hat{y}_i + \hat{h}_i/2)
    其中(\delta \hat{x}_i,\delta \hat{y}_i)为offset

    Summary

    虽然CornerNet在论文里argue物体的中心点并不好找,但CenterNet并不需要Associate Embedding的过程,因此效率会更高。我觉得其最具创新的是:将每个物体定义为一个点,接着对于不同的任务,将中心点向不同的方向regression。

    相关文章

      网友评论

          本文标题:CornetNet && CenterNet && RepPoi

          本文链接:https://www.haomeiwen.com/subject/shiupctx.html