目标检测基本网络
RCNN
SS:Selective Search 一种提取候选区域的方法。
一张图片通过SS产生1000到2000个候选区域,然后将每个候选区域(Region Proposal)缩放到同一尺寸,输入到CNN网络,然后使用提取的图像特征训练SVM和Bounding Box。
- 训练过程
- 预训练CNN:
正样本:Region Proposals 与 GT IOU大于0.5 20个类。
负样本:Region Proposals 与 GT IOU小于0.2 1个背景类。
CNN+Softmax 21 分类,进行预训练,然后去掉Softmax层,使用前面层提取特征。 - 训练SVM:
举例1个SVM进行训练。
正样本:GT区域提取的特征。
负样本:与GT IOU小于0.3提取的特征。
二分类进行训练。 - Bounding Box训练:
某一个类的回归训练。
用IOU大于0.6的候选区域提取的特征,对4个边界框偏移量进行回归。 - 测试过程
- SS选择1000到2000个Region Proposals。
- 尺寸统一到同样大小(后面有全连接层)。
- 利用CNN提取特征。
- 某一个Region Proposal提取的特征输入到20个SVM,哪个分类器的分数高,用来确定类别。
- 计算好所有Region Proposals的label后,使用NMS操作,获得没有冗余的子集。
- 将剩下区域的特征输入到Bounding Box模型。
- 根据SVM打标签,BB画框。
SPPNet
![](https://i-blog.csdnimg.cn/blog_migrate/871cc8805efa7069fc7ee6bf4a591d1a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/fcb3634789c257631f464a5063590a57.png)
- 共享卷积计算。
- RCNN将SS检测的区域裁剪成固定的大小输入网络,会有重复的卷积计算。
- SPPNet先共享卷积,然后在特征图上裁剪。
- 空间金字塔池化
- 原图上的区域映射到特征图上后,大小可能不一样,因此SPP将输入特征分成16份、4份、1份,最终拼接在一起输入全连接层。
Fast RCNN
![](https://i-blog.csdnimg.cn/blog_migrate/b1c1091d1305c778f8a588b6e5e0f7f6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/375ee7675bfebca129081c07e25f591c.png)
- 多任务损失函数
- 使用softmax代替SVM。
- 分类和回归一起计算损失。
- 提出了ROI Pooling Layer
- SPP相当于一种多尺度Pooling,ROIPooling是单一尺度。
Faster RCNN
整体流程
训练RPN
正样本:与GT IOU大于0.7
负样本:与GT IOU小于0.3
损失函数:
训练Fast RCNN
- RPN产生将近20000(40x60x9x)个anchors。
- 按照每个框的positive score从大到小排序,选择前eg 6000个。
- 限定超出图像边界的positive anchors。
- 删除较小的positive anchors。
- 对剩下的anchors进行NMS操作,产生将近2000个ROIs。
正样本:ROIs与GT IOU大于0.5。
负样本:与GT IOU 等于0。
损失函数和RPN损失一样,分类损失从2分类变成21分类。
Faster RCNN讲的很仔细的文章:一文读懂Faster RCNN.