目标检测(一)概述

2021-02-01 11:07:40 浏览数 (1)

  1. 深度学习和传统目标检测的区别
  2. 1-stage 目标检测和 2-stage 目标检测
  3. anchor-based 和 anchor-free 目标检测
  4. 典型模型简介

相关论文:

Li Liu et al.: Deep Learning for Generic Object Detection: A Survey

深度学习和传统目标检测的区别

为什么目标检测很难为什么目标检测很难

目标检测解决的是(图片)数据中有什么,在哪里的问题,也就是分类,定位,和确定范围,可以由confidence置信度,中心位置坐标 x,y和范围 w, h表示结果。

如上图所示,很难确定由哪些特征来决定结果,传统的目标检测方法会手工设定一些比如Haar-like特征:

这些基本的黑白块对于人脸很高效,但是不通用

而深度学习是由AI自己学习目标的特征。以下面的LeNet为例, 用卷积核(检测器)遍历图片,每个卷积核生成一张特征图,再在特征图上接着重复池化卷积,提取到的就是越来越高级的特征(特征图的特征),最后用全连接网络作为分类器输出10个置信度confidence(0~9)。

经典的手写数字识别网络LeNet-5经典的手写数字识别网络LeNet-5
CNN的常规操作CNN的常规操作

1-stage 目标检测和 2-stage 目标检测

虽然深度神经网络很善于从处理高维数据提取特征,但是对于五花八门的真实照片来说还是很困难。目前同时期比较精确的方法都是2-stage两步:

  1. 先找出可能存在目标的候选框 Regional Proposal,筛选掉了大部分背景无用的特征
  2. 逐个对候选框 区域内的特征 进行分类

这样做本质上就是先解决了可能在哪里的问题,然后再考虑是什么,和具体的位置范围。2-stage 确实准确率更高,但是一张图片的候选框多达上千个,所以没有这个步骤的1-stage要快很多,两种方法其实是在速度和精度上做取舍。

anchor-base 和anchor-free

另外目标检测又可以分为anchor-based 和 anchor-free的, Anchor 是锚的意思,最早出现在Faster RCNN 中,用来生成锚框,和候选区是可能存在目标的区域不同,锚框是相对锚点设置的一系列固定的,不同尺度和长宽比的框,也就是说是跟具体图片没有关系。

anchor 也是用来辅助分类的, 请想象任何一个模型,原图是海底, 上边我们层层的特征图组成海洋(不同尺寸), 从海面丢下锚,虽然我们锚和特征图上绑定在一起,但是锚框的位置信息 (mx,my,mw,mh) 是对应在原图上的,我们学习的其实是锚框和标准答案Ground Truth之间平移和缩放的关系。而多个锚框的设置使得挨得很近的多个目标也能被捕捉到。相对于让模型直接学习(x,y,w,h),学习关于锚框的offset就要更轻松一些。

anchor机制的思想anchor机制的思想

可是锚框的各种参数设置又很麻烦了,有违我们一切交给AI的主旨,近两年也出现了很多很多Anchor-free的方法,比如逐个像素处理的FCOS,预测Bbox两个角的CornerNet和预测两个角加中心点的CenterNet等等。

经典检测框架

好啦!大部分目标检测就这么回事啦 ,具体方法都可以用两两组合来概述了。

在具体讲模型之前, 这里先介绍神经网络模型相关的三个词: 

backbone 主干网络, 用于提取特征,

head 头,负责检测,

neck 颈, 顾名思义是衔接特征和检测的部分。

接下来长图预警!

RCNN在原图上获取候选区,对每个候选区进行特征提取;而Fast RCNN只获取一次特征,根据投影截取特征矩阵的对应部分RCNN在原图上获取候选区,对每个候选区进行特征提取;而Fast RCNN只获取一次特征,根据投影截取特征矩阵的对应部分
FastRCNN使用一个小型CNN获取候选框,至此整个框架实现端对端的学习,RFCN改进了会丢失信息的RoIPoolingFastRCNN使用一个小型CNN获取候选框,至此整个框架实现端对端的学习,RFCN改进了会丢失信息的RoIPooling
MaskRCNN使用的是RoIAlign,比RoIPooling更觉却的对齐方式,另外在检测head再分出一路来预测掩膜Mask进行图像分割MaskRCNN使用的是RoIAlign,比RoIPooling更觉却的对齐方式,另外在检测head再分出一路来预测掩膜Mask进行图像分割
1-stage的两个代表,不用候选区,YOLO在特征图上平均分割格子,SSD直接基于特征图每个像素上进行预测1-stage的两个代表,不用候选区,YOLO在特征图上平均分割格子,SSD直接基于特征图每个像素上进行预测
FCOS用不同抽象级别的的特征层构造了一个特征金字塔,每一层都配备不同的检测头来检测每一个像素相对bbox的offset和类别FCOS用不同抽象级别的的特征层构造了一个特征金字塔,每一层都配备不同的检测头来检测每一个像素相对bbox的offset和类别
CenterNet是基于热图的关键点检测CenterNet是基于热图的关键点检测

0 人点赞