前言
RCNN是目标检测的经典论文,后面有许多算法也是借鉴里面的思想,所以有必要好好研究一下。
R-CNN
论文 用CNN提取出Region Proposals中的featues,然后进行SVM分类与bbox的回归。
模型设计
确定候选框(RP)
Region proposals. A variety of recent papers offer methods for generating category-independent region proposals.
Examples include: objectness [1], selective search [39], category-independent object proposals [14], constrained parametric min-cuts (CPMC) [5], multi-scale combinatorial grouping [3], and Cires¸an et al. [6], who detect mitotic cells by applying a CNN to regularly-spaced square crops, which are a special case of region proposals. While R-CNN is agnostic to the particular region proposal method, we use selective search to enable a controlled comparison with prior detection work (e.g., [39, 41]).
论文中使用selective search方法确定候选区域。
通过selective search(SS)算法生成1k-2k个候选框。
使用opencv模拟了一把
im = cv2.imread("./test.jpg")
ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()
ss.setBaseImage(im)
ss.switchToSelectiveSearchQuality()
rects = ss.process()
提取特征(ALexNet)
使用CNN进行特征提取
产生的候选框强制缩放成227*227,并同ALexNet模型进行特征提取,提取成一个4096的特征向量,并用SVM分类器进行分类。
分类(SVM)
使用SVM进行目标分类,并进行打分,就是相似度。
假如有2000个候选框提取的4096特征向量,和svm的权重矩阵相乘,要对其打分分类:
为了减少计算量,得到分数后,就是使用nms算法,剔除不合格的候选框
大致的过程是:
- 获取iou大于某个值的重叠区域
- 在这些区域中,只要分数最高的区域,其他的全部删除
通过这样的过程,可以淘汰不少候选框,减少后回归的计算压力。
回归(Bounding-Box regression)
大致过程:进行校验回归,修正目标框
引入数量N的训练对
P代表预测框,G代表真实框
目标是训练一种”转换“,这样”转换“是将预测框P映射到真实框G
所有有公式:
先做平移
再做尺度缩放