目录
3.3 bounding box regression框回归
个人笔记
一、 R-CNN
用CNN提取出Region Proposals
中的featues
,然后进行SVM分类与bbox的回归。
参考博文
R-CNNhttps://blog.youkuaiyun.com/weixin_43702653/article/details/123973629?spm=1001.2014.3001.5501
1. R-CNN流程(4个步骤 )
- 一张图像生成1K~2K个候选区域(使用Selective Search方法)
- 对每个候选区域,使用深度网络提取特征
- 特征送入每一类的SVM 分类器,判别是否属于该类
- 使用回归器精细修正候选框位置
2. RP的确定
区域候选框Region Proposal(RP)--------------使用Selective Search
算法确定,如下:
- 使用一种过分割手段,将图像分割成小区域 (1k~2k 个)
- 计算所有邻近区域之间的相似性,包括颜色、纹理、尺度等
- 将相似度比较高的区域合并到一起
- 计算合并区域和临近区域的相似度
重复3、4过程,直到整个图片变成一个区域
在每次迭代中,形成更大的区域并将其添加到区域候选框中;
自下而上的方式可以创建从小到大的不同scale的Region Proposal
3. 预训练模型+微调(backbone)
模型需要通过CNN提取出RP中的特征,用于后面的分类与回归。
- RP大小都不相同,所以需要对RP进行resize操作,变形为backbone要求的输入大小
- 变形之前,先在候选框周围加上16的padding,再进行各向异性缩放====不保持横纵比。
- 模型微调fine-tuning。将预训练模型最后的1000分类层,换成21分类层(20类物体+背景)
正负样本:
计算每个RP和GT的IoU,对于IoU>0.5的RP视为正样本,否则为负样本(即背景)
每个mini-batch随机选取32个正样本和96个负样本组成(128,正负比:1:3)
4. SVM的分类
分类之前的网络都是特征提取部分;eg: 2000个框-----------》(2000,4096)
特征提取冻结参数,开始分类 (2000,4096)-----------》(2000,21)20类物体+背景
过程如下:
SVM分类中,IOU<0.3负例,IOU>0.7正例,其余的全部丢弃;
负样本远远远多于正样本,使用hard negative mining方法(如下):
初始时用所有样本训练,经过一轮训练后将score最高即最容易被误判为正样本 的负样本加入新的样本训练集,进行训练,重复以上步骤至达到停止条件。比如分类器性能不再提升
为何hard negative mining?
正样本数目占的比例特别低,负样本太多,直接导致优化过程很慢,
很多负样本远离分界面对于优化几乎没有帮助;选取容易被误判为正样本的 负样本继续训练
5. bbox regression的训练
与GT的IOU>0.6的RP作为正样本,做回归训练.
在目标检测中,窗口一般用四维向量(x, y, w, h)来表示,分别表示窗口的中心点坐标和宽高。在下图中,窗口 P为region proposal,窗口 G为ground truth,那bounding box regression的目标呢就是:找到一种映射关系,使得 P 经过映射后会得到一个和G 比较接近的G′
6. NMS
Non-maximum suppression,即非极大值抑制。对于同一个物体,会预测出多个bounding box,NMS所做的就是去除掉多余的bounding box,只保留和ground truth重叠度最高的bounding box