cornerNer论文链接: github: CenterNet论文链接: github: CornerNe-Lite论文链接: github: 所谓基于关键点进行目标检测,其实就是使用one-stage网络将目标边界框检测为一对关键点(即边界框的左上角和右下角)。通过将目标检测为成对关键点,就可消除现有的one-stage检测网络中对一组anchors的需要,这个最近火热的anchor-free也是不谋而合。接下来,先简单介绍下CornetNet和CenterNet这两个基于特征点的目标检测网络。最后对CornerNet-Squeeze做个简单介绍! CornerNet网络的整体思路是,首先通过Hourglass Network网络进行特征提取,紧接着将网络得到的特征输入到两个模块: Top-left Corner pooling 和 Bottom-right Corner pooling 提取关键点的特征,对于每个Corner Pooling模块都会进行目标框的左上角关键点和右下角关键点的类别分类( Heatmaps ),并找到每个目标的一对关键点( Embeddings ),以及减少基于坐标回算目标目标位置时的偏置( offsets )。网络的整体结构图如下: 很显然,CornerNet的核心是四个部分: 最终,如下图所示,上半支路的网络结果如下所示,网络最终是由两条支路组成的。 CenterNet网络主要是基于CornerNet网络存在的问题,而提出的基于关键点目标检测的网络。其实现了目前为止在one-stage系类算法中最高的MAP。CenterNet的作者发现,CornerNet是通过检测物体的左上角点和右下角点来确定目标,但在此过程中CornetNet使用corner pooling仅仅能够提取到目标边缘的特征,而导致CornetNet会产生很多的误检。基于此,CenterNet利用关键点 三元组 即 中心点、左上角关键点和右下角关键点 三个关键点而不是两个点来确定一个目标,使得网络能够获取到目标内部的特征。而CornerNet在论文中也说道了,约束其网络性能最重要的部分是关键点的提取,因此CenterNet提出了 Center Pooling 和 cascade corner Pooling 用来更好的提取本文提出的三个关键点。 作者基于Corner Pooling的系列思想,提出了Center Pooling的思想,使得网络提取到的中心点特征能够更好的表征目标物体。 最终,CenterNet在CornerNet的基础上增加了中心点的预测,以及修改了关键点特征的提取方式,大大减小了网络的误检,并且实现了one-stage系列算法中的最好效果。 普林斯顿大学在4月19号提出了两种更高效的基于关键点的目标检测算法,分别为: CornetNet-Saccade 和 CornetNet-Squeeze ,若将两种策略结合则称为 CornerNet-Lite 。以下是Cver对这两个网络的介绍,个人感觉写的很好,我就不造轮子了: 最终我最感兴趣的网络CornerNet-Squeeze和YOLOv3进行对比,达到了如下图所示的效果。 然而,就在我学习并总结这篇文章的过程中,我发现CornerNet-Squeeze是基于CornerNet改进的,但正如上文中介绍CenterNet的时候提到过的CornerNet所具有的那些弊端,我总觉得CornerNet-Squeeze在误检的部分不一定会很优秀,所以接下来就是看源码阶段了,希望CornerNet-Squeeze能够不负我望哈~