文章目录
一、计算机视觉四大任务
- 分类任务(Classification):需要解决图片内容“是什么”的问题,即判断图片包含什么类别。
- 定位(Location):需要解决图片内的目标“在哪里”的问题,即定位出图片内的目标的位置。
- 检测(Detection):需要解决图片内容“是什么,在哪里”的问题,即定位出目标的的位置以及判断目标的类别。
- 分割(Segmentation):分为实例的分割和场景分割,解决“每一个像素属于哪个目标物或场景”的问题。
二、目标检测
**目标检测: **是找出图像中所有感兴趣的目标(物体),确定它们的位置和大小。
过去的十多年来看,自然图像的目标检测算法都是基于传统手工特征的时期,自2013年起至今,为基于深度学习的目标检测时期。下图为目标检测基于深度学习技术的发展历程,下面将分别对这些算法和其中采用的技术进行介绍。
1.相关概念
(1)交并比IOU
如下图绿色框是人工标注的ground truth,红色框是目标检测算法最终给出的结果bounding box,显然绿色框对于飞机这个物体检测的更加准确,IOU正是表达这种bounding box和ground truth的差异的指标。
IOU定义了两个目标检测面积的重叠度,当算法给出的框和人工标注的框差异很小时,或者说重叠度(IOU)很大时,可以说算法产生的bounding box(简写bbox)就很准确。如下图所示,矩形框A、B的一个重合度IOU计算公式为:IOU=(A∩B)/(A∪B)
注:如果以下概念看不懂,可以直接看RCNN部分,然后再返回查看。
(2)非极大值抑制NMS
目标检测算法一般会给出目标很多的粗略结果,我们需要通过非极大值抑制方法,把其他冗余的结果经进行排除,消除多余的框,找到最佳的bbox。如下图所示,红色框表示含有多个目标区域,通过非极大值抑制,将其他冗余目标区域删除,得到绿色的目标区域。
具体过程如下:
假设根据分类器的得到的分类概率大小为: A<B<C<D<E<F
- 从最大概率矩形框F开始,分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
- 假设B、D与F的重叠度超过阈值,即说明B、D、F目标区域都很相似,A、C、E是其他的目标区域,那么就扔掉B、D;并标记第一个矩形框F,即仅仅留下概率最大的。
- 从剩下的矩形框A、C、E中(其他目标区域),选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
就这样一直重复,找到所有被保留下来的矩形框,由于我们设置了交并比,每个保存的矩形框仅仅代表一个目标,即如果图片里面有两个目标,则最后仅仅保存两个bbox。
(3)边界回归(Bounding-box regression )
根据前面的概念可知,每个目标最后会有一个Bounding-box,如下图红色框目标所示,绿色框为人工标注的最佳目标区域。但是由前面介绍的IOU指标可知,这里算法给出的红色框可以认为是检测失败的,因为它和绿色的ground truth的 IOU值小于了0.5(目测……),也就是说重叠度不够,目标检测不准确。此时就需要对这个红色框进行微调。使得经过微调后的窗口跟Ground Truth 更接近 ,即边界框回归。
如下图所示,红色的框 P 代表原始的目标区域,绿色的框 G代表人工标注的最佳区域,边界框回归的目标是:寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实窗口 G 更接近的回归窗口G^,由于这个过程涉及很多公式推导,所以此处不详细阐述。
2.R-CNN
RCNN(Regions with CNN features)是将CNN卷积神经网络应用到目标检测问题上的一个里程碑,借助CNN良好的特征提取和分类性能,通过Region Proposal方法实现目标检测问题的转化。
算法可以分为4个步骤:
(1)候选区域选择
Region Proposal是一类传统的区域提取方法,可以看作不同宽高的滑动窗口,通过窗口滑动获得潜在的目标图像,一般候选区为为2千个即可。
(2)CNN特征提取
将候选区域的目标图像进行归一化,作为CNN的标准输入。通过CNN卷积和池化等操作,得到固定维度的输出特征向量。原始论文中的CNN采用在 ImageNet 上已经训练好的模型,然后在 PASCAL VOC 数据集上进行迁移学习fine-tune(迁移学习的一种方法)。因为 ImageNet 的图像高达几百万张,利用卷积神经网络充分学习浅层的特征,然后在小规模数据集做规模化训练,从而可以达到好的效果。
R-CNN 抽取了一个 4096 维的特征向量,采用的是 Alexnet,需要注意的是 Alextnet 的输入图像大小是 227x227。而产生的候选区域大小不一,为了与 Alexnet 兼容,R-CNN 采用了非常暴力的手段,那就是无视候选区域的大小和形状,统一变换到 227*227 的尺寸,边界区域需要进行填充(padding)。
(3)分类与边界回归
该过程包括两个步骤:
- 一是对CNN模型的输出特征向量进行分类,如利用 SVM 分类器进行类别的识别,产生分类分数(候选区域的概率值)。候选区域有 2000 个,所以很多会进行重叠。所以需要针对每个类,通过计算 IoU 指标,采取非极大值抑制,以最高分的区域为基础,剔除掉那些重叠位置的区域。
- 二是通过边界回归(bounding-box regression) 得到精确的目标区域,如上述概念边界回归,由于实际目标产生的区域并不准确,所以通过一个线性的回归模型,对完成分类的目标进行精确的定位。
如下图为R-CNN总的流程图:
R-CNN存在三个明显的问题:
-
多个候选区域对应的图像需要预先提取,占用较大的磁盘空间;
-
针对传统CNN需要固定尺寸的输入图像,归一化产生物体截断或拉伸,会导致输入CNN的信息丢失;
-
每一个ProposalRegion都需要进入CNN网络计算,上千个Region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。
3.SPP-Net
如上R-CNN存在三个明显的缺点,因此会产生这样的疑问:为什么要对每一个候选区域独立计算,而不是提取整体特征,仅在分类之前做一次区域截取呢?SPP-Net就解决了这个问题。如下图为SPP-Net总的流程图:
(1)候选区域处理
在候选区域的处理过程中,首先用CNN提取整体图片的特征,仅在分类之前做一次候选区域截取。
(2)特征图提取
在上述得到整体的特征之后,如何得到候选区域的特征图呢,对卷积层可视化发现:输入图片的某个位置的特征反应在特征图上也是在相同位置。基于这一事实,对候选区域的特征提取只需要在特征图上的相应位置提取就可以了。
(3)提取特征向量
在通

本文详细介绍了目标检测的重要概念,如IOU、NMS和边界回归,并逐步剖析了从R-CNN到Fast-RCNN、SPP-Net、Faster-RCNN、YOLO和SSD等深度学习目标检测算法的演进过程,揭示了这些方法在解决计算效率和检测精度方面的改进。
最低0.47元/天 解锁文章
1642

被折叠的 条评论
为什么被折叠?



