caffe专题五——回归中——检测框架

一:Bounding-box regression回归

1.问题理解(为什么要做 Bounding-box regression? )如图 1 所示, 绿色的框为飞机的 Ground Truth, 红色的框是 Selective Search 提取的 Region Proposal。 那么即便红色的框被分类器识别为飞机,但是由于红色的框定位不准(IoU<0.5), 那么这张图相当于没有正确的检测出飞机。 如果我们能对红色的框进行微调, 使得经过微调后的窗口跟Ground Truth 更接近, 这样岂不是定位会更准确。 确实,Bounding-box regression 就是用来微调这个窗口的.


2.问题数学表达(回归/微调的对象是什么? )
对于窗口一般使用四维向量
( , , , ) x y w h 来表示, 分别表示窗口的中心点坐标和宽高。 对于图 2, 红色的框 P 代表原始的
Proposal,
绿色的框 G 代表目标的 Ground Truth, 我们的目标是
寻找一种关系使得输入原始的窗口 P 经过映射得到一个跟真实

窗口 G 更接近的回归窗口

3.问题解决方案(Bounding-box regression)


二:fast-rcnn

一篇不错的文章:https://blog.csdn.net/wonder233/article/details/53671018 对各阶段原理进行了详细的描述

这里再用另一篇文章的总结来强调一下: RCNN学习笔记(4):fast rcnn
1.用selective search在一张图片中生成约2000个object proposal,即感兴趣区域RoI。
2.把它们整体输入到全卷积的网络中,在最后一个卷积层上对每个ROI求映射关系,并用一个RoI pooling layer来统一到相同的大小-> (fc)feature vector ,即->提取一个固定维度的特征表示。
3.继续经过两个全连接层(FC)得到特征向量。特征向量经由各自的FC层,得到两个输出向量:
第一个是分类,使用softmax,第二个是每一类的bounding box回归。

另外还有一个关于测试过程的总结也写得不错: Fast R-CNN论文详解

  1. 任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;
  2. 在任意size图片上采用selective search算法提取约2k个建议框;
  3. 根据原图中建议框到特征图映射关系,在特征图中找到每个建议框对应的特征框【深度和特征图一致】,并在RoI池化层中将每个特征框池化到H×W【VGG-16网络是7×7】的size;
  4. 固定H×W【VGG-16网络是7×7】大小的特征框经过全连接层得到固定大小的特征向量;
  5. 第4步所得特征向量经由各自的全连接层【由SVD分解实现】,分别得到两个输出向量:一个是softmax的分类得分,一个是Bounding-box窗口回归;
  6. 利用窗口得分分别对每一类物体进行非极大值抑制剔除重叠建议框,最终得到每个类别中回归修正后的得分最高的窗口。

整体框架大致如上述所示了,对比SPP-Net,可以看出FRCN大致就是一个joint training版本的SPP-Net,改进如下:
  • SPP-Net在实现上无法同时tuning在SPP layer两边的卷积层和全连接层。
  • SPP-Net后面的需要将第二层FC的特征放到硬盘上训练SVM,之后再额外训练bbox regressor。

  在这里我们不关注实现的具体的细节,主要对一些重要性的原理进行一些概括总结:

  1:roi池话

 

区域建议窗口是在原图中得到的,只不过后续池话会导致窗口变小,然后根据这些小区域做分类和回归。


 2:总的loss



二:faster-rcnn

    这个网络与fast-rcnn网络的最大不同就是在区域的选择上,这个网络是在特征图上进行候选区域的选择。



    至于RPN怎么实现的倒是不需要关注!

    具体的实现细节可以参考:https://blog.csdn.net/Seven_year_Promise/article/details/60954553

    这篇文章的作者是动脑子思考的。




 可以看到这个网络结构瞬间增大了好多。


三:ssd&yolo







  特征到类别最后分类或者回归的实现是单独的层,在代码最后还是有体现的。











猜你喜欢

转载自blog.csdn.net/runner668/article/details/80436850
今日推荐