Anchor-free目标检测综述 -- Keypoint-based篇
早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作为代表。后来,有研究者觉得初始anchor的设定对准确率的影响很大,而且很难找到完美的预设anchor,于是开始不断得研究anchor-free目标检测算法,意在去掉预设anchor的环节,让网络自行学习anchor的位置与形状,在速度和准确率上面都有很不错的表现。anchor-free目标检测算法分为两种,一种是DenseBox为代表的Dense Prediction类型,密集地预测的框的相对位置,另一种则是以CornerNet为代表的Keypoint-bsaed Detection类型,以检测目标关键点为主。
本文主要列举几种Keypoint-based Detection类型的网络,主要涉及以下网络:
- CornerNet
- ExtremeNet
- CenterNet
- CenterNet(Object as Point)
- CSP
- CornerNet-Lite
- RepPoints
- CentripetalNet
- SaccadeNet
- RepPointsV2
- CPNDet
- FSAF
CornerNet
CornerNet将目标检测定义为左上角点和右下角点的检测。网络结构如图1所示,通过卷积网络预测出左上角点和右下角点的热图,然后将两组热图组合输出预测框,彻底去除了anchor box的需要。论文通过实验也表明CornerNet与当前的主流算法有相当的性能,开创了目标检测的新范式。
CornerNet的结构如图4所示,使用hourglass网络作为主干网络,通过独立的两个预测模块输出两组结果,分别对应左上角点和右下角点,每个预测模块通过corner池化输出用于最终预测的热图、embedding向量和偏移。
ExtremeNet
ExtremeNet通过检测目标的四个极点进行目标定位,如图1所示。整体算法基于CornerNet的思想进行改进,使用五张热图分别预测目标的四个极点以及中心区域,将不同热图的极点进行组合,通过组合的几何中心在中心点热图上的值判断组合是否符合要求。另外,ExtremeNet检测的极点能够配合DEXTR网络进行目标分割信息的预测。
CenterNet
CornerNet将目前常用的anchor-based目标检测转换为keypoint-based目标检测,使用角点对表示每个目标,CornerNet主要关注目标的边界信息,缺乏对目标内部信息的获取,很容易造成误检,如图1所示。为了解决这个问题,论文提出CenterNet,在角点对的基础上加入中心关键点组成三元组进行检测,既能捕捉目标的边界信息也能兼顾目标的内部信息。另外,为了更好地提取特征,论文还提出了center pooling和cascade corner pooling,分别用于更好地提取中心关键点和角点。
CenterNet(Object as Point)
CenterNet算法将检测目标视为关键点,先找到目标的中心点,然后回归其尺寸。首先将输入的图片转换成热图,热图中的高峰点对应目标的中心,将高峰点的特征向量用于预测目标的高和宽,如图2所示。在推理时,只需要简单的前向计算即可,不需要NMS等后处理操作。对比上一篇同名的CenterNet算法,这个算法更简洁且性能足够强大,不需要NMS等后处理方法,能够拓展到其它检测任务中。
CSP
CSP的网络结构大致如图1所示,在主干网络上分别预测目标中心点的位置及其对应的尺寸。这篇文章的整体思想与CenterNet(zhou. etc)基本一致,但不是抄袭,因为是同一个会议上的论文,CenterNet主要研究常规的目标检测,而这篇主要研究人脸检测和行人检测。但CSP仍然需要进行NMS的后处理,较CenterNet更逊色一些,但不妨碍我们进行简单地了解,包括学习论文的训练方法以及参数。
CornerNet-Lite
CornerNet作为Keypoint-based目标检测算法中的经典方法,虽然有着不错的准确率,但其推理很慢,大约需要1.1s/张。虽然可以简单地缩小输入图片的尺寸来加速推理,但这会极大地降低其准确率,性能比YOLOv3要差很多。为此,论文提出了两种轻量级的CornerNet变种:CornerNet-Saccade和CornerNet-Squeeze。
CornerNet-Saccade在可能出现目标的位置的小区域内进行目标检测,首先通过缩小的完整图片预测attention特征图,获得初步的预测框位置以及尺寸,然后在高分辨率图片上截取以该位置为中心的图片区域进行目标检测。
在CornerNet中,大多数的计算时间花在主干网络Hourglass-104的推理。为此,CornerNet-Squeeze结合SqueezeNet和MobileNet来减少Hourglass-104的复杂度,设计了一个新的轻量级hourglass网络。
RepPoints
经典的bounding box虽然有利于计算,但没有考虑目标的形状和姿态,而且从矩形区域得到的特征可能会受背景内容或其它的目标的严重影响,低质量的特征会进一步影响目标检测的性能。为了解决bounding box存在的问题,论文提出了RepPoints这种新型目标表示方法,能够进行更细粒度的定位能力以及更好的分类效果。
RepPoints是一个点集,能够自适应地包围目标并且包含局部区域的语义特征。论文基于RepPoints设计了anchor-free目标检测算法RPDet,包含两个识别阶段。因为可变形卷积可采样多个不规则分布的点进行卷积输出,所以可变形卷积十分适合RepPoints场景,能够根据识别结果的反馈进行采样点的引导。
CentripetalNet
CornerNet打开了目标检测的新方式,通过检测角点进行目标的定位,在角点的匹配上,增加了额外embedding向量,向量距离较小的角点即为匹配。而论文认为,这种方法不仅难以训练,而且仅通过物体表面进行预测,缺乏目标的位置信息。
CentripetalNet的核心在于提出了新的角点匹配方式,额外学习一个向心偏移值,偏移后足够近的角点即为匹配。如图2所示,CentripetalNet包含四个模块,分别为:
- 角点预测模块(Corner Prediction Module):用于产生候选角点,这部分跟CornerNet一样。
- 向心偏移模块(Centripetal Shift Module):预测角点的向心偏移,并根据偏移结果将相近的角点成组。
- 十字星变形卷积(Cross-star Deformable Convolution):针对角点场景的变形卷积,能够高效地增强角点位置的特征。
- 实例分割分支(Instance Mask Head):类似MaskRCNN增加实例分割分支,能够提升目标检测的性能以及增加实例分割能力。
SaccadeNet
SaccadeNet的结构如图2所示,首先初步预测目标的中心位置以及角点位置,然后利用四个角点位置以及中心点位置的特征进行回归优化。整体思想类似于two-stage目标检测算法,将第二阶段的预测框精调用的区域特征转化为点特征,在精度和速度上都可圈可点,整体思想十分不错。
RepPointsV2
RepPointsV2的整体思想类似与Mask R-CNN,加入更多的任务来监督目标检测算法的学习,具体的实现方法是在原网络上加入辅助分支(auxiliary side-branches)的形式,有监督地进行学习,辅助分支能够优化中间特征以及进行联合检测。
CPNDet
本文为CenterNet作者发表的,作者认为acnhor-free方法通常会出现大量的误检,需要一个独立的分类器来提升检测的准确率。于是结合acnhor-free方法和two-stage范式提出了Corner-Proposal-Network(CPN),完整的结构如图2所示。首先使用anchor-free方法提取关键点,遍历关键点组合成候选框,最后使用两个分类器分别对候选框进行误检过滤以及标签预测。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
Anchor-free目标检测综述 -- Keypoint-based篇的更多相关文章
- Anchor-free目标检测综述 -- Dense Prediction篇
早期目标检测研究以anchor-based为主,设定初始anchor,预测anchor的修正值,分为two-stage目标检测与one-stage目标检测,分别以Faster R-CNN和SSD作 ...
- 深度学习目标检测综述推荐之 Xiaogang Wang ISBA 2015
一.INTRODUCTION部分 (1)先根据时间轴讲了历史 (2)常见的基础模型 (3)讲了深度学习的优势 那就是feature learning,而不用人工划分的feature engineeri ...
- CVPR2019目标检测方法进展综述
CVPR2019目标检测方法进展综述 置顶 2019年03月20日 14:14:04 SIGAI_csdn 阅读数 5869更多 分类专栏: 机器学习 人工智能 AI SIGAI 版权声明:本文为 ...
- 目标检测算法(1)目标检测中的问题描述和R-CNN算法
目标检测(object detection)是计算机视觉中非常具有挑战性的一项工作,一方面它是其他很多后续视觉任务的基础,另一方面目标检测不仅需要预测区域,还要进行分类,因此问题更加复杂.最近的5年使 ...
- CVPR 2019 论文解读 | 小样本域适应的目标检测
引文 最近笔者也在寻找目标检测的其他方向,一般可以继续挖掘的方向是从目标检测的数据入手,困难样本的目标检测,如检测物体被遮挡,极小人脸检测,亦或者数据样本不足的算法.这里笔者介绍一篇小样本(few ...
- 目标检测算法(2)SPP-net
本文是使用深度学习进行目标检测系列的第二篇,主要介绍SPP-net:Spatial Pyramid Pooling in Deep ConvolutionalNetworks for Visual R ...
- CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)1. 目标检测:FCOS(CVPR 2019)目标检测算法FCOS(FCOS: ...
- 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...
- 论文学习-深度学习目标检测2014至201901综述-Deep Learning for Generic Object Detection A Survey
目录 写在前面 目标检测任务与挑战 目标检测方法汇总 基础子问题 基于DCNN的特征表示 主干网络(network backbone) Methods For Improving Object Rep ...
随机推荐
- Winfrom统一单例窗口
//调用方式 var frm = new MyForm().Instance(); public static class ExFrm { static Dictionary<string, F ...
- [STM32F10x] 标准库初始化问题
硬件:STM32F103C8T6 平台:ARM-MDK V5.11 STM32F系列提供的标准库都是通过结构体来初始化的.比如,以下是GPIO初始化的一个示例代码: GPIO_InitTypeDef ...
- MySQL数据库学习打卡 DAY2
今天学习了MySQL的DML操作,完成了关于增删改查所有基本内容的学习.
- sql语句 异常 Err] 1064 - You have an error in your SQL syntax;
在我们开发的工程中,有时候会报[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds ...
- C++内嵌汇编 教程1
注:本文的所有代码是在我自己的VS2008中测试的,由于环境的差别,不能保证能在所有的编译器上运行. 1.内嵌汇编介绍 在C++中,可以通过__asm关键字来嵌入汇编语言.例如 int main(){ ...
- golang中的标准库time
时间类型 time.Time类型表示时间.我们可以通过time.Now()函数获取当前的时间对象,然后获取时间对象的年月日时分秒等信息.示例代码如下: func main() { current := ...
- Python小练习更改版(更改一部分代码,与错误)
之前上传的发现有部分代码错误,重新上传: 更改了第一次的代码与错误,增加了注释与商店部分功能: 没有每天坚持更新博客,与初衷相差甚远,坚持!每天进步一点点! user_list.txt 部分代码: { ...
- 不难懂------react---Immutable的基本使用
一.Immutable简介 Immutable Data 就是一旦创建,就不能再被更改的数据.对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象.Immut ...
- java 中的多线程简单介绍
package com.zxf.demo; /* * 多线程的实现方式两种? * 一..实现 runnable 接口 * 2.重写run方法 Run():当一个线程启动后,就会自动执行该方法 * 3. ...
- CEH v8~v11 Module Slides 和 Lab Manual 下载
课程内容 CEH v8 01 Introduction to Ethical Hacking CEH v8 02 Footprinting and Reconnaissance CEH v8 03 S ...