in sunrgbd/sunrgbd_data.py [0:0]
def get_box3d_dim_statistics(idx_filename,
type_whitelist=DEFAULT_TYPE_WHITELIST,
save_path=None):
""" Collect 3D bounding box statistics.
Used for computing mean box sizes. """
dataset = sunrgbd_object('./sunrgbd_trainval')
dimension_list = []
type_list = []
ry_list = []
data_idx_list = [int(line.rstrip()) for line in open(idx_filename)]
for data_idx in data_idx_list:
print('------------- ', data_idx)
calib = dataset.get_calibration(data_idx) # 3 by 4 matrix
objects = dataset.get_label_objects(data_idx)
for obj_idx in range(len(objects)):
obj = objects[obj_idx]
if obj.classname not in type_whitelist: continue
heading_angle = -1 * np.arctan2(obj.orientation[1], obj.orientation[0])
dimension_list.append(np.array([obj.l,obj.w,obj.h]))
type_list.append(obj.classname)
ry_list.append(heading_angle)
import cPickle as pickle
if save_path is not None:
with open(save_path,'wb') as fp:
pickle.dump(type_list, fp)
pickle.dump(dimension_list, fp)
pickle.dump(ry_list, fp)
# Get average box size for different catgories
box3d_pts = np.vstack(dimension_list)
for class_type in sorted(set(type_list)):
cnt = 0
box3d_list = []
for i in range(len(dimension_list)):
if type_list[i]==class_type:
cnt += 1
box3d_list.append(dimension_list[i])
median_box3d = np.median(box3d_list,0)
print("\'%s\': np.array([%f,%f,%f])," % \
(class_type, median_box3d[0]*2, median_box3d[1]*2, median_box3d[2]*2))