R-CNN,SPP-NET,Fast-RCNN,Faster-RCNN总结

一、R-CNN=>目标检测(区域卷积神经网络)

    1、可以将卷积神经网络应用region proposal的策略。自底向上训练可以用来定位目标物和图像分割。

    2、当标注数据是比较稀疏的时候,在有监督的数据集上训练之后到特定任务的数据集上fine-tuning可以得到较好的新能。

    3、region proposal:是一类传统的区域提取方法,看作不同宽高的滑动窗口,通过窗口滑动获得潜在的目标图像。此步骤为候选区域选择,根据proposal提取的目标图像进行归一化,作为CNN的标准输入。

    4、CNN classifier:特征提取,标准的CNN过程,根据输入进行卷积/池化等操作,得到固定维度的输出。

    5、分类与边界回归:1)对上一步的输出向量进行分类(SVM)

                                       2)通过边界回归(bounding-box)得到精确的目标区域,由于实际目标会产生多个,旨在对完成分类的前景目标进行精确的定位与合并,避免多个检出。

    6、R-CNN存在问题:

    1)多个候选区域对应的图像需要预先提取,占用较大的磁盘空间。

    2)针对传统的CNN需要固定尺寸的输入图像,crop/warp(归一化)产生物体截断或拉伸,会导致输入CNN的信息丢失。

    3)每一个proposal region都需要进入CNN网络计算,上千个region存在大量的范围重叠,重复的特征提取带来巨大的计算浪费。

二、SPP-NET

    1、改进:1)取消了crop/warp图像归一化过程,解决了图像变形导致的信息丢失以及存储问题。

                     2)采取空间金字塔池化(SPP),替换了全连接层之前最后一个池化层(可伸缩)。

    其中SPP放在所有卷积层之后,有效解决了卷积层的重复计算问题。

    2、训练过程:提取候选框-->计算CNN特征-->SVM分类-->bounding box回归

    3、存在问题:1)和RCNN一样,训练过程仍然是隔离的,大量的中间结果需要转存,无法整体训练参数。

                            2)在无法同时tuning,在SPP-Layer两边卷积层和全连接层,很大程度上限制了深度CNN的效果。

                            3)在整个过程中,proposal region仍然很耗时。

三、Fast-RCNN

    1、改进:1)借鉴SPP思路,提出简化版的ROI池化层,同时加入了候选框映射功能,使得网络能够反向传播,解决了SPP的整体网络训练问题。

                     2)多任务Loss层:(1)SoftmaxLoss代替了SVM,证明了Softmax比SVM有更好的效果。

                                                     (2)SmoothL1Loss取代Bounding box回归。

                          将分类和边框回归进行合并,通过多任务loss层进一步整合深度网络,统一训练过程,从而提高了算法准确度。

                      3)全连接层通过SVD加速。

                      4)模型训练时可对所有层进行更新,除了速度提升外,得到了更好的检测效果。

    Fast-RCNN包含特征提取器、分类器和边界框回归器在内的整个网络能通过多任务损失函数进行端到端的训练,这种多任务损失即结合了分类损失和定位损失的方法,大大提升了模型准确度。

    1、特征提取阶段:通过CNN中的conv、pooling、relu等操作都不需要固定大小尺寸的输入,因此,在原始图片上执行这些操作后,输入图片尺寸不同将会导致得到的feature map尺寸也不同,这样就不能直接接到一个全连接层进行分类。ROI Pooling网络层可以把不同大小的输入映射到一个固定尺度的特征向量,他将每个候选区域均匀分成M*N块,对每块进行max pooling,将特征图上大小不一的候选区域转变为大小统一的数据,送到下一层softmax进行类型识别。

    2、在分类回归那阶段:在R-CNN中,先生成候选框,然后再通过CNN提取特征之后再用SVM分类,最后再做回归得到具体位置,而在Fast-RCNN中,作者把最后的bbox regression也放入了神经网络内部,与区域分类合并成为了一个multi-task模型。

四、Faster-RCNN=>区域生成网络(RPN)+Fast-RCNN

    RPN工作步骤:

    1)在feature map上滑动窗口。

    2)建一个神经网络用于物体分类+框位置的回归。

    3)滑动窗口的位置提供了物体的大体位置信息。

    4)框的回归提供了框更精确的位置。

    训练过程中,选取候选框依据:1)丢弃跨越边界的anchor。

                                                       2)与样本重叠区域大于0.7的anchor标记为前景,重叠区域小于0.3的标定为背景。

    交替训练:1)根据现有网络初始化权值w,训练RPN。

                       2)用RPN提取训练集上的候选区域,用候选区域训练Fast-RCNN更新权值w。

                       3)重复1),2)直到收敛。

五、总结

    1、R-CNN:1)在图像中确定约1000-2000个候选框(选择性搜索)。

                         2)每个候选框内图像块缩放至相同大小,并输入到CNN内进行特征提取。

                         3)对候选框中提取出的特征,使用分类器判别是否属于一个特定类。

                         4)对于属于某一特征的候选框,用回归器进一步调整其位置。

    2、Fast-RCNN:1)在图像中确定约1000-2000个候选框(选择性搜索)。

                                2)对整张图片输进CNN,得到feature map。

                                3)找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。

                                4)对于属于某一特征的候选框,用回归器进一步调整其位置。

    3、Faster-RCNN:1)对整张图片输入CNN,得到feature map。

                                   2)卷积特征输入到RPN,得到候选框的特征信息。

                                   3)对候选框中提取出的特征,使用分类器判别是否属于一个特定类。

                                   4)对于属于某一的特征框,用回归器进一步调整其位置。

参考博客:https://baijiahao.baidu.com/s?id=1598999301741831102&wfr=spider&for=pc

                  https://blog.csdn.net/xyfengbo/article/details/70227173

                 (ps:参考链接可能没有给全)

猜你喜欢

转载自blog.csdn.net/zxyjune/article/details/84976531
今日推荐