你想要的最新的目标检测算法在这里!

你想要的最新的目标检测算法在这里!

自从2012年以来,基于深度学习的目标检测技术发展了很多,主要思想也发生了很大变化。下图展示了基于深度学习卷积神经网络的目标检测技术的主要里程碑。
你想要的最新的目标检测算法在这里!
技术发展趋势是基于 anchor-free 的目标检测器(红色线)和 AutoML 技术(绿色线),这两项技术可能成为未来重要的研究方向。

基于关键点的目标检测算法

1.什么是基于关键点的目标检测算法(free-anchor)
所谓基于关键点的目标检测算法其实就是使用one-stage网络将目标边界框检测为一对关键点(即边界框的左上角和右下角)通过将目标检测为成对关键点,就可以消除现有的one-stage检测网络中对一组anchors的需要。
这类算法的特点是不使用Anchor boxes作为先验框,所以又叫做Anchor-Free目标检测算法。
2.基于关键点的目标检测算法主要包括哪些,有哪些代表性算法?

cornerNer论文链接:https://arxiv.org/pdf/1808.01244.pdf
github:https://github.com/umich-vl/CornerNet
CenterNet论文链接:https://arxiv.org/abs/1904.08189
github:https://github.com/Duankaiwen/CenterNet
CornerNe-Lite论文链接: https://arxiv.org/abs/1904.08900
github: https://github.com/princeton-vl/CornerNet-Lite
具有代表性的就是Cornernet和centernet以及由他们而来的一些变体,上面给出了一些论文和代码连接。
3. 要想了解先进的cornernet-lite就要首先了解cornernet。


(1)cornerNet

论文:CornerNet: Detecting Objects as Paired Keypoints
论文地址:https://arxiv.org/pdf/1808.01244.pdf
代码地址:https://github.com/umich-vl/CornerNet

  • CornerNet网络的整体思路是,首先通过Hourglass Network网络进行特征提取,紧接着将网络得到的特征输入到两个模块:Top-left Corner pooling和Bottom-right Corner pooling提取关键点的特征,对于每个Corner Pooling模块都会进行目标框的左上角关键点和右下角关键点的类别分类(Heatmaps),并找到每个目标的一对关键点(Embeddings),以及减少基于坐标回算目标目标位置时的偏置(offsets)。网络的整体结构图如下:
    你想要的最新的目标检测算法在这里!
  • cornernet核心部分:
    (1)利用两个Corner pooling来确定两个关键点。
    (2)利用heatmaps模块来确定每一个关键点所属于的类别。
    (3)利用embedding找到一个目标的两个关键点,这一部分的实现是通过两个损失函数来实现的,其中一个用来缩小属于同一个目标的两个关键点的embedding vector距离,一个用来扩大不属于同一个目标的两个角点的embedding vector 距离。
    (4)利用offsets模块来弥补由于网络降采样得到的特征图再反算关键点原始位置的精度丢失。作者是采用的L1损失来减少这种精度丢失。
  • CornerNet使用沙漏网络(Hourglass Network)作为其骨干网络。沙漏网络首次被提到是用于人体姿态估计任务。它是一个完全卷积神经网络,由一个或多个Hourglass组成。Hourglass首先通过一系列卷积层和最大池化层对输入特性进行下采样。然后通过一系列的上采样和卷积层将特征上采样回原来的分辨率。由于细节在最大池化层中丢失,因此添加了跳过层用来将细节带回到上采样的特征。沙漏模块在一个统一的结构中捕获全局和局部特征。当多个Hourglass堆积在网络中时,Hourglass可以重新处理特征以获取更高级别的信息。这些特性使沙漏网络成为目标检测的理想选择。事实上,许多现有的检测器已经采用了类似沙漏网络的网络。

(2)centerNet

论文:CenterNet: Keypoint Triplets for Object Detection
论文地址:https://arxiv.org/pdf/1904.08189.pdf 。
代码地址:https://github.com/Duankaiwen/CenterNet 。

  • CenterNet网络主要是基于CornerNet网络存在的问题,而提出的基于关键点目标检测的网络。其实现了目前为止在one-stage系类算法中最高的MAP。CenterNet的作者发现,CornerNet是通过检测物体的左上角点和右下角点来确定目标,但在此过程中CornetNet使用corner pooling仅仅能够提取到目标边缘的特征,而导致CornetNet会产生很多的误检。基于此,CenterNet利用关键点三元组即中心点、左上角关键点和右下角关键点三个关键点而不是两个点来确定一个目标,使得网络能够获取到目标内部的特征。而CornerNet在论文中也说道了,约束其网络性能最重要的部分是关键点的提取,因此CenterNet提出了Center Pooling和cascade corner Pooling用来更好的提取本文提出的三个关键点。
  • 核心部分:
    (1)三元组预测:
    如下图所示,网络通过 cascade corner pooling得到左上角,右下角的关键点类别。并通过center pooling得到中心点的关键点类别。随后通过 offsets 将三个关键点位置尽可能精确的映射到输入图片的对应位置,最后通过 embedings 判断三个点是否属于同一个目标。
    你想要的最新的目标检测算法在这里!
    (2)center pooling:
    作者基于Corner Pooling的系列思想,提出了Center Pooling的思想,使得网络提取到的中心点特征能够更好的表征目标物体。
    (3)cascade corner Pooling:
    作者基于Corner Pooling的系列思想,提出了cascade corner Pooling的思想,使得网络提取到的中心点特征能够更好的表征目标物体。
  • 最终,CenterNet在CornerNet的基础上增加了中心点的预测,以及修改了关键点特征的提取方式,大大减小了网络的误检,并且实现了one-stage系列算法中的最好效果。

(3)Cornernet-lite

CornerNet-Squeeze专注于速度,但其在性能和速度上都超越了YOLOv3,而CornerNet-Saccade专注于精度。这两种算法的优势也都很明显。
超越YOLOv3
源码
1.cornernet-saccade是通过减少要处理像素的数目来加快推理速度。他使用了注意力机制,这和人类视觉中是扫视有点相似。另一方面,cornernet-squeeze是通过减少处理每一个像素的处理量来加快推理速度。
你想要的最新的目标检测算法在这里!
总而言之,CornerNet-Lite的这两种变体使基于关键点的方法具有竞争力,涵盖了两个流行的用例:CornerNet-Saccade用于离线处理,在不牺牲准确性的情况下提高了效率; CornerNet-Squeeze用于实时处理, 在不牺牲效率的情况下提高准确性
你想要的最新的目标检测算法在这里!