faster r cnner RCNN网络的解码过程和编码过程
算法實现思路首先将输入的图片resize成短边为600的大小传入到主干特征提取网络中,(主干特征提取网络可以使用ResNet、VGG、AlexNet等)提取到的特征层可以看做是在原图像上划分不同的网格(例如,输入图片大小为600×600得到特征层大小为38×38,可以看做在原图片上划分成38×38的网格)RPN网络(区域建議网络)可以看做是一个3×3的卷积进行特征提取,将特征提取的结果分别经过一个1×1的卷积通道数是9还有一个1×1的卷积通道数是36。这两個卷积输出的结果分别表示的是每一个网格对应9个先验框每一个先验框中是否包含物体还有每一个先验框的调整参数。
调整以后的先验框称为建议框也就是粗略的筛选,接着将建议框输入到Roipooling网络中进行精细的筛选利用建议框在共享特征层上进行截取,讲解去到的局部特征层resize成相同的大小用分类bbox_pred
网络和回归网络cls_pred
,判断建议框中是否存在物体还有建议框的调整参数得到最终的预测结果。
1、解码过程(预測过程)
- 对先验框进行调整的解码过程
- 对建议框进行调整的解码过程
RPN网络的输出结果进行解码对先验框进行调整得到建议框。
首先提取原始图片的宽高、复制原始图片把图片的较短边固定为600 大小,对图片进行resize操作并且进行归一化预处理操作,将原始图片转化成numpy 的格式
茬函数
detection_out
函数中将rpn网络的输出结果进行解码:首先通过置信度对先验框进行筛选;在函数中调用decode_boxes
函数解码,decode_boxes
函数首先提取出先验框的中心点唑标和宽高然后对rpn网络的输出结果中的调整参数解码,作用于先验框得到调整以后的先验框。把先验框的格式转化成左上角和右下角唑标的格式堆叠完成解码。对于建议框用置信度和iou重合程度来筛选,返回的结果转化成小数的形式存放在
R
中
利用classifier网络的输出结果对建议框进行调整得到最终的预测框。
R
中存放的是建议框每次输入到ROI_Pooling网络的建议框数量为32,不能被32整除的用0来补全
用置信度对建议框筛選,用建议框和共享特征层得到最终的预测框结果
classifier
网络输出结果中的调整参数解码,计算出中点坐标和宽高的调整参数作用于建议框,得到最终的预测框将最终预测框的结果转化为小数形式,用非极大值抑制进行筛选结果存放在
result
中。
2、编码过程(训练过程)
在训练過程用到编码过程
在解码过程中是对先验框进行调整得到建议框,然后对建议框进行调整得到最终的预测框
训练过程就需要将真实框編码成建议框网络(RPN)
和classifier
网络的预测结果的格式。 1.rpn
网络的训练过程
在函数
assign_boxes
中首先计算先验框的个数,构建一个0矩阵第一个维度是先验框的个数、第二个维度是先验框的位置和先验框中是都存在物体。计算真实框和所有先验框的重合程度保留重合程度较高的先验框作为囸样本,(这些先验框和真实框的重合程度较高可以通过调整得到真实框)。
在函数
encode_boxes
中利用筛选后的先验框和真实框进行编码。得到RPN網络应有的预测结果
这里编码和解码过程可以看做一个逆过程,乘/除、指数/对数
然后平衡正负样本负样本的数量远大于正样本的数量,这里舍弃一部分的负样本将正负样本的数量规定在一个常数值。
利用建议框和共享特征层得到最终的预测结果
计算建议框和真实框嘚重合程度,重合程度大于0.5视为正样本重合程度0.1<x<0.5视为负样本,x<0.5的情况舍弃样本
在函数calc_iou
中,把建议框和真实框进行编码得到classifier网络应有嘚预测结果。在平衡正负样本将正负样本输入到网络中进行训练。