Created
January 24, 2022 15:05
-
-
Save MendelXu/143b6b46ac35796785aae9d4087393de to your computer and use it in GitHub Desktop.
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
mmdet_base = "../../thirdparty/mmdetection/configs/_base_" | |
_base_ = [ | |
f"{mmdet_base}/models/mask_rcnn_r50_fpn.py", | |
f"{mmdet_base}/datasets/coco_detection.py", | |
f"{mmdet_base}/schedules/schedule_1x.py", | |
f"{mmdet_base}/default_runtime.py", | |
] | |
model = dict( | |
backbone=dict( | |
norm_cfg=dict(requires_grad=False), | |
norm_eval=True, | |
style="caffe", | |
init_cfg=dict( | |
type="Pretrained", checkpoint="open-mmlab://detectron2/resnet50_caffe" | |
), | |
) | |
) | |
img_norm_cfg = dict(mean=[103.530, 116.280, 123.675], std=[1.0, 1.0, 1.0], to_rgb=False) | |
train_pipeline = [ | |
dict(type="LoadImageFromFile"), | |
dict(type="LoadAnnotations", with_bbox=True, with_mask=True), | |
dict( | |
type="Sequential", | |
transforms=[ | |
dict( | |
type="RandResize", | |
img_scale=[(1333, 400), (1333, 1200)], | |
multiscale_mode="range", | |
keep_ratio=True, | |
), | |
dict(type="RandFlip", flip_ratio=0.5), | |
dict( | |
type="OneOf", | |
transforms=[ | |
dict(type=k) | |
for k in [ | |
"Identity", | |
"AutoContrast", | |
"RandEqualize", | |
"RandSolarize", | |
"RandColor", | |
"RandContrast", | |
"RandBrightness", | |
"RandSharpness", | |
"RandPosterize", | |
] | |
], | |
), | |
], | |
record=True, | |
), | |
dict(type="Pad", size_divisor=32), | |
dict(type="Normalize", **img_norm_cfg), | |
dict(type="ExtraAttrs", tag="sup"), | |
dict(type="DefaultFormatBundle"), | |
dict( | |
type="Collect", | |
keys=["img", "gt_bboxes", "gt_labels", "gt_masks"], | |
meta_keys=( | |
"filename", | |
"ori_shape", | |
"img_shape", | |
"img_norm_cfg", | |
"pad_shape", | |
"scale_factor", | |
"tag", | |
), | |
), | |
] | |
strong_pipeline = [ | |
dict( | |
type="Sequential", | |
transforms=[ | |
dict( | |
type="RandResize", | |
img_scale=[(1333, 400), (1333, 1200)], | |
multiscale_mode="range", | |
keep_ratio=True, | |
), | |
dict(type="RandFlip", flip_ratio=0.5), | |
dict( | |
type="ShuffledSequential", | |
transforms=[ | |
dict( | |
type="OneOf", | |
transforms=[ | |
dict(type=k) | |
for k in [ | |
"Identity", | |
"AutoContrast", | |
"RandEqualize", | |
"RandSolarize", | |
"RandColor", | |
"RandContrast", | |
"RandBrightness", | |
"RandSharpness", | |
"RandPosterize", | |
] | |
], | |
), | |
dict( | |
type="OneOf", | |
transforms=[ | |
dict(type="RandTranslate", x=(-0.1, 0.1)), | |
dict(type="RandTranslate", y=(-0.1, 0.1)), | |
dict(type="RandRotate", angle=(-30, 30)), | |
[ | |
dict(type="RandShear", x=(-30, 30)), | |
dict(type="RandShear", y=(-30, 30)), | |
], | |
], | |
), | |
], | |
), | |
dict( | |
type="RandErase", | |
n_iterations=(1, 5), | |
size=[0, 0.2], | |
squared=True, | |
), | |
], | |
record=True, | |
), | |
dict(type="Pad", size_divisor=32), | |
dict(type="Normalize", **img_norm_cfg), | |
dict(type="ExtraAttrs", tag="unsup_student"), | |
dict(type="DefaultFormatBundle"), | |
dict( | |
type="Collect", | |
keys=["img", "gt_bboxes", "gt_labels", "gt_masks"], | |
meta_keys=( | |
"filename", | |
"ori_shape", | |
"img_shape", | |
"img_norm_cfg", | |
"pad_shape", | |
"scale_factor", | |
"tag", | |
"transform_matrix", | |
), | |
), | |
] | |
weak_pipeline = [ | |
dict( | |
type="Sequential", | |
transforms=[ | |
dict( | |
type="RandResize", | |
img_scale=[(1333, 400), (1333, 1200)], | |
multiscale_mode="range", | |
keep_ratio=True, | |
), | |
dict(type="RandFlip", flip_ratio=0.5), | |
], | |
record=True, | |
), | |
dict(type="Pad", size_divisor=32), | |
dict(type="Normalize", **img_norm_cfg), | |
dict(type="ExtraAttrs", tag="unsup_teacher"), | |
dict(type="DefaultFormatBundle"), | |
dict( | |
type="Collect", | |
keys=["img", "gt_bboxes", "gt_labels", "gt_masks"], | |
meta_keys=( | |
"filename", | |
"ori_shape", | |
"img_shape", | |
"img_norm_cfg", | |
"pad_shape", | |
"scale_factor", | |
"tag", | |
"transform_matrix", | |
), | |
), | |
] | |
unsup_pipeline = [ | |
dict(type="LoadImageFromFile"), | |
# dict(type="LoadAnnotations", with_bbox=True), | |
# generate fake labels for data format compatibility | |
dict(type="PseudoSamples", with_bbox=True, with_mask=True), | |
dict( | |
type="MultiBranch", unsup_student=strong_pipeline, unsup_teacher=weak_pipeline | |
), | |
] | |
test_pipeline = [ | |
dict(type="LoadImageFromFile"), | |
dict( | |
type="MultiScaleFlipAug", | |
img_scale=(1333, 800), | |
flip=False, | |
transforms=[ | |
dict(type="Resize", keep_ratio=True), | |
dict(type="RandomFlip"), | |
dict(type="Normalize", **img_norm_cfg), | |
dict(type="Pad", size_divisor=32), | |
dict(type="ImageToTensor", keys=["img"]), | |
dict(type="Collect", keys=["img"]), | |
], | |
), | |
] | |
data = dict( | |
samples_per_gpu=5, | |
workers_per_gpu=5, | |
train=dict( | |
_delete_=True, | |
type="SemiDataset", | |
sup=dict( | |
type="CocoDataset", | |
ann_file="data/coco/annotations/semi_supervised/instances_train2017.${fold}@${percent}.json", | |
img_prefix="data/coco/train2017/", | |
pipeline=train_pipeline, | |
), | |
unsup=dict( | |
type="CocoDataset", | |
ann_file="data/coco/annotations/semi_supervised/instances_train2017.${fold}@${percent}-unlabeled.json", | |
img_prefix="data/coco/train2017/", | |
pipeline=unsup_pipeline, | |
filter_empty_gt=False, | |
), | |
), | |
val=dict(pipeline=test_pipeline), | |
test=dict(pipeline=test_pipeline), | |
sampler=dict( | |
train=dict( | |
type="SemiBalanceSampler", | |
sample_ratio=[1, 4], | |
by_prob=True, | |
# at_least_one=True, | |
epoch_length=7330, | |
) | |
), | |
) | |
semi_wrapper = dict( | |
type="MaskSoftTeacher", | |
model="${model}", | |
train_cfg=dict( | |
use_teacher_proposal=False, | |
pseudo_label_initial_score_thr=0.5, | |
rpn_pseudo_threshold=0.9, | |
cls_pseudo_threshold=0.9, | |
reg_pseudo_threshold=0.02, | |
jitter_times=10, | |
jitter_scale=0.06, | |
min_pseduo_box_size=0, | |
unsup_weight=4.0, | |
pseudo_mask_thr=0.5, | |
), | |
test_cfg=dict(inference_on="student"), | |
) | |
custom_hooks = [ | |
dict(type="NumClassCheckHook"), | |
dict(type="WeightSummary"), | |
dict(type="MeanTeacher", momentum=0.999, interval=1, warm_up=0), | |
] | |
evaluation = dict(type="SubModulesDistEvalHook", interval=4000, metric=["bbox", "segm"]) | |
optimizer = dict(type="SGD", lr=0.01, momentum=0.9, weight_decay=0.0001) | |
lr_config = dict(step=[120000, 160000]) | |
runner = dict(_delete_=True, type="IterBasedRunner", max_iters=180000) | |
checkpoint_config = dict(by_epoch=False, interval=4000, max_keep_ckpts=20) | |
fp16 = dict(loss_scale="dynamic") | |
fold = 1 | |
percent = 1 | |
work_dir = "work_dirs/${cfg_name}/${percent}/${fold}" | |
log_config = dict( | |
interval=50, | |
hooks=[ | |
dict(type="TextLoggerHook"), | |
dict( | |
type="WandbLoggerHook", | |
init_kwargs=dict( | |
project="pre_release", | |
name="${cfg_name}", | |
config=dict( | |
fold="${fold}", | |
percent="${percent}", | |
work_dirs="${work_dir}", | |
total_step="${runner.max_iters}", | |
), | |
), | |
by_epoch=False, | |
), | |
], | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment