Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
1ea2a74b
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1ea2a74b
编写于
8月 26, 2019
作者:
W
wangguanzhong
提交者:
GitHub
8月 26, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add full config (#3095)
* Add full configs example & refine doc * refine docs
上级
6b1c4dfa
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
511 addition
and
5 deletion
+511
-5
README.md
README.md
+2
-0
README_cn.md
README_cn.md
+2
-0
docs/CONFIG.md
docs/CONFIG.md
+1
-0
docs/CONFIG_cn.md
docs/CONFIG_cn.md
+1
-0
docs/config_example/mask_rcnn_r50_fpn_1x.yml
docs/config_example/mask_rcnn_r50_fpn_1x.yml
+498
-0
ppdet/data/transform/operators.py
ppdet/data/transform/operators.py
+1
-1
ppdet/modeling/anchor_heads/rpn_head.py
ppdet/modeling/anchor_heads/rpn_head.py
+2
-0
ppdet/modeling/roi_extractors/roi_extractor.py
ppdet/modeling/roi_extractors/roi_extractor.py
+2
-2
ppdet/modeling/roi_heads/mask_head.py
ppdet/modeling/roi_heads/mask_head.py
+1
-1
ppdet/optimizer.py
ppdet/optimizer.py
+1
-1
未找到文件。
README.md
浏览文件 @
1ea2a74b
...
...
@@ -85,6 +85,8 @@ python tools/infer.py -c configs/mask_rcnn_r50_1x.yml \
For detailed training and evaluation workflow, please refer to
[
GETTING_STARTED.md
](
docs/GETTING_STARTED.md
)
.
For detailed configuration and parameter description, please refer to
[
Complete config files
](
docs/config_example/
)
We also recommend users to take a look at the
[
IPython Notebook demo
](
demo/mask_rcnn_demo.ipynb
)
Further information can be found in these documentations:
...
...
README_cn.md
浏览文件 @
1ea2a74b
...
...
@@ -72,6 +72,8 @@ python tools/infer.py -c configs/mask_rcnn_r50_1x.yml \
更多训练及评估流程,请参考
[
GETTING_STARTED_cn.md
](
docs/GETTING_STARTED_cn.md
)
.
详细的配置信息和参数说明,请参考
[
示例配置文件
](
docs/config_example/
)
.
同时推荐用户参考
[
IPython Notebook demo
](
demo/mask_rcnn_demo.ipynb
)
其他更多信息可参考以下文档内容:
...
...
docs/CONFIG.md
浏览文件 @
1ea2a74b
...
...
@@ -157,6 +157,7 @@ LearningRate:
steps
:
500
```
[
Complete config files
](
config_example/
)
of multiple detection architectures are given and brief description of each parameter.
## Requirements
...
...
docs/CONFIG_cn.md
浏览文件 @
1ea2a74b
...
...
@@ -149,6 +149,7 @@ LearningRate:
steps
:
500
```
[
示例配置文件
](
config_example/
)
中给出了多种检测结构的完整配置文件,以及其中各个超参的简要说明。
## 安装依赖
...
...
docs/config_example/mask_rcnn_r50_fpn_1x.yml
0 → 100644
浏览文件 @
1ea2a74b
# Architecture of detection, which is also the prefix of data feed module
architecture
:
MaskRCNN
# Data feed module
train_feed
:
MaskRCNNTrainFeed
eval_feed
:
MaskRCNNEvalFeed
test_feed
:
MaskRCNNTestFeed
# Use GPU or CPU, true by default
use_gpu
:
true
# Maximum number of iteration.
# In rcnn models, max_iters is 180000 if lr schedule is 1x and batch_size is 1.
max_iters
:
180000
# Snapshot period. If training and test at same time, evaluate model at each snapshot_iter. 10000 by default.
snapshot_iter
:
10000
# Smooth the log output in specified iterations, 20 by default.
log_smooth_window
:
20
# The number of iteration interval to display in training log.
log_iter
:
20
# The directory to save models.
save_dir
:
output
# The path of oretrained wegiths. If url is provided, it will download the pretrain_weights and decompress automatically.
pretrain_weights
:
https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_cos_pretrained.tar
# Evalution method, COCO and VOC are available.
metric
:
COCO
# The path of final model for evaluation and test.
weights
:
output/mask_rcnn_r50_fpn_1x/model_final/
# Number of classes, 81 for COCO and 21 for VOC
num_classes
:
81
# Mask RCNN architecture, see https://arxiv.org/abs/1703.06870
MaskRCNN
:
backbone
:
ResNet
fpn
:
FPN
roi_extractor
:
FPNRoIAlign
rpn_head
:
FPNRPNHead
bbox_assigner
:
BBoxAssigner
bbox_head
:
BBoxHead
mask_assigner
:
MaskAssigner
mask_head
:
MaskHead
rpn_only
:
false
# Backbone module
ResNet
:
# Index of stages using deformable conv v2, [] by default
dcn_v2_stages
:
[]
# ResNet depth, 50 by default
depth
:
50
# Stage index of returned feature map, [2,3,4,5] by default
feature_maps
:
-
2
-
3
-
4
-
5
# Stage Index of backbone to freeze, 2 by default
freeze_at
:
2
# Whether freeze normalization layers, true by default
freeze_norm
:
true
# Weight decay for normalization layer weights, 0. by default
norm_decay
:
0.0
# Normalization type, bn/sync_bn/affine_channel, affine_channel by default
norm_type
:
affine_channel
# ResNet variant, supports 'a', 'b', 'c', 'd' currently, b by default
variant
:
b
# FPN module
FPN
:
# Whether has extra conv in higher levels, false by default
has_extra_convs
:
false
# Highest level of the backbone feature map to use, 6 by default
max_level
:
6
# Lowest level of the backbone feature map to use, 6 by default
min_level
:
2
# FPN normalization type, bn/sync_bn/affine_channel, null by default
norm_type
:
null
# Number of feature channels, 256 by default
num_chan
:
256
# Feature map scaling factors, [0.03125, 0.0625, 0.125, 0.25] by default
spatial_scale
:
-
0.03125
-
0.0625
-
0.125
-
0.25
# RPN module, if use non-FPN architecture, use RPNHead instead
# Extract proposals according to anchors and assign box targets and
# score targets to selected proposals to compute RPN loss. For FPN
# architecture, RPN is computed from each levels and collect proposals
# together.
FPNRPNHead
:
# fluid.layers.anchor_generator
# Generate anchors for RCNN models. Each position of input produces
# N anchors. N = anchor_sizes * aspect_ratios. In FPNRPNHead, aspect_ratios
# is provided and anchor_sizes depends on FPN levels and anchor_start_size.
anchor_generator
:
aspect_ratios
:
-
0.5
-
1.0
-
2.0
variance
:
-
1.0
-
1.0
-
1.0
-
1.0
# fluid.layers.rpn_target_assign
# Assign classification and regression targets to each anchor according
# to Intersection-over-Union(IoU) overlap between anchors and ground
# truth boxes. The classification targets is binary class labels. the
# positive labels are two kinds of anchors: the anchors with the highest
# IoU overlap with a ground-truth box, or an anchor that has an IoU overlap
# higher than rpn_positive_overlap with any ground-truth box.
rpn_target_assign
:
rpn_batch_size_per_im
:
256
rpn_fg_fraction
:
0.5
rpn_negative_overlap
:
0.3
rpn_positive_overlap
:
0.7
rpn_straddle_thresh
:
0.0
# fluid.layers.generate_proposals in training
# Generate RoIs according to each box with probability to be a foreground
# object. The operation performs following steps: Transposes and resizes
# scores and bbox_deltas; Calculate box locations as proposal candidates;
# Clip boxes to image; Remove predicted boxes with small area; Apply NMS to
# get final proposals as output.
train_proposal
:
min_size
:
0.0
nms_thresh
:
0.7
post_nms_top_n
:
2000
pre_nms_top_n
:
2000
# fluid.layers.generate_proposals in test
test_proposal
:
min_size
:
0.0
nms_thresh
:
0.7
post_nms_top_n
:
1000
pre_nms_top_n
:
1000
# Size of anchor at the first scale, 32 by default
anchor_start_size
:
32
# highest level of FPN output, 6 by default
max_level
:
6
# Lowest level of FPN output, 2 by default
min_level
:
2
# Number of FPN output channels, 256 by default
num_chan
:
256
# Number of classes in RPN output, 1 by default
num_classes
:
1
# RoI extractor module, if use non-FPN architecture, use RoIAlign instead
# For FPN architecture, proposals are distributed to different levels and
# apply roi align at each level. Then concat the outputs.
FPNRoIAlign
:
# The canconical FPN feature map level, 4 by default
canconical_level
:
4
# The canconical FPN feature map size, 224 by default
canonical_size
:
224
# The highest level of FPN layer, 5 by default
max_level
:
5
# The lowest level of FPN layer, 2 by default
min_level
:
2
# Number of sampling points, 0 by default
sampling_ratio
:
2
# Box resolution, 7 by default
box_resolution
:
7
# Mask RoI resolution, 14 by default
mask_resolution
:
14
# Mask head module
# Generate mask output and compute loss mask.
MaskHead
:
# Number of convolutions, 4 for FPN, 0 otherwise. 0 by default
num_convs
:
4
# size of the output mask, 14 by default
resolution
:
28
# Dilation rate, 1 by default
dilation
:
1
# Number of channels after first conv, 256 by default
num_chan_reduced
:
256
# Number of output classes, 81 by default
num_classes
:
81
# fluid.layers.generate_proposal_labels
# Combine boxes and gt_boxes, and sample foreground proposals and background
# prosals.Then assign classification and regression targets to selected RoIs.
BBoxAssigner
:
batch_size_per_im
:
512
bbox_reg_weights
:
-
0.1
-
0.1
-
0.2
-
0.2
bg_thresh_hi
:
0.5
bg_thresh_lo
:
0.0
fg_fraction
:
0.25
fg_thresh
:
0.5
num_classes
:
81
shuffle_before_sample
:
true
# fluid.layers.generate_mask_labels
# For given the RoIs and corresponding labels, sample foreground RoIs.
# Assign mask targets to selected RoIs which are encoded to K binary masks
# of resolution M x M.
MaskAssigner
:
resolution
:
28
num_classes
:
81
# BBox head module
# Faster bbox head following the RoI extractor, and apply post process, such as
# NMS and box coder..
BBoxHead
:
# Head after RoI extractor, ResNetC5/TwoFCHead
head
:
TwoFCHead
# fluid.layers.multiclass_nms
# Select a subset of detection bounding boxes that have high scores larger
# than score_threshold. Then prune away boxes that have high IoU overlap
# with already selected boxes by nms_threshold.
keep_top_k
:
100
nms_threshold
:
0.5
score_threshold
:
0.05
# 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
num_classes
:
81
# RCNN head with two Fully Connected layers
TwoFCHead
:
# The number of output channels, 1024 by default
num_chan
:
1024
# Learning rate configuration
LearningRate
:
# Base learning rate, 0.01 by default
base_lr
:
0.01
# Learning rate schedulers, PiecewiseDecay and LinearWarmup by default
schedulers
:
# fluid.layers.piecewise_decay
# Values has higher priority and if values is null, learning rate is multipled by gamma at each stage
-
!PiecewiseDecay
gamma
:
0.1
milestones
:
-
120000
-
160000
values
:
null
# fluid.layers.linear_lr_warmup
# Start learning rate equals to base_lr * start_factor
-
!LinearWarmup
start_factor
:
0.3333333333333333
steps
:
500
# Optimizer module
OptimizerBuilder
:
# fluid.optimizer
optimizer
:
momentum
:
0.9
type
:
Momentum
# fluid.regularizer
regularizer
:
factor
:
0.0001
type
:
L2
# Data feed module for training
MaskRCNNTrainFeed
:
# Batch size per device, 1 by default
batch_size
:
1
# Dataset module
dataset
:
# Annotation file path
annotation
:
annotations/instances_train2017.json
# Dataset directory
dataset_dir
:
dataset/coco
# Directory where image files are stored
image_dir
:
train2017
# List of data fields needed
fields
:
-
image
-
im_info
-
im_id
-
gt_box
-
gt_label
-
is_crowd
-
gt_mask
# list of image dims
image_shape
:
-
3
-
800
-
1333
# List of sample transformations to use
sample_transforms
:
# Transform the image data to numpy format.
-
!DecodeImage
to_rgb
:
true
# default: true
with_mixup
:
false
# default: false
# Flip images randomly
# Transform the x coordinates of bboxes and segmentations
-
!RandomFlipImage
is_mask_flip
:
true
# default: false
# Whether bbox is normalized
is_normalized
:
false
# default: false
prob
:
0.5
# default: 0.5
# Normalize the image
-
!NormalizeImage
# The format of image, [H, W, C]/[C, H, W], true by default
is_channel_first
:
false
# Whether divide by 255, true by default
is_scale
:
true
# default: [0.485, 0.456, 0.406]
mean
:
-
0.485
-
0.456
-
0.406
# default: [1, 1, 1]
std
:
-
0.229
-
0.224
-
0.225
# Rescale image to the specified target size, and capped at max_size
-
!ResizeImage
# Resize method, cv2.INTER_LINEAR(1) by default
interp
:
1
max_size
:
1333
target_size
:
800
use_cv2
:
true
# default: true
# Change the channel
-
!Permute
# The format of image, [H, W, C]/[C, H, W], true by default
channel_first
:
true
to_bgr
:
false
# default: true
# List of batch transformations to use
batch_transforms
:
# Pad a batch of samples to same dimensions
-
!PadBatch
pad_to_stride
:
32
# default: 32
# Drop last batch if size is uneven, false by default
drop_last
:
false
# Number of workers processes(or threads), 2 by default
num_workers
:
2
# Number of samples, -1 represents all samples. -1 by default
samples
:
-1
# If samples should be shuffled, true by default
shuffle
:
true
# If update im_info after padding, false by default
use_padded_im_info
:
false
# If use multi-process, false by default
use_process
:
false
# Data feed module for test
MaskRCNNEvalFeed
:
# Batch size per device, 1 by default
batch_size
:
1
# Dataset module
dataset
:
# Annotation file path
annotation
:
annotations/instances_val2017.json
# Dataset directory
dataset_dir
:
dataset/coco
# Directory where image files are stored
image_dir
:
val2017
# List of data fields needed
fields
:
-
image
-
im_info
-
im_id
-
im_shape
# list of image dims
image_shape
:
-
3
-
800
-
1333
# List of sample transformations to use
sample_transforms
:
# Transform the image data to numpy format.
-
!DecodeImage
to_rgb
:
true
# default: true
with_mixup
:
false
# default: false
# Normalize the image
-
!NormalizeImage
# The format of image, [H, W, C]/[C, H, W], true by default
is_channel_first
:
false
# Whether divide by 255, true by default
is_scale
:
true
# default: [0.485, 0.456, 0.406]
mean
:
-
0.485
-
0.456
-
0.406
# default: [1, 1, 1]
std
:
-
0.229
-
0.224
-
0.225
# Rescale image to the specified target size, and capped at max_size
-
!ResizeImage
# Resize method, cv2.INTER_LINEAR(1) by default
interp
:
1
max_size
:
1333
target_size
:
800
use_cv2
:
true
# default: true
# Change the channel
-
!Permute
# The format of image, [H, W, C]/[C, H, W], true by default
channel_first
:
true
to_bgr
:
false
# default: true
# List of batch transformations to use
batch_transforms
:
# Pad a batch of samples to same dimensions
-
!PadBatch
pad_to_stride
:
32
# default: 32
# Drop last batch if size is uneven, false by default
drop_last
:
false
# Number of workers processes(or threads), 2 by default
num_workers
:
2
# Number of samples, -1 represents all samples. -1 by default
samples
:
-1
# If samples should be shuffled, true by default
shuffle
:
false
# If update im_info after padding, false by default
use_padded_im_info
:
true
# If use multi-process, false by default
use_process
:
false
# Data feed module for test
MaskRCNNTestFeed
:
# Batch size per device, 1 by default
batch_size
:
1
# Dataset module
dataset
:
# Annotation file path
annotation
:
dataset/coco/annotations/instances_val2017.json
# List of data fields needed
fields
:
-
image
-
im_info
-
im_id
-
im_shape
# list of image dims
image_shape
:
-
3
-
800
-
1333
# List of sample transformations to use
sample_transforms
:
# Transform the image data to numpy format.
-
!DecodeImage
to_rgb
:
true
# default: true
with_mixup
:
false
# default: false
# Normalize the image
-
!NormalizeImage
# The format of image, [H, W, C]/[C, H, W], true by default
is_channel_first
:
false
# Whether divide by 255, true by default
is_scale
:
true
# default: [0.485, 0.456, 0.406]
mean
:
-
0.485
-
0.456
-
0.406
# default: [1, 1, 1]
std
:
-
0.229
-
0.224
-
0.225
# Change the channel
-
!Permute
# The format of image, [H, W, C]/[C, H, W], true by default
channel_first
:
true
to_bgr
:
false
# default: true
# List of batch transformations to use
batch_transforms
:
# Pad a batch of samples to same dimensions
-
!PadBatch
pad_to_stride
:
32
# default: 32
# Drop last batch if size is uneven, false by default
drop_last
:
false
# Number of workers processes(or threads), 2 by default
num_workers
:
2
# Number of samples, -1 represents all samples. -1 by default
samples
:
-1
# If samples should be shuffled, true by default
shuffle
:
false
# If update im_info after padding, false by default
use_padded_im_info
:
true
# If use multi-process, false by default
use_process
:
false
ppdet/data/transform/operators.py
浏览文件 @
1ea2a74b
...
...
@@ -154,7 +154,7 @@ class ResizeImage(BaseOperator):
raise
TypeError
(
"{}: input type is invalid."
.
format
(
self
))
def
__call__
(
self
,
sample
,
context
=
None
):
""" Resi
s
e the image numpy.
""" Resi
z
e the image numpy.
"""
im
=
sample
[
'image'
]
if
not
isinstance
(
im
,
np
.
ndarray
):
...
...
ppdet/modeling/anchor_heads/rpn_head.py
浏览文件 @
1ea2a74b
...
...
@@ -38,6 +38,7 @@ class RPNHead(object):
rpn_target_assign (object): `RPNTargetAssign` instance
train_proposal (object): `GenerateProposals` instance for training
test_proposal (object): `GenerateProposals` instance for testing
num_classes (int): number of classes in rpn output
"""
__inject__
=
[
'anchor_generator'
,
'rpn_target_assign'
,
'train_proposal'
,
...
...
@@ -281,6 +282,7 @@ class FPNRPNHead(RPNHead):
num_chan (int): number of FPN output channels
min_level (int): lowest level of FPN output
max_level (int): highest level of FPN output
num_classes (int): number of classes in rpn output
"""
__inject__
=
[
...
...
ppdet/modeling/roi_extractors/roi_extractor.py
浏览文件 @
1ea2a74b
...
...
@@ -29,13 +29,13 @@ class FPNRoIAlign(object):
"""
RoI align pooling for FPN feature maps
Args:
pooled_height (int): output height
pooled_height (int): output width
sampling_ratio (int): number of sampling points
min_level (int): lowest level of FPN layer
max_level (int): highest level of FPN layer
canconical_level (int): the canconical FPN feature map level
canonical_size (int): the canconical FPN feature map size
box_resolution (int): box resolution
mask_resolution (int): mask roi resolution
"""
def
__init__
(
self
,
...
...
ppdet/modeling/roi_heads/mask_head.py
浏览文件 @
1ea2a74b
...
...
@@ -31,7 +31,7 @@ class MaskHead(object):
"""
RCNN mask head
Args:
num_convs (int): num of convolutions, 4 for FPN,
1
otherwise
num_convs (int): num of convolutions, 4 for FPN,
0
otherwise
num_chan_reduced (int): num of channels after first convolution
resolution (int): size of the output mask
dilation (int): dilation rate
...
...
ppdet/optimizer.py
浏览文件 @
1ea2a74b
...
...
@@ -40,7 +40,7 @@ class PiecewiseDecay(object):
milestones (list): steps at which to decay learning rate
"""
def
__init__
(
self
,
gamma
=
0.1
,
milestones
=
[
6000
,
8
000
],
values
=
None
):
def
__init__
(
self
,
gamma
=
0.1
,
milestones
=
[
6000
0
,
80
000
],
values
=
None
):
super
(
PiecewiseDecay
,
self
).
__init__
()
self
.
gamma
=
gamma
self
.
milestones
=
milestones
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录