faster_rcnn的理解

本文详细解读了FasterR-CNN模型的组成部分,包括transform、RPN模块(包括RPNHead、Anchor生成器等)、ROIHeads中的正采样过程以及损失模块。着重介绍了RPN如何生成候选框和进行正负样本筛选,以及ROIHeads如何与GT进行匹配和计算损失。
摘要由CSDN通过智能技术生成

#参考太阳花的小绿豆

1.model总体部分

model即FasterRCNN,其中FasterRCNN主要由transform,resnet50_fpn_backbone(backbone),rpn和roi_heads组成。

transform是将图片进行预处理以及后处理

rpn

roi_heads由transform(采样proposals)box_roi_pool(将rpn映射成相同大小的特征向量),box_head(两层全连接层),box_predictor(预测类别和回归参数层)组成

代码中FasterRCNN继承了FasterRCNNBase,FasterRCNN将backbone, rpn, roi_heads, transform放入FasterRCNNBase,最终由FasterRCNNBase进行forward。

特别模块(训练阶段):
1.rpn模块

rpn由RPNHead,AnchorsGenerator,concat_box_prediction_layers,filter_proposals,assign_targets_to_anchors,encode,compute_loss等组成

RPNHead:如图所示,由cls_logits(仅预测是哪种anchor的可能性更大,所以只有3个),box_pred分别预测分数和回归参数

AnchorsGenerator:根据特征图在原图位置上生成锚框模板

rpn的anchor,预测的参数和gtbox相当于后续的roihead中的proposal,预测的参数和gtbox,rpn的proposal只是将anchor和预测参数结合起来的

concat_box_prediction_layers:将objectness和pred_bbox_deltas打包成b个数1和b个数4

filter_proposals:筛除prososals的小boxes框,nms处理,根据预测概率(cls_logits)获取前post_nms_top_n个目标

decode:将预测的回归参数与生成的anchor进行结合得到最终的proposals,注意预测公式的变换比如xyxy到xywh

_get_top_n_idx:将cls_logits前多少的proposal取出

assign_targets_to_anchors:计算每个anchors最匹配的gt,并将anchors进行分类,前景,背景以及废弃的anchors

encode:结合anchors以及对应的gt,计算regression参数

compute_loss:将

有待完善

2.roihead中的正采样模块(select_training_samples)

首先进行预处理(将targets模块的类别与位置读出并存储),用add_gt_proposals函数将proposals对应的目标也纳入proposals,后assign_targets_to_proposals函数将proposals匹配对应的gtbox

assign_targets_to_proposals:将每张图片的proposals与gtbox做iou,生成gtbox * proposals的矩阵,然后选出每个proposals的iou最大的gtbox,形成proposals * 1矩阵,并将负样本置为0

并用subsample划分正负样本

subsample:将proposals采样一部分样本

接着获取经过采样后的proposals对应的gtbox的边界框和标签,以及计算这时候的proposals与gtbox的边界框的差值(边框回归参数),以便于后续将这个差值与box_pred的进行损失计算

题外话:yolov5是在每个特征层上的像素点生成锚框,然后正采样是根据gtbox的大小选出anchor模板,再根据自己和自己上方和左方的三个grid_cell得到相应的正样本

fcos与yolov5有异曲同工之妙,也是在像素点上预测4个位置,经过正采样后计算损失

3.损失模块

note:box_pred是n * c * 4(对每个类别进行预测回归参数),而不是n * 4,因此计算loss时需要取出proposal对应的类别的回归参数。计算类别损失是将正负样本都计算进去,而计算回归参数的损失则只使用了正样本。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值