自动驾驶——CenterNet(Objects as Points)的学习笔记

1 前言

CenterNet的代码还是有点难懂,不过还是要感谢各位同学分享的资料~

2 CenterNet代码的学习笔记

2.1 数据读取——COCO类

COCO类是用来进行数据读取的,读取之后获得的item有以下几个属性:

'image': img,
'hmap': hmap, 
'w_h_': w_h_, 
'regs': regs, 
'inds': inds——
inds指的是目标中心的线式索引,其中“线式索引”指的是将单张特征图平铺为一维向量之后的索引(或者说坐标),
从inds的计算公式也可以看出:inds[k] = obj_c_int[1] * self.fmap_size['w'] + obj_c_int[0]
 'ind_masks': ind_masks,
        'c': center, 's': scale, 'img_id': img_id

2.2 后处理

下面在介绍后处理时我们会按照测试时的顺序进行介绍;

2.2.1 _nms——基于高斯分布特性的NMS算法

使用检测局部极大值的方法,来获得检测的峰值,从而获得得分最高的检测框;

如图所示:

自动驾驶——CenterNet(Objects as Points)的学习笔记_第1张图片

 

2.2.2 Top-K——获取得分最高的k个值

使用Top-K方法来获取得分最高的k个值,k是一个超参数;

如图所示:

自动驾驶——CenterNet(Objects as Points)的学习笔记_第2张图片

在论文中,K=100;

2.2.3 Soft-NMS——在测试阶段对boxes进行过滤

CenterNet在测试阶段时使用了Soft-NMS算法,

自动驾驶——CenterNet(Objects as Points)的学习笔记_第3张图片

我觉得可能的原因是CenterNet在测试时将图片建立了多尺度输入,所以很可能会出现重复检测框的情况,

自动驾驶——CenterNet(Objects as Points)的学习笔记_第4张图片

2.3.4 max_per_image——实际上用的也是Top-K进行筛选

通过设定每种图片最多的目标数量来进筛选,通过max_per_image来获取进行筛选的阈值;

如图所示:

自动驾驶——CenterNet(Objects as Points)的学习笔记_第5张图片

你可能感兴趣的:(无人驾驶,自动驾驶,目标检测,CenterNet)