目标检测:CenterNet (CenterNet as Point)理论学习笔记

735 阅读4分钟

0.前言

学习CenterNet模型的学习笔记。顾名思义,CenterNet是将目标当作图像的一个中心点去预测。主要参考B站UpGuuuuuu老师儿的讲解视频。

CenterNet的最新颖之处是Anchor Free。

说到这里就要提起Faster R-CNN和RetinaNet这两种Anchor Based Methods,他们都是对图像进行Anchor枚举,并抛弃非目标的Anchor,保留含有目标的Anchor进行回归参数微调。

Faster R-CNN通过Region Proposal Network的Anchor机制提出候选框Proposals,即先完成有物体和无物体的二分类预测,再通过分类器和回归参数预测目标属于哪个类别,其目标框到的精确大小位置,是一个2-stage的方法。

RetinaNet则是先枚举所有的Anchor,再通过Focal Loss缓解了正负样本不均衡的问题,实现目标检测,是一个1-stage的方法。

CenterNet则抛弃了Anchor机制,避免了暴力枚举Anchor框带来的算力损耗,直接预测中心点的位置,目标框的宽和高,回归参数三个方面,并组合成最后对目标的预测。

1.Anchor Free Method

1.1.CornerNet

该模型主要预测目标的左上角点和右下角点,通过设计的独特算法将同属一个目标的两侧角点进行配对。

image.png

1.2.ExtremeNet

该模型预测目标的上下左右极点以及目标的中心点,通过这五个关键点对目标进行检测,通过一些配对方法将同属一个目标的5个关键点group起来。

image.png

1.3.CenterNet

CenterNet无需Group操作,直接预测目标物体的中心点、宽高和偏执距离即可确定一个目标。

image.png

2.CenterNet网络结构

image.png

可以看出CenterNet主要由两个部分构成,即特征图提取+三头预测。

2.1.特征提取部分

特征图提取可使用多种Backbone进行,例如ResNet、DLA(Deep Layer Aggregation)、Hourglass Network三种。其中ResNet推理速度快,但是特征提取效果最差: image.png

Hourglass网络主要用于关键点检测,预测效果最好,但是参数量庞大,推理缓慢: image.png

折中的backbone候选模型是DLA,性能较好且速度较快。 image.png

2.2.三头预测

三头预测:包括热力图,宽高,偏执距离三个任务的预测。

2.2.1.Heatmap

Heatmap的尺寸为feature map尺寸W×HW\times H,且通道数为目标类别数CC

其中的每一个通道对应的那一层,元素都表示该点为目标中心点的概率pp,概率越高说明该位置为cc类目标中心点的可能性越大。

在推断(inference)阶段,我们通过3×33\times 3的卷积窗口找到9宫格中符合二维正态分布的窗口,并将其中心点作为预测点,将该点放大为1,其余8个位置设为0。

在训练(training)阶段,从COCO数据集的标注Ground Truth中计算出目标的中心点,把坐标对应缩放到feature map上,但是heatmap的ground truth不能完全是非0即1的绝对二值矩阵,因为这对模型的训练要求太高,所以,一般ground truth的heatmap矩阵以目标中心点为中心,做一个二维高斯分布:

Yxyc=e(xxgt)2+(yygt)22σ2Y_{xyc}=e^{-\frac{(x-x_{gt})^2+(y-y_{gt})^2}{2\sigma^2}}

其中σ\sigma的设置非常重要,参考CornerNet的IoU阈值方式规定:预测点构成的目标框与Ground Truth目标框之间IoU达标的最大半径rr,我们的σ=r3\sigma=\frac{r}{3}即可。CenterNet直接沿用CornerNet中的rr值求解方法,得到矩阵。

Focal Loss损失函数LkL_kα\alpha是权重:

Lk=1Nxyc{(1Yxyc^)αlog(Yxyc^),ifYxyc=1(Yxyc^)αlog(1Yxyc^),otherwiseL_k=\frac{-1}{N}\sum_{xyc} \left\{ \begin{aligned} (1-\hat{Y_{xyc}})^\alpha log(\hat{Y_{xyc}}) & , & if Y_{xyc}=1\\ (\hat{Y_{xyc}})^\alpha log(1-\hat{Y_{xyc}}) & , & otherwise \end{aligned} \right.

其中Yxyc^\hat{Y_{xyc}}是对Heatmap当前位置的值的预测。

因为Heatmap并不是非0即1,所以基于Focal Loss推出Heatmap Loss:

Lk=1Nxyc{(1Yxyc^)αlog(Yxyc^),ifYxyc=1(1Yxyc^)β(Yxyc^)αlog(1Yxyc^),otherwiseL_k=\frac{-1}{N}\sum_{xyc} \left\{ \begin{aligned} (1-\hat{Y_{xyc}})^\alpha log(\hat{Y_{xyc}}) & , & if Y_{xyc}=1\\ (1-\hat{Y_{xyc}})^\beta(\hat{Y_{xyc}})^\alpha log(1-\hat{Y_{xyc}}) & , & otherwise \end{aligned} \right.

第二个式子越接近中心点,Loss越小,并非“不是中心就很大”。

2.2.2.WH宽高预测

损失函数就是预测尺寸与Ground Truth尺寸之间的L1L1损失。注意训练阶段的代码实现时,因为已知真正的中心点的位置,所以我们只对中心点求对应的尺寸L1L1损失,而不是对整个feature map的每个点求Loss。

Lsize=1Nk=1NSpred^SL_{size}=\frac{1}{N}\sum_{k=1}^N|\hat{S_{pred}}-S|

2.2.3.Offset预测

由于feature map是由image通过backbone下采样得到的,缩小了nn倍。所以在feature map上预测的中心点坐标必然会与真实坐标之间有偏差。

所以在训练过程中,Ground Truth中心点坐标(x,y)(x,y)真正在feature map中的浮点数坐标(xn,yn)(\frac{x}{n}, \frac{y}{n}),所以产生的真实偏差为offset=(xnxn,ynyn)offset=(\frac{x}{n}-\lfloor \frac{x}{n}\rfloor, \frac{y}{n}-\lfloor \frac{y}{n}\rfloor)

构建的损失为:

Loff=1Nk=1NSmoothL1Loss(offset,offsetpred)L_{off}=\frac{1}{N}\sum_{k=1}^N SmoothL1Loss(offset,offset_{pred})

3.训练与预测

训练使用的损失函数为

Ldet=Lk+λsizeLsize+λoffLoffλsize=0.1λoffs=1\begin{array}{lr} L_{det}=L_k+\lambda_{size}L_{size}+\lambda_{off}L_{off}\\ \lambda_{size}=0.1\\ \lambda_{offs}=1 \end{array}

预测得到的结果包括:(xi^,yi^)(\hat{x_i}, \hat{y_i})(δxi^,δyi^)(\delta\hat{x_i},\delta\hat{y_i})(wi,hi)(w_i,h_i) 可以直接解码成CornerNet的结果:左上角点(xi^+δxi^wi2,yi^+δyi^hi2)(\hat{x_i}+\delta\hat{x_i}-\frac{w_i}{2}, \hat{y_i}+\delta\hat{y_i}-\frac{h_i}{2}),右下角点(xi^+δxi^+wi2,yi^+δyi^+hi2)(\hat{x_i}+\delta\hat{x_i}+\frac{w_i}{2}, \hat{y_i}+\delta\hat{y_i}+\frac{h_i}{2})

4.优势与劣势

优势:除了2D目标检测以外,CenterNet还可以预测一个物体或人体的多个Center,实现关键点检测任务,也可以做3D目标检测。

  1. 不用针对不同的任务设计Anchor机制,比例尺度等;
  2. Heads可以自定义,自定义Loss和训练目标;

劣势:该模型难以预测中心点八邻域附近甚至重合的两个物体,但是其实COCO数据集中这种情况很少发生,但因为Anchor机制导致Faster R-CNN丢失的目标更多,所以相比之下在COCO数据集上,CenterNet理应性能更强。