Skip to content

Commit b78e2ee

Browse files
committed
Added normalization changes for Scannet, MultiScan & 3RScan
1 parent 736f72a commit b78e2ee

File tree

16 files changed

+324
-395
lines changed

16 files changed

+324
-395
lines changed

preprocess/feat1D/arkit.py

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import os.path as osp
2-
import torch
32
import numpy as np
4-
from tqdm import tqdm
53
import os
64
from common import load_utils
7-
from util import labelmap, arkit
5+
from util import arkit
86
from util.arkit import ARKITSCENE_SCANNET
97
from preprocess.build import PROCESSOR_REGISTRY
108
from preprocess.feat1D.base import Base1DProcessor
@@ -48,8 +46,7 @@ def load_objects_for_scan(self, scan_id):
4846
"objectId": object_id,
4947
"global_id": nyu40id
5048
})
51-
52-
49+
5350
return objects
5451

5552
def compute1DFeaturesEachScan(self, scan_id):
@@ -60,39 +57,32 @@ def compute1DFeaturesEachScan(self, scan_id):
6057

6158
pt_1d_path = osp.join(scene_out_dir, "data1D.pt")
6259
if osp.exists(pt_1d_path):
63-
pt_data=torch.load(pt_1d_path)
64-
data1D['objects'] = pt_data['objects']
65-
data1D['scene'] = pt_data['scene']
6660
os.remove(pt_1d_path)
67-
else:
68-
# objectID_to_labelID_map = torch.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.pt'))['obj_id_to_label_id_map']
69-
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
70-
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
71-
72-
scan_objects = self.load_objects_for_scan(scan_id)
61+
62+
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
63+
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
64+
65+
scan_objects = self.load_objects_for_scan(scan_id)
7366

74-
object_referral_embeddings, scene_referral_embeddings = {}, None
75-
if len(scan_objects) != 0:
76-
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, scan_objects, objectID_to_labelID_map)
67+
object_referral_embeddings, scene_referral_embeddings = {}, None
68+
if len(scan_objects) != 0:
69+
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, scan_objects, objectID_to_labelID_map)
7770

78-
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
79-
80-
if len(scene_referrals) != 0:
81-
if len(scene_referrals) > 10:
82-
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
83-
84-
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
85-
scene_referrals = ' '.join(scene_referrals)
86-
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
87-
assert scene_referral_embeddings is not None
88-
89-
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
90-
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
71+
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
72+
73+
if len(scene_referrals) != 0:
74+
if len(scene_referrals) > 10:
75+
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
9176

92-
# torch.save(data1D, osp.join(scene_out_dir, 'data1D.pt'))
77+
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
78+
scene_referrals = ' '.join(scene_referrals)
79+
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
80+
assert scene_referral_embeddings is not None
81+
82+
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
83+
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
9384
np.savez_compressed(osp.join(scene_out_dir, 'data1D.npz'), **data1D)
9485

95-
9686
def computeObjectWise1DFeaturesEachScan(self, scan_id, scan_objects, objectID_to_labelID_map):
9787
object_referral_embeddings = {}
9888

@@ -114,5 +104,4 @@ def computeObjectWise1DFeaturesEachScan(self, scan_id, scan_objects, objectID_to
114104

115105
object_referral_embeddings[instance_id] = {'referral' : object_referral, 'feats' : object_referral_feats}
116106

117-
118-
return object_referral_embeddings
107+
return object_referral_embeddings

preprocess/feat1D/multiscan.py

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -53,39 +53,32 @@ def compute1DFeaturesEachScan(self, scan_id):
5353
load_utils.ensure_dir(scene_out_dir)
5454
pt_1d_path = osp.join(scene_out_dir, "data1D.pt")
5555
if osp.exists(pt_1d_path):
56-
pt_data=torch.load(pt_1d_path)
57-
data1D['objects'] = pt_data['objects']
58-
data1D['scene'] = pt_data['scene']
5956
os.remove(pt_1d_path)
6057

61-
else:
62-
# objectID_to_labelID_map = torch.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.pt'))['obj_id_to_label_id_map']
63-
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
64-
# print(npz_data)
65-
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
66-
# print(objectID_to_labelID_map)
67-
scan_objects = self.load_objects_for_scan(scan_id)
58+
# else:
59+
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
60+
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
61+
62+
scan_objects = self.load_objects_for_scan(scan_id)
6863

69-
object_referral_embeddings, scene_referral_embeddings = {}, None
70-
if len(scan_objects) != 0:
71-
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, scan_objects, objectID_to_labelID_map)
64+
object_referral_embeddings, scene_referral_embeddings = {}, None
65+
if len(scan_objects) != 0:
66+
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, scan_objects, objectID_to_labelID_map)
7267

73-
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
74-
75-
if len(scene_referrals) != 0:
76-
if len(scene_referrals) > 10:
77-
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
78-
79-
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
80-
scene_referrals = ' '.join(scene_referrals)
81-
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
82-
assert scene_referral_embeddings is not None
68+
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
69+
70+
if len(scene_referrals) != 0:
71+
if len(scene_referrals) > 10:
72+
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
8373

84-
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
85-
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
74+
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
75+
scene_referrals = ' '.join(scene_referrals)
76+
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
77+
assert scene_referral_embeddings is not None
78+
79+
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
80+
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
8681

87-
# torch.save(data1D, osp.join(scene_out_dir, 'data1D.pt'))
88-
# Combine and save as npz
8982
np.savez_compressed(osp.join(scene_out_dir, 'data1D.npz'), **data1D)
9083

9184
def computeObjectWise1DFeaturesEachScan(self, scan_id, scan_objects, objectID_to_labelID_map):
@@ -108,6 +101,5 @@ def computeObjectWise1DFeaturesEachScan(self, scan_id, scan_objects, objectID_to
108101
assert object_referral_feats.shape == (1, self.embed_dim)
109102

110103
object_referral_embeddings[instance_id] = {'referral' : object_referral, 'feats' : object_referral_feats}
111-
112-
104+
113105
return object_referral_embeddings

preprocess/feat1D/scan3r.py

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,33 +37,29 @@ def compute1DFeaturesEachScan(self, scan_id: str) -> None:
3737
load_utils.ensure_dir(scene_out_dir)
3838
pt_1d_path = osp.join(scene_out_dir, "data1D.pt")
3939
if osp.exists(pt_1d_path):
40-
pt_data=torch.load(pt_1d_path)
41-
data1D['objects'] = pt_data['objects']
42-
data1D['scene'] = pt_data['scene']
43-
os.remove(pt_1d_path)
44-
else:
45-
# objectID_to_labelID_map = torch.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.pt'))['obj_id_to_label_id_map']
46-
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
47-
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
48-
scan_objects = [obj_data for obj_data in self.objects if obj_data['scan'] == scan_id][0]['objects']
40+
os.remove(pt_1d_path)
41+
42+
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
43+
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
44+
scan_objects = [obj_data for obj_data in self.objects if obj_data['scan'] == scan_id][0]['objects']
4945

50-
object_referral_embeddings, scene_referral_embeddings = {}, None
51-
if len(scan_objects) != 0:
52-
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, scan_objects, objectID_to_labelID_map)
46+
object_referral_embeddings, scene_referral_embeddings = {}, None
47+
if len(scan_objects) != 0:
48+
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, scan_objects, objectID_to_labelID_map)
5349

54-
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
55-
56-
if len(scene_referrals) != 0:
57-
if len(scene_referrals) > 10:
58-
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
59-
60-
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
61-
scene_referrals = ' '.join(scene_referrals)
62-
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
63-
assert scene_referral_embeddings is not None
50+
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
51+
52+
if len(scene_referrals) != 0:
53+
if len(scene_referrals) > 10:
54+
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
6455

65-
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
66-
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
56+
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
57+
scene_referrals = ' '.join(scene_referrals)
58+
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
59+
assert scene_referral_embeddings is not None
60+
61+
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
62+
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
6763

6864
# torch.save(data1D, osp.join(scene_out_dir, 'data1D.pt'))
6965
np.savez_compressed(osp.join(scene_out_dir, 'data1D.npz'), **data1D)

preprocess/feat1D/scannet.py

Lines changed: 21 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -39,36 +39,31 @@ def compute1DFeaturesEachScan(self, scan_id: str) -> None:
3939
load_utils.ensure_dir(scene_out_dir)
4040
pt_1d_path = osp.join(scene_out_dir, "data1D.pt")
4141
if osp.exists(pt_1d_path):
42-
pt_data=torch.load(pt_1d_path)
43-
data1D['objects'] = pt_data['objects']
44-
data1D['scene'] = pt_data['scene']
4542
os.remove(pt_1d_path)
46-
47-
else:
48-
# objectID_to_labelID_map = torch.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.pt'))['obj_id_to_label_id_map']
49-
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
50-
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
51-
objects = [objects['objects'] for objects in self.objects if objects['scan'] == scan_id]
52-
53-
object_referral_embeddings, scene_referral_embeddings = {}, None
54-
if len(objects) != 0:
55-
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, objects, objectID_to_labelID_map)
43+
44+
# objectID_to_labelID_map = torch.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.pt'))['obj_id_to_label_id_map']
45+
npz_data = np.load(osp.join(scene_out_dir, 'object_id_to_label_id_map.npz'),allow_pickle=True)
46+
objectID_to_labelID_map = npz_data['obj_id_to_label_id_map'].item()
47+
objects = [objects['objects'] for objects in self.objects if objects['scan'] == scan_id]
48+
49+
object_referral_embeddings, scene_referral_embeddings = {}, None
50+
if len(objects) != 0:
51+
object_referral_embeddings = self.computeObjectWise1DFeaturesEachScan(scan_id, objects, objectID_to_labelID_map)
5652

57-
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
58-
59-
if len(scene_referrals) != 0:
60-
if len(scene_referrals) > 10:
61-
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
62-
63-
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
64-
scene_referrals = ' '.join(scene_referrals)
65-
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
66-
assert scene_referral_embeddings is not None
53+
scene_referrals = [referral for referral in self.object_referrals if referral['scan_id'] == scan_id]
54+
55+
if len(scene_referrals) != 0:
56+
if len(scene_referrals) > 10:
57+
scene_referrals = np.random.choice(scene_referrals, size=10, replace=False)
6758

68-
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
69-
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
59+
scene_referrals = [scene_referral['utterance'] for scene_referral in scene_referrals]
60+
scene_referrals = ' '.join(scene_referrals)
61+
scene_referral_embeddings = self.extractTextFeats([scene_referrals], return_text=True)
62+
assert scene_referral_embeddings is not None
63+
64+
data1D['objects'] = {'referral_embeddings' : object_referral_embeddings}
65+
data1D['scene'] = {'referral_embedding': scene_referral_embeddings}
7066

71-
# torch.save(data1D, osp.join(scene_out_dir, 'data1D.pt'))
7267
np.savez_compressed(osp.join(scene_out_dir, 'data1D.npz'), **data1D)
7368

7469
def computeObjectWise1DFeaturesEachScan(self, scan_id: str, objects: Dict,

0 commit comments

Comments
 (0)