双阶段目标检测算法总结

RCNN

基本架构:选择性搜索算法(SS)+CNN+SVM+线性回归模型

缺点:需要分开训练CNN\SVM\线性回归模型,因此无法做到端到端训练;因为每张图片需要提取2000个候选区域,每个区域需要特征数量大,因此推理速度极慢且占用内存大。

选择性搜索算法:为了提升区域选择效率而使用的算法,该算法相较于穷举法有较大提升,其本质是图像分割算法。首先初始化区域集,计算相邻区域相似度,具有高相似度区域合并到一起。具体的相似度计算分为四个子模块(颜色、纹理、尺度、填充)。颜色和纹理是判断区域相似度的基本要素;尺度相似度则是为了避免合并后的区域不断吞并周围区域,造成无效的区域划分;填充相似度则是为了解决物体间的包含关系(如:车轮在汽车上、眼睛在动物身上)。最终将四个模块归一化求和计算。具体的公式可以参考:选择性搜索算法(Selective Search)超详解(通俗易懂版)-CSDN博客

CNN:用于提取候选区域的图像特征,这一步中可以采用的卷积神经网络可以有很多种(Resnet、Inception、VGG等),最初的RCNN仅提取网络的高层特征,即被多次下采样后的高级抽象特征。因此无法很好的提取小目标。

SVM:用于对特征进行类别分类,使用n个svm组成的权值矩阵(n为分类数)与特征矩阵相乘,得到最终的概率矩阵。使用非极大抑制对每类样本的进行处理剔除重叠建议框,保留高分框。SVM本质上是二分类分类器,通过核技巧将特征映射到高维空间来处理线性不可分样本,通过叠加多个SVM分类器可以处理这样的多分类问题(也称为One-vs-All (OvA) 或 One-vs-Rest 方法)。

线性回归模型:用于微调非极大抑制筛选后的边界框。在训练期间,通过比较预测的边界框和真实目标边界框之间的差异来计算回归损失。回归损失用于调整回归器的权重,以使其能够更准确地预测边界框的位置。

引用自论文原文

fast-RCNN

基本框架:选择性搜索算法+CNN+ROI pooling+softmax+线性回归模型

改进:RCNN中将每个感兴趣区域转换成相同尺寸再使用CNN提取特征,每个感兴趣区域分别提取特征消耗计算资源极大。fast-RCNN将整张图片输入CNN获得整体特征,再将选择性搜索算法的感兴趣区域投影到图像中,获得相应的特征矩阵。然后将每个特征矩阵经ROI pooling缩放到7*7大小特征图,特征图再输入进softmax分类器与线性回归模型中对类别和边界框位置进行预测。在训练和预测速度上相较于RCNN有较大提升。

ROI pooling:实际上是将图像每个维度划分为7*7的区域,对每个区域执行最大池化。

损失计算:不同RCNN训练时分开计算边界框和分类损失,fast-RCNN将特征图并联输入到softmax分类器与线性回归模型中,因此将分类损失与边界框损失的和作为最终损失值。

缺点:选择性搜索仍然较为耗时,对小目标的检测性能仍然较差。

更多细节可以参考:RCNN_哔哩哔哩_bilibili

目标检测 | R-CNN、Fast R-CNN与Faster R-CNN理论讲解-CSDN博客

fast-RCNN结构,引用自论文原文
引用自论文原文

faster-RCNN及其拓展组件:

基本框架:CNN+RPN+ROI pooling+softmax+线性回归模型

改进:使用RPN替换SS(并不是指在原作用位置直接替换),其他结构与fast-RCNN无异。因为使用RPN输出边界框,无论是算法速度还是生成边界框的数量,都极大缩减了预测时间。

RPN:不同于SS作用于原图,RPN作用与特征图,因此RPN中一个滑块中对应的原图作用面积会是anchor面积的数倍,这个倍数取决于CNN的卷积以及池化层的分布情况。具体来说每个滑块中的anchor对应到原图上的尺度有三种(128^2,256^2,512^2)比例也有三种(1:1,1:2,2:1)。RPN会在特征图中历遍所有像素,但不是所有anchor都会被保留,对于VGG作为backbone的情况只保留256个anchor,只保留IOU大于0.7(或IOU最大)与IOU小于0.3的anchor。

损失计算:论文中采用分部式计算,也可以直接采用联合训练方法。分部式计算主要是将RPN的训练与fast-RCNN训练分开,先训练RPN参数,再用RPN生成边界框训练fast-RCNN,然后使用fast-RCNN的训练参数微调RPN参数以微调边界框,最后再微调fast-RCNN全连接层参数。

引用自论文原文
引用自论文原文

缺点 :该模型仍然使用高层特征进行物体分类和边界框回归,对小目标的检测仍然不利。

为解决以上缺点,可以使用组件FPN。

FPN:

引用自论文原文

为帮助我们理解FPN的性能提升,上图中有四种特征提取方案:

(a) 使用图像金字塔构建特征金字塔,每个尺度单独计算特征。虽然可以获得不同尺度的特征,但是计算资源占用大,且推理时间长。

(b) 对图像进行卷积池化操作后只提取最后一层的高级语义特征,这就是RCNN系网络的做法。缺点前文已点明。相对于方案a,它的推理速度快且计算资源占用少。

(c) 是将a和b两种方法的长处结合,将图像卷积池化后的特征分别计算,得到不同尺度的特征。兼具速度与特征量。但是特征的鲁棒性不强,浅层特征较弱,割裂计算无法发挥这些浅层特征的作用。

(e) FPN方法本尊,使用了更深的层来构造特征金字塔,这样做是为了使用更加鲁棒的信息;除此之外,我们将处理过的低层特征和处理过的高层特征进行累加,这样做的目的是因为低层特征可以提供更加准确的位置信息,而多次的降采样和上采样操作使得深层网络的定位信息存在误差,因此我们将其结合其起来使用,就构建了一个更深的特征金字塔,融合了多层特征信息,并在不同的特征进行输出。具体做法是先将除第一层外的各层用1*1*256卷积统一通道数,将统一通道数后的各层从最高层开始,最高层经上采样后维数与下一层一致,将最高层特征直接与下一层相加,以此类推,得到每层的输出特征,具体流程看下图。注意这里还使用了maxpool池化生成了p6特征,p2~p6会输入到rpn中,分别使用不同尺寸的anchor(32^2,64^2,128^2,256^2,512^2)进行训练。分别对应识别最小到最大的目标。

来源: 1.1.2 FPN结构详解_哔哩哔哩_bilibili

一类是two-stage,two-stage检测算法将检测问题划分为阶段,首先产生候选区域(region proposals),然后对候选区域分类(一般还需要对位置精修),这一类的典型代表是R-CNN,….zip目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值