作者 | 黄浴,奇点汽车美研中心首席科学家兼总裁

来源 | 转载自知乎专栏自动驾驶的挑战和发展

本文将介绍自动驾驶中的深度学习目标检测的基本概念和方法,并对几个主要 Anchor free 方法进行了比较,希望对读者有所帮助,以下为正文:

Anchor free深度学习的目标检测方法是回归,以前是没有anchor(“锚”?)的,现在觉得还是去掉anchor好,主要是因为灵活性强,今后硬件芯片兼容性好。

回顾一下,目标检测分单步和两步,单步法的历史中从SSD和YOLO-2开始引入锚框(anchor box),而两步法直到Faster RCNN才开始采用“锚”的想法。

什么是锚框呢?其实就是固定 的参考框。锚框的出现,使得训练时可以预设一组不同尺度不同位置的锚框,覆盖几乎所有位置和尺度, 每个锚框负责检测与其区域交叉比(intersection over union, IOU)大于阈值的目标,这样问题就转换为"这个锚框中有没有认识的目标,目标框偏离锚框多远"的问题。

  • UnitBox: An Advanced Object Detection Network

  • Densebox

  • Yolo-1/(-2/3)

  • CornerNet

  • ExtremeNet

  • FSAF: Feature Selective Anchor-Free

  • FCOS: Fully Convolutional One-Stage

  • FoveaBox

  • Center and Scale Prediction: A Box-free Approach for Object Detection

  • Region Proposal by Guided Anchoring(GA-RPN)

  • CenterNet: Objects as Points

  • CenterNet: Keypoint Triplets for Object Detection

  • CornerNet-Lite: Efficient Keypoint Based Object Detection

UnitBox: 一个先进的检测网络

主要思想:Intersection over Union (IoU) loss function for bounding box prediction



架构


IoU loss vs l2 loss


l2 loss和IoU loss 结果比较

DenseBox:统一地标定位和目标检测

基本思想:直接预测目标框和目标类。


系统流水线:1) 图像金字塔. 2) 类似编码器-解码器. 3) feature map 转换成 bounding boxes,加NMS处理。

DenseBox

地标定位 DenseBox

YOLO目标检测

检测定义为一个张量的回归问题,直接通过张量的估计得到目标框位置和类别概率。




注:之后YOLO-2/3版采用了anchor方法,这里也加在一起参考。

YOLO9000: 更好、更快、更强

Darknet-19:19卷积层和5个最大池层

9418 种类别的WordTree

使用WordTree层次结构组合数据集

具有尺寸先验和位置预测的边界框

VOC 和 COCO上的聚合框维度

结果

YOLOv3: 逐步改进

Darknet-53

CornerNet: 将对象检测为配对关键点

把检测目标框变成一对关键点的问题,即左上角和右下角,这样就消除了锚框的设计麻烦。另外,采用的角点池化(corner pooling)技术帮助CNN更好地定位角点位置。下图给出了系统流程图:CNN模型输出两个关键点的各自热图(heatmap),同时各跟一个嵌入向量。同一个目标的角点,训练后的神经网络会预测类似的嵌入。



将对象检测为组合在一起的一对边界框角

下图是定位的角点池化技术:每个特征图通道沿着两个方向取最大值,然后求和。

Corner pooling

用于训练的“Ground-truth” 热图

测试流程图:沙漏型的核心网络的后面跟着两个预测模块定位和聚类焦点。


定义loss函数聚类corner:push和pull



ExtremeNet:通过分组极端点和中心点进行自下而上的物体检测

主要思想:也是将目标检测变成了纯粹关键点估计问题,包括目标的4个extreme points 和1个中心点,将这几何校准的5个点组成一个目标框。

下图是系统流程图:类似CornerNet,对每个目标类,CNN网络预测5个热图,只有几何中心的热图响应足够大才会生成目标框。



该网络预测每个类别的四个极端点热图和一个中心热图

如下是模型的测试流程图:输入图像得到5个C-通道热图,4个2-通道类别无关的偏差图(offset map)。热图是通过加权逐像素逻辑回归(logistic regression)训练得到,. 而偏差图则是由平滑L1 损失函数训练的。


下图是中心分组(Center grouping)算法:输入是5个热图,输出则是带有可信度的目标框。


下图是边缘聚集的结果:当一个边缘的多个点都成为extreme point,可见边缘聚集使中间像素的可信度得到增大。


FSAF:功能选择性无锚模块


主要思想:基于特征金字塔网络(feature pyramid structure,FPN)的在线特征选择能力, 在训练时可以动态分配每个实例到最适合的特征层,在推理时能够和带锚的模块分支一起工作,最后并行地输出预测。



基于锚的方法



下图展示一个特征层中的实例监督信号,其中两个损失函数:分类的focal loss 和目标框回归的IoU loss 。


监督信号指示无锚分支的一个特征级别中的实例

在线特征选择的操作如图:每个实例通过无锚框的所有层计算出所有有效区域的分类损失和回归损失,在最小损失的那层构建该实例的监督信号。

在线特征选择机制

具有 FSAF 模块的RetinaNet 网络架构

FCOS: 完全卷积的一步目标检测

主要思想:是分割,不需要锚框也不需要区域提议。这样,避免了锚框在模型训练中涉及的重叠计算和性能敏感的参数设计环。

FCOS中定义了一个新损失函数“中心度(centerness)”,如下图( 红和蓝对应 1 和 0, 其他颜色位于其中)。





FCOS网络架构

结果

FoveaBox: 基于锚的目标检测之外

主要思想:直接学习目标存在的概率和目标框的坐标位置,其中包括预测类别相关的语义图和生成类别无关的候选目标框,目标框的大小和特征金字塔的表示相关(如图所示)。

FoveaBox 目标检测

FoveaNet的网络结构如图,一个基于ResNet的特征金字塔网络(FPN)送入两个子网络, 一个做分类,一个做预测。

FoveaBox 网络架构

结果

引导锚定的区域proposal (GA-RPN)

利用语义特征指导抛锚,称为指导性的抛锚。一起预测感兴趣目标的中心位置以及不同位置的尺度和长宽比。有代码://github.com/open-mmlab/m.

GA-RPN

对特征金字塔的每个输出特征图,采用带有两个分支的锚框生成模块分别预测锚位置和形状。一个特征适应模块对原始特征图处理,使其更能体现锚的形状。



Anchor location target

采用多级特征,根据其尺度把真实目标(ground truth objects)提供给不同特征级,相应定义 CR, IR和OR 。

性能比较

CenterNet: 目标定义为点

把目标定义成一个单点,即目标框的中心点(下图),检测器采用关键点估计找到中心点并从其关键点的特征回归其他目标特性,如大小,3D位置,朝向和姿势。

目标定义为边界框中心点

(a) 标准anchor 检测. (b) 中心点检测

下面是CenterNet的模型框图,其中数字是步进(stride)量:(a) 沙漏网络;(b) 带转置卷积的ResNet,在每个上采样层前面加了个3 × 3 可变形卷积层(deformable convolutional layer);(c) 语义分割的DLA-34 (Deep layer aggregation);(d) 修正的 DLA-34,在可变形卷积层加更多的跳线(skip connections)上采样步骤。

模型图

CenterNet: 三个关键点目标检测

主要思想:基于前面提到的CornerNet,检测目标变成三个关键点的估计(a triplet of keypoints)。

架构图:一个核心网络执行级联角点池化(cascade corner pooling)和中心点池化(center pooling ),输出两个角点热图和一个中心关键点热图;和CornerNet类似,一对检测的角点和嵌入用来检测潜在目标框;然后检测的中心关键点确定最终的框位置。

CenterNet

(a) 中心点池化. (b) 角点池化. (c) 层叠角点池化

下图给出角点池化和中心点池化的结构图。

中心点池化模块 (a) 层叠顶部角点池化模块(b)

CornerNet-Lite: Efficient Keypoint Based Object Detection

CornerNet-Lite:CornerNet-Saccade(attention mechanism)+ CornerNet-Squeeze

CornerNet-Saccade:缩小的图像中产生的目标框,加上attention map,预测一组可能的目标位置。在每个位置附近取一个小区域,检测目标。对检测的目标位置排序,取前k个,运行NMS。

CornerNet-Saccade

模型加速:SqueezeNet/MobileNets for CornerNet-Squeeze

  1. 替换3 × 3 kernels 成 1 × 1 kernels;

  2. 减少输入通道 to 3 × 3 kernels;

  3. 下采样.

结果

中心和尺度预测:一种无边界框目标检测方法

主要思想是:目标中心点,语义抽象。

目标检测变成一个直接的中心和尺度预测。最后卷积有两个通道,一个是关于中心位置的热图,另一个是中心的尺度图。

CSP (Center and Scale Prediction) 检测器

包括两个成分:特征提取和检测。前者把不同分辨率的特征图连在一起,后者是卷积层和两个预测层,分别对应中心位置和尺度大小。

CSP 架构

原文链接:https://zhuanlan.zhihu.com/p/64563186


(*本文为 AI科技大本营转载文章,转载请联系原作者

精彩推荐

“只讲技术,拒绝空谈!”2019 AI开发者大会将于9月6日-7日在北京举行,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长。

目前,大会盲订票限量发售中~扫码购票,领先一步!


推荐阅读

你点的每个“在看”,我都认真当成了喜欢

深度学习目标检测法进化史,看这一篇就够了相关推荐

  1. keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)

    太多的公众号每天的文章是否让你眼花缭乱?刷了好多文章,发现大都是转来转去?今天我在全网公众号里为大家精选主题为深度学习目标检测算法的文章12篇,其中包括综述,R-CNN,SPP-Net,Fast R- ...

  2. 黑客零基础入门教程及方法,从零开始学习黑客技术,看这一篇就够了

    黑客,对于很多人来说,是一个神秘的代名词,加之影视作品夸张的艺术表现,使得黑客这个本来只专注于技术的群体,散发出亦正亦邪的神秘色彩. 黑客源自英文hacker一词,最初曾指热心于计算机技术.水平高超的 ...

  3. 黑客零基础入门教程,从入门到精通学习路线规划,看完这篇就够了。

    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样. 想要成为黑客,却苦于没有方向,不知道从何学起 ...

  4. 强化学习面试大纲(看这一篇就够啦)

    最近在整理强化学习的一些基础知识以及面试中遇到的一些问题.问题和参考答案评论区私聊PDF版(个人看法.自己整理),文章内容大多选自David Silver的一些录像以及<强化学习导论(第二版)& ...

  5. 学习egg.js,看这一篇就够了!

    egg 介绍 egg 是什么? egg 是阿里出品的一款 node.js 后端 web 框架,基于 koa 封装,并做了一些约定. 为什么叫 egg ? egg 有孕育的含义,因为 egg 的定位是企 ...

  6. 学习Sql语法,看这一篇就够了!速成宝典,看完必懂!

    一.基本概念 数据库术语 数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件). 数据表(table) - 某种特定类型数据的结构化清单. 模式(schema) - 关于 ...

  7. 双目、结构光、tof,三种深度相机的原理区别看这一篇就够了!

    编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多

  8. 阿里大师总结的Web安全超全知识点,看这一篇就够了

    安全是互联网公司的生命,也是每一位网民的基本需求. 但根据<2021上半年中国互联网安全报告>,我国Web攻击.恶意爬虫攻击量连年翻倍增长,Web安全根本不能得到正常保障. 由此可见,We ...

  9. 深度学习目标检测详细解析以及Mask R-CNN示例

    深度学习目标检测详细解析以及Mask R-CNN示例 本文详细介绍了R-CNN走到端到端模型的Faster R-CNN的进化流程,以及典型的示例算法Mask R-CNN模型.算法如何变得更快,更强! ...

最新文章

  1. Windows内核实验002 中断现场
  2. python sorted原理_Python sort()和sorted()
  3. 架构师重构代码的12条军规
  4. 锐捷(四)交换机虚拟化(VSU)+双主机检测(BFD)的配置
  5. 2021-10-09《星科快报》第一期 何为元宇宙
  6. 手机双摄像头有什么作用
  7. 奇虎360笔试题 挑选镇长
  8. 电商-支付相关表的表设计
  9. 如何用ChemDraw Prime 绘制任意弧线箭头
  10. 解密微信电脑版image文件夹下缓存的用户图片
  11. 华为云宣布将在全球范围内推出区块链服务
  12. 我参加NVIDIA Sky Hackathon 训练文件的路径设置
  13. PDF怎么编辑注释? 5 个免费好用的 PDF 注释器
  14. 读取文件夹下同类型文件的文件名并排序
  15. 一个汽车软件测试工程师的三年工作总结
  16. 抖音直播弹幕协议解析记录
  17. 浅析网络可视化分析技术
  18. kafka-go源码解析一(Dialer)
  19. 【左右挑货控件】进销存控件的使用
  20. STM32MP157驱动开发——platform设备驱动(中)

热门文章

  1. jQuery中的Ajax----03
  2. 多个class相同的input标签 获取当前值!方法!
  3. 南通市公积金信息系统goldengate复制软件采购
  4. oracle 判断11位数字,45个非常有用的 Oracle 查询语句小结
  5. 《数据科学家养成手册》傅里叶变换与反傅里叶变换笔记
  6. 2021全国高校计算机能力挑战赛(初赛)Java试题四
  7. quartz关闭DBUG日志
  8. 回溯法实现正则匹配判断
  9. 文本处理工具之grep和egrep
  10. Vue2.0使用vue-cli脚手架搭建