R-CNN 阅读笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/programmingfool5/article/details/82633400

这里写图片描述

在阅读过程中,找了不少相关的资料来弄清楚比较细节的东西,其中hjimce的博客中,对于细节的理解要更全面一些,比如文中没有具体阐述的非极大值抑算法、对于fine-tuning 、训练CNN和SVM的时候标签的定义和设计的思考,非常欣慰的是在没有相关基础的前提下,我的理解跟这位大牛的理解基本一致。

在这里我不做具体的内容总结了,只希望记录下我认为比较重点和难理解的地方,值得以后参考大神的博客和论文回顾复习:

候选框:

  • 对于生成候选框的相关算法?(不是核心,但是值得去了解。)
  • 进入CNN之前,文章中用了哪些对于图片的处理方法,哪种效果最好?为什么?

CNN:

  • fine-tuning 与 迁移学习? 具体使用场景
  • fine-tuning 的CNN 具体的细节?对于fine-tuning训练过程和SVM训练过程,标签的定义有什么不同?
  • 文章中作者尝试了用softmax直接输出类别,而不用SVM,但是效果衰减很多,为什么?

Bounding-box Regression:

由Yann Lecun, Yoshua Bengio, Geoffery Hinto撰写的Deep Learning Review(发表在Nature)中提到了池化层能够reduce the dimensionality of the representation, create an invariance to small shifts and distortions.
池化层能够降低特征表示的维度这个很好理解,伴随来的副作用是局部特征信息的损失,想象如果池化层的filtering bank不是通常的2x2维的矩阵,而是更大维度的矩阵,用max pooling 或者average pooling,信息会损失更多,而且因为每层卷积后都跟着池化层,实际上是相当于在特征的每个提取阶段,从低级特征到中级特征再到高级特征,都有略微的信息损失,因为做了多层的pooling,而不是只做一次pooling,这也是设计上的一个trick啊.这是计算复杂度和性能的trade-off, 信息如果不损失,模型的性能当然会更好,最后得到的特征表示更全面,随着计算能力的提高,这一点也在逐渐得到缓和. 从另一个方面讲,可以再一定程度上抑制过拟合。(来源于SPP-NET的原话)
第二个作用是具有一定程度上的平移和失真不变性,注意原文是说small shifts and distortions,我把他翻译成一定程度,这个程度我认为取决于pooling层中的filtering bank的维度大小,维度越高,在保持性能相同的前提下,图像可平移的距离越大,当然这本身就和上面的信息损失相冲突.

当一个最大值在八个方向变化时,其中的三个在卷积核内的变化方向与原始的取得max是相同的

另外一些博文:【RCNN系列】【超详细解析】
比较好的综述:
1、RCNN,Fast RCNN,Faster RCNN 总结
2、重磅|基于深度学习的目标检测综述(一)

猜你喜欢

转载自blog.csdn.net/programmingfool5/article/details/82633400