test_indoor_loading.py 4.53 KB
Newer Older
liyinhao's avatar
liyinhao committed
1
2
import os.path as osp

liyinhao's avatar
liyinhao committed
3
import mmcv
liyinhao's avatar
liyinhao committed
4
import numpy as np
liyinhao's avatar
liyinhao committed
5

liyinhao's avatar
liyinhao committed
6
7
from mmdet3d.datasets.pipelines.indoor_loading import (LoadAnnotations3D,
                                                       LoadPointsFromFile)
liyinhao's avatar
liyinhao committed
8
9


liyinhao's avatar
liyinhao committed
10
def test_load_points_from_file():
11
    sunrgbd_info = mmcv.load('./tests/data/sunrgbd/sunrgbd_infos.pkl')
12
    sunrgbd_load_points_from_file = LoadPointsFromFile(True, 6)
liyinhao's avatar
liyinhao committed
13
    sunrgbd_results = dict()
liyinhao's avatar
liyinhao committed
14
15
16
17
    data_path = './tests/data/sunrgbd/sunrgbd_trainval'
    sunrgbd_info = sunrgbd_info[0]
    scan_name = sunrgbd_info['point_cloud']['lidar_idx']
    sunrgbd_results['pts_filename'] = osp.join(data_path, 'lidar',
18
                                               '%06d.npy' % scan_name)
liyinhao's avatar
liyinhao committed
19
    sunrgbd_results = sunrgbd_load_points_from_file(sunrgbd_results)
liyinhao's avatar
liyinhao committed
20
    sunrgbd_point_cloud = sunrgbd_results.get('points', None)
liyinhao's avatar
liyinhao committed
21
    assert sunrgbd_point_cloud.shape == (100, 4)
liyinhao's avatar
liyinhao committed
22
23

    scannet_info = mmcv.load('./tests/data/scannet/scannet_infos.pkl')
24
    scannet_load_data = LoadPointsFromFile(True)
liyinhao's avatar
liyinhao committed
25
    scannet_results = dict()
liyinhao's avatar
liyinhao committed
26
27
28
29
    data_path = './tests/data/scannet/scannet_train_instance_data'
    scannet_results['data_path'] = data_path
    scannet_info = scannet_info[0]
    scan_name = scannet_info['point_cloud']['lidar_idx']
liyinhao's avatar
liyinhao committed
30

liyinhao's avatar
liyinhao committed
31
32
    scannet_results['pts_filename'] = osp.join(data_path,
                                               scan_name + '_vert.npy')
liyinhao's avatar
liyinhao committed
33
    scannet_results = scannet_load_data(scannet_results)
liyinhao's avatar
liyinhao committed
34
    scannet_point_cloud = scannet_results.get('points', None)
liyinhao's avatar
liyinhao committed
35
    assert scannet_point_cloud.shape == (100, 4)
liyinhao's avatar
liyinhao committed
36
37
38


def test_load_annotations3D():
liyinhao's avatar
liyinhao committed
39
    sunrgbd_info = mmcv.load('./tests/data/sunrgbd/sunrgbd_infos.pkl')[0]
liyinhao's avatar
liyinhao committed
40
41
    sunrgbd_load_annotations3D = LoadAnnotations3D()
    sunrgbd_results = dict()
liyinhao's avatar
liyinhao committed
42
43
44
45
46
47
48
49
50
51
52
    if sunrgbd_info['annos']['gt_num'] != 0:
        sunrgbd_gt_bboxes_3d = sunrgbd_info['annos']['gt_boxes_upright_depth']
        sunrgbd_gt_labels = sunrgbd_info['annos']['class'].reshape(-1, 1)
        sunrgbd_gt_bboxes_3d_mask = np.ones_like(sunrgbd_gt_labels)
    else:
        sunrgbd_gt_bboxes_3d = np.zeros((1, 6), dtype=np.float32)
        sunrgbd_gt_labels = np.zeros((1, 1))
        sunrgbd_gt_bboxes_3d_mask = np.zeros((1, 1))
    sunrgbd_results['gt_bboxes_3d'] = sunrgbd_gt_bboxes_3d
    sunrgbd_results['gt_labels'] = sunrgbd_gt_labels
    sunrgbd_results['gt_bboxes_3d_mask'] = sunrgbd_gt_bboxes_3d_mask
liyinhao's avatar
liyinhao committed
53
    sunrgbd_results = sunrgbd_load_annotations3D(sunrgbd_results)
liyinhao's avatar
liyinhao committed
54
    sunrgbd_gt_boxes = sunrgbd_results.get('gt_bboxes_3d', None)
liyinhao's avatar
liyinhao committed
55
    sunrgbd_gt_lbaels = sunrgbd_results.get('gt_labels', None)
liyinhao's avatar
liyinhao committed
56
    sunrgbd_gt_boxes_mask = sunrgbd_results.get('gt_bboxes_3d_mask', None)
liyinhao's avatar
liyinhao committed
57
    assert sunrgbd_gt_boxes.shape == (3, 7)
liyinhao's avatar
liyinhao committed
58
    assert sunrgbd_gt_lbaels.shape == (3, 1)
liyinhao's avatar
liyinhao committed
59
    assert sunrgbd_gt_boxes_mask.shape == (3, 1)
liyinhao's avatar
liyinhao committed
60

liyinhao's avatar
liyinhao committed
61
    scannet_info = mmcv.load('./tests/data/scannet/scannet_infos.pkl')[0]
liyinhao's avatar
liyinhao committed
62
    scannet_load_annotations3D = LoadAnnotations3D()
liyinhao's avatar
liyinhao committed
63
    scannet_results = dict()
liyinhao's avatar
liyinhao committed
64
    data_path = './tests/data/scannet/scannet_train_instance_data'
liyinhao's avatar
liyinhao committed
65
66
67
68
69
70
71
72
    if scannet_info['annos']['gt_num'] != 0:
        scannet_gt_bboxes_3d = scannet_info['annos']['gt_boxes_upright_depth']
        scannet_gt_labels = scannet_info['annos']['class'].reshape(-1, 1)
        scannet_gt_bboxes_3d_mask = np.ones_like(scannet_gt_labels)
    else:
        scannet_gt_bboxes_3d = np.zeros((1, 6), dtype=np.float32)
        scannet_gt_labels = np.zeros((1, 1))
        scannet_gt_bboxes_3d_mask = np.zeros((1, 1))
liyinhao's avatar
liyinhao committed
73
74
75
76
77
78
    scan_name = scannet_info['point_cloud']['lidar_idx']
    scannet_results['ins_labelname'] = osp.join(data_path,
                                                scan_name + '_ins_label.npy')
    scannet_results['sem_labelname'] = osp.join(data_path,
                                                scan_name + '_sem_label.npy')
    scannet_results['info'] = scannet_info
liyinhao's avatar
liyinhao committed
79
80
81
    scannet_results['gt_bboxes_3d'] = scannet_gt_bboxes_3d
    scannet_results['gt_labels'] = scannet_gt_labels
    scannet_results['gt_bboxes_3d_mask'] = scannet_gt_bboxes_3d_mask
liyinhao's avatar
liyinhao committed
82
    scannet_results = scannet_load_annotations3D(scannet_results)
liyinhao's avatar
liyinhao committed
83
    scannet_gt_boxes = scannet_results.get('gt_bboxes_3d', None)
liyinhao's avatar
liyinhao committed
84
    scannet_gt_lbaels = scannet_results.get('gt_labels', None)
liyinhao's avatar
liyinhao committed
85
    scannet_gt_boxes_mask = scannet_results.get('gt_bboxes_3d_mask', None)
liyinhao's avatar
liyinhao committed
86
87
    scannet_pts_instance_mask = scannet_results.get('pts_instance_mask', None)
    scannet_pts_semantic_mask = scannet_results.get('pts_semantic_mask', None)
liyinhao's avatar
liyinhao committed
88
    assert scannet_gt_boxes.shape == (27, 6)
liyinhao's avatar
liyinhao committed
89
    assert scannet_gt_lbaels.shape == (27, 1)
liyinhao's avatar
liyinhao committed
90
    assert scannet_gt_boxes_mask.shape == (27, 1)
liyinhao's avatar
liyinhao committed
91
92
    assert scannet_pts_instance_mask.shape == (100, )
    assert scannet_pts_semantic_mask.shape == (100, )