File size: 14,805 Bytes
e3962e4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
model = dict(
    type='SelfSupDetector',
    backbone=dict(
        type='SelfSupMaskRCNN',
        backbone=dict(
            type='ResNet',
            depth=50,
            num_stages=4,
            out_indices=(0, 1, 2, 3),
            frozen_stages=4,
            norm_cfg=dict(type='BN', requires_grad=False),
            norm_eval=True,
            style='pytorch',
            init_cfg=dict(
                type='Pretrained', checkpoint='torchvision://resnet50')),
        neck=dict(
            type='FPN',
            in_channels=[256, 512, 1024, 2048],
            out_channels=256,
            num_outs=5),
        rpn_head=dict(
            type='RPNHead',
            in_channels=256,
            feat_channels=256,
            anchor_generator=dict(
                type='AnchorGenerator',
                scales=[8],
                ratios=[0.5, 1.0, 2.0],
                strides=[4, 8, 16, 32, 64]),
            bbox_coder=dict(
                type='DeltaXYWHBBoxCoder',
                target_means=[0.0, 0.0, 0.0, 0.0],
                target_stds=[1.0, 1.0, 1.0, 1.0]),
            loss_cls=dict(
                type='CrossEntropyLoss', use_sigmoid=True, loss_weight=1.0),
            loss_bbox=dict(type='L1Loss', loss_weight=1.0)),
        roi_head=dict(
            type='SelfSupStandardRoIHead',
            bbox_roi_extractor=dict(
                type='SingleRoIExtractor',
                roi_layer=dict(
                    type='RoIAlign', output_size=7, sampling_ratio=0),
                out_channels=256,
                featmap_strides=[4, 8, 16, 32]),
            bbox_head=dict(
                type='SelfSupShared4Conv1FCBBoxHead',
                in_channels=256,
                num_classes=256,
                roi_feat_size=7,
                loss_cls=dict(
                    type='ContrastiveLoss', loss_weight=1.0, temperature=0.5)),
            mask_roi_extractor=None,
            mask_head=None),
        train_cfg=dict(
            rpn=dict(
                assigner=dict(
                    type='MaxIoUAssigner',
                    pos_iou_thr=0.7,
                    neg_iou_thr=0.3,
                    min_pos_iou=0.3,
                    match_low_quality=True,
                    ignore_iof_thr=-1),
                sampler=dict(
                    type='RandomSampler',
                    num=4096,
                    pos_fraction=1.0,
                    neg_pos_ub=-1,
                    add_gt_as_proposals=False),
                allowed_border=-1,
                pos_weight=-1,
                debug=False),
            rpn_proposal=dict(
                nms_pre=2000,
                max_per_img=1000,
                nms=dict(type='nms', iou_threshold=0.7),
                min_bbox_size=0),
            rcnn=dict(
                assigner=dict(
                    type='MaxIoUAssigner',
                    pos_iou_thr=0.5,
                    neg_iou_thr=0.5,
                    min_pos_iou=0.5,
                    match_low_quality=True,
                    ignore_iof_thr=-1,
                    gt_max_assign_all=False),
                sampler=dict(
                    type='RandomSampler',
                    num=4096,
                    pos_fraction=1,
                    neg_pos_ub=0,
                    add_gt_as_proposals=True),
                mask_size=28,
                pos_weight=-1,
                debug=False)),
        test_cfg=dict(
            rpn=dict(
                nms_pre=1000,
                max_per_img=1000,
                nms=dict(type='nms', iou_threshold=0.7),
                min_bbox_size=0),
            rcnn=dict(
                score_thr=0.05,
                nms=dict(type='nms', iou_threshold=0.5),
                max_per_img=100,
                mask_thr_binary=0.5))))
train_dataset_type = 'MultiViewCocoDataset'
test_dataset_type = 'CocoDataset'
data_root = 'data/coco/'
classes = ['selective_search']
img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
load_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='LoadAnnotations', with_bbox=True, with_mask=False)
]
train_pipeline1 = [
    dict(
        type='Resize',
        img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),
                   (1333, 768), (1333, 800)],
        multiscale_mode='value',
        keep_ratio=True),
    dict(type='FilterAnnotations', min_gt_bbox_wh=(0.01, 0.01)),
    dict(type='Pad', size_divisor=32),
    dict(type='RandFlip', flip_ratio=0.5),
    dict(
        type='OneOf',
        transforms=[
            dict(type='Identity'),
            dict(type='AutoContrast'),
            dict(type='RandEqualize'),
            dict(type='RandSolarize'),
            dict(type='RandColor'),
            dict(type='RandContrast'),
            dict(type='RandBrightness'),
            dict(type='RandSharpness'),
            dict(type='RandPosterize')
        ]),
    dict(
        type='Normalize',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]
train_pipeline2 = [
    dict(
        type='Resize',
        img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736),
                   (1333, 768), (1333, 800)],
        multiscale_mode='value',
        keep_ratio=True),
    dict(type='FilterAnnotations', min_gt_bbox_wh=(0.01, 0.01)),
    dict(type='Pad', size_divisor=32),
    dict(type='RandFlip', flip_ratio=0.5),
    dict(
        type='OneOf',
        transforms=[
            dict(type='Identity'),
            dict(type='AutoContrast'),
            dict(type='RandEqualize'),
            dict(type='RandSolarize'),
            dict(type='RandColor'),
            dict(type='RandContrast'),
            dict(type='RandBrightness'),
            dict(type='RandSharpness'),
            dict(type='RandPosterize')
        ]),
    dict(
        type='Normalize',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels'])
]
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',
                mean=[123.675, 116.28, 103.53],
                std=[58.395, 57.12, 57.375],
                to_rgb=True),
            dict(type='Pad', size_divisor=32),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img'])
        ])
]
data = dict(
    samples_per_gpu=2,
    workers_per_gpu=2,
    train=dict(
        type='MultiViewCocoDataset',
        dataset=dict(
            type='CocoDataset',
            classes=['selective_search'],
            ann_file=
            'data/coco/filtered_proposals/train2017_ratio3size0008@0.5.json',
            img_prefix='data/coco/train2017/',
            pipeline=[
                dict(type='LoadImageFromFile'),
                dict(type='LoadAnnotations', with_bbox=True, with_mask=False)
            ]),
        num_views=2,
        pipelines=[[{
            'type':
            'Resize',
            'img_scale': [(1333, 640), (1333, 672), (1333, 704), (1333, 736),
                          (1333, 768), (1333, 800)],
            'multiscale_mode':
            'value',
            'keep_ratio':
            True
        }, {
            'type': 'FilterAnnotations',
            'min_gt_bbox_wh': (0.01, 0.01)
        }, {
            'type': 'Pad',
            'size_divisor': 32
        }, {
            'type': 'RandFlip',
            'flip_ratio': 0.5
        }, {
            'type':
            'OneOf',
            'transforms': [{
                'type': 'Identity'
            }, {
                'type': 'AutoContrast'
            }, {
                'type': 'RandEqualize'
            }, {
                'type': 'RandSolarize'
            }, {
                'type': 'RandColor'
            }, {
                'type': 'RandContrast'
            }, {
                'type': 'RandBrightness'
            }, {
                'type': 'RandSharpness'
            }, {
                'type': 'RandPosterize'
            }]
        }, {
            'type': 'Normalize',
            'mean': [123.675, 116.28, 103.53],
            'std': [58.395, 57.12, 57.375],
            'to_rgb': True
        }, {
            'type': 'DefaultFormatBundle'
        }, {
            'type': 'Collect',
            'keys': ['img', 'gt_bboxes', 'gt_labels']
        }],
                   [{
                       'type':
                       'Resize',
                       'img_scale': [(1333, 640), (1333, 672), (1333, 704),
                                     (1333, 736), (1333, 768), (1333, 800)],
                       'multiscale_mode':
                       'value',
                       'keep_ratio':
                       True
                   }, {
                       'type': 'FilterAnnotations',
                       'min_gt_bbox_wh': (0.01, 0.01)
                   }, {
                       'type': 'Pad',
                       'size_divisor': 32
                   }, {
                       'type': 'RandFlip',
                       'flip_ratio': 0.5
                   }, {
                       'type':
                       'OneOf',
                       'transforms': [{
                           'type': 'Identity'
                       }, {
                           'type': 'AutoContrast'
                       }, {
                           'type': 'RandEqualize'
                       }, {
                           'type': 'RandSolarize'
                       }, {
                           'type': 'RandColor'
                       }, {
                           'type': 'RandContrast'
                       }, {
                           'type': 'RandBrightness'
                       }, {
                           'type': 'RandSharpness'
                       }, {
                           'type': 'RandPosterize'
                       }]
                   }, {
                       'type': 'Normalize',
                       'mean': [123.675, 116.28, 103.53],
                       'std': [58.395, 57.12, 57.375],
                       'to_rgb': True
                   }, {
                       'type': 'DefaultFormatBundle'
                   }, {
                       'type': 'Collect',
                       'keys': ['img', 'gt_bboxes', 'gt_labels']
                   }]]),
    val=dict(
        type='CocoDataset',
        classes=['selective_search'],
        ann_file='data/coco/annotations/instances_val2017.json',
        img_prefix='data/coco/val2017/',
        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',
                        mean=[123.675, 116.28, 103.53],
                        std=[58.395, 57.12, 57.375],
                        to_rgb=True),
                    dict(type='Pad', size_divisor=32),
                    dict(type='ImageToTensor', keys=['img']),
                    dict(type='Collect', keys=['img'])
                ])
        ]),
    test=dict(
        type='CocoDataset',
        classes=['selective_search'],
        ann_file='data/coco/annotations/instances_val2017.json',
        img_prefix='data/coco/val2017/',
        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',
                        mean=[123.675, 116.28, 103.53],
                        std=[58.395, 57.12, 57.375],
                        to_rgb=True),
                    dict(type='Pad', size_divisor=32),
                    dict(type='ImageToTensor', keys=['img']),
                    dict(type='Collect', keys=['img'])
                ])
        ]))
evaluation = dict(interval=65535)
optimizer = dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)
lr_config = dict(
    policy='step',
    warmup='linear',
    warmup_iters=500,
    warmup_ratio=0.001,
    step=[8, 11])
runner = dict(type='EpochBasedRunner', max_epochs=12)
checkpoint_config = dict(interval=1)
log_config = dict(interval=50, hooks=[dict(type='TextLoggerHook')])
custom_hooks = [
    dict(type='MomentumUpdateHook'),
    dict(
        type='MMDetWandbHook',
        init_kwargs=dict(project='I2B', group='pretrain'),
        interval=50,
        num_eval_images=0,
        log_checkpoint=False)
]
dist_params = dict(backend='nccl')
log_level = 'INFO'
load_from = None
resume_from = None
workflow = [('train', 1)]
opencv_num_threads = 0
mp_start_method = 'fork'
auto_scale_lr = dict(enable=False, base_batch_size=16)
custom_imports = dict(
    imports=[
        'mmselfsup.datasets.pipelines',
        'selfsup.core.hook.momentum_update_hook',
        'selfsup.datasets.pipelines.selfsup_pipelines',
        'selfsup.datasets.pipelines.rand_aug',
        'selfsup.datasets.single_view_coco',
        'selfsup.datasets.multi_view_coco',
        'selfsup.models.losses.contrastive_loss',
        'selfsup.models.dense_heads.fcos_head',
        'selfsup.models.dense_heads.retina_head',
        'selfsup.models.dense_heads.detr_head',
        'selfsup.models.dense_heads.deformable_detr_head',
        'selfsup.models.roi_heads.bbox_heads.convfc_bbox_head',
        'selfsup.models.roi_heads.standard_roi_head',
        'selfsup.models.detectors.selfsup_detector',
        'selfsup.models.detectors.selfsup_fcos',
        'selfsup.models.detectors.selfsup_detr',
        'selfsup.models.detectors.selfsup_deformable_detr',
        'selfsup.models.detectors.selfsup_retinanet',
        'selfsup.models.detectors.selfsup_mask_rcnn',
        'selfsup.core.bbox.assigners.hungarian_assigner',
        'selfsup.core.bbox.match_costs.match_cost'
    ],
    allow_failed_imports=False)
work_dir = 'work_dirs/selfsup_mask-rcnn_mstrain-soft-teacher_sampler-4096_temp0.5'
auto_resume = False
gpu_ids = range(0, 8)