前沿知识了解【5】https://www.cnblogs.com/skyfsm/p/6806246.html
做图像识别,我们很简单的一个想法就是,拿一个大小不同的矩形框,在图像上不同的滑动。在理论上,我们总会找到一个大小适合的矩形框恰好标记了这个物体。但这种做法,消耗的时间和计算量都非常的大。后来就有人提出,我们先对图像提取出可能存在物体的候选框(Selective Search),然后对这些候选框进行识别(即CNN操作)。
Selective Search:
简单的方法,根据颜色,纹理之类的信息去把图片划分成不同区域,哪怕是精度不高也可以相对于穷举搜索大量减少计算量。就是这么简单的搜索剪枝思路,几乎成为了当前深度学习物体识别领域的基本原则之一了。
作者的实现,首先通过简单的区域划分算法,将图片划分成很多小区域,再通过相似度和区域大小(小的区域先聚合,这样是防止大的区域不断的聚合小区域,导致层次关系不完全)不断的聚合相邻小区域,类似于聚类的思路。这样就能解决object层次问题,实际上也是非常成熟的技术。
其次,作者为了保证能够划分的完全,对于相似度,作者提出了可以多样化的思路,不但使用多样的颜色空间(RGB,Lab,HSV等等),还有很多不同的相似度计算方法。
训练模型方式
一般来说是通过 Fine-Tuning 的方式来训练网络(类似迁移学习),首先使用 ImageNet 的数据集去训练网络(如:AlexNet, VGG)等。这种训练的方式,目的在于给 Fine-Tuning 时候留一个好的初始化的参数值(W,b)。对数据开始做proposal 的操作,一般一张图片可以生成1000~2000个候选框,将这些候选框与原始框进行IOU处理,将小于0.5的框舍弃。剩下的框对原始的网络进行 fine-tuning 的学习。之后去掉,网络结构中的softmax层,我们只需要利用网络来进行特征的提取。其中, f6 或 f7 层的提取出来的语义特征来进行 SVM 的操作,在 SVM 分类时,我们需要将 IOU 处理时候的阈值提高(即选择 0.3)这样,使得 SVM的分类时的数据更加精细,来训练SVM。其中,pool 5 层出来的抽象图像信息来进行线性回归的训练操作(详细可以参考博客【2】【3】)。
训练过程图解
- 使用 Selective Search 寻找出多个候选框:
- CNN 的训练模式
前面选出的候选框中,将IOU > 0.5 【可选择】,设定为正样本, 其余为负样本:
- 通过CNN网络筛选出特征,训练SVM
整理对于候选框要进行新一轮的筛选,来进行SVM的训练
- 回归器的训练:
P.S: 因为 NMS 步骤不需要训练,这里就没有列举出该步骤。
RCNN 的缺点
(1)首先RCNN的训练方式,如前面所写,是多级流水线的方式,它是逐步叠加的,这就造成了在训练阶段的开销过大。
(2)RCNN在做测试的时候,它需要先获取每个候选框,然后对每个候选框都在网络中做一次正向传播来做一次进行特征提取。这就导致了一张图的某些区域需要被计算多次,导致计算量过大。
参考博客:
【1】https://www.cnblogs.com/skyfsm/p/6806246.html
【2】https://blog.csdn.net/bixiwen_liu/article/details/53840913
【3】https://blog.csdn.net/abc15766228491/article/details/82320111
【4】https://blog.csdn.net/qq_28132591/article/details/73549560?utm_source=copy
【5】https://www.cnblogs.com/skyfsm/p/6806246.html
【6】https://blog.csdn.net/zijin0802034/article/details/77685438
【7】https://zhuanlan.zhihu.com/p/23006190
网友评论