Skip to content

Commit 23c9fd7

Browse files
author
jinwonkim93
committed
add config file for occlusion face
1 parent d5e79fa commit 23c9fd7

File tree

2 files changed

+148
-0
lines changed

2 files changed

+148
-0
lines changed
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
dataset_type = 'FaceOccluded'
2+
data_root = 'data/occlusion-aware-dataset'
3+
crop_size = (512, 512)
4+
img_norm_cfg = dict(
5+
mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
6+
train_pipeline = [
7+
dict(type='LoadImageFromFile'),
8+
dict(type='LoadAnnotations'),
9+
dict(type='Resize', img_scale=(512, 512)),
10+
dict(type='RandomFlip', prob=0.5),
11+
dict(type='RandomRotate', degree=(-30, 30), prob=0.5),
12+
dict(type='PhotoMetricDistortion'),
13+
dict(
14+
type='Normalize',
15+
mean=[123.675, 116.28, 103.53],
16+
std=[58.395, 57.12, 57.375],
17+
to_rgb=True),
18+
dict(type='DefaultFormatBundle'),
19+
dict(type='Collect', keys=['img', 'gt_semantic_seg'])
20+
]
21+
test_pipeline = [
22+
dict(type='LoadImageFromFile'),
23+
dict(
24+
type='MultiScaleFlipAug',
25+
img_scale=(512, 512),
26+
img_ratios=[0.5, 0.75, 1.0, 1.25, 1.5, 1.75],
27+
flip=True,
28+
transforms=[
29+
dict(type='Resize', keep_ratio=True),
30+
dict(type='ResizeToMultiple', size_divisor=32),
31+
dict(type='RandomFlip'),
32+
dict(
33+
type='Normalize',
34+
mean=[123.675, 116.28, 103.53],
35+
std=[58.395, 57.12, 57.375],
36+
to_rgb=True),
37+
dict(type='ImageToTensor', keys=['img']),
38+
dict(type='Collect', keys=['img'])
39+
])
40+
]
41+
42+
dataset_train_A = dict(
43+
type='FaceOccluded',
44+
data_root=data_root,
45+
img_dir='CelebAMask-HQ-original/image',
46+
ann_dir='CelebAMask-HQ-original/mask_edited',
47+
split='CelebAMask-HQ-original/split/train_ori.txt',
48+
pipeline=train_pipeline)
49+
50+
dataset_train_B = dict(
51+
type='FaceOccluded',
52+
data_root=data_root,
53+
img_dir='NatOcc-SOT/image',
54+
ann_dir='NatOcc-SOT/mask',
55+
split='NatOcc-SOT/split/train.txt',
56+
pipeline=train_pipeline)
57+
58+
59+
dataset_valid = dict(
60+
type='FaceOccluded',
61+
data_root=data_root,
62+
img_dir='occlusion-aware-dataset/HQ-FO-dataset/RealOcc/image',
63+
ann_dir='occlusion-aware-dataset/HQ-FO-dataset/RealOcc/mask',
64+
split='occlusion-aware-dataset/HQ-FO-dataset/RealOcc/split/val.txt',
65+
pipeline=test_pipeline)
66+
67+
dataset_test = dict(
68+
type='FaceOccluded',
69+
data_root=data_root,
70+
img_dir='occlusion-aware-dataset/HQ-FO-dataset/RealOcc/image',
71+
ann_dir='occlusion-aware-dataset/HQ-FO-dataset/RealOcc/mask',
72+
split='occlusion-aware-dataset/HQ-FO-dataset/RealOcc/test.txt',
73+
pipeline=test_pipeline)
74+
75+
data = dict(
76+
samples_per_gpu=2,
77+
workers_per_gpu=2,
78+
train=[
79+
dataset_train_A,dataset_train_B,
80+
],
81+
val= dataset_valid,
82+
test=dataset_test)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# +
2+
_base_ = '../_base_/dataset/occlude_face.py'
3+
norm_cfg = dict(type='SyncBN', requires_grad=True)
4+
model = dict(
5+
type='EncoderDecoder',
6+
pretrained='open-mmlab://resnet101_v1c',
7+
backbone=dict(
8+
type='ResNetV1c',
9+
depth=101,
10+
num_stages=4,
11+
out_indices=(0, 1, 2, 3),
12+
dilations=(1, 1, 2, 4),
13+
strides=(1, 2, 1, 1),
14+
norm_cfg=dict(type='SyncBN', requires_grad=True),
15+
norm_eval=False,
16+
style='pytorch',
17+
contract_dilation=True),
18+
decode_head=dict(
19+
type='DepthwiseSeparableASPPHead',
20+
in_channels=2048,
21+
in_index=3,
22+
channels=512,
23+
dilations=(1, 12, 24, 36),
24+
c1_in_channels=256,
25+
c1_channels=48,
26+
dropout_ratio=0.1,
27+
num_classes=2,
28+
norm_cfg=dict(type='SyncBN', requires_grad=True),
29+
align_corners=False,
30+
loss_decode=dict(
31+
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),
32+
sampler=dict(type='OHEMPixelSampler', thresh=0.7, min_kept=10000)),
33+
auxiliary_head=dict(
34+
type='FCNHead',
35+
in_channels=1024,
36+
in_index=2,
37+
channels=256,
38+
num_convs=1,
39+
concat_input=False,
40+
dropout_ratio=0.1,
41+
num_classes=2,
42+
norm_cfg=dict(type='SyncBN', requires_grad=True),
43+
align_corners=False,
44+
loss_decode=dict(
45+
type='CrossEntropyLoss', use_sigmoid=False, loss_weight=0.4)),
46+
train_cfg=dict(),
47+
test_cfg=dict(mode='whole'))
48+
log_config = dict(
49+
interval=50, hooks=[dict(type='TextLoggerHook', by_epoch=False)])
50+
dist_params = dict(backend='nccl')
51+
log_level = 'INFO'
52+
load_from = None
53+
resume_from = None
54+
workflow = [('train', 1)]
55+
cudnn_benchmark = True
56+
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0005)
57+
optimizer_config = dict()
58+
lr_config = dict(policy='poly', power=0.9, min_lr=0.0001, by_epoch=False)
59+
runner = dict(type='IterBasedRunner', max_iters=30000)
60+
checkpoint_config = dict(by_epoch=False, interval=400)
61+
evaluation = dict(
62+
interval=400, metric=['mIoU', 'mDice', 'mFscore'], pre_eval=True)
63+
64+
work_dir = './work_dirs/deeplabv3plus_r101_512x512_C-CM+C-WO-NatOcc-SOT'
65+
gpu_ids = range(0, 2)
66+
auto_resume = False

0 commit comments

Comments
 (0)