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
该模型主要预测目标的左上角点和右下角点,通过设计的独特算法将同属一个目标的两侧角点进行配对。
1.2.ExtremeNet
该模型预测目标的上下左右极点以及目标的中心点,通过这五个关键点对目标进行检测,通过一些配对方法将同属一个目标的5个关键点group起来。
1.3.CenterNet
CenterNet无需Group操作,直接预测目标物体的中心点、宽高和偏执距离即可确定一个目标。
2.CenterNet网络结构
可以看出CenterNet主要由两个部分构成,即特征图提取+三头预测。
2.1.特征提取部分
特征图提取可使用多种Backbone进行,例如ResNet、DLA(Deep Layer Aggregation)、Hourglass Network三种。其中ResNet推理速度快,但是特征提取效果最差:
Hourglass网络主要用于关键点检测,预测效果最好,但是参数量庞大,推理缓慢:
折中的backbone候选模型是DLA,性能较好且速度较快。
2.2.三头预测
三头预测:包括热力图,宽高,偏执距离三个任务的预测。
2.2.1.Heatmap
Heatmap的尺寸为feature map尺寸,且通道数为目标类别数。
其中的每一个通道对应的那一层,元素都表示该点为目标中心点的概率,概率越高说明该位置为类目标中心点的可能性越大。
在推断(inference)阶段,我们通过的卷积窗口找到9宫格中符合二维正态分布的窗口,并将其中心点作为预测点,将该点放大为1,其余8个位置设为0。
在训练(training)阶段,从COCO数据集的标注Ground Truth中计算出目标的中心点,把坐标对应缩放到feature map上,但是heatmap的ground truth不能完全是非0即1的绝对二值矩阵,因为这对模型的训练要求太高,所以,一般ground truth的heatmap矩阵以目标中心点为中心,做一个二维高斯分布:
其中的设置非常重要,参考CornerNet的IoU阈值方式规定:预测点构成的目标框与Ground Truth目标框之间IoU达标的最大半径,我们的即可。CenterNet直接沿用CornerNet中的值求解方法,得到矩阵。
Focal Loss损失函数,是权重:
其中是对Heatmap当前位置的值的预测。
因为Heatmap并不是非0即1,所以基于Focal Loss推出Heatmap Loss:
第二个式子越接近中心点,Loss越小,并非“不是中心就很大”。
2.2.2.WH宽高预测
损失函数就是预测尺寸与Ground Truth尺寸之间的损失。注意训练阶段的代码实现时,因为已知真正的中心点的位置,所以我们只对中心点求对应的尺寸损失,而不是对整个feature map的每个点求Loss。
2.2.3.Offset预测
由于feature map是由image通过backbone下采样得到的,缩小了倍。所以在feature map上预测的中心点坐标必然会与真实坐标之间有偏差。
所以在训练过程中,Ground Truth中心点坐标真正在feature map中的浮点数坐标,所以产生的真实偏差为。
构建的损失为:
3.训练与预测
训练使用的损失函数为
预测得到的结果包括:、、 可以直接解码成CornerNet的结果:左上角点,右下角点。
4.优势与劣势
优势:除了2D目标检测以外,CenterNet还可以预测一个物体或人体的多个Center,实现关键点检测任务,也可以做3D目标检测。
- 不用针对不同的任务设计Anchor机制,比例尺度等;
- Heads可以自定义,自定义Loss和训练目标;
劣势:该模型难以预测中心点八邻域附近甚至重合的两个物体,但是其实COCO数据集中这种情况很少发生,但因为Anchor机制导致Faster R-CNN丢失的目标更多,所以相比之下在COCO数据集上,CenterNet理应性能更强。