object as point阅读笔记

object as point阅读笔记

这篇文章做了啥

作者的主要动机是,绝大多数的object detectors都几近枚举大量的潜在的物体locations并且对他们进行分类。这种方式是非常浪费的,不足够的,以及需要额外的后处理。在这篇文章中,我们采用了一种不一样的方法。作者将物体建模为一个点,这个点是其bbx的中心点。作者是使用关键点估计的方法来找到这个中心点,并且回归其他的物体特性,比如size或者是3D location,方向甚至是pose。

作者提出来的这种方法,centernet是一个end2end的,可微分的,简单且快速,甚至比基于bbx的detectors还要快。centernet达到了最佳的speed-accuracy trade-off 在coco数据集上,

比如AP达到28.1%,则帧率为142FPS,37.4%的AP,帧率能在52, 以及更高的45.1的AP,1.4FPS的帧率。

作者使用同样的方法来在KITTI数据集中估计3D bbx,或者是COCO 的keypoint检测数据集上,同样的能比其他更复杂的keypoint检测算法达到更高的精度。

方法初步

假设输入的图片为\(I \in R^{W \times H \times 3}\), 作者的目标是产生一个关键点heatmap \(\hat{Y} \in[0,1]^{\frac{W}{R} \times \frac{H}{R} \times C}\), 其中\(R\)是stride,C表示有多少个keypoint type,如果是人体姿态估计的话,则\(C=17\),如果是物体检测的话,则\(C=80\)。作者默认\(R=4\)。如果一个prediction \(\hat{Y}_{x, y, c}=1\), 则对应为检测到的关键点,如果\(\hat{Y}_{x, y, c}=0\),则为背景。我们使用一系列的不同的全卷积的encoder-decoder的网络结构来从一个image \(I\)里面来预测 \(\hat{Y}\),网络结构主要包括stacked hourglass network, 上卷积的残差网络,以及DLA模块。

作者follow Law和Deng的方法来训练keypoint prediction network。对于一个ground truth的keypoint \(p \in \mathcal{R}^{2}\),作者先做一个低分辨率的近似,来得到等效的点\(\tilde{p}=\left\lfloor\frac{p}{R}\right\rfloor\), 然后,作者将所有的gt的点都放到一个heatmap \(Y \in[0,1]^{\frac{W}{R} \times \frac{H}{R} \times C}\) , 其中

\[Y_{x y c}=\exp \left(-\frac{\left(x-\tilde{p}_{x}\right)^{2}+\left(y-\tilde{p}_{y}\right)^{2}}{2 \sigma_{p}^{2}}\right) \]

而,\(\sigma_p\)为随着物体尺寸而改变的物体的方差,如果同一类的两个高斯重叠的话,作者取element-wise maximum。训练的目标使用penalty-reduced pixel-wise logistic regression with focal loss:

\[L_{k}=\frac{-1}{N} \sum_{x y c}\left\{\begin{array}{cl} \left(1-\hat{Y}_{x y c}\right)^{\alpha} \log \left(\hat{Y}_{x y c}\right) & \text { if } Y_{x y c}=1 \\ \left(1-Y_{x y c}\right)^{\beta}\left(\hat{Y}_{x y c}\right)^{\alpha} & \\ \log \left(1-\hat{Y}_{x y c}\right) & \text { otherwise } \end{array}\right. \]

其中\(\alpha\)\(\beta\)分别是focal loss的超参数。\(N\)表示图片中有多少keypoints.

为了能够恢复通过output stride引入的量化误差,作者对每一个中心点都额外的预测了一个local offset

\[\hat{O} \in \mathcal{R}^{\frac{W}{R} \times \frac{H^{\prime}}{R} \times 2} \]

所有的classes c都共享一个相同的offset prediction,offset使用L1 loss进行训练

\[L_{o f f}=\frac{1}{N} \sum_{p}\left|\hat{O}_{\tilde{p}}-\left(\frac{p}{R}-\tilde{p}\right)\right| \]

这个监督只在locations \(\tilde{p}\)上进行约束,其他的location都会被忽略。

Objects as Points

\(\left(x_{1}^{(k)}, y_{1}^{(k)}, x_{2}^{(k)}, y_{2}^{(k)}\right)\)为物体\(k\),类别\(c_k\)的的bbx。作者使用他们的keypoint estimator \(\hat{Y}\), 来预测所有的中心点,除此之外还会预测物体\(k\)的尺寸\(s_{k}=\left(x_{2}^{(k)}-x_{1}^{(k)}, y_{2}^{(k)}-y_{1}^{(k)}\right)\)。为了减少计算压力,作者对所有的物体种类都使用单个size predictor \(\hat{S} \in \mathcal{R}^{\frac{W}{R} \times \frac{H}{R} \times 2}\). 同时作者使用了L1 loss,定义如下

\[L_{\text {size }}=\frac{1}{N} \sum_{k=1}^{N}\left|\hat{S}_{p_{k}}-s_{k}\right| \]

总共的训练的loss定义如下

\[L_{\text {det }}=L_{k}+\lambda_{\text {size }} L_{\text {size }}+\lambda_{\text {of } f} L_{\text {off }} \]

作者选取\(\lambda_{size} = 0.1\)\(\lambda_{off}=1\)

作者只选取一个网络来预测关键点 \(\hat{Y}, \text { offset } \hat{O}, \text { and size } \hat{S}\)。所以通道一共是\(C+4\)个,每个位置的输出都是\(C+4\)个预测结果。

在验证阶段,我们首先提取heatmap的peaks。然后检测所有的,pixel value大于其周围8个值的那些value,然后保存100个peak。假设\(\hat{\mathcal{P}}_{c}\)是对C类,n个检测到的中心点的集合,可以表述为\(\hat{\mathcal{P}}=\left\{\left(\hat{x}_{i}, \hat{y}_{i}\right)\right\}_{i=1}^{n}\)。作者使用key point values \(\hat{Y}_{x_{i} y_{i} c}\)作为检测的confidence的度量.对于预测的bbx,可以表示为

\[\begin{array}{l} \left(\hat{x}_{i}+\delta \hat{x}_{i}-\hat{w}_{i} / 2, \quad \hat{y}_{i}+\delta \hat{y}_{i}-\hat{h}_{i} / 2\right. \\ \left.\hat{x}_{i}+\delta \hat{x}_{i}+\hat{w}_{i} / 2, \quad \hat{y}_{i}+\delta \hat{y}_{i}+\hat{h}_{i} / 2\right) \end{array} \]

上述公式包含位置的偏差,以及预测得到的长宽。从关键点估计的所有的输出都能够被直接处理,而不需要IoU-based的NMS或者是其他的后处理。Peak keypoint extraction其实可以看做是NMS的一种替代方案,这种方案可以直接通过\(3*3\)的max pooling来实现。

人体姿态估计

人体姿态估计涉及到对每一个人实体,估计\(k\)个2D的人体关节点。对于coco而言,\(k=17\)。作者将pose视作中心点的\(k*2\)维度特性。作者直接使用l1 loss回归joint offsets (in pixels) \(\hat{J} \in \mathcal{R}^{\frac{W}{R} \times \frac{H}{R} \times k \times 2}\)

作者忽视看不见的节点。为了更进一步refine这种keypoints, 作者进一步估计\(k\)个human关节的heatmap \(\hat{\Phi} \in \mathcal{R}^{\frac{W}{R} \times \frac{H}{R} \times k}\),使用的方法是标准的bottom-up的multi-human pose estimation方法。

这里有一个疑问是:作者说的是使用multi-human pose estimation,并且引用了一些文献,我的问题是,这些文献是根据已经检测到的关键点来进行后期的姿态估计吗?

作者还说,作者测center offset是用作一个group的cue。通过把每一个keypoint分配给最近的person instance。特别地,假设\((\hat{x}, \hat{y})\)为检测到的中心点,我们首先regress 所有的joint locations

\[l_{j}=(\hat{x}, \hat{y})+\hat{J}_{\hat{x} \hat{y} j} \text { for } j \in 1 \ldots k \]

然后作对于所有的joint type \(j\) 从对应的heatmap $\hat{\Phi} \ldots j $ 提取了所有的关键点的位置\(L_{j}=\left\{\tilde{l}_{j i}\right\}_{i=1}^{n_{j}}\). 然后作者对每一个regressed的location \(l_j\) 福一个它最近的detedted keypoint \(\arg \min _{l \in L_{j}}\left(l-l_{j}\right)^{2}\)

posted on 2021-05-26 14:05  YongjieShi  阅读(123)  评论(0编辑  收藏  举报

导航