This repository has been archived by the owner on May 17, 2023. It is now read-only.
forked from PaddlePaddle/PaddleDetection
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add CACascadeRCNN doc and config (PaddlePaddle#3659)
* add CACascadeRCNN doc * add pretrain model download link
1 parent
6e851dc
commit 0b7f5d7
Showing
5 changed files
with
258 additions
and
0 deletions.
There are no files selected for viewing
207 changes: 207 additions & 0 deletions
207
configs/obj365/cascade_rcnn_dcnv2_se154_vd_fpn_gn_cas.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
architecture: CascadeRCNN | ||
train_feed: FasterRCNNTrainFeed | ||
eval_feed: FasterRCNNEvalFeed | ||
test_feed: FasterRCNNTestFeed | ||
max_iters: 500000 | ||
snapshot_iter: 10000 | ||
use_gpu: true | ||
log_iter: 20 | ||
log_smooth_window: 20 | ||
save_dir: output | ||
pretrain_weights: https://paddlemodels.bj.bcebos.com/object_detection/cascade_mask_rcnn_dcnv2_se154_vd_fpn_gn_coco_pretrained.tar | ||
weights: output/cascade_rcnn_dcnv2_se154_vd_fpn_gn_cas/model_final | ||
metric: COCO | ||
num_classes: 81 | ||
|
||
CascadeRCNN: | ||
backbone: ResNet | ||
fpn: FPN | ||
rpn_head: FPNRPNHead | ||
roi_extractor: FPNRoIAlign | ||
bbox_head: CascadeBBoxHead | ||
bbox_assigner: CascadeBBoxAssigner | ||
|
||
SENet: | ||
depth: 152 | ||
feature_maps: [2, 3, 4, 5] | ||
freeze_at: 2 | ||
group_width: 4 | ||
groups: 64 | ||
norm_type: bn | ||
freeze_norm: True | ||
variant: d | ||
dcn_v2_stages: [3, 4, 5] | ||
std_senet: True | ||
|
||
FPN: | ||
min_level: 2 | ||
max_level: 6 | ||
num_chan: 256 | ||
spatial_scale: [0.03125, 0.0625, 0.125, 0.25] | ||
freeze_norm: False | ||
norm_type: gn | ||
|
||
FPNRPNHead: | ||
anchor_generator: | ||
anchor_sizes: [32, 64, 128, 256, 512] | ||
aspect_ratios: [0.5, 1.0, 2.0] | ||
stride: [16.0, 16.0] | ||
variance: [1.0, 1.0, 1.0, 1.0] | ||
anchor_start_size: 32 | ||
min_level: 2 | ||
max_level: 6 | ||
num_chan: 256 | ||
rpn_target_assign: | ||
rpn_batch_size_per_im: 256 | ||
rpn_fg_fraction: 0.5 | ||
rpn_positive_overlap: 0.7 | ||
rpn_negative_overlap: 0.3 | ||
rpn_straddle_thresh: 0.0 | ||
train_proposal: | ||
min_size: 0.0 | ||
nms_thresh: 0.7 | ||
pre_nms_top_n: 2000 | ||
post_nms_top_n: 2000 | ||
test_proposal: | ||
min_size: 0.0 | ||
nms_thresh: 0.7 | ||
pre_nms_top_n: 1000 | ||
post_nms_top_n: 1000 | ||
|
||
FPNRoIAlign: | ||
canconical_level: 4 | ||
canonical_size: 224 | ||
min_level: 2 | ||
max_level: 5 | ||
box_resolution: 7 | ||
sampling_ratio: 2 | ||
|
||
CascadeBBoxAssigner: | ||
batch_size_per_im: 1024 | ||
bbox_reg_weights: [10, 20, 30] | ||
bg_thresh_lo: [0.0, 0.0, 0.0] | ||
bg_thresh_hi: [0.5, 0.6, 0.7] | ||
fg_thresh: [0.5, 0.6, 0.7] | ||
fg_fraction: 0.25 | ||
|
||
CascadeBBoxHead: | ||
head: CascadeXConvNormHead | ||
nms: | ||
keep_top_k: 100 | ||
nms_threshold: 0.5 | ||
score_threshold: 0.05 | ||
|
||
CascadeXConvNormHead: | ||
norm_type: gn | ||
|
||
CascadeTwoFCHead: | ||
mlp_dim: 1024 | ||
|
||
LearningRate: | ||
base_lr: 0.01 | ||
schedulers: | ||
- !PiecewiseDecay | ||
gamma: 0.1 | ||
milestones: [400000, 460000] | ||
- !LinearWarmup | ||
start_factor: 0.01 | ||
steps: 2000 | ||
|
||
OptimizerBuilder: | ||
optimizer: | ||
momentum: 0.9 | ||
type: Momentum | ||
regularizer: | ||
factor: 0.0001 | ||
type: L2 | ||
|
||
FasterRCNNTrainFeed: | ||
batch_size: 1 | ||
dataset: | ||
dataset_dir: dataset/objects365 | ||
annotation: annotations/train.json | ||
image_dir: train | ||
sample_transforms: | ||
- !DecodeImage | ||
to_rgb: False | ||
with_mixup: False | ||
- !RandomFlipImage | ||
is_mask_flip: true | ||
is_normalized: false | ||
prob: 0.5 | ||
- !NormalizeImage | ||
is_channel_first: false | ||
is_scale: False | ||
mean: | ||
- 102.9801 | ||
- 115.9465 | ||
- 122.7717 | ||
std: | ||
- 1.0 | ||
- 1.0 | ||
- 1.0 | ||
- !ResizeImage | ||
interp: 1 | ||
target_size: | ||
- 416 | ||
- 448 | ||
- 480 | ||
- 512 | ||
- 544 | ||
- 576 | ||
- 608 | ||
- 640 | ||
- 672 | ||
- 704 | ||
- 736 | ||
- 768 | ||
- 800 | ||
- 832 | ||
- 864 | ||
- 896 | ||
- 928 | ||
- 960 | ||
- 992 | ||
- 1024 | ||
- 1056 | ||
- 1088 | ||
- 1120 | ||
- 1152 | ||
- 1184 | ||
- 1216 | ||
- 1248 | ||
- 1280 | ||
- 1312 | ||
- 1344 | ||
- 1376 | ||
- 1408 | ||
max_size: 1600 | ||
use_cv2: true | ||
- !Permute | ||
channel_first: true | ||
to_bgr: false | ||
batch_transforms: | ||
- !PadBatch | ||
pad_to_stride: 32 | ||
num_workers: 4 | ||
class_aware_sampling: true | ||
|
||
FasterRCNNEvalFeed: | ||
batch_size: 1 | ||
dataset: | ||
dataset_dir: dataset/objects365 | ||
annotation: annotations/val.json | ||
image_dir: val | ||
batch_transforms: | ||
- !PadBatch | ||
pad_to_stride: 32 | ||
|
||
FasterRCNNTestFeed: | ||
batch_size: 1 | ||
dataset: | ||
annotation: dataset/obj365/annotations/val.json | ||
batch_transforms: | ||
- !PadBatch | ||
pad_to_stride: 32 | ||
drop_last: false | ||
num_workers: 2 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
# CACascade RCNN | ||
## 简介 | ||
CACascade RCNN是百度视觉技术部在Objects365 2019 Challenge上夺冠的最佳单模型之一,Objects365是在通用物体检测领域的一个全新的数据集,旨在促进对自然场景不同对象的检测研究。Objects365在63万张图像上标注了365个对象类,训练集中共有超过1000万个边界框。这里放出的是Full Track任务中最好的单模型之一。 | ||
|
||
<div align="center"> | ||
<img src="../demo/obj365_gt.png"/> | ||
</div> | ||
|
||
## 方法描述 | ||
|
||
针对大规模物体检测算法的特点,我们提出了一种基于图片包含物体类别的数量的采样方式(Class Aware Sampling)。基于这种方式进行训练模型可以在更短的时间使模型收敛到更好的效果。 | ||
|
||
<div align="center"> | ||
<img src="../demo/cas.png"/> | ||
</div> | ||
|
||
本次公布的最好单模型是一个基于Cascade RCNN的两阶段检测模型,在此基础上将Backbone替换为更加强大的SENet154模型,Deformable Conv模块以及更复杂二阶段网络结构,针对BatchSize比较小的情况增加了Group Normalization操作并同时使用了多尺度训练,最终达到了非常理想的效果。预训练模型先后分别在ImageNet和COCO数据集上进行了训练,其中在COCO数据集上训练时增加了Mask分支,其余结构与CACascade RCNN相同, 会在启动训练时自动下载。 | ||
|
||
## 使用方法 | ||
|
||
1.准备数据 | ||
|
||
数据需要通过[Objects365官方网站](https://www.objects365.org/download.html)进行申请下载,数据下载后将数据放置在dataset目录中。 | ||
``` | ||
${THIS REPO ROOT} | ||
\--dataset | ||
\-- objects365 | ||
\-- annotations | ||
|-- train.json | ||
|-- val.json | ||
\-- train | ||
\-- val | ||
``` | ||
|
||
2.启动训练模型 | ||
|
||
```bash | ||
python tools/train.py -c configs/obj365/cascade_rcnn_dcnv2_se154_vd_fpn_gn.yml | ||
``` | ||
|
||
3.模型预测结果 | ||
|
||
| 模型 | 验证集 mAP | 下载链接 | | ||
| :-----------------: | :--------: | :----------------------------------------------------------: | | ||
| CACascadeRCNN SE154 | 31.7 | [model](https://paddlemodels.bj.bcebos.com/object_detection/cascade_rcnn_dcnv2_se154_vd_fpn_gn_cas_obj365.tar) | | ||
|
||
## 模型效果 | ||
|
||
<div align="center"> | ||
<img src="../demo/obj365_pred.png"/> | ||
</div> |