R-CNN

R-CNN

R-CNN 的整个架构由四个模块组成:Selective Search,CNN,SVM,BoundingBox Regression

image-20220518212245590

1. Selective Search

该模块用于对原始图像 “建议出” 大约 2000 个可能为物体的候选框,具体怎么生成的可以不用关心,只需要知道其输出结果就是一个个候选框,这些候选框尺度不一。该模块的时间复杂度为 O(1)。

2. CNN

将SS模块输出的 2000个候选框 resize 成固定大小的正方形,可能会产生形变和边界填充,对每一个正方形图片,分别输入到一个 CNN 来提取特征。这一部分很慢,因为要运行2000次 CNN,此时的特征图并没共享。每一个候选区域通过该模块输出一个 (H,W,C)维 tensor。每一个候选区生成的这个 tensor 有两个作用,可以并行处理。一路对 tensor 处理后用于分类,一路处理后用于对候选框回归。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vARPTkv2-1652884649351)(C:\Users\11434\AppData\Roaming\Typora\typora-user-images\image-20220518214933150.png)]

3. SVMs

将 tensor 拉平成一维向量,分别输入到 SVMs 中进行二分类。SVM 的数量取决于物体类别数,有多少个类别,就要提前训练好多少个SVM用于对某一个类别进行二分类。举个例子:假设一共有 20 个类别,一个 tensor 拉直后是4096维向量,20个候选框就生成 (20, 4096) 的矩阵,每一个SVM就是 (4096, 1) ,每一个候选框都要和20个 SVM 运算,所以 SVMs 就是 (4096,20),相乘得到(20,20)矩阵,每一行的含义是该候选框对应于每个类别的分数。

image-20220518222035449

4. NMS

每一列中,挑选出与 ground truth IoU最大的候选框,设定一个阈值,如果其他候选框和该候选框 IoU 超过该阈值则过滤该候选框。在选出与 ground truth IoU 次大的候选框,重复操作。最后只留下了该类中的一些候选框。

4. Bounding-Box Regression

对 NMS 过滤后的剩下的候选框进行回归修正。

每一个候选框经过 CNN 提取出的特征图,经过处理后,输出四个值。先别管这四个值是什么,首先要明白,既然是预测值,那么我们要让他们去拟合哪些目标值呢?

image-20220518223121207

这 4 个 t 就是目标值,我们预测出的4个值就要往这4个t上面靠。

那么在,测试阶段,预测输出的4个值如何映射到真正的原始图像区域?

image-20220518223436895

20220518223436895" style=“zoom:80%;” />

这4个 d§ 就是上面预测输出的4个值。

你可能感兴趣的:(物体检测,cnn,深度学习,目标检测,计算机视觉,卷积神经网络)