理解RCNN的思路整理(待补充代码)

  • RCNN中了解的概念
  • RCNN的最主要的核心思想
  • RCNN核心思路实现的难点
  • RCNN难点解决思路
  • 为了提高识别率,有哪些考虑
  • 完整的训练过程
  • 生成原始训练集
  • 特征提取
  • 训练模型
  • 完整的预测过程


RCNN中了解的概念

RCNN的最主要的核心思想

1、训练一个网络,输入一个最多仅含有一个主体的图片或图片碎片(包含大部分信息)后,可以自动预测出该图片中是否有主体,并且输出主体对象的中心位置与该图片中心的偏移量(经过归一化)。

动手实现Rcnn代码_线性回归

输入:红框内的图片

输出:绿框和红框的偏移量(经过归一化)和红框内主体对象的类别概率

2、当输入一个图片时,采用贪心算法,生产该图片中不同位置不同尺寸的图片碎片,投入RCNN的核心网络,获得该图片碎片所属的类型和主体位置的偏移量。

RCNN核心思路实现的难点

1、RCNN核心网络的结构是什么?
2、获得大量标识框样本的难度比较高。如何保证在比较少样本下,如何完成训练?
3、采用贪心算法去寻找一个图片中主体的位置,效率太低,基本在现实中办不到。如何解决这个问题?

RCNN难点解决思路

1、RCNN核心网络的结构是什么?

RCNN的核心网络有20个SVM模型和20个线性回归模型组成。 20个SVM模型主要是根据输入的图片去预测所属类别的概率。 20个线性回归模型主要是根据输入的图片去预测主体位置的偏移量。

2、获得大量标识框样本的难度比较高。如何保证在比较少样本下,如何完成训练?
根据有限的标识框的样本,去生成大量尺寸的样本去训练SVM模型和线性回归模型。同时SVM模型和线性回归模型本身也适合小样本的建模。

3、采用贪心算法去寻找一个图片中主体的位置,效率太低,基本在现实中办不到。如何解决这个问题?
根据颜色、纹理等连通性,从1个图片中挑选出2000个候选图片,进行预测。而不是完全进行枚举操作,以大大降低判断的计算量。

为了提高识别率,有哪些考虑

为了提高识别率,RCNN做了以下的考虑:
训练SVM和线性回归模型时,输入值不是图片的原始内容,而是专门训练了一个CNN网络,去提取图片特征。

完整的训练过程

生成原始训练集

使用选择性搜索方法,为每个图片生成2000个碎片化图片。并且准备好这些碎片化图片的类型和主体的偏移量。

特征提取

使用所有的碎片化图片训练出一个CNN网络。并将其中一层的输出,作为该图片的特征。

训练模型

将所有的碎片化图片的CNN特征,和对应的类型和主体的偏移量,作为训练样本去完成对20个SVM和20个线性回归器的训练。

完整的预测过程

1、使用选择性搜索方法,获得2000个碎片化图片
2、使用训练好的CNN模型,获得2000个碎片化图片对应的特征
3、使用训练好的SVM获得2000个碎片化图片的类型,并使用NMS(Non-Maximum Suppression 非极大值抑制)的方法,去掉那些重复的主体对象的碎片化图片
4、将第3步剩下的碎片化图片的特征输入对应本类型的线性回归器,预测出主体的位置。

(完)