【深度学习】MMdet 代码解读

Posted by ShawnD on January 14, 2023

Detectors

BaseDetector

BaseDetector 具有如下方法:

  • __init__
  • with_neck
  • with_shared_head
  • with_bbox
  • with_mask
  • extract_feat 单/多张图为张量时提取特征
  • extract_feats 单/多张图为列表时提取特征
  • forward_train 要返回 losses
  • simple_test 无测试时增强的推理
  • aug_test 带测试时增强的推理
  • forward_test 测试时的前向,其调用 simple_testaug_test
  • forward 模型前向, 其调用 forward_trainforward_test

SingleStageDetector

SingleStageDetector 具有如下方法

  • __init__
  • extract_feat 单/多张图为张量时提取特征
  • forward_dummy 用于计算网络的 flops
  • forward_train 要返回 losses
  • simple_test 无测试时增强的推理
  • aug_test 带测试时增强的推理

TwoStageDetector

TwoStageDetector 具有如下方法:

  • __init__
  • with_rpn
  • with_roi_head
  • extract_feat 单/多张图为张量时提取特征
  • forward_dummy 用于计算网络的 flops
  • forward_train 要返回 losses
  • simple_test 无测试时增强的推理
  • aug_test 带测试时增强的推理

Dense Head

BaseDenseHead

BaseDenseHead 具有如下方法:

  • __init__
  • init_weights
  • loss 计算损失
  • get_bboxes 将批量网络的输出转换为边界框结果
  • _get_bboxes_single 将单张图像的输出转换为边界框结果
  • _bbox_post_process 边界框将会被重新缩放到原始图像大小并且做 nms 操作
  • forward_train 要返回 losses, 如果作为 RPN, 还要返回提议的结果
  • simple_test 无测试时增强的推理

AnchorHead

AnchorHead 具有如下方法:

  • __init__
  • num_anchors
  • anchor_generator
  • _init_layers
  • forward_single 对单尺度层级的特征图做前向
  • forward 前向
  • get_anchors 根据特征图大小得到 Anchors
  • _get_targets_single 计算单个图像中的 Anchorsregressionclassification 的目标
  • get_targets 计算多个图像中的 Anchorsregressionclassification 的目标
  • loss_single 计算单个尺度的损失
  • loss 计算 head 的损失
  • aug_test 测试时增强推理

AnchorFreeHead

AnchorFreeHead 具有如下方法:

  • __init__
  • _init_layers
  • _init_cls_convs
  • _init_reg_convs
  • _init_predictor
  • _load_from_state_dict
  • forward 前向
  • forward_single 对单尺度层级的特征图做前向
  • loss 计算 head 的损失
  • get_targets 计算多个图像中的 AnchorPointsregressionclassification 以及 centerness 的目标
  • ` _get_points_single 根据特征图的大小得到单层 AnchorPoints`
  • get_points 根据特征图的大小得到 AnchorPoints
  • aug_test 测试时增强推理

RPNHead

RPNHead 具有如下方法:

  • __init__
  • _init_layers
  • forward_single 对单尺度层级的特征图做前向
  • loss 计算 RPNHead 的损失
  • _get_bboxes_single 将单张图像的输出转换为边界框结果
  • _bbox_post_process 在相同的层级做边界框的 nms 操作

FCOSHead

FCOSHead 具有如下方法:

  • __init__
  • _init_layers
  • forward 前向
  • forward_single 对单尺度层级的特征图做前向
  • loss 计算 FCOSHead 的损失
  • get_targets 计算多个图像中的 AnchorPointsregressionclassification 以及 centerness 的目标
  • _get_target_single 计算单个图像中的 AnchorPointsregressionclassification 的目标
  • centerness_target 计算 centerness 目标
  • _get_points_single 根据特征图的大小得到 AnchorPoints

RoI Head

BaseRoIHead

BaseRoIHead 具有如下方法:

  • __init__
  • with_bbox
  • with_mask
  • with_shared_head
  • init_bbox_head
  • init_mask_head
  • init_assigner_sampler
  • forward_train
  • simple_test
  • aug_test

StandardRoIHead

StandardRoIHead 具有如下方法:

  • init_assigner_sampler
  • init_bbox_head
  • init_mask_head
  • forward_dummy
  • forward_train
  • _bbox_forward box head 前向函数
  • _bbox_forward_train 用于训练的 box head 前向函数
  • _mask_forward_train 用于训练的 mask head 前向函数
  • _mask_forward mask head 前向函数
  • simple_test
  • aug_test

bbox head

BBoxHead

BBoxHead 具有如下方法:

  • __init__
  • custom_cls_channels
  • custom_activation
  • custom_accuracy
  • forward
  • _get_target_single 根据采样结果计算单个图像中提议的真实标签
  • get_targets 根据采样结果计算批量中所有样本的真实标签
  • loss
  • get_bboxes 将批量的网络输出转换为边界框预测
  • refine_bboxes 在训练过程中优化边界框
  • regress_by_class 为预测的类别回归边界框

ConvFCBBoxHead

ConvFCBBoxHead 具有如下方法:

  • __init__
  • _add_conv_fc_branch 增加共享的或单独的分支, convs -> avg pool -> fcs
  • forward

###

mask head

FCNMaskHead

FCNMaskHead 具有如下方法:

  • __init__
  • init_weights
  • forward
  • get_targets
  • loss
  • get_seg_masksmask_predbboxes 里得到分割的 mask