关于算法:CornerNetLiteCornerNet粗暴优化加速6倍还提点了-BMVC-2020

55次阅读

共计 2789 个字符,预计需要花费 7 分钟才能阅读完成。

论文对 CornerNet 进行了性能优化,提出了 CornerNet-Saccade 和 CornerNet-Squeeze 两个优化的 CornerNet 变种,优化的伎俩具备很高的针对性和局限性,不过仍然有很多能够学习的中央

起源:晓飞的算法工程笔记 公众号

论文: CornerNet-Lite: Efficient Keypoint-BasedObject Detection

  • 论文地址:https://arxiv.org/abs/1904.08900
  • 论文代码:https://github.com/princeton-vl/CornerNet-Lite

Introduction


  CornerNet 作为 Keypoint-based 指标检测算法中的经典办法,尽管有着不错的准确率,但其推理很慢,大概须要 1.1s/ 张。尽管能够简略地放大输出图片的尺寸来减速推理,但这会极大地升高其准确率,性能比 YOLOv3 要差很多。为此,论文提出了两种轻量级的 CornerNet 变种:

  • CornerNet-Saccade:该变种次要通过升高须要解决的像素数量来达到减速的目标,首先通过放大的图片来获取初步的指标地位,而后依据指标地位截取左近小范畴的图片区域来进行指标的检测,准确率和速度别离可达到 43.2%AP 以及 190ms/ 张。
  • CornerNet-Squeeze:该变种次要通过升高每个像素的解决次数来达到减速的目标,将 SqueezeNet 和 MobileNets 的思维融入 hourglass 提出新的骨干网络,准确率和速度别离可达到 34.4%AP 以及 30ms/ 张。

  论文也尝试了将两种变种进行联合,但发现性能反而更差了,次要因为 CornerNet-Saccade 须要弱小的骨干网络来生成足够精确的特色图,而 CornerNet-Squeeze 则是削弱了骨干网络的表达能力进行减速,所以两者的联合没有达到更好的成果。

CornerNet-Saccade


  CornerNet-Saccade 在可能呈现指标的地位的小区域内进行指标检测,首先通过放大的残缺图片预测 attention 特色图,取得初步的预测框地位以及尺寸,而后在高分辨率图片上截取以该地位为核心的图片区域进行指标检测。

Estimating Object Locations

  CornerNet-Saccade 首先获取可能呈现指标的初步地位及其尺寸:

  • 将输出的图片放大至长边为 255 像素和 192 像素两种尺寸,小图进行零填充,使其能同时输出到网络中进行计算。
  • 对于放大的图片,预测 3 个 attention 特色图,别离用于小指标 (长边 <32 像素)、中指标(32 像素 <= 长边 <=96 像素) 和大指标 (长边 >96 像素) 的地位预测,这样的辨别可能帮忙判断是否须要对其地位区域进行放大,对于小指标须要放大更大,下一部分会提到。
  • Attention 特色图来源于 hourglass 上采样局部的不同模块,尺寸较大的模块特色图输入用于更小的指标检测(骨干网络结构前面会介绍),对每个模块输入的特色图应用 $3\times 3$Conv-ReLU 模块接 $1\times 1$Conv-Sigmoid 模块生成 Attention 特色图。

  在测试阶段,咱们仅解决置信度大于阈值 $t=0.3$ 预测地位,而在训练阶段,将 GT 的核心在对应特色图上的地位设为正样本,其它设为负样本,应用 $\alpha=2$ 的 focal loss 进行训练。

Detecting Objects


  基于初步的预测框地位和尺寸,CornerNet-Saccade 对放大的原图进行放大后截取以该地位为核心的 $255\times 255$ 的区域进行指标检测。放大次要是为了保障指标足够清晰,依据预测框的初步尺寸对放大的原图先进行放大,放大比例为 $s_s=4>s_m=2>s_l=1$。后续对截取区域的检测应用同样的 hourglass 网络,最初合并所有的检测后果进行 Soft-NMS 过滤。检测网络的训练和预测办法跟原版 CornerNet 一样,联合角点热图、embeddings 向量以及偏移值。

  这里有一些如图 3 所示的非凡状况须要特地解决:

  • 如果检测后果呈现在截取区域的边缘,须要将其去掉,因为该截图区域很可能至蕴含了指标的一部分。
  • 如果指标挨得很近,两者的截取区域会高度重叠,网络很可能产生高度重叠的反复后果。为此,采纳相似 NMS 办法来解决各尺寸预测后果中过近的预测地位,从而提高效率。

  另外,为了让检测过程更加高效,论文也进行了以下细节的实现:

  • 批量进行截取区域的获取
  • 将原图保留在 GPU 内存中,并且间接在 GPU 进行原图的放大以及截取
  • 批量进行截取区域的检测

Backbone Network

  论文设计新的骨干网络 Hourglass-54,比原 CornerNet 应用的 Hourglass-104 蕴含更少参数且层数更少。Hourglass-54 总层数为 54 层,蕴含 3 个 hourglass 模块,在第一个模块前先下采样两次。每个模块下采样三次并逐渐减少维度(384, 384, 512),每个模块两头蕴含一个 512 维的残差模块,每个上采样层前面接一个残差模块。

CornerNet-Squeeze


  在 CornerNet 中,大多数的计算工夫花在骨干网络 Hourglass-104 的推理。为此,CornerNet-Squeeze 联合 SqueezeNet 和 MobileNet 来缩小 Hourglass-104 的复杂度,设计了一个新的轻量级 hourglass 网络。
  SqueezeNet 的外围在于 fire 模块,首先通过蕴含 $1\times 1$ 卷积的 squeeze 层升高输出特色的维度,而后通过蕴含 $1\times 1$ 卷积和 $3\times 3$ 卷积的 expand 层提取特色。MobileNet 则采纳 $3\times 3$ 深度拆散卷积替换规范的 $3\times 3$ 卷积,可能无效地缩小网络的参数。

  新的模块如表 1 所示,除了替换残差模块,新骨干网络还做了以下的批改:

  • 为了升高 hourglass 模块的最大特色图,在第一个 hourglass 模块前减少一个下采样模层。对应地,去除每个 hourglass 模块的一个下采样层。
  • 将预测模块的 $3\times 3$ 卷积替换为 $1\times 1$ 卷积。
  • 将最近的相邻上采样层替换为 $4\times 4$ 的反卷积。

Experiments


  CornerNet-Saccade 比照试验。

  CornerNet-Squeeze 比照试验。

  指标检测的性能比照。

Conclusion


  论文对 CornerNet 进行了性能优化,提出了 CornerNet-Saccade 和 CornerNet-Squeeze 两个优化的 CornerNet 变种,优化的伎俩具备很高的针对性和局限性,不过仍然有很多能够学习的中央。



如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

正文完
 0