Skip to content

Latest commit

 

History

History
54 lines (29 loc) · 4.15 KB

Centernet.md

File metadata and controls

54 lines (29 loc) · 4.15 KB

Centernet

概述

centerNet是基于Anchor free的目标检测算法,和yolo、fast rcnn不同,它没有使用到anchor的技术。也是由于去除了anchor和nms的后处理操作,所以centernet的运行速度会更快。此外,它的精度也比one stage、two stage的更高。

  • 该算法去除了anchor的操作,进一步提升了算法的性能
  • 该算法在heat map上执行力过滤的操作,从而不需要nms的后处理操作,进一步提升了网络的运行速度
  • 通用性强,可以应用于目标检测、3D目标检测、人体关键点等其他任务中

网络结构

具备三种backbone结构:分别是Resnet-18, DLA-34和Hourglass-104。

以Resnet-18为例,图片首先会缩放至512x512尺寸,其中长边为512,短边进行补0操作,之后变成1x3x512x512的张量送入网络中。首先通过Resnet-18进行特征的提取,尺寸变为1x2048x16x16,然后是进入到三个反卷积模块进行上采样,尺寸变为1x64x128x128,最后送入三个预测分支分别进行预测heatmap(1

xclassx128x128)、目标的宽高(1x2x128x128)以及中心点的偏移(1x2x128x128)

但有许多代码会将反卷积前的3x3卷积替换为DCNv2,来提供模型的拟合能力。

Hourglass网络的提出是为了解决人体位姿估计问题,主要思路就是将多个漏斗形状的网络堆叠起来。因为这里左右两边是镜像对称的,也就是左边的模块是右边模块的镜像。模型整体看起来就是先从大到小,再从小到大,看上去就像是个沙漏一样。所以这里用到了max pooling和upsample来进行上采样与下采样。在Hourglass模块中,其实就是由各个残差模块组成的。

DLA-34网络其实是在原始的DLA-34网络基础上进行了修改,加入了更多的残差连接,结合了Dense_connection与FPN的思想,前者可以聚合语义信息,来提升模型的识别what能力,后者可以聚合空间信息,提高模型推断where的能力。

heatmap的生成

centernet是将目标当成一个点来做检测,也就是使用目标box的中心点来代表这个目标,同时预测中心点的偏移量、物体的宽高以及heatmap。heatmap是分类信息,每个类别都有一张heatmap,若某个坐标上有物体的中心点,则这个坐标会产生一个高斯圆。根据目标框的宽高计算高斯圆的半径R,以中心点point为圆心,半径为R进行高斯函数的值填充,也就是中心点处为最大值,沿着半径向外按高斯函数进行递减。

这里的关键点使用的是二维高斯核,因为位于目标中心点的附近一些点,可能预测出来的box和gt的iou大于0.7,那么这个时候就不能简单对预测值进行惩罚,而是采用一种温和的方式。所以,当某些矩形框与gt的iou大于0.7的时候,就将这些点设置为高斯分布的值,而不是简单置零。

数据增强

这里采用了选取一个中心以及一个目标长宽进行裁剪,然后再进行仿射变换的数据增强操作。

损失函数

heatmap损失函数

  • 采用了改写后的focal loss,主要防止类别不平衡现象。相比原来的focal loss,负样本loss多加了一个衰减的比值。因为与传统基于anchor的检测算法不同,在训练的过程没有认为iou大于0.7就为正,小于0.3就为负,也就没有是正例:负例为1:3来减少负例框了,所以centernet不通过overlap比较,而是通过中心点与周围其他点进行比较,来计算最终的损失。

目标宽高损失函数

  • 使用了l1 loss损失函数

中心点偏移损失函数

  • 使用了l1 loss,因为在预测分支之前的特征图分辨率是原图像的四分之一,所以输出特征图上的一个像素点对应回原来的图像,就代表4x4区域,将带来比较大的误差,因此引入偏置的补偿。所有类c的中心点都会共享同一个偏置。

推理阶段

  • 将图像缩放至512x512;
  • 在heatmap的预测特征图上进行3x3的最大池化操作,来获取满足条件的关键点,并选取前100个关键点,类似nms操作;
  • 根据置信度进行过滤来得到最终的检测结果;