"test/srt/test_full_deepseek_v3.py" did not exist on "d4017a6b6339257888484f86d9d20a20546111fe"
test_indoor_pipeline.py 6.97 KB
Newer Older
liyinhao's avatar
liyinhao committed
1
2
3
4
5
6
7
8
9
import os.path as osp

import mmcv
import numpy as np

from mmdet3d.datasets.pipelines import Compose


def test_scannet_pipeline():
10
11
12
13
14
    class_names = ('cabinet', 'bed', 'chair', 'sofa', 'table', 'door',
                   'window', 'bookshelf', 'picture', 'counter', 'desk',
                   'curtain', 'refrigerator', 'showercurtrain', 'toilet',
                   'sink', 'bathtub', 'garbagebin')

liyinhao's avatar
liyinhao committed
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    np.random.seed(0)
    pipelines = [
        dict(
            type='IndoorLoadPointsFromFile',
            use_height=True,
            load_dim=6,
            use_dim=[0, 1, 2]),
        dict(type='IndoorLoadAnnotations3D'),
        dict(type='IndoorPointSample', num_points=5),
        dict(type='IndoorFlipData', flip_ratio_yz=1.0, flip_ratio_xz=1.0),
        dict(
            type='IndoorGlobalRotScale',
            use_height=True,
            rot_range=[-np.pi * 1 / 36, np.pi * 1 / 36],
29
30
31
32
33
34
35
36
            scale_range=None),
        dict(type='DefaultFormatBundle3D', class_names=class_names),
        dict(
            type='Collect3D',
            keys=[
                'points', 'gt_bboxes_3d', 'gt_labels', 'pts_semantic_mask',
                'pts_instance_mask'
            ]),
liyinhao's avatar
liyinhao committed
37
38
    ]
    pipeline = Compose(pipelines)
yinchimaoliang's avatar
yinchimaoliang committed
39
    info = mmcv.load('./tests/data/scannet/scannet_infos.pkl')[0]
liyinhao's avatar
liyinhao committed
40
41
42
43
44
45
46
    results = dict()
    data_path = './tests/data/scannet/scannet_train_instance_data'
    results['data_path'] = data_path
    scan_name = info['point_cloud']['lidar_idx']
    results['pts_filename'] = osp.join(data_path, f'{scan_name}_vert.npy')
    if info['annos']['gt_num'] != 0:
        scannet_gt_bboxes_3d = info['annos']['gt_boxes_upright_depth']
47
48
49
        scannet_gt_labels = info['annos']['class']
        scannet_gt_bboxes_3d_mask = np.ones_like(scannet_gt_labels).astype(
            np.bool)
liyinhao's avatar
liyinhao committed
50
51
    else:
        scannet_gt_bboxes_3d = np.zeros((1, 6), dtype=np.float32)
52
53
        scannet_gt_labels = np.zeros((1, ))
        scannet_gt_bboxes_3d_mask = np.zeros((1, )).astype(np.bool)
liyinhao's avatar
liyinhao committed
54
    scan_name = info['point_cloud']['lidar_idx']
55

liyinhao's avatar
liyinhao committed
56
57
58
59
60
61
62
    results['pts_instance_mask_path'] = osp.join(data_path,
                                                 f'{scan_name}_ins_label.npy')
    results['pts_semantic_mask_path'] = osp.join(data_path,
                                                 f'{scan_name}_sem_label.npy')
    results['gt_bboxes_3d'] = scannet_gt_bboxes_3d
    results['gt_labels'] = scannet_gt_labels
    results['gt_bboxes_3d_mask'] = scannet_gt_bboxes_3d_mask
63

liyinhao's avatar
liyinhao committed
64
    results = pipeline(results)
65
66
67
68

    points = results['points']._data
    gt_bboxes_3d = results['gt_bboxes_3d']._data
    gt_labels = results['gt_labels']._data
liyinhao's avatar
liyinhao committed
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
    pts_semantic_mask = results['pts_semantic_mask']
    pts_instance_mask = results['pts_instance_mask']
    expected_points = np.array(
        [[-2.9078157, -1.9569951, 2.3543026, 2.389488],
         [-0.71360034, -3.4359822, 2.1330001, 2.1681855],
         [-1.332374, 1.474838, -0.04405887, -0.00887359],
         [2.1336637, -1.3265059, -0.02880373, 0.00638155],
         [0.43895668, -3.0259454, 1.5560012, 1.5911865]])
    expected_gt_bboxes_3d = np.array([
        [-1.5005362, -3.512584, 1.8565295, 1.7457027, 0.24149807, 0.57235193],
        [-2.8848705, 3.4961755, 1.5268247, 0.66170084, 0.17433672, 0.67153597],
        [-1.1585636, -2.192365, 0.61649567, 0.5557011, 2.5375574, 1.2144762],
        [-2.930457, -2.4856408, 0.9722377, 0.6270478, 1.8461524, 0.28697443],
        [3.3114715, -0.00476722, 1.0712197, 0.46191898, 3.8605113, 2.1603441]
    ])
    expected_gt_labels = np.array([
        6, 6, 4, 9, 11, 11, 10, 0, 15, 17, 17, 17, 3, 12, 4, 4, 14, 1, 0, 0, 0,
        0, 0, 0, 5, 5, 5
    ])
    expected_pts_semantic_mask = np.array([3, 1, 2, 2, 15])
    expected_pts_instance_mask = np.array([44, 22, 10, 10, 57])
    assert np.allclose(points, expected_points)
    assert np.allclose(gt_bboxes_3d[:5, :], expected_gt_bboxes_3d)
92
    assert np.all(gt_labels.numpy() == expected_gt_labels)
liyinhao's avatar
liyinhao committed
93
94
    assert np.all(pts_semantic_mask == expected_pts_semantic_mask)
    assert np.all(pts_instance_mask == expected_pts_instance_mask)
yinchimaoliang's avatar
yinchimaoliang committed
95
96
97


def test_sunrgbd_pipeline():
98
99
    class_names = ('bed', 'table', 'sofa', 'chair', 'toilet', 'desk',
                   'dresser', 'night_stand', 'bookshelf', 'bathtub')
yinchimaoliang's avatar
yinchimaoliang committed
100
101
102
103
104
105
106
107
108
109
110
111
112
113
    np.random.seed(0)
    pipelines = [
        dict(
            type='IndoorLoadPointsFromFile',
            use_height=True,
            load_dim=6,
            use_dim=[0, 1, 2]),
        dict(type='IndoorFlipData', flip_ratio_yz=1.0),
        dict(
            type='IndoorGlobalRotScale',
            use_height=True,
            rot_range=[-np.pi / 6, np.pi / 6],
            scale_range=[0.85, 1.15]),
        dict(type='IndoorPointSample', num_points=5),
114
115
        dict(type='DefaultFormatBundle3D', class_names=class_names),
        dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels']),
yinchimaoliang's avatar
yinchimaoliang committed
116
117
118
119
120
121
122
123
124
125
126
    ]
    pipeline = Compose(pipelines)
    results = dict()
    info = mmcv.load('./tests/data/sunrgbd/sunrgbd_infos.pkl')[0]
    data_path = './tests/data/sunrgbd/sunrgbd_trainval'
    scan_name = info['point_cloud']['lidar_idx']
    results['pts_filename'] = osp.join(data_path, 'lidar',
                                       f'{scan_name:06d}.npy')

    if info['annos']['gt_num'] != 0:
        gt_bboxes_3d = info['annos']['gt_boxes_upright_depth']
127
128
        gt_labels = info['annos']['class']
        gt_bboxes_3d_mask = np.ones_like(gt_labels).astype(np.bool)
yinchimaoliang's avatar
yinchimaoliang committed
129
130
    else:
        gt_bboxes_3d = np.zeros((1, 6), dtype=np.float32)
131
132
133
        gt_labels = np.zeros((1, ))
        gt_bboxes_3d_mask = np.zeros((1, )).astype(np.bool)

yinchimaoliang's avatar
yinchimaoliang committed
134
135
136
137
    results['gt_bboxes_3d'] = gt_bboxes_3d
    results['gt_labels'] = gt_labels
    results['gt_bboxes_3d_mask'] = gt_bboxes_3d_mask
    results = pipeline(results)
138
139
140
    points = results['points']._data
    gt_bboxes_3d = results['gt_bboxes_3d']._data
    gt_labels = results['gt_labels']._data
yinchimaoliang's avatar
yinchimaoliang committed
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
    expected_points = np.array(
        [[0.6570105, 1.5538014, 0.24514851, 1.0165423],
         [0.656101, 1.558591, 0.21755838, 0.98895216],
         [0.6293659, 1.5679953, -0.10004003, 0.67135376],
         [0.6068739, 1.5974995, -0.41063973, 0.36075398],
         [0.6464709, 1.5573514, 0.15114647, 0.9225402]])
    expected_gt_bboxes_3d = np.array([[
        -2.012483, 3.9473376, -0.25446942, 2.3730404, 1.9457763, 2.0303352,
        1.2205974
    ],
                                      [
                                          -3.7036808, 4.2396426, -0.81091917,
                                          0.6032123, 0.91040343, 1.003341,
                                          1.2662518
                                      ],
                                      [
                                          0.6528646, 2.1638472, -0.15228128,
                                          0.7347852, 1.6113238, 2.1694272,
                                          2.81404
                                      ]])
    expected_gt_labels = np.array([0, 7, 6])
    assert np.allclose(gt_bboxes_3d, expected_gt_bboxes_3d)
    assert np.allclose(gt_labels.flatten(), expected_gt_labels)
yinchimaoliang's avatar
yinchimaoliang committed
164
    assert np.allclose(points, expected_points)