hongsukchoi/TCMR_RELEASE

Question about Parameter 'scale' in 3d datasets

MooreManor opened this issue · 3 comments

Hello. Thanks for your great work!
I want to do some different processes for original data. To ensure data consistency, I have to ensure the parameter 'scale' in different 3d datasets. I use the repr_table4_3dpw_model.yaml as config file. And the corresponding datasets are listed below.

DATASETS_3D:
- 'ThreeDPW'
- 'MPII3D'
- 'Human36M'
DATASET_EVAL: 'ThreeDPW'

if self.set == 'train':
if self.load_opt == 'repr_table4_3dpw_model':
if self.dataset_name == '3dpw':
db_file = osp.join(TCMR_DB_DIR, f'{self.dataset_name}_{self.set}_occ_db.pt')
elif self.dataset_name == 'mpii3d':
db_file = osp.join(TCMR_DB_DIR, f'{self.dataset_name}_{self.set}_scale12_occ_db.pt')
elif self.dataset_name == 'h36m':
db_file = osp.join(TCMR_DB_DIR, f'{self.dataset_name}_{self.set}_25fps_occ_nosmpl_db.pt')

Does scale of h36m_train_25fps_occ_nosmpl_db.pt correspond to 1.2, that of 3dpw _train_occ_db.pt corresponds to 1.2, and that of 3dpw_val _db.pt corresponds to 1.2 (i.e. all the 3d datasets used are scaled to 1.2)? Did I say anything wrong? I'm not quite sure because in the threedpw_utils.py, the default scale is set to 1.3.
features = extract_features(model, None, img_paths_array, bbox,
kp_2d=j2d[time_pt1:time_pt2], debug=debug, dataset='3dpw', scale=1.3)

Thanks!

Hi, the scale values vary across the datasets, but do not change on the same dataset. That is, 3dpw_train_occ_db.pt and 3dpw_train_db.pt are generated using the same scale (1.2) as written in the released code files.

We applied different scales across the datasets, because the size of bounding box annotations were too different. For example, bounding boxes of one dataset appeared to be too tight, but these of another dataset appeared to be too loose. But the overall performance does not change much though,

Originally posted by @hongsukchoi in #8 (comment)

@hongsukchoi I noticed that in one issue you said that the scale written in the released code files was 1.2. But it seemed that in the source code of 3dpw, the scale was set to 1.3.

features = extract_features(model, None, img_paths_array, bbox,
kp_2d=j2d[time_pt1:time_pt2], debug=debug, dataset='3dpw', scale=1.3)

Thanks!

Hi! Yes, you are right for the repr_table4_3dpw_model.yaml setting.

h36m_train_25fps_occ_nosmpl_db.pt correspond to 1.2, that of 3dpw _train_occ_db.pt corresponds to 1.2, and that of 3dpw_val _db.pt

No, the scales vary on other benchmarks. For example to follow the bbox setting of SPIN in H36M, we use tighter bbox.

i.e. all the 3d datasets used are scaled to 1.2

I cannot remember why the default setting is like that :( use 1.2 for 3dpw

But it seemed that in the source code of 3dpw, the scale was set to 1.3.

Thank you for your detailed reply!