论文笔记之Point-Set Anchors for Object Detection, Instance Segmentation and Pose Estimation

用一组点设置anchor形状(矩形、人形),然后回归这些点来完成不同的任务(检测、分割、人体姿态估计)。
ECCV2020
论文地址:https://arxiv.org/abs/2007.02846

1. 总述

最近的一种目标检测和人体姿态估计方法是从物体或人的中心点回归边界框或人体关键点。虽然这种中心点回归是简单而有效的,但由于物体变形和尺寸/方向变化,提取的图像特征包含的信息是有限的(关键点可能不在中心点附近),来预测远处的关键点或边界框边界是不太够的。为了便于推断,作者从一组位于更有利位置的点执行回归。该点集的目的是对给定任务进行良好的初始化,例如位姿估计训练数据中的人形分布,这些模式比中心点更接近真实值,并为回归提供更多的信息特征。

2. Point-Set Anchors

在这里插入图片描述
Pose point-set anchor: 使用人体的关键点来形成姿势point-set anchor。例如,COCO格式有17个关键点,位姿point-set anchor由一个34维向量表示(每个点包括横坐标纵坐标)。在图像的每个位置使用若干个point-set anchor。使用训练集中最频繁的pose来初始化point-set anchor形状。使用标准的k-均值聚类算法将所有训练pose划分为k个簇,每个簇的平均pose用来形成一个point-set anchor。

Instance mask point-set anchor: 该anchor有两部分:一个中心点和n个有序anchor点,它们从隐式边界框中均匀采样。n是控制采样密度的超参数。点集中的角点也可以作为目标检测的参考。在每个图像位置,通过改变隐式边界框的比例和纵横比来形成9个point-set anchor。

3. Shape Regression

作者把实例分割,目标检测和姿态估计看作 shape regression 问题。使用 S S S表示目标, S = { S i } i = 1 n s S=\left\{S_{i}\right\}_{i=1}^{n_{s}} S={ Si}i=1ns n s n_s ns个有序的点集,其中 S i S_i Si表示:在实例分割中表示第 i i i个多边形顶点;在目标检测中表示bounding box中 第 i i i个 角点;在姿态估计中表示第 i i i个关键点。作者引入 T T T作为 shape regression 的参考,目的是从 point-set anchor T T T到 shape S S S中 回归出 offsets Δ T \Delta T ΔT

3.1 Offsets for pose estimation

姿态估计任务中的每个关键点代表一个具有语义意义的关节,使用17个关键点作为形状 S S S,则offsets 是: Δ T = S − T \Delta T= S − T ΔT=ST

3.2 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中的每个点一一对应,offset为 Δ T = T ∗ − T \Delta T= T^* − T ΔT=TT,匹配策略如图所示:在这里插入图片描述
黄色实心点表示真实值的多边形点集。绿色实心点和绿色空心点分别表示有效和无效的anchor point。橙色和黄色线分别表示角点和非角点anchor point的对应关系。只有有效的anchor point才被考虑用于训练和推理。

三种匹配策略:

  • Nearest point: 根据L1距离,将anchor点集 T T T中每个点的匹配目标定义为 S S S中最近的多边形点。因此,一个多边形点可以被指定给多个anchor point、一个anchor point,或者没有一个anchor point。
  • Nearest line: 将mask轮廓视为 n s n_s ns个线段的序列,而不是 n s n_s ns个离散多边形顶点。每个anchor点投影到所有多边形边,最近的投影点指定给相应的anchor点。
  • Corner point with projection: 首先用最近点策略找到四个角点的目标,然后用最近点策略将mask轮廓细分为上、右、下、左四个部分,与对应侧的anchor点匹配。对于四个部分中的每一个,每个anchor点的目标是水平(用于左侧和右侧部分)或垂直(用于顶部和底部部分)投影线与mask轮廓的线段之间的最近交点。如果匹配点位于由匹配角点划分的相应轮廓段(上下左右4段)之外,将其标记为无效,并在训练和测试中忽略它。剩余的anchor点及其匹配标记为有效的掩码进行回归学习。

3.3 Offsets for object detection

目标检测中的bounding box形状可以表示为两个关键点,即左上角和右下角。offset Δ T \Delta T ΔT是mask point-set anchors定位点中目标点到对应角点的距离。

3.4 Positive and negative samples

在为anchor点集指定正负标签时,直接使用IoU进行目标检测和实例分割,并使用物体关键点相似度(OKS)进行姿态估计。形式上:

  • 在实例分割和目标检测中,如果一个anchor点集对于给定的真实框具有最高的IoU或与任何一个真实框具有0.6以上的IoU,则为其分配一个正标签;如果对于所有真实框,其IoU低于0.4,则为一个负标签。
  • 在实例分割中,使用掩模point-set anchors的隐式边界框与真实边界框之间的IoU来代替掩模,以减少计算量。
  • 对于人体姿势估计,如果一个point-set anchors对于给定的姿势真实值具有最高的OKS,或者其与任何一个真实pose的OKS大于0.5则为其指定一个正标签;对于所有姿势真实值,如果其OKS低于0.4,则为一个负标签。

3.5 Mask construction

在实例分割中,由回归的point-set anchors构造一个掩模作为推理的后处理步骤。对于最近点和最近线的匹配方法,选择任意点作为原点,依次连接相邻点。对于有投影的角点,同样只从有效点构造mask。

4. 网络结构

在这里插入图片描述
网络体系结构。左侧部分表示主干网和特征金字塔网络,用于从不同级别提取特征。右侧部分显示了用于分类和使用point-set anchors的mask/姿势估计的共享head(为了更清楚地说明,省略了边界框回归分支)。

它是对RetinaNet进行一点修改得来的,它简单地用point-set anchors代替anchor,并附加一个并行回归分支来进行实例分割或姿态估计

anchor设置的密度:
简单地用掩模point-set anchor代替经典的矩形anchor,并且在每个特征图上每个位置使用3个尺寸和3个宽高比。在每个位置上生成9个边界框特征图。point-set anchors在生成的边界框的四个边上均匀采样。

对于位姿估计,使用k-means聚类算法生成3个平均姿态。然后将它们转换到特征映射的每个位置作为point-set anchors。进一步为每个anchor使用3个尺度和3个旋转,每个位置产生27个anchor。其他特征映射设置与实例分段中的设置相同。

损失函数:
在这里插入图片描述
其中 L c l s L_{cls} Lcls是Focal loss, L r e g L_{reg} Lreg是对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。

5. 实验

(1)实例分割和目标检测在COCO上的结果
在这里插入图片描述
(2)姿态估计在COCO上的结果
在这里插入图片描述
(3)anchor points 和 mask contours匹配的三种策略比较
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/haha0825/article/details/109890986