CornerNet:一种anchor-free的目标检测算法.
- paper:CornerNet: Detecting Objects as Paired Keypoints
- arXiv:link
模型介绍
作者提出了一个anchor-free的目标检测算法:CornerNet。
CornerNet由backbone network和prediction module组成。
- backbone network选用Hourglass Network,将输入图像提取成特征映射;
- prediction module使用了corner pooling,将特征映射转化成三个输出,分别为:
- heatmaps:分别预测每一个像素位置是某一类边界框的左上角坐标、右下角坐标的概率;
- embeddings:对每一个可能为边界框左上角坐标、右下角坐标的位置进行编码,属于同一个边界框的编码应尽可能接近;否则编码尽可能相差较大;
- offsets:把边界框的预测角点回归到像素点上。
corner pooling
预测边界框的左上角坐标、右下角坐标,在预测点附近并没有出现物体,因此不能仅依赖预测点附近的感受野。作者提出了corner pooling,可以获取目标的边界信息。
以top-left corner pooling为例,该点的结果由该点右边和下边所有特征点数值最大者决定:
corner pooling在网络中应用如下,网络还使用了残差连接:
损失函数
数据集在标注“Ground truth时并不是仅把目标边界框的左上角和右下角像素位置标注为1,而是使用一个二维高斯分布作为软标注:
网络的损失函数为:
\[L = L_{det} + αL_{pull} + βL_{push} + γL_{off}\]- $L_{det}$是目标损失,使用交叉熵损失:
- $L_{pull}$用于使同一个边界框的左上角和右下角编码尽可能接近,具体地使其接近二者的平均值:
- $L_{push}$用于使不同边界框的角点编码尽可能远离:
- $L_{off}$用于对坐标位置进行修正: