PaddlePaddle 官方 Cascade R-CNN + ResNeXt 101 + FPN 配置文档 cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x.yml 解析

PaddlePaddle 提供了很多常见的深度学习模型,这里对 Cascade R-CNN + ResNeXt 101 + FPN 配置文档进行分析,方便大家进行调参和修改,文档名称为: cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x.yml,欢迎大家补充和指正。
# 模型检测名称
architecture: CascadeRCNN
# 最大迭代数,每一个 iter 会运行 batch_size * device_num 张图片,batch_size 在下面中 TrainReader.batch_size 设置
max_iters: 90000
# 每隔多少次迭代保存一次模型
snapshot_iter: 10000
# 根据硬件选择是否使用 GPU
use_gpu: true
# log 平滑参数
log_iter: 20
# 模型保存文件夹
save_dir: output
# 预训练模型权重
pretrain_weights: https://paddle-imagenet-models-name.bj.bcebos.com/ResNeXt101_vd_64x4d_pretrained.tar
# 训练结果权重保存路径
weights: output/cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x/model_final
# mAP 的评估方式,这里可以选择 COCO 和 VOC 或 WIDERFACE, 其中 VOC 有 11point 和 intergral 两种评估方法
metric: COCO
# 总分类数目加一
num_classes: 81

# CascadeRCNN 检测模型的结构
CascadeRCNN:
  # 提取特征的骨干结构
  backbone: ResNeXt
  # 采用的多尺度金字塔结构
  fpn: FPN
  # 区域生成网络模块,从输入图像中生成正负类的候选框
  rpn_head: FPNRPNHead
  # 对由 RPN 产生的 ROI 进行分类和微调,判断它是否包含目标,并修正框的位置和坐标
  roi_extractor: FPNRoIAlign
  # 边界框模块
  bbox_head: CascadeBBoxHead
  # 对 ROI 得到的正负样本进行标签分配
  bbox_assigner: CascadeBBoxAssigner

# 检测模型骨干
ResNeXt:
  # 归一化方法采用 Batch Normalization,对 N(样本量),H(特征图高度),W (特征图宽度)进行归一化,保留通道 C(通道数)的维度
  norm_type: bn
  # 网络深度
  depth: 101
  # 卷积核数目
  feature_maps: [2, 3, 4, 5]
  #
  freeze_at: 2
  #
  group_width: 4
  #
  groups: 64
  #
  variant: d
  #
  dcn_v2_stages: [3, 4, 5]

# 多尺度金字塔结构
FPN:
  # 最小层数
  min_level: 2
  # 最大层数
  max_level: 6
  # 通道数目
  num_chan: 256
  # 
  spatial_scale: [0.03125, 0.0625, 0.125, 0.25]

# 检测模型的 FPNRPNHead
FPNRPNHead:
  # 根据特征图尺寸,在特征图每个位置生成 N 个大小比和长宽比都不同的 anchor
  anchor_generator:
    # 生成的 anchor 大小,以正方形边长表示面积
    anchor_sizes: [32, 64, 128, 256, 512]
    # 生成 anchor 的高宽比
    aspect_ratios: [0.5, 1.0, 2.0]
    # anchor 在宽度和高度方向上的补偿
    stride: [16.0, 16.0]
    # 在框回归 delta 中使用
    variance: [1.0, 1.0, 1.0, 1.0]
  # 候选框起始大小
  anchor_start_size: 32
  # 最小层数
  min_level: 2
  # 最大层数
  max_level: 6
  # 通道数
  num_chan: 256
  
  # 为 anchors 分配分类标签和回归标签
  rpn_target_assign:
  	# 每个图像中 RPN 示例总数
    rpn_batch_size_per_im: 256
    # 标记为前景框的数量占总框数量的比例
    rpn_fg_fraction: 0.5
    # 和任何真实候选框的 IoU 大于该阈值的被定为正候选框
    rpn_positive_overlap: 0.7
    # 和任何真实候选框的 IoU 小于该阈值的被定为负候选框
    rpn_negative_overlap: 0.3
    # 超出图像外部像素数目达到该阈值的 RPN anchors 会被删除
    rpn_straddle_thresh: 0.0
  
  # 训练阶段时候选框产生阈值
  train_proposal:
  	# 保留最小尺寸
    min_size: 0.0
    # nms 阈值
    nms_thresh: 0.7
    # 第一次分数排序
    pre_nms_top_n: 2000
    # 第二次分数排序
    post_nms_top_n: 2000
   
  # 测试阶段时候选框产生阈值
  test_proposal:
  	# 保留最小尺寸
    min_size: 0.0
    # nms 阈值
    nms_thresh: 0.7
    # 第一次分数排序
    pre_nms_top_n: 1000
    # 第二次分数排序
    post_nms_top_n: 1000

# ROI 模型设置
FPNRoIAlign:
  #
  canconical_level: 4
  #
  canonical_size: 224
  # 最小层数
  min_level: 2
  # 最大层数
  max_level: 5
  # 输出的特征图大小
  box_resolution: 7
  # 乘法性质空间标尺因子,池化时,将 ROI 坐标变换至运算采用的标度
  sampling_ratio: 2

# 对 RPN 生成的 ROI 和真实框之间的 IOU 根据阈值进行过滤,保留一定数量的 ROI,再根据背景框标签,对 ROI 进行标签赋值,得到每个 ROI 类别
CascadeBBoxAssigner:
  # 每张图片抽出的 ROI 数目
  batch_size_per_im: 512
  # 框回归权重
  bbox_reg_weights: [10, 20, 30]
  # 框于真实值的 IOU 最小值
  bg_thresh_lo: [0.0, 0.0, 0.0]
  # 框于真实值的 IOU 最大值
  bg_thresh_hi: [0.5, 0.6, 0.7]
  # 单张图中前景框占所有框的比例
  fg_thresh: [0.5, 0.6, 0.7]
  # 前景重叠阈值,用于筛选前景框
  fg_fraction: 0.25

# 检测头网络和预测输出部分
CascadeBBoxHead:
  # 级联网络检测头
  head: CascadeTwoFCHead
  # NMS 参数
  nms:
    # 基于置信度的阈值过滤检测后,根据置信度保留最大的检测次数
    keep_top_k: 100
    # 在 NMS 中剔除 IOU 的阈值
    nms_threshold: 0.5
    # 过滤掉低于该置信度的边框阈值
    score_threshold: 0.05

#
CascadeTwoFCHead:
  #
  mlp_dim: 1024

# 学习率
LearningRate:
  # 学习率
  base_lr: 0.02
  # 学习率规划器
  schedulers:
  # 学习率衰减策略
  - !PiecewiseDecay
    gamma: 0.1
    milestones: [60000, 80000]
  # 训练开始时,学习率调低为 base_lr * start_factor,之后逐步增长到 base_lr
  - !LinearWarmup
  	# 起始学习率系数
    start_factor: 0.1
    # 增长次数
    steps: 1000

# 
OptimizerBuilder:
  # 默认采用 SGD + Momentum 进行训练
  optimizer:
  	#
    momentum: 0.9
    #
    type: Momentum
  # 默认采用 SGD + Momentum 进行训练
  regularizer:
    #
    factor: 0.0001
    #
    type: L2

# 
_READER_: '../faster_fpn_reader.yml'
#
TrainReader:
  # 单个 iter 使用数据数量相关参数
  batch_size: 2

你可能感兴趣的:(PaddlePaddle 官方 Cascade R-CNN + ResNeXt 101 + FPN 配置文档 cascade_rcnn_dcn_x101_vd_64x4d_fpn_1x.yml 解析)