PointSetNet:Point-Set Anchors for Object Detection,Instance Segmentation and Pose Estimation

转载请注明作者和出处: http://blog.csdn.net/john_bh/

论文链接: Point-Set Anchors for Object Detection,Instance Segmentation and Pose Estimation
作者及团队:微软亚洲研究院
会议及时间:ECCV 2020
Code: https://github.com/FangyunWei/PointSetAnchor

1.主要贡献

作者认为当前用于物体检测和人体姿势估计的最新方法(CenterNet)是从物体或人的中心点回归边界框或人体关键点,虽然简单有效,但是当物体deformation 和scale/orientation variation时,在中心点提取的图像特征包含的信息有限,无法预测距离远的关键点或边界框边界。所以作者提出在一组可能更接近回归目标的点上获得特征,这个点集是根据任务来确定的

  • 分割,点被放置在隐式边界框的边缘;
  • 位姿估计,点的排列遵循训练数据位姿分布中的模式。

如图1所示:
在这里插入图片描述
主要贡献:

  • 提出 Point-Set Anchors,可以看作时经典 box anchor 的一个扩展,可以进一步提供信息,更好地初始化特定回归任务,以进行形状回归;
  • 提出 PoinSetNet,基于RetinaNet 做了修改:使用Point-set 替换 anchor boxes,添加了一个回归分支。可用于目标检测、人体姿态估计和实例分割任务中,解决回归问题。

这样 PointSetNet 就使用regression的思路去统一Object Detection, Instance Segmentation,Pose Estimation三个high-level recognition 任务。

2. PointSetNet

2.1 Point-Set Anchors

point-set anchor T T T 包含许多根据特定任务定义的有序点。

  • Pose point-set anchor:
    使用人的关键点来形成姿态点设置 point-set anchor。例如,在COCO数据集中,有17个关键点,姿态 point-set anchor 由34维向量表示。在每个图像位置,使用几个point-set anchors。将 point-set anchors 初始化为训练集中最频繁的姿势。使用标准的k-means聚类算法将所有的训练位姿划分为k个聚类,用每个聚类的平均位姿形成point-set anchor。如图1(b)所示。
  • Instance mask point-set anchor:
    该 anchor 由两个部分组成:一个中心点和n个有序 anchor points,如图1(a)所示。n是控制采样密度的超参数。 在 mask point-set anchor中的Corner points也可以作为目标检测的参考点。在每个图像位置,通过改变隐式边界框的比例和长宽比来形成 9 个 point-set anchors。

2.2 Shape Regression

作者把实例分割,目标检测和pose 估计看作 shape regression 问题。使用 Shape S S S 表示目标, S = { S i } i = 1 n s S=\{S_i\}_{i=1}^{n_s} S={Si}i=1ns n s n_s ns个有序的点集,其中 S i S_i Si表示:在实例分割中表示第 i i ipolygon vertex;在目标检测中表示bounding box中 第 i i icorner vertex;在pose 估计中表示第 i i ikeypoint。作者引入 T T T 作为 shape regression 的参考,目的是从 point-set anchor T T T 到 shape S S S 中 回归出 offsets Δ T \Delta T ΔT

  • Offsets for pose estimation:
    姿态估计任务中的每个关键点代表一个具有语义意义的关节(头,右肘或左膝),使用17个关键点作为形状 S S S 和 offsets 是: Δ T = S − T \Delta T=S-T ΔT=ST
  • Offsets for instance segmentation:
    实例mask的形状 S S S 也包含一组有序点,并且不同对象实例的点数可能不同。 point-set anchor T T T 为所有实例定义,并包含固定数目的点。计算offsets Δ T \Delta T ΔT,从形状 S S S 找到匹配点 T ∗ T^* T,每个匹配点与 T T T 中的每个点一一对应, Δ T = T ∗ − T \Delta T=T^*-T ΔT=TT,匹配策略如图2所示:
    在这里插入图片描述
    • Nearest point:
      基于 L 1 L1 L1 距离,将 point-set anchor T T T 中每个点的匹配目标定义为 S S S 中最接近的 polygon point。因此,一个单一的 polygon point 可能被分配给几个anchor points,一个anchor points,或者没有一个。
    • Nearest line:
      把掩模轮廓 S S S 当作 n s n_s ns线段的序列,而不是 n s n_s ns离散的 polygon vertices。将每个anchor points投影到所有的polygon edges 上,并将最近的投影点分配给相应的anchor point。
    • Corner point with projection:
      首先通过 Nearest Point 策略找到四个角 anchor points,然后将这些角点用于将mask轮廓分为四个部分,即顶部,右侧,底部和左侧。 对于这四个部分中的每个部分,每个anchor points 是水平(对于左侧和右侧部分)或垂直(对于顶部和底部)的投影线与mask轮廓线段之间的最近交点。 如果匹配点位于由匹配角点界定的相应轮廓线之外,会将其标记为无效(invalid),并且在训练和测试中将其忽略。 其余的anchor points及其匹配项被标记为有效(valid),可进行蒙版回归学习。
  • Offsets for object detection:
    对于目标检测,bounding box shape S S S 可以看作是两个 keypoint (top-left 和 bottom-right ),offsets Δ T \Delta T ΔT 是mask point-set anchors定位点中目标点到对应角点的距离。
  • Positive and negative samples:
    在给point-set anchors分配正负标签时,直接使用IoU进行目标检测和实例分割,使用OKS(Object Keypoint Similarity)进行姿态估计。在实例分割和目标检测中,如果一个point-set anchor 对于给定的 ground-truth box 具有最高的IoU,或者IoU超过0.6,那么它将被分配一个正标签,如果IoU小于0.4 ,则使用负标签。在实例分割中,在掩模point-set anchors 的隐式 bounding boxes 与ground-truth bounding boxes之间使用IoU代替掩模,以减少计算量。对于人体位姿估计,如果point-set anchor对给定的ground-truth位姿具有最高的OKS,或者对任何ground-truth 位姿的OKS超过0.5,则给point-set anchor正标签,如果所有 ground-truth 的OKS都低于0.4,则为负标签。
  • Mask construction:
    在实例分割中,用回归的anchor points构造掩码作为推理的后处理步骤。对于最近点和最近线的匹配方法,选择任意点作为原点,并将相邻点按顺序连接起来。对于带有的角点投影,一个mask 是类似地仅由有效点构造的。

2.3 PointSetNet

  • Architecture
    PointSetNet是RetinaNet的直观而自然的扩展。它用point-set anchor代替了rectangular anchor,并在头部附加了一个并行的回归分支用于实例分割或姿态估计。图3展示了PointSetNet的结构:
    在这里插入图片描述
    使用多尺度特征金字塔来检测不同尺度的物体。 具体来说,利用五层特征图{P3, P4, P5, P6, P7}。 P3,P4和P5由主干特征图C3,C4和C5生成,后跟 1 × 1 1 \times1 1×1 卷积层和横向连接(如FPN)。 P6和P7分别由C5和P6上的 3 × 3 3\times 3 3×3 stride-2卷积层生成。 结果,{P3, P4, P5, P6, P7}的 stride 是{8, 16, 32, 64, 128, 256}。 头部包含用于分类,mask或姿势回归以及边界框回归的几个子网。 每个子网包含四个 3 × 3 3\times 3 3×3个 步长为1的卷积层,一个仅用于姿势估计任务的特征聚合层和一个输出层。表1列出了三个子网的输出维度,用于实例分割和姿态估计。
    在这里插入图片描述
  • Point-set anchor density:
    基于anchor的检测框架中最重要的设计因素之一是可能anchor的采样空间的密集程度。对于实例分割,使用mask point-set anchors 替换rectangular anchors ,并使用3尺度和在每个特征图上每个位置的3个纵横比生成9个bounding boxes。anchor points在生成的bounding boxes 的四周均匀采样。对于姿态估计,使用k-means聚类算法生成的3个平均位姿。然后我们将它们转换到特征图的每个位置作为point-set anchors。进一步为每个anchor,使用3个尺度和3个旋转,每个位置得到27个anchors,其他特征图设置与实例分割相同。
  • Loss function:
    PointSetNet的训练损失函数定义如下:
    在这里插入图片描述
    其中 L c l s L_{cls} Lcls 是 Focal loss, L r e c L_{rec} Lrec 是 对shape 回归的 L 1 L_1 L1 loss ; c x , y ∗ 和 t x , y ∗ c_{x,y}^*和 t_{x,y}^* cx,ytx,y分别表示目标的分类和回归; N p o s N_{pos} Npos表示正样本的数量; λ \lambda λ 是平衡权重,在实例分割和姿势估计中分别是0.1和10.0; 1 { c x , y ∗ } > 0 1_{\{c_{x,y}^*\}>0} 1{cx,y}>0 是指标函数,当 { c x , y ∗ } > 0 \{c_{x,y}^*\}>0 {cx,y}>0为1,否则为0。

3. Experiments

3.1 Instance Segmentation

  • Mask matching strategies:
    在这里插入图片描述

  • Effect of point-set anchors:
    在这里插入图片描述

  • Comparison with state-of-the-art methods:
    在这里插入图片描述

3.2 Pose Estimation

  • Effect of point-set anchors
    从表6中可以看出,OKS大于0.5分配的ground truth位姿更多,平均位姿锚定比中心点锚定和矩形锚定的表现好很多。
    在这里插入图片描述
  • Effect of deep shape indexed feature:
    在这里插入图片描述
  • Effect of multi-stage refinement:
    在这里插入图片描述
  • Effect of stronger backbone network and multi-scale testing:
    在这里插入图片描述
  • Comparison with state-of-the-art methods:
    在这里插入图片描述
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值