文章目录
- 前言
- 一、传统目标检测方法
- 二、R-CNN
- [三、Fast R-CNN](#三、Fast R-CNN)
-
- [1.Fast R-CNN简介](#1.Fast R-CNN简介)
- 2.softmax分类器
- [3.边界框回归器(bbox regressor )](#3.边界框回归器(bbox regressor ))
- [4.多任务损失( Multi-task Loss)函数](#4.多任务损失( Multi-task Loss)函数)
- [四、Faster R-CNN](#四、Faster R-CNN)
-
- [1.Faster R-CNN简介](#1.Faster R-CNN简介)
- 2.RPN(区域建议网络)
- 3.RPN损失函数
- 结束语
- 💂 个人主页 :风间琉璃
- 🤟 版权 : 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主
- 💬 如果文章对你有
帮助
、欢迎关注
、点赞
、收藏(一键三连)
和订阅专栏
哦
前言
提示:这里可以添加本文要记录的大概内容:
开始学习目标检测的相关算法的,之前图像分类的学习还是在去年哈哈哈!!!目标检测是当前计算机视觉领域内研究的一个热点,与图像分类不一样的是,目标检测不仅要准确地识别出图像中目标的类别,还要准确的定位该目标的位置,并用边界框把目标框起来。
基于深度学习的目标检测算法可以分为两类:二阶算法(Two Stage)和一阶算法(One Stage)
- 二阶算法:先生成区域候选框,再通过卷积神经网络进行分类和回归修正。常见算法有 RCNN、SPPNet、Fast RCNN,Faster RCNN 和 RFCN 等。二阶算法检测结果更精确。
- 一阶算法:不生成候选框,直接在网络中提取特征来预测物体的分类和位置。常见算法有 SSD、YOLO系列 和 RetinaNet 等。一阶算法检测速度与更快。
一、传统目标检测方法
传统的目标检测方法主要分为三个阶段:第一步先在图 片上生成 一 些候选区域 ;第二步对生成的候选 区域进行特征提取 ,第三步使用分类器对候选区域进行分类。传统的目标检测算法流程如下图所示。
1.候选区域
候选区域生成,它的目的是在图像中定位出可能包含目标的位置 。在这一步骤中,通常采用滑动窗口的方式对整张图像进行遍历,同时设置不同尺寸和长宽比的包围盒,以找到目标可能存在的位置。具体步骤包括:
-
滑动窗口遍历:通过在图像上以不同尺寸和长宽比的窗口进行滑动,覆盖整个图像,以探测可能包含目标的区域。
-
纹理特征和颜色特征提取 :对于每个滑动窗口中的区域,提取其纹理特征和颜色特征 等信息。这些特征可以帮助区分目标和背景,从而辅助后续的目标分类工作。
-
非极大值抑制 :由于滑动窗口可能会在图像中生成大量重叠或相似的候选区域 ,因此需要使用==非极大值抑制(Non-Maximum Suppression,NMS)==的方法来减少冗余的候选框数量。该方法会筛选出具有最高置信度的候选框,并且消除与其高度重叠的其他候选框,从而保留最具代表性的目标区域。
候选区域生成的这一过程虽然能够有效地定位出目标可能存在的位置,但是由于需要遍历整张图像并生成大量的候选区域,因此会耗费较多的时间,并且可能产生许多冗余的窗口。这些冗余窗口会对后续的特征提取和分类步骤的速度和精度造成影响。
2.特征提取
特征提取,常用的特征包括方向梯度直方图(HOG)和尺度不变特征转换(SIFT)等。这些特征对于不同的图像背景和目标具有一定的鲁棒性,但在面对复杂背景、光照变化、模糊扭曲等因素时,可能表现出一定的局限性。如果待检测的目标背景复杂,存在光照条件变化、模糊扭曲等因素干扰,单纯地依靠传统的特征提取算法可能无法很好地设计一个具有高鲁棒性的算法。由于特征提取阶段所提取到的特征直接影响着后续分类器的精度,因此特征提取阶段的重要性尤为突出。
3.目标分类
目前在目标检测中常用的分类器主要包括:
-
支持向量机(Support Vector Machine,SVM):SVM是一种监督学习算法,用于进行二分类和多分类任务。它的基本思想是在特征空间中找到一个最优超平面,能够将不同类别的样本分开。SVM在目标检测中被广泛应用,具有较高的分类性能和泛化能力。
-
AdaBoost(Adaptive Boosting):AdaBoost是一种集成学习算法,通过迭代训练一系列弱分类器,然后将它们组合成一个强分类器。AdaBoost在每一轮迭代中,都会调整训练样本的权重,使得之前分类错误的样本在后续迭代中得到更多关注。它在目标检测中也有一定的应用。
-
随机森林(Random Forest):随机森林是一种集成学习算法,由多棵决策树组成。每棵树都是通过对训练集进行自助采样得到的,然后在每个节点上,通过随机选择一部分特征进行分裂。最终,通过投票或者取平均的方式来进行分类。随机森林适用于处理高维数据和大规模数据集,通常具有较高的准确性和鲁棒性。
传统的目标检测方法存在两个主要问题:
1.候选区域生成不准确:传统方法在候选区域生成阶段往往难以准确估计目标的位置,尤其是对于目标尺寸和长宽比变化较大的情况,难以生成高召回率的候选区域。
2.特征提取缺乏鲁棒性:由于受到各种干扰因素的影响,传统方法在特征提取阶段难以提取到具有高鲁棒性的特征,这可能影响后续的目标分类准确度。
基于深度学习的目标检测方法能够很好地避免传统方法的弊端。这是因为基于深度学习的目标检测方法将候选区域生成、特征提取和目标分类三个步骤放入一个深度学习框架中进行端到端的训练,从而加快检测速度,提高效率。
二、R-CNN
2014 年, Ross Girshick 等人提出一种基于卷积神经网络的目标检测方法,即 R-CNN(Regions with CNN features)。 R-CNN 利用卷积神经网络(CNN)在图像分类任务上性能优越的表现,通过预先在原始图像上提取目标候选区域的方式,将目标检测问题转化成目标分类问题,R-CNN系列(R-CNN,fast-RCNN,faster-RCNN)是使用深度学习进行物体检测的鼻祖论文,其中fast-RCNN 以及faster-RCNN都是延续R-CNN的思路。 R-CNN 的简要检测流程如下图 2.2 所示:
R-CNN算法流程可分为4个步骤:
(1)候选区域的获取
(2)候选区域的特征提取
(3)候选区对应特征分类(SVM)
(4)使用回归器精细修正候选框位置
RCNN由四个部分组成:SS算法
、CNN
、SVM
、bbox regression
组成。
1.候选区域的获取
在 R-CNN 中,对于单张原始图像,首先使用选择性搜索(Selective Search
)生成大约 1000-2000 个候选框(region proposals)。然后,对这些不同大小的候选框进行归一化处理
,使它们具有相同的尺寸。这个归一化处理的目的
是为了将不同大小的候选框转换为统一的输入尺寸,以便于后续的卷积神经网络(CNN)处理 。
Selective Search 算法主要思想
是: 首先采用过分割技术 , 将原图分割成 1000到 2000 个小区域。其次,使用某种合并规则 ,将两两小区域合并,重复这样的合并步骤,直到整张图像和合并完,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。最后把曾经存在的合并后所有区域输出当初我们的候选区域。两个小区域颜色相近的合并权限最高,其次是两个小区域梯度直方图最相近的,接着就是两个小区域合并后面积最小的优先合并。
2.候选区域的特征提取
在 R-CNN 中,将2000个候选框缩放到227x227大小,接着将候选区域输入事先训练好的AlexNet CNN网络,获取4096维的特征得到2000x4096维矩阵。
3.候选区对应特征分类(SVM)
将上一步输出的特征向量送入每一类训练好的线性 SVM 分类器
去分类,判断该特征向量是属于哪一类。 R-CNN 会为每个类别的目标专门训练一个 SVM 分类器。在为线性 SVM 分类器的训练准备数据的过程中,将包含目标的候选区域标注为正样本 ,背景区域标注为负样本。
将2000X4096维特征与20个SVM组成的权值矩阵4096X20相乘获得2000 X20维矩阵表示每个候选框是某个目标类别的得分。分别
对上述2000 X20维矩阵中每一列即每一类进行非极大值抑制
剔除重叠候选框,得到该列即该类中得分最高的一些候选框。
非极大值抑制剔除重叠候选框处理思想:寻找每一类中2000个候选框中得分最高的目标,然后计算其他目标与该目标的iou值,最后删除所有iou值大于给定阈值的目标。
IoU(Intersection over Union)指数
是在目标检测和语义分割等计算机视觉任务中常用的一种性能评估指标。它衡量了两个边界框(或区域)之间的重叠程度
,公式如下: I o U = A r e a o f I n t e r s e c t i o n A r e a o f U n i o n = A ∩ B A ∪ B IoU = \frac{{Area \ of \ Intersection}}{{Area \ of \ Union}} = \frac{{A \cap B}}{{A \cup B}} IoU=Area of UnionArea of Intersection=A∪BA∩B
其中,(A) 和 (B) 分别表示两个边界框(或区域),(A ∩ \cap ∩ B) 表示它们的交集区域的面积,(A ∪ \cup ∪ B) 表示它们的并集区域的面积。
IoU 的取值范围在 0 到 1 之间,越接近 1 表示两个边界框重叠程度越高,即检测结果与真实目标的匹配度越高;而越接近 0 则表示两个边界框几乎没有重叠,可能是两个完全不同的目标。
如上图,候选框A是向日葵类对应的所有候选框中概率最大的区域,候选框B是另一个区域,如果计算 A 和 B 的 IoU 结果大于阈值,可任务AB属于同一类别(向日葵),那么根据非极大值抑制的原则,应该保留 A,删除 B。这样可以确保最终的检测结果具有最高的置信度,并且不会出现冗余的重叠框。
4.使用回归器精细修正候选框位置
通过 Selective Search算法得到的候选区域位置不一定准确,因此用20个回归器对NMS处理后剩余的候选框进行回归操作,最终得到每个类别的修正后的bounding box。
如图,黄色框表示候选区域 Region Proposal
,绿色窗口表示实际区域Ground Truth
(人工标注的),红色窗口表示 Region Proposal
进行回归后的预测区域,可以用最小二乘法解决线性回归问题。
为什么在目标检测中会选择使用 SVM 分类器而不是 CNN 的 softmax 层进行分类?
-
训练数据的不同处理:在训练 CNN 提取特征时,通常会使用较低的 IoU 阈值(如 0.5),这样可以生成更多的正样本,即使是部分包含目标的 bounding box 也会被标记为正样本。而在训练 SVM 分类器时,对于正样本的要求更严格,通常需要较高的 IoU 阈值(如 0.7),确保 bounding box 完全包围了目标。
-
样本量和过拟合问题 :CNN 需要大量的数据来避免过拟合,因此允许包含部分目标的 bounding box 作为训练样本。然而,SVM 适用于少样本训练,因此需要更加严格的标准来选择正样本,这可能导致训练数据样本量不足,进而发生过拟合。
-
位置准确度和类别识别精度:使用低 IoU 进行 softmax 分类可能会导致最终的 bounding box 位置不准确,因为线性回归无法很好地拟合大偏差。同时,类别识别精度也可能下降,因为分类器对于部分包含目标的 bounding box 可能会产生错误的分类结果。
-
选择 SVM 完成分类:由于数据量不足和过拟合问题,最终选择使用 SVM 完成分类,而将 CNN 用于提取特征。这样可以确保分类器得到的训练数据更加精确,同时避免过拟合问题。
RCNN的缺点:
测试速度慢 测试一张图片约53(cpu)用选择性搜索算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。
训练速度慢 过程及其繁琐。
训练所需空间大 对于支持向量机和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘.对于非常深的网络,如VGG 16,从VOC 07训练集上的5k图像上提取的特征需要数百GB的存储空间。
三、Fast R-CNN
1.Fast R-CNN简介
在 R-CNN 中,每个预先提取的候选区域 都会被送入卷积神经网络(CNN)来提取特征。然而,可以通过一次将整个图像 送入 CNN 来减少重复计算。这种方法称为空间金字塔池化网络(Spatial Pyramid Pooling Network,SPP-Net)
。SPP-Net 解决了在使用卷积神经网络处理不同大小的候选区域和重复卷积计算两个问题。它的主要思想是在整张图像上计算一次全局特征图,然后只需要将候选区域在原图片的位置映射到 CNN 生成的特征图谱上。并提取出候选区域对应的特征图,这些不同大小的特征图在送入全连接层前需要变成统一大小的特征图。
SPP-Net 在全连接层之前,加入了一个空间金字塔池化层,这个新加入的金字塔池化层可以把不同尺寸的特征图矩阵池化成尺寸相同的特征图矩阵 。在使用了这种金字塔池化策略后,解决了全连接层对送入卷积神经网络的输入图像尺寸的限制问题,可以输入任意尺寸的图片,都会在全连接层之前得到固定长度的特征向量。
例如当输入图片尺寸是 224224 时, conv5 输出大小为 13 13256,对于 13 13 的特征矩阵,将它分别池化成 44、 22、 1*1 三张子特征矩阵,得到( 16+4+1) *256 维的特征向量。加入金字塔池化层的优点是克服了 R-CNN 算法中归一化步骤带来的缺点, 归一化会损失图像的部分信息,进而提取的特征质量比较差, 间接导致分类结果差。 这也解释了为什么 SPP-Net为什么检测精度优于 R-CNN。而 SPP-Net 检测过程只对整张大图提取了一次特征, R-CNN 则是在 2000 张候选区域图片上提取了 2000 次特征。这也解释了为什么 SPP-Net 速度优于 R-CNN。
如上图所示,Fast R-CNN算法流程可以分为3个步骤:
1.将一张图像生成1k~2k个候选区域(使用Selective Search),并将某个候选区域称为ROI区域。
2.将图像输入网络得到相应的特征图,将SS算法生成的候选框投影
到特征图上获得相应的特征矩阵
。在R-CNN依次将2000个候选框区域输入卷积神经网络得到特征,存在大量冗余,提取时间很长。Fast-RCNN将整张图像送入网络,一次性计算整张图像特征,这样就可以根据特征图的坐标获得想要的候选区域的特征图,不需要重复计算。
3.将每个特征矩阵通过ROI pooling 层
缩放到7×7大小的特征图,然后将特征图展平(reshape)为向量,通过一系列全连接层和 softmax得到预测结果。这里ROI 池化层是空间金字塔池化层的一种特殊情况,这些不同大小的候选区域特征 通过 ROI 池化层
映射为固定长度的特征向量 。最后这些特征向量经过全连接层得到 ROI 特征向量,这些ROI 特征向量被分别送入分类器
和回归器
进行分类
和回归
并输出最终检测结果。
Fast R-CNN将原本的R-CNN中的三个独立步骤(特征提取、边界框分类、边界框回归)融合到一个统一的卷积神经网络(CNN)中,从而实现了端到端的目标检测。
Fast R-CNN的工作流程是先通过选择性搜索(Selective Search)算法等方法生成候选框,这些候选框作为可能包含目标的区域。接着,整个图像与其对应的候选框一起输入到CNN中。CNN在前向传播过程中同时完成了特征提取、边界框分类和边界框回归三个任务。通过将这三个任务融合到同一个CNN中,Fast R-CNN大大提高了目标检测的效率和准确性,不再需要对每个候选框单独进行特征提取和分类,从而加快了检测速度。
2.softmax分类器
softmax 分类器的输出包含了 N+1
个类别的概率,其中第一个类别表示背景,而其余 N 个类别表示真实的目标类别。在 PASCAL VOC2012 数据集中,通常有 20 个目标分类,因此 softmax 分类器会输出 21 个类别的概率。这意味着 softmax 分类器的全连接层中会有 N+1 个节点,其中第一个节点对应于背景类别的概率,而剩余的 N 个节点分别对应于每个目标类别的概率。
3.边界框回归器(bbox regressor )
一幅图片最终会输出N+1个分类的候选框,每个候选框都有x、y、w、d四个参数,所以 bbox regressor 的FC中有 4(N+1) 个节点。
边界框参数回归的计算方法:
G x ^ = P w d x ( P ) + P x \hat{G_x} = P_w d_x(P)+P_x Gx^=Pwdx(P)+Px G y ^ = P h d y ( P ) + P y \hat{G_y} = P_h d_y(P)+P_y Gy^=Phdy(P)+Py G w ^ = P w e x p ( d w ( P ) ) \hat{G_w} = P_w exp(d_w(P)) Gw^=Pwexp(dw(P)) G h ^ = P h e x p ( d h ( P ) ) \hat{G_h} = P_h exp(d_h(P)) Gh^=Phexp(dh(P))
P x , P y , P w , P h P_x,P_y,P_w,P_h Px,Py,Pw,Ph分别为候选框的中心x,y坐标以及宽高, G x ^ , G y ^ , G w ^ , G h ^ \hat{G_x},\hat{G_y},\hat{G_w},\hat{G_h} Gx^,Gy^,Gw^,Gh^分别为最终预测的边界框的中心x,y坐标以及宽高。
4.多任务损失( Multi-task Loss)函数
Fast R-CNN 训练采用多任务损失( Multi-task Loss)函数
,训练过程生成的的 ROI(感兴趣区域)特征向量将被分别送入 Softmax 多任务分类器和 bbox regressor。Softmax 层输出的概率训练 p=(p0,p1,p2,...pk), pi 表示该候选区域为类别 i 的概率。 Fast R-CNN 算法多任务损失函数包括分类损失函数
和回归损失函数
,多任务损失函数定义见公式:
L ( p , u , u t , v ) = L c l s ( p , u ) + λ [ u ≫ 1 ] L l o c ( t u , v ) L(p,u,u^t,v) = L_cls(p,u) + \lambda [u\gg 1]L_{loc}(t^u,v) L(p,u,ut,v)=Lcls(p,u)+λ[u≫1]Lloc(tu,v)在其中 u 代表该候选框对应的真实框类别标签, t u t^u tu表示该候选框变换为真实框对应的变换参数向量, v 表示候选框回归层产生的变换参数向量, L c l s ( p , u ) L_{cls}(p,u) Lcls(p,u)表示判定类别的损失函数,其公式如下
L c l s ( p , u ) = − log p u L_{cls}(p,u)=-\log_{}{p_u} Lcls(p,u)=−logpu L l o c ( t u , v ) L_{loc}(t^u,v) Lloc(tu,v)表示候选框变换参数的损失函数,其公式如下:
L l o c ( t u , v ) = ∑ i ∈ ( x , y , w , h ) s m o o t h L 1 ( t i u − v i ) L_{loc}(t^u,v)=\sum_{i\in (x,y,w,h) }^{}smooth_{L_1}(t_i^u-v_i) Lloc(tu,v)=i∈(x,y,w,h)∑smoothL1(tiu−vi)
其中 s m o o t h L 1 ( ) smooth_{L_1}() smoothL1()函数定义如下:
s m o o t h L i = { 0.5 x 2 ; i f ∣ x ∣ < ∣ x ∣ − 0.5 ; o t h e r w i s e } smooth_{L_i}=\begin{Bmatrix} 0.5x^2 ; if\left | x \right | < \\ \left | x \right | -0.5 ;otherwise\end{Bmatrix} smoothLi={0.5x2;if∣x∣<∣x∣−0.5;otherwise}
四、Faster R-CNN
1.Faster R-CNN简介
由前面可以知道,Selective Search 算法是 Fast R-CNN 的一个性能瓶颈,该方法提取候选区域花费的时间过长,且无法与后面的训练过程合并起来。因此,考虑从提取候选区域入手改进,实现整个过程端到端的训练和检测会很有必要。针对这一问题, 在 Fast R-CNN 的基础上提出了一种当前通用的目标检测算法之一 Faster R-CNN。
Faster R-CNN 的检测流程如上图所示,Faster R-CNN 网络有两部分组成,第一部分是区域建议网络( Region Proposal Network, RPN)
,该网络是一个全卷积神经网络,用来生成候选区域
;第二部分是 Fast R-CNN 检测网络
,将第一部分 RPN(区域建议网络)生成的候选区域送入 Fast R-CNN 检测网络,对候选区域进行分类
和边界回归
。两个网络连接起来,成为一个统一的网络。其中,两个网络在训练时可以共享基础卷积特征,分别用于各自的任务。
Faster R-CNN算法流程:
(1)将图像输入CNN网络得到相应的特征图。
(2)使用RPN网络
生成候选框,将RPN生成的候选框投影
到特征图上获得ROI区域的特征矩阵
。
(3)将每个ROI区域的特征矩阵通过ROI pooling
层缩放到7×7大小的特征图,接着将特征图展平为vector,之后通过一系列全连接层得到预测结果。
Faster R-CNN 与 Fast R-CNN 相比,最大的改进就是在生成候选区域阶段弃用了 Selective Search 算法,启用了一种新的候选区域提取方式---使用 RPN(区域建议网络)提取候选区域。 Faster R-CNN 把提取候选区域的任务也交给了卷积神经网络, RPN 是一种全卷积神经网络,它负责生产高质量的待检测物体候选框。它与后面的检测网络即 Fast R-CNN 网络可以在训练时共享卷积特征
,节省计算资源,因此使得区域建议几乎不花时间。这也就时间上远远胜于 Selective Search。另外一点, Fast R-CNN 的 Selective Search 在 CPU 上实现, Fast R-CNN其余检测部分在 GPU 上进行, Fast R-CNN 不是绝对意义上的 end-to-end(端到端)。 Faster R-CNN 的 RPN 部分和剩余部分也就是检测网络 Fast R-CNN 都在GPU 上实现,其中 RPN 负责生成高质量的候选框,检测网络负责对这些候选区域二次筛选,减少假阳性。从输入图像到输出检测结果, Faster R-CNN 真正做到了绝对意义上的 end-to-end(端到端)。
2.RPN(区域建议网络)
基于 CNN(卷积神经网络)的目标检测方法一般都是候选区域生成和 CNN 分类的组合,生成候选区域的质量好坏直接影响着总体的检测精度。如果在一张图像上只生成数百个高质量的候选目标区域,并且召回率也很高。这样不都可以提升检测速度还可以提升精度。 区域建议网络( Region Proposal Network, RPN)
很好了解决了上面的问题。
RPN(区域建议网络)网络以原始图像所提取出的卷积特征图矩阵作为输入,输 出 一 系 列 的 矩 形 候 选 区 域 框 以 及 该 矩 形 候 选 区 域 是 否 为 目 标 的 分 数( objectness scores) ,RPN 网络的结构如下图所示。
图中的 conv feature map
是图像输入网络得到相应的特征图,通过sliding window
处理之后产生一个256d的一维向量。该向量通过两个全连接层,分别输出分类概率scores
和边界框回归参数coordinates
,其中k是指 k个 anchor boxes,2k个scores是每个 anchor box 分别为前景和背景的概率(注意这里只区分前景和背景,所有的类别都归为前景),4k个coordinates是因为每个anchor box 有四个参数。
RPN 网络在 Faster R-CNN 的共享卷积部分的最后一层输出的特征图上用3x3 的卷积核与该特征图进行卷积, 也就是用 3x3 的窗口在该层特征图矩阵上进行滑窗处理。那么这个 3x3 的区域卷积后得到一个 3 维矩阵。因为这个 3x3 的区域内,每个特征图得到一个一维向量,该层有 d 个特征通道, d 个特征图即可得到 d 维特征向量。
如果使用的特征提取网络是 ZF 网络,那么 ZF 最后一层卷积通道个数为 256 个。如果使用 VGG16 网络提取图像基础特征,那么其最后一层 conv5_3 的通道个数为 512 个。 这个输出的 d 维向量输出给两个同级的全连接的层------包围盒回归层( reg)和包围盒分类层( cls)。
3x3 滑窗中心点位置 ,对应预测输入图像 3 种尺度( 128,256,512)
, 3 种长宽比( 1:1,1:2,2:1)
的 region proposal(候选区域
),这种映射的机制称为anchor (锚)
,产生了 k=9 个锚框。即每个 3x3 区域可以产生 9 个候选区域。
假设原始图像的最后一层卷积层的特征图矩阵尺寸为 HxW,则在原始图像中一共有 HxWxk 个对应的锚框,也就是预测 HxWxk 个候选区域。 d 维特征向量后边接入到两个全连接层,即类别判定层
和回归层
分别用于分类和边框回归。类别判定层包含 2个元素, 用于判别目标和非目标的估计概率。 回归层包含 4 个坐标元素( x,y,w,h),用于确定目标位置。分类的正样本,与真实区域重叠大于 0.7,负样本,与真实区域重叠小于 0.3。最最后根据 region proposal(候选区域生成)得分高低,选取前 300 个 region proposal,将作为 Fast R-CNN 的输入进行目标检测。
3.RPN损失函数
RPN多任务损失函数如下所示:
L ( p i , t i ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L({p_i},{t_i}) = \frac{1}{N_{cls}} \sum_{i}^{} L_{cls}(p_i,p_i^*)+\lambda \frac{1}{N_{reg}}\sum_{i}^{}p_i^*L_{reg}(t_i,t_i^*) L(pi,ti)=Ncls1i∑Lcls(pi,pi∗)+λNreg1i∑pi∗Lreg(ti,ti∗)
i 是一个 mini-batch 中 anchor 的索引
p i p_i pi是第 i 个 anchor 中目标的预测概率,如果 anchor为正, GT (Ground Truth)标签 p 1 ∗ p_1^* p1∗为1,如果 anchor 为负, p 1 ∗ p_1^* p1∗是 0
t i t_i ti是一个向量,表示预测的包围盒的 4 个参数化坐标
t i ∗ t_i^* ti∗是与正 anchor对应的 GT 的包围盒的坐标向量
N c l s N_{cls} Ncls表示一个mini-batch中的所有样本数量256
N r e g N_{reg} Nreg表示anchor位置的个数(不是anchor个数)约2400
其中分类损失函数如下所示,是两个类别(目标与非目标背景)的对数损失:
L c l s ( p i , p i ∗ ) = − l o g [ p i ∗ p i + ( 1 − p i ∗ ) ( 1 − p i ) ] L_{cls}(p_i,p_i^*)=-log[p_i^*p_i+(1-p_i^*)(1-p_i)] Lcls(pi,pi∗)=−log[pi∗pi+(1−pi∗)(1−pi)]
回归损失公式如下公式:
L r e g ( t i , t i ∗ ) = ∑ i s m o o t h L 1 ( t i , t i ∗ ) L_{reg}(t_i,t_i^*)=\sum_{i}^{} smooth_{L_{1}}(t_i,t_i^*) Lreg(ti,ti∗)=i∑smoothL1(ti,ti∗)
三种网络框架比较如下:
优缺点对比:
结束语
感谢阅读吾之文章,今已至此次旅程之终站 🛬。
吾望斯文献能供尔以宝贵之信息与知识也 🎉。
学习者之途,若藏于天际之星辰🍥,吾等皆当努力熠熠生辉,持续前行。
然而,如若斯文献有益于尔,何不以三连为礼?点赞、留言、收藏 - 此等皆以证尔对作者之支持与鼓励也 💞。