论文下载:
https://arxiv.org/pdf/2007.13816.pdf
论文代码:
https://github.com/Duankaiwen/CPNDet
论文摘要:
该论文提出一种新型的anchor free两阶段框架,该框架首先通过anchor free方法检测出目标的角关键点(corner keypoint )进行目标建议的组合,然后通过单独的分类阶段(两阶段思想,第一步简单的筛选正负样本,第二步进行每个正样本的类分类)给每个建议分配一个类标签。论文的方法被称为角建议网络(Corner Proposal Network),既能检测到不同尺度的目标,又能区分出大量的假的正样本目标建议(false-positive proposals)。
无锚和有锚目标检测的对比:
无锚方法大致分为点分组检测(point-grouping)和点向量(point-vector)检测,基本原理是一个或几个关键点根据关键点描述对象。
第一行图:基于锚的方法(Faster R-CNN)不利于寻找具有特殊形状的物体,如很大尺寸或不常见的尺度比例
第二行图:无锚的方法(CornerNet)会错误地关键点分组到一个对象中(同一个类的目标框重叠)
绿色、蓝色和红色的框分别表示真阳性、假阳性和假阴性:
无锚方法在查找任意几何形状的对象时具有更好的灵活性,因此召回率更高,因为锚点是依靠经验设计的(为了减少锚点的数量,提高效率,只考虑常见的目标尺寸和形状),会遗漏特殊形状的目标。
基于锚和无锚检测方法的平均召回率(the average recall [AR] )的比较:
CornerNet和CenterNet检测方法存在大量的假正样本。APoriginal、APrefine和APcorrect表示原始输出的AP:
一阶段与二阶段的对比:
二阶段比一阶段更准确,但是花费的时间较多。因为二阶段检测中使用简单的计算(二分类)先过滤掉一些假阳性(负样本),第二步使用比较细致的计算(多分类)给每个建议分类。
关于CPNDet:
首先使用anchor-free方法提取关键点,遍历关键点组合成候选框,最后使用两个分类器分别对候选框进行误检过滤以及标签预测,完整结构:
第一步:无锚方法提取角关键点
根据CornerNet来定位一个对象,关键点分别位于左上角和右下角。每一个类计算两个热图,热图最高峰的坐标即为关键点坐标,分辨率比原始图像降低4倍。
分别计算两个损失:焦损失(a focal loss)和偏移量(offest loss)损失:
从所有热图中提取固定数量的关键点(左上角K个,右下角K个),利用每一对关键点去定义一个对象建议框(候选框),定义左上点的Xy坐标小于右下xy坐标(坐标原点在左上角)。
定义出来的对象候选框输送到后续的二阶段分类。
第二步:用二阶段分类过滤目标建议(由关键点组成)
首先用简单的二分类过滤大部分候选框(N×32×H×W):
再用复杂的多分类训练标签(N×256×H×W):
全部的损失函数:
其他:
1、把CenterNet中的DCN(可变形卷积)替换成普通的卷积层。
2、除了DLA-34网络,其他网络都是从零开始训练(不采用预训练初始化)。
3、采用级联角池化(Cascade Corner Pooling)去更好的检测角点。
4、使用了二阶段的无锚方法发展了跨阶段框架评估。
实验结果:
使用不同的方法(实例嵌入和二进制分类)来确定方案的有效性的检测性能(%):
在MS-COCO验证数据集上,CornerNet、CenterNet和CPN的平均错误发现率(%,越低越好):
从上到下分别是CornerNet、CenterNet和CPN的检测结果,绿色和红色的框分别表示真阳性和假阳性:
不同条件下CPN的推理速度,FPS是在NVIDIA Tesla-V100 GPU上测量的: