文章提出一种利用极值点回归以极值点连接的菱形/八边形而非bounding box represented的object detection,以更好的表达被识别物体。该方法是完全基于外观信息的底层方法,通过学习不同类别物体的极值点,避免了region proposal及对区域进行classification的计算消耗。但同时将极值点组合为有意义的物体分组也引入了很大的额外消耗。
对于h×w的输入,previous one stage approaches需要从O(h2w2)的anchors空间进行搜索,而该工作只需要从O(hw)的空间进行搜索。
通过这篇文章,同时也对keypoint detection,pose recognition进行学习。
模型结构
-
label:模型训练采用对上下左右四个极值点及中心点做回归。使用extreme click标注四个极值点,并计算左右、上下极值点的均值作为中心点 xc=(xl+xr)/2, yc=(yt+yb)/2。
-
extreme point extraction
-
peak extraction
-
center grouping
Keypoint detection
使用Hourglass Network作为backbone对每个物体类别进行极值点及中心点回归。They follow the training setup, loss and offset prediction of Corner Net。其中offset是类别无关,但极值点相关的。
- Cornernet: Detecting objects as paired keypoints
- Stacked Hourglass Networks for Human Pose Estimation
使用keypoint estimation net提取图像中物体的上、下、左、右极值点。文章假设所有的物体都服从一种基于上下左右极值点的通用表达,通过对CornerNet进行finetune,使模型学习输入中所有物体的极值点。极值点通过heatmap表达,由每一个类型的特定极值点(如汽车的下侧极值点)形成一个heatmap。keypoint提取模型训练方式可以包括: 1. 将label keypoint使用高斯核模糊之后,直接以L2 loss进行训练; 2. 直接对label keypoint以逐点logistic regression训练。 heatmap的学习以[0,1]区间的根据极值点、中心点渲染的Gaussian map为label。其中极值、中心点为Gaussian kernel的均值,方差可以设为固定值,也可以与物体大小等比例。
Center(peak) grouping
对于每个heatmap,使用extractpeak procedure将连续的Gaussian kernel转换为离散(单一值)keypoint coordinate。将heatmap的高斯模糊峰值转换为极值点物理坐标。设置阈值τ,任意大于τ且在3×3窗口内为极值点的像素则取为peak点。(文章没有说具体实现,比较好奇对与整体很亮的一个Gaussian kernel如何提取)。
使用Deformable Part Model的思想对极值点进行grouping。其中中心点相当于DPM的root filter,四个极值点相当于对于所有类别通用的四个分解部分,四个极值点与中心点构成一种固定的几何形态。
具体为使用穷举法进行grouping。对于任意一个peak四元组(l, r, t, b),如果xc=(xl+xr)/2, yc=(yt+yb)/2点上有高的center heatmap响应,就认定为一组。其时间复杂度为O(n4)
对于空间上线性对称分布的物体,grouping时可能将不同物体的l, r, t, b聚为一组。对此采用soft NMS进行抑制。
If the sum of scores of all boxes contained in a certain bounding box exceeds 3 times of the score of itself, we divide its score by
- This non-maxima suppression is similar to the standard overlap-based non-maxima suppression, but penalizes potential ghost boxes instead of multiple overlapping boxes.
Deep Extreme Cut
简单实现为形成一个八边形的bbox。对四个极值点,在其对应方向上两侧延申1/4的h/w值,遇到corner则截断。
refine的segmentation为:DEC读入四个极值点,并进行与类别无关的前景分割。
适用任务
TODO
TODO LIST
-
Focal loss
-
在segment时,先用keypoints estimation构造一个大的Gaussian kernel represent的mask,以此为基础进行segment,效果是否更好。如给定一个显著性物体,在显著性高的地方不应该出现seg。(有遮掩的情况下似乎行不通)