论文地址:https://arxiv.org/abs/1701.01779
论文总结
本文是top-down的姿态检测模型,其人体检测器采用Faster RCNN,Faster RCNN 以 ResNet-101 姿态检测器以Res101作为backbone,预测两个分支:Heamtap( K K K个channel)和Offset( 2 ∗ K 2*K 2∗K个channel)。同时,在对人体检测器采用的 NMS 方案,作者提出了一种新的 NMS 方案:使用 0.6 0.6 0.6的 IoU 阈值执行 NMS,过滤掉过于重叠的边框;对剩余的边框,进行 keypoint 检测,最后采用 pose detection 的分数结果作为 confidence 代替 bounding box 的 score。即采用 OKS-NMS 代替粗糙的 box level 的 IoU-NMS。该置信度的替换,作者说能较大幅度的增加AP。
论文介绍
Person Box Detection
在人体检测器网络结构上,使用 ResNet-101 作为backbone,删除最后一层,添加空洞卷积,以用stride=8的结构预测更密集的feature map,而不是默认的stride=32,。
CNN backbone在ImageNet上进行分类预训练;Faster RCNN的回归和分类,只是用COCO数据集的person数据,其他的19个数据分支不使用。而且,为了更好地复现,不使用Faster RCNN的多尺度验证和model ensembing
Person Pose Estimation
姿态检测器预测heatmap和offset,heatmap预测K个channel,其中K为关键点数量;offset预测2 * K个channel。
Image Cropping:通过不扭曲图像宽高比的方式,扩展person 检测器的box 的宽和高,使得所有的box有相同的,固定的长宽比。然后扩大box,使得其包含更多的图片信息。在测试时,box扩大1.25倍;在训练时,随机扩大1.0~1.5倍(用于数据增强)。然后Crop出来的图像,Resize到高为353,宽为257的固定大小,其方向比为 353 257 = 1.37 \frac{353}{257}=1.37 257353=1.37。
Heatmap and Offset Prediction with CNN:使用ImageNet初始化ResNet101,并用1*1 conv代替最后一层。应用空洞卷积产生
3
∗
K
3*K
3∗K的预测channel,其output stride为8。最后在双向性上采样到
353
∗
257
353*257
353∗257。
在生成ground-truth时,作者认为heatmap 的ground-truth只有某个点为1,这样太难训练了。所以,作者采用其他方案:在关键点位置半径
R
R
R范围内部都设为
1
1
1。由于heatmap ground-truth设定的扩散,所以该pose估计增加了一个offset分支,用以将半径
R
R
R内部的点归拢到一个具体的目标点上。
所以,该文章的某个点的分数,是某个区域的投票结合:image crop grid的每个点
j
j
j都产生一个投票,其权重为
h
k
h_k
hk:
Model Training:在ResNet50处增加一个辅助的损失函数,用以加快训练。heatmap分支检测头,采用对数损失函数。offset分支检测头,采用Huber robust loss。
其中, H ( u ) H(u) H(u)是Huber robust loss, l k l_k lk是第 k k k个关键点的位置, x i x_i xi是半径为R的位置。最后的损失为:
其中, λ h = 4 , λ o = 1 \lambda_h=4,\lambda_o=1 λh=4,λo=1, λ h \lambda_h λh是对数损失函数。
Pose Rescoring,不直接使用人体检测器的人数,使用的分数为关键点分数的平均:
OKS-Based Non Maximum Suppression:提出了更refine的NMS变种,而不是基于IoU的NMS,作者将Keypoint考虑在了其中。实际上,使用OKS来衡量两个候选姿态检测的重叠。首先在高IoU-NMS阈值(0.6)的人体检测器过滤高重叠率的边框。微妙的OKS-NMS(在pose估计的输出上),更适合决定两个候选检测是否对应假阳性(同一个人的双重检测)或真正的阳性(两个人靠的很近)。