未验证 提交 b5fa78bd 编写于 作者: F FDInSky 提交者: GitHub

update rcnn param doc (#828)

Update rcnn param doc
上级 3aad4947
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
# 检测模型的名称 # 检测模型的名称
architecture: MaskRCNN architecture: MaskRCNN
# 默认使用GPU运行,设为False时使用CPU运行 # 默认使用GPU运行,设为False时使用CPU运行
use_gpu: true use_gpu: true
# 最大迭代次数,而一个iter会运行batch_size * device_num张图片 # 最大迭代次数,而一个iter会运行batch_size * device_num张图片
...@@ -39,8 +38,8 @@ num_classes: 81 ...@@ -39,8 +38,8 @@ num_classes: 81
MaskRCNN: MaskRCNN:
backbone: ResNet backbone: ResNet
fpn: FPN fpn: FPN
roi_extractor: FPNRoIAlign
rpn_head: FPNRPNHead rpn_head: FPNRPNHead
roi_extractor: FPNRoIAlign
bbox_assigner: BBoxAssigner bbox_assigner: BBoxAssigner
bbox_head: BBoxHead bbox_head: BBoxHead
mask_assigner: MaskAssigner mask_assigner: MaskAssigner
...@@ -55,12 +54,8 @@ ResNet: ...@@ -55,12 +54,8 @@ ResNet:
depth: 50 depth: 50
# 主干网络返回的主要阶段特征用于FPN作进一步的特征融合 # 主干网络返回的主要阶段特征用于FPN作进一步的特征融合
# 默认从[2,3,4,5]返回特征 # 默认从[2,3,4,5]返回特征
feature_maps: feature_maps: [2,3,4,5]
- 2 # 是否在训练中固定某些权重,默认从第2阶段开始固定,即resnet的stage 1
- 3
- 4
- 5
# 是否在训练中固定norm layer的权重,默认从第2阶段开始固定
freeze_at: 2 freeze_at: 2
# 是否停止norm layer的梯度回传,默认是 # 是否停止norm layer的梯度回传,默认是
freeze_norm: true freeze_norm: true
...@@ -84,11 +79,7 @@ FPN: ...@@ -84,11 +79,7 @@ FPN:
# FPN输出特征的通道数量, 默认是256 # FPN输出特征的通道数量, 默认是256
num_chan: 256 num_chan: 256
# 特征图缩放比例, 默认是[0.03125, 0.0625, 0.125, 0.25] # 特征图缩放比例, 默认是[0.03125, 0.0625, 0.125, 0.25]
spatial_scale: spatial_scale: [0.03125, 0.0625, 0.125, 0.25]
- 0.03125
- 0.0625
- 0.125
- 0.25
# 检测第一阶段RPN # 检测第一阶段RPN
FPNRPNHead: FPNRPNHead:
...@@ -100,15 +91,8 @@ FPNRPNHead: ...@@ -100,15 +91,8 @@ FPNRPNHead:
# N = anchor_sizes * aspect_ratios # N = anchor_sizes * aspect_ratios
# 具体实现参考[API](fluid.layers.anchor_generator) # 具体实现参考[API](fluid.layers.anchor_generator)
anchor_generator: anchor_generator:
aspect_ratios: aspect_ratios: [0.5, 1.0, 2.0]
- 0.5 variance: [1.0, 1.0, 1.0, 1.0]
- 1.0
- 2.0
variance:
- 1.0
- 1.0
- 1.0
- 1.0
# 首先计算Anchor和GT BBox之间的IoU,为每个Anchor匹配上GT, # 首先计算Anchor和GT BBox之间的IoU,为每个Anchor匹配上GT,
# 然后根据阈值过滤掉IoU低的Anchor,得到最终的Anchor及其GT进行loss计算 # 然后根据阈值过滤掉IoU低的Anchor,得到最终的Anchor及其GT进行loss计算
# 具体实现参考[API](fluid.layers.rpn_target_assign) # 具体实现参考[API](fluid.layers.rpn_target_assign)
...@@ -169,17 +153,11 @@ MaskHead: ...@@ -169,17 +153,11 @@ MaskHead:
# 具体实现参考[API](fluid.layers.generate_proposal_labels) # 具体实现参考[API](fluid.layers.generate_proposal_labels)
BBoxAssigner: BBoxAssigner:
batch_size_per_im: 512 batch_size_per_im: 512
bg_thresh_hi: 0.5 bbox_reg_weights: [0.1, 0.1, 0.2, 0.2]
bg_thresh_lo: 0.0 bg_thresh_lo: 0.0
bg_thresh_hi: 0.5
fg_fraction: 0.25 fg_fraction: 0.25
fg_thresh: 0.5 fg_thresh: 0.5
num_classes: 81
shuffle_before_sample: true
bbox_reg_weights:
- 0.1
- 0.1
- 0.2
- 0.2
# 根据roi的label,选择前景,为其赋值mask label # 根据roi的label,选择前景,为其赋值mask label
# 具体实现参考[API](fluid.layers.generate_mask_labels) # 具体实现参考[API](fluid.layers.generate_mask_labels)
...@@ -193,21 +171,10 @@ BBoxHead: ...@@ -193,21 +171,10 @@ BBoxHead:
head: TwoFCHead head: TwoFCHead
# 通过NMS进行bbox过滤 # 通过NMS进行bbox过滤
# 具体实现参考[API](fluid.layers.multiclass_nms) # 具体实现参考[API](fluid.layers.multiclass_nms)
keep_top_k: 100 nms:
nms_threshold: 0.5 keep_top_k: 100
score_threshold: 0.05 nms_threshold: 0.5
num_classes: 81 score_threshold: 0.05
# 对bbox的坐标进行编解码操作
# 具体实现参考[API](fluid.layers.box_coder)
box_coder:
axis: 1
box_normalized: false
code_type: decode_center_size
prior_box_var:
- 0.1
- 0.1
- 0.2
- 0.2
# 输出检测框之前,对特征进一步学习 # 输出检测框之前,对特征进一步学习
TwoFCHead: TwoFCHead:
...@@ -225,12 +192,17 @@ LearningRate: ...@@ -225,12 +192,17 @@ LearningRate:
# 学习率规划器 # 学习率规划器
# 具体实现参考[API](fluid.layers.piecewise_decay) # 具体实现参考[API](fluid.layers.piecewise_decay)
schedulers: schedulers:
#学习率衰减策略 # 学习率衰减策略
# 对于coco数据集,1个epoch大概需要7000个iter
# if step < 120000:
# learning_rate = 0.1
# elif 120000 <= step < 160000:
# learning_rate = 0.1 * 0.1
# else:
# learning_rate = 0.1 * (0.1)**2
- !PiecewiseDecay - !PiecewiseDecay
gamma: 0.1 gamma: 0.1
milestones: milestones: [120000, 160000]
- 120000
- 160000
# 在训练开始时,调低学习率为base_lr * start_factor,然后逐步增长到base_lr,这个过程叫学习率热身,按照以下公式更新学习率 # 在训练开始时,调低学习率为base_lr * start_factor,然后逐步增长到base_lr,这个过程叫学习率热身,按照以下公式更新学习率
# linear_step = end_lr - start_lr # linear_step = end_lr - start_lr
# lr = start_lr + linear_step * (global_step / warmup_steps) # lr = start_lr + linear_step * (global_step / warmup_steps)
...@@ -256,82 +228,130 @@ OptimizerBuilder: ...@@ -256,82 +228,130 @@ OptimizerBuilder:
# 模型训练集设置参考 # 模型训练集设置参考
# 训练、验证、测试使用的数据配置主要区别在数据路径、模型输入、数据增强参数设置 # 训练、验证、测试使用的数据配置主要区别在数据路径、模型输入、数据增强参数设置
TrainReader: TrainReader:
# 1个GPU的batch size,默认为1 # 训练过程中模型的相关输入
batch_size: 1 # 包括图片,图片长宽高等基本信息,图片id,标记的目标框、实例标签、实例分割掩码
inputs_def:
fields: ['image', 'im_info', 'im_id', 'gt_bbox', 'gt_class', 'is_crowd', 'gt_mask']
# VOC数据集对应的输入,注意选择VOC时,也要对应修改metric: VOC
- # fields: ['image', 'im_info', 'im_id', 'gt_bbox', 'gt_class', 'is_difficult']
# 数据集目录配置 # 数据集目录配置
dataset: dataset:
# 数据集根目录 # 指定数据集名称,可以选择VOCDataSet, COCODataSet
dataset_dir: dataset/coco !COCODataSet
# 标记文件所在目录
annotation: annotations/instances_train2017.json
# 训练图片所在目录 # 训练图片所在目录
image_dir: train2017 image_dir: train2017
# 训练过程中模型的相关输入 # 标记文件所在目录
# 包括图片,图片长宽高等基本信息,图片id, 标记的目标框、实例标签、实例分割掩码 anno_path: annotations/instances_train2017.json
fields: # 数据集根目录
- image dataset_dir: dataset/coco
- im_info
- im_id
- gt_box
- gt_label
- is_crowd
- gt_mask
# 输入Image的尺寸
image_shape:
- 3
- 800
- 1333
# 对一个batch中的单张图片做的数据增强 # 对一个batch中的单张图片做的数据增强
sample_transforms: sample_transforms:
# 读取Image图像为numpy数组 # 读取Image图像为numpy数组
# 可以选择将图片从BGR转到RGB,可以选择对一个batch中的图片做mixup增强 # 可以选择将图片从BGR转到RGB,可以选择对一个batch中的图片做mixup增强
- !DecodeImage - !DecodeImage
to_rgb: true # default: true to_rgb: true
with_mixup: false # default: false # 对图片进行随机翻转
# 对图片进行随机翻转 # 可以选择同步翻转mask,可以选择归一化bbox的坐标
# 可以选择同步翻转mask,可以选择归一化bbox的坐标 - !RandomFlipImage
- !RandomFlipImage prob: 0.5
is_mask_flip: true # default: false # 归一化图片,默认均值[0.485, 0.456, 0.406],方差[1, 1, 1]
is_normalized: false # default: false # 可以选择将归一化结果除以255,可以选择图片的数据格式
prob: 0.5 # default: 0.5 - !NormalizeImage
# 归一化图片,默认均值[0.485, 0.456, 0.406],方差[1, 1, 1] is_channel_first: false
# 可以选择将归一化结果除以255,可以选择图片的数据格式 is_scale: true
- !NormalizeImage mean: [0.485,0.456,0.406]
is_channel_first: false std: [0.229, 0.224,0.225]
is_scale: true # 调整图片尺寸,默认采用cv2的线性插值
mean: - !ResizeImage
- 0.485 target_size: 800
- 0.456 max_size: 1333
- 0.406 interp: 1
std: use_cv2: true
- 0.229 # 调整图片数据格式,默认使用CHW
- 0.224 - !Permute
- 0.225 to_bgr: false
# 调整图片尺寸,默认采用cv2的线性插值 channel_first: true
- !ResizeImage
interp: 1
max_size: 1333
target_size: 800
use_cv2: true # default: true
# 调整图片数据格式,默认使用CHW
- !Permute
channel_first: true
to_bgr: false # default: true
# 对一个batch中的图片统一做的数据增强 # 对一个batch中的图片统一做的数据增强
batch_transforms: batch_transforms:
# 将一个batch中的图片,按照最大的尺寸,做补齐 # 将一个batch中的图片,按照最大的尺寸,做补齐
- !PadBatch - !PadBatch
pad_to_stride: 32 # default: 32 pad_to_stride: 32
# 选择是否使用padding之后的image信息,默认为true # 选择是否使用padding之后的image信息,默认为false
use_padded_im_info: true use_padded_im_info: false
# 1个GPU的batch size,默认为1
batch_size: 1
# 选择是否打乱所有样本的顺序
shuffle: true
# 使用多进程/线程的数目,默认为2 # 使用多进程/线程的数目,默认为2
worker_num: 2 worker_num: 2
# 选择是否使用多进程,默认为false # 选择是否使用多进程,默认为false
use_process: false use_process: false
# 如果最后一个batch的图片数量为奇数,选择是否丢掉这个batch,不进行训练,默认是不丢掉的
drop_last: false
# 使用数据集中的样本数目,默认是-1,表示使用全部 # 使用数据集中的样本数目,默认是-1,表示使用全部
samples: -1 samples: -1
# 选择是否打乱所有样本的顺序
shuffle: true # 模型验证集设置参考
# 如果最后一个batch的图片数量为奇数,选择是否丢掉这个batch,不进行训练,默认是不丢掉的 EvalReader:
# 验证过程中模型的相关输入
# 包括图片,图片长宽高等基本信息,图片id,图片shape
inputs_def:
fields: ['image', 'im_info', 'im_id', 'im_shape']
dataset:
!COCODataSet
image_dir: val2017
anno_path: annotations/instances_val2017.json
dataset_dir: dataset/coco
sample_transforms:
- !DecodeImage
to_rgb: true
- !NormalizeImage
is_channel_first: false
is_scale: true
mean: [0.485,0.456,0.406]
std: [0.229, 0.224,0.225]
- !ResizeImage
interp: 1
max_size: 1333
target_size: 800
use_cv2: true
- !Permute
channel_first: true
to_bgr: false
batch_size: 1
shuffle: false
drop_last: false
drop_empty: false
worker_num: 2
# 测试验证集设置参考
TestReader:
# 测试过程中模型的相关输入
# 包括图片,图片长宽高等基本信息,图片id,图片shape
inputs_def:
fields: ['image', 'im_info', 'im_id', 'im_shape']
dataset:
# 测试图片所在目录
!ImageFolder
anno_path: annotations/instances_val2017.json
sample_transforms:
- !DecodeImage
to_rgb: true
with_mixup: false
- !NormalizeImage
is_channel_first: false
is_scale: true
mean: [0.485,0.456,0.406]
std: [0.229, 0.224,0.225]
- !ResizeImage
interp: 1
max_size: 1333
target_size: 800
use_cv2: true
- !Permute
channel_first: true
to_bgr: false
batch_size: 1
shuffle: false
drop_last: false drop_last: false
``` ```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册