zju3dv / pvnet-rendering

render images for pvnet training
Apache License 2.0
183 stars 46 forks source link

about fuse problem #49

Closed coocooon closed 4 years ago

coocooon commented 4 years ago

您好,想请问几个问题,麻烦了,我想用clean-pvnet跑自己的数据集(不是custom那个). 但是发现需要合成的render和fuse合成虚拟数据集,于是我尝试了,把自己的一个物体换到cat中,现在可以合成render数据集,但是在fuse时,出现了点问题 1: 运行` python run.py --type fuse

begin generate database cat Traceback (most recent call last): File "run.py", line 24, in globals()['run_' + args.type]() File "run.py", line 20, in run_fuse run() File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 336, in run prepare_dataset_parallel(output_dir, linemod_dir, linemod_orig_dir, fuse_num, background_dir, cache_dir, worker_num) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 208, in prepare_dataset_parallel collect_linemod_set_info(linemod_dir,cls_name,linemod_orig_dir,cache_dir) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 188, in collect_linemod_set_info data['RT'] = pose_transformer.orig_pose_to_blender_pose(pose).astype(np.float32) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 131, in orig_pose_to_blender_pose tra = tra + np.dot(rot, self.model_aligner.get_translation_transform()) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 99, in get_translation_transform orig_model = self.load_orig_model() File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 89, in load_orig_model transform = self.read_transform_dat() File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 81, in read_transform_dat transform_dat = np.loadtxt(self.transform_dat_path, skiprows=1)[:, 1] File "/home/lcz/anaconda3/envs/ren/lib/python3.6/site-packages/numpy/lib/npyio.py", line 961, in loadtxt fh = np.lib._datasource.open(fname, 'rt', encoding=encoding) File "/home/lcz/anaconda3/envs/ren/lib/python3.6/site-packages/numpy/lib/_datasource.py", line 195, in open return ds.open(path, mode, encoding=encoding, newline=newline) File "/home/lcz/anaconda3/envs/ren/lib/python3.6/site-packages/numpy/lib/_datasource.py", line 535, in open raise IOError("%s not found." % path) OSError: /home/lcz/PycharmProjects/xin/pvnet-rendering/data/LINEMOD_ORIG/cat/transform.dat not found. 发现没有transform.dat not found,请问transform.dat是什么,怎么获得?以及在LINEMOD_ORIG文件夹中OLDmesh和cat.ply有啥区别 我用了官方cat的transform.dat文件和自己的ply换成OLDmesh文件 .但是有新的错误 2: python run.py --type fuse begin generate database cat success generate database cat len 226 begin generate database duck success generate database duck len 189 begin generate database glue success generate database glue len 184 begin generate database iron success generate database iron len 173 begin generate database phone success generate database phone len 184 begin generate database benchvise success generate database benchvise len 183 begin generate database can success generate database can len 180 begin generate database driller success generate database driller len 179 begin generate database eggbox success generate database eggbox len 188 begin generate database holepuncher success generate database holepuncher len 186 begin generate database lamp success generate database lamp len 185 concurrent.futures.process._RemoteTraceback: """ Traceback (most recent call last): File "/home/lcz/anaconda3/envs/ren/lib/python3.6/concurrent/futures/process.py", line 175, in _process_worker r = call_item.fn(*call_item.args, call_item.kwargs) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 229, in prepare_dataset_single rgb, mask, begin, pose=randomly_sample_foreground(image_dbs[cls_id], linemod_dir) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 273, in randomly_sample_foreground mask=np.sum(mask,2)>0 File "<__array_function__ internals>", line 6, in sum File "/home/lcz/anaconda3/envs/ren/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 2242, in sum initial=initial, where=where) File "/home/lcz/anaconda3/envs/ren/lib/python3.6/site-packages/numpy/core/fromnumeric.py", line 87, in _wrapreduction return ufunc.reduce(obj, axis, dtype, out, passkwargs) numpy.AxisError: axis 2 is out of bounds for array of dimension 2 """

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "run.py", line 24, in globals()['run_' + args.type]() File "run.py", line 20, in run_fuse run() File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 336, in run prepare_dataset_parallel(output_dir, linemod_dir, linemod_orig_dir, fuse_num, background_dir, cache_dir, worker_num) File "/home/lcz/PycharmProjects/xin/pvnet-rendering/fuse/fuse.py", line 217, in prepare_dataset_parallel f.result() File "/home/lcz/anaconda3/envs/ren/lib/python3.6/concurrent/futures/_base.py", line 432, in result return self.get_result() File "/home/lcz/anaconda3/envs/ren/lib/python3.6/concurrent/futures/_base.py", line 384, in get_result raise self._exception numpy.AxisError: axis 2 is out of bounds for array of dimension 2 请问这个是什么情况 3:如果我只想用render这个数据集,不使用fuse,该怎么改 ` 期待您的回复,万分感谢

pengsida commented 4 years ago

1, transform.dat是original linemod dataset的pose annotation。

  1. 你不使用fuse,不执行python run.py --type fuse命令就好了。
coocooon commented 4 years ago

1, transform.dat是original linemod dataset的pose annotation。

  1. 你不使用fuse,不执行python run.py --type fuse命令就好了。

您好,要是不用fuse的话,那么需要在clean-pvnet中怎么修改,在pvnet可以找到,在clean中没找到

pengsida commented 4 years ago

不需要修改。