前言
由于要做小目标检测的问题,所以首先要对目标检测的一些经典方法做一些了解,今天先来写一下经典的faster rcnn目标检测方法。
正文
由于不是最新的工作,关于faster rcnn,网上已经有很多前辈做了非常清晰的解释,所以这篇博客不再赘述,先贴几个我认为写的比较清楚的博客。
Faster-rcnn详解、一文读懂Faster RCNN这两篇博客基本把faster rcnn涉及到的方法都讲到了,本文主要记录一下本人学习过程中遇到的一些容易迷惑的地方。
- faster rcnn可以看成是RPN+fast rcnn.
- faster rcnn在训练时不是end-to-end,而是分两步,先训练RPN,再训练fast rcnn. RPN部分要输出一些proposal,这里的proposal是物体的位置和前景背景信息,然后经过ROI Polling 把一个图片中的所有物体“提出来”,送到后面检测网络中进行分类和框回归,分类输出的是目标类别,回归输出的是框相对于proposal的偏移量。
- RPN中也有分类和框回归的部分,不过这里的分类指的是分别开前景和背景,是一个二分类问题,回归是为了粗略提取物体位置。
- RPN网络输入是feature map,大小是16x16x256(不同backbone可能大小不一样),所以feature map的每个点是256d的向量。然后在feature map的每一个位置都有9个不同大小的anchor(anchor在程序中就是四个数,表示框的位置)(程序中可能是把这些anchor保存在文件中,作为训练RPN的标签),用feature map 分类和回归,把feature map中的256d的向量变成2k个分类得分和4k个anchor(k=9)。