CornerNet-Lite 论文笔记

总述

CornerNet-Lite是普林斯顿大学发在19年cvpr上的一篇目标检测作品,上一篇博客中详细介绍了CornerNet

CornerNet 是基于关键点的目标检测方法,不需要 anchor box,在单阶段检测器取得了SOTA 的精度。在COCO数据集上 AP 为 42.2%,但是单帧图像的 inference 需要1.147s。

CornerNet-Lite 是 CornerNet 的两个有效的变体:CornerNet-Saccade 与 CornerNet-Squeeze

先来总结一下这两个网络的性能:

  • CornerNet-Saccade 在不牺牲精度的情况下来提高效率,单帧图像处理时间为 190 ms,在 COCO上 AP 为43.2%,比CornerNet 还提高了 1%。
  • CornerNet-Squeeze 在达到实时的情况下,尽可能提高精度,单帧图像处理时间为30ms,在COCO上 AP 为 34.4%。(YOLOv3 39ms AP 33%)。
    注:作者测试了 CornerNet-Squeeze-Saccade 比 CornerNet-Squeeze 的精度和速度都要差。
  • COCO数据集上 YOLOv3、CornerNet、CornerNet-Lite 对比
    1.CornerNet-Lite 比 CornerNet 速度提高了 6 倍,AP 提高了 1% 。
    2.CornerNet-Lite 在精度和速度上都优于 YOLOv3,是目前 SOTA 的实时检测器。
    3.硬件:1080 Ti GPU,Intel Core i7-7700k CPU

 

1. 背景

目标检测从算法层面提高效率的两个方向:1.降低算法处理的像素量;2.减少每个像素的处理过程。

基于此,作者对CornerNet从这两方面进行改进,提出了 CornerNet-Saccade 和 CornerNet-Squeeze,CornerNet-Saccade 即为了降低算法处理的像素量,CornerNet-Squeeze 即为减少每个像素的处理过程。

传统的R-CNN系列two-stage检测算法根据候选框对原图进行裁剪得到的候选区域都是基于单类别或者单目标的。而cornerNet-Saccade的扫视生成的crop是单类别多目标的,因此cornerNet-saccade生成的crop数量远小于目标数量。

2.CornerNet-Saccade

CornerNet-Saccade 对图像中可能的目标位置周围的区域进行检测。利用下采样以后的图片预测attention maps 和大致的目标框。

2.1 估计目标的可能区域

CornerNet-Saccade第一阶段通过downsized图片预测attention maps和coarse bounding box,以获得图片中物体的位置和粗略尺寸。对于每张图分别将长边缩放到192和255,将192像素的周围用0填充到255,以便两张图进行批量处理。

上采样之后的不同尺度的feature map用来预测attention map。细粒度的feature map用来预测小目标,粗粒度的feature map 用来预测大目标。在每个feature map后面接一个3*3的ConvReLU层再接一个1*1的Conv-Sigmoid层,用来预测attention map。共生成三个attention maps,分别用来预测小目标、中等目标、大目标。目标的bbox小于32的认为是小目标,介于32到96的认为是中等目标,大于96的被认为是大目标。将小目标、中等目标、大目标分别放在不同的map上进行预测,可以更好地控制CornerNet-Saccade在每个位置放大的程度。 例如可以在小对象位置放大更多,在中等对象位置放大较少。

训练时,对应在attention map上每个bbox的中心位置作为正样本,其余位置作为负样本,使用α=2的focal loss。测试时,以0.3作为阈值,在attention map上大于阈值的位置为中心周围区域作为候选区域。

2.2 检测目标

将前一步的区域映射到原图进行裁剪,对裁剪的区域进行检测。

从Attention maps获取到的中心位置(粗略),可以根据物体尺寸选择放大倍数(小物体放大更多)。在每个候选的区域 ,将dawnsized 图像放大si倍(ss=4,sm=2,sl=1)(由原图缩放到对应尺寸),然后以目标中心位置裁剪一个255*255的区域,接沙漏模块进行精细检测。

对目标进行检测的部分与CornerNet是一致的,经过检测之后,可能出现在一个裁剪区域中包含有部分目标的情况,这样的目标会预测出一个不完整的框,但框会的边界会与裁剪边界接触。这种不完整的框与该目标的完整框的IOU通常较小,通过nms可能会去不掉,所以直接将这种触碰到裁剪区域边界的目标框删掉了。如下所示:

2.3 其他

  • 为了在模型效果和速度之间Trading,可以指定在每张图像中要检测的最大的候选区的数量。
  • 在生成候选区域时,可能会出现重叠包含了相同的目标的重叠区域,两个重叠的裁剪框只保留一个即可,故采取类似于NMS的操作来删除冗余区域。根据得分排序,保留得分最高的区域并删除与该区域大面积重叠的其他区域,重复该过程直到没有区域可删除。如下图:红框是以左边的目标裁剪出来的区域,蓝框是以右边的目标裁剪出来的区域,两个区域都包含了两个目标,故保留一个进行检测即可。

  • 作者对CornerNet的网络结构进行了修改。新的沙漏网络由3个沙漏模块组成,深度为54层,CornerNet中的Hourglass-104由2个沙漏模块组成,深度为104。新的沙漏模块下采样时将输入缩小3倍,channel数为-384-384-512,沙漏中间512channel的模块中有一个残差模块,每个下采样层、跳过连接、上采样层后面都有一个残差模块。图像进入沙漏模块之前经过两次下采样。
  • 训练和预测时网络输入大小均为255*255.

3. CornerNet-Squeeze

CornerNet-Squeeze的目的是减小每个像素的运算量。受SqueezeNet的启发,用fire模块替代了残差模块。fire模块:用1*1卷积核减少输入channel数量,然后用1*1和3*3的混合的卷积构成 expand layer。受MobileNet的启发,将第二层的3*3卷积替换为3*3的depthwise卷积。原结构与改进的结构图下表:

其他结构的改进:其他的结构改进,在所有沙漏模块之前加了一个下采样层用来减小feature map,Cornernet-squeeze在沙漏模块之前将图像缩小三次,cornernet只缩小了两次;并在每个沙漏模块中删掉一个下采样层;在预测模块中用1*1替换3*3;将沙漏网络中最近邻上采样方法替换为4*4的转置卷积。

基于以上改进,在训练过程中内存占用减小了4倍。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值