maskrcnn_benchmark 代码详解之 rpn.py

前言:

  RPN的主要功能是生成候选边框,并根据loss来进行优化。生成候选边框(proposals)主要是根据生成的锚点(anchors)加上与基准边框(ground truth box)之间的偏差。因此RPN的主要功能是选择靠谱的锚点(anchors),这就需要一个特征图来描述每个锚点的贡献值,1为百分百为含有目标的锚点,0为背景,这就是cls_logits特征图,其通道数为特征图上每个点代表的锚点类型数,特征图的每个点代表锚点在原图上的特定位置,不同的特征图象征不同的锚点大小。同样的我们也要一个衡量边框预测bbox_pred的网络层,不同的是其通道将是cls_logits特征图的4倍。通过这两个结构我们可以进一步进行计算,从而得到预测边框,并计算损失值。

其代码详解为:

# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
import torch
import torch.nn.functional as F
from torch import nn

from maskrcnn_benchmark.modeling import registry
from maskrcnn_benchmark.modeling.box_coder import BoxCoder
from maskrcnn_benchmark.modeling.rpn.retinanet.retinanet import build_retinanet
from .loss import make_rpn_loss_evaluator
from .anchor_generator import make_anchor_generator
from .inference import make_rpn_postprocessor


class RPNHeadConvRegressor(nn.Module):
    """
    A simple RPN Head for classification and bbox regression
    本类是一个简单的RPN层,用于将从FPN层提取的多层特征图中提取锚点的分类信息以及边框回归信息
    """

    def __init__(self, cfg, in_channels, num_anchors):
        """
        参数:
            cfg              : config配置文件(包含所有默认参数)
            in_channels (int): number of channels of the input feature输入特征的通道数
            num_anchors (int): number of anchors to be predicted特征图上每一个点代表的锚点个数,
                             让通道数等于锚点个数,每一个通道代表一种锚点的权重
        """
        super(RPNHeadConvRegressor, self).__init__()
        # 用1*1的卷积核对输入层进行通道调整
        # 产生两个分支:锚点的分类信息层、锚点的边框(×4)回归信息
        self.cls_logits = nn.Conv2d(in_channels, num_anchors, kernel_size=1, stride=1)
        self.bbox_pred = nn.Conv2d(
            in_channels, num_anchors * 4, kernel_size=1, stride=1
        )
        # 初始化网络参数
        for l in [self.cls_logits, se
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值