在选定好backbone后,通过backbone提取特征图设为F1
特征图F1进入RPN网络,先通过anchor算法在特征图F1上生成wxhx9个boundingboxes,这么多的边界框,然后用256个3x3的卷积核做第一层卷积,然后用2个1x1的卷积核做第二层卷积,作为分类,4个1x1的卷积核做第二层卷积作为位置回归。这里就生成了区域提议框和标签。
在分类算法中,卷积提取特征图后,输入到全连接层进行分类,可以分出1000个类别,其实这个工作是在训练好了提取特征的卷积神经网络和分类的全连接网络,全连接网络只是把这些特征图进行分类。
faster-rcnn就是先对整个图片用卷积神经网络提取特征,提取到的特征图其实在这时候已经可以用于分类了,但是我们要做目标检测,就引入了rpn,区域提议网络,把这些特征图利用anchor算法画出wxhx9个boundingbox边界框,对这些边界框做一次分类回归和位置回归,这个只是对特征图进行简单的二分类,个人感觉锚框算法也是随机生成框,反正个人理解不了锚框的依据,如果有依据的话我估计也是实验依据,这样就输出了结果了,结果就是某一个锚框的位置和这个锚框的类别和置信度,其实在生成锚框的时候就有了锚框的位置,回归的目的是微调锚框的位置,类别就是一个background和front,而这里要训练这个rpn网络就需要计算损失值,这里的损失函数设计出来就是和groundtruth来做iou计算处理,来构建损失函数,最后训练好网络,最后对提议好的bbox进行roi pooling,输入到最后的分类网络,对框进行预测,在映射到原图中的位置和大小
关于论文中的k值
anchor:虽然在每一个像素点生成了9个锚框,这里就是k=9,其实是对于一个像素点来说的,但是对于提取出来的整个特征图来说,特征图的size是wxh,那么这个特征图对应的k值就是wxhx9
也就是这张图片上面的k值,k=wxhx9,一张图片提议出来了k个roi区域,然后进行筛选