RCNN 学习

2023-12-13 04:28:28

RCNN算法流程

RCNN算法流程可分为4个步骤

  • 一张图像生成1K~2K个候选区域(使用Selective Search方法)
  • 对每个候选区域,使用深度网络图特征
  • 特征送入每一类的SVM分类器,判别是否属于该类
  • 使用回归期器细修正候选框位置

?1.候选区域的生成

????????利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

2.对每个候选区域,使用深度网络提取特征

????????将2000候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000X4096维矩阵。

?3.特征送入每一类的SVM分类器,判定类别

????????将2000X4096维特征与20个SVM组成的权值矩阵4096X20相乘获得2000X20维矩阵表示每个建议框是某个目标类别的得分(建议框归属于每一个类别的概率)。分别对上述2000X20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

???????将2000X4096的特征矩阵与20个SVM组成的权值矩阵4096X20相乘,获得2000X20的概率矩阵,每一行代表一个建议框归于每个目标类别的概率。分别对上述2000X20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。

?最左边是2000×4096的一个特征矩阵,在特征矩阵中,每一行就是我们一个候选框通过CNN网络得到的一个特征向量,然后它有2000个候选框,所以它有2000行特征向量。

中间的图是SVM权值矩阵,每一列对应着一个类别的的权值向量,一共有20个类别,拼接在一起就是4096×20的权值矩阵。(假设SVM分类器的第一列使我们所需要检测的猫,第二列是我们所需检测的狗......)

非最大抑制:抑制不是最大值的元素

4.使用回归器精细修正候选框位置
????????对NMS处理后剩余的建议框进一步筛选。接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。
????????如图,黄色框口P表示建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗G表示Region Proposal进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。

R-CNN框架

?R-CNN存在的问题

1.测试速度慢:

????????测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。

2.训练速度慢:

????????过程及其繁琐

3.训练所需空间大:
????????对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOCO7训练集上的5k图像上提取的特征需要数百GB的存储空间

文章来源:https://blog.csdn.net/llf000000/article/details/134905907
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。