test_dla_neck.py 1.41 KB
Newer Older
VVsssssk's avatar
VVsssssk committed
1
2
3
4
# Copyright (c) OpenMMLab. All rights reserved.

import torch

5
from mmdet3d.registry import MODELS
VVsssssk's avatar
VVsssssk committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21


def test_dla_neck():

    s = 32
    in_channels = [16, 32, 64, 128, 256, 512]
    feat_sizes = [s // 2**i for i in range(6)]  # [32, 16, 8, 4, 2, 1]

    if torch.cuda.is_available():
        # Test DLA Neck with DCNv2 on GPU
        neck_cfg = dict(
            type='DLANeck',
            in_channels=[16, 32, 64, 128, 256, 512],
            start_level=2,
            end_level=5,
            norm_cfg=dict(type='GN', num_groups=32))
22
        neck = MODELS.build(neck_cfg)
VVsssssk's avatar
VVsssssk committed
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
        neck.init_weights()
        neck.cuda()
        feats = [
            torch.rand(4, in_channels[i], feat_sizes[i], feat_sizes[i]).cuda()
            for i in range(len(in_channels))
        ]
        outputs = neck(feats)
        assert outputs[0].shape == (4, 64, 8, 8)
    else:
        # Test DLA Neck without DCNv2 on CPU
        neck_cfg = dict(
            type='DLANeck',
            in_channels=[16, 32, 64, 128, 256, 512],
            start_level=2,
            end_level=5,
            norm_cfg=dict(type='GN', num_groups=32),
            use_dcn=False)
40
        neck = MODELS.build(neck_cfg)
VVsssssk's avatar
VVsssssk committed
41
42
43
44
45
46
47
        neck.init_weights()
        feats = [
            torch.rand(4, in_channels[i], feat_sizes[i], feat_sizes[i])
            for i in range(len(in_channels))
        ]
        outputs = neck(feats)
        assert outputs[0].shape == (4, 64, 8, 8)