Closed kszpxxzmc closed 1 year ago
camera_train_processed如果用制作自己的数据集,可以将模型导入blender,相机环绕拍摄,渲染深度图即可.然后根据相机pose和内参就可以得到了, 可以用blenderproc. {}_fps_36_normalized.obj可以用FPS算法对模型进行采点得到.
camera_train_processed里面的'obsv.obj'有经过什么处理吗?还是说指的就是原本的OBJ模型?
以及{}_fps_36_normalized.obj是从mean_shape中得到的吗,需要进行归一化吗?
'obsv.obj'是直接通过相机内参将深度图投影成partial point cloud得到的; {}_fps_36_normalized.obj是随机从shape net中挑选一个的,mean shape也是可以的,需要归一化一下
你好,我在尝试用blenderproc来自制训练集,我参考blenderproc的例子得到了深度图和pose,我理解了'_obsv.obj'是将深度图转换为点云后随机采样的1024个点,'_SC.obj'是'_obsv.obj'轴对称得到的。我想请问一下'_SC.obj'做对称的轴是如何选取的?以及'_sOC.txt'和'_OS.txt'是如何得到的?看dataset.py中对它们的注释分别是Object Center和Object Size,但我不太理解里面数字代表的含义,希望能解答一下,谢谢!
你好,
_SC.obj
对称轴问题:
Step 1:将obsv pcd Nx3 (相机坐标系)通过左乘GT pose的逆(dataset.py Line59)变换到物体坐标系cano_pcd;
Step 2:由于shapenet中类别物体在自身坐标系是统一canonicalized过的,类别级物体的对称轴一般是x/y/z轴。因此可以统一选取类级别的对称轴,比如shapnet中各种mug instances在物体坐标系都是绕x轴对称:
对于镜像对称物体:sym_pcd = cano_pcd.copy(); sym_pcd[:,0] = -sym_pcd[:,0];
对于旋转对称物体如bottle,sym_pcd = np.dot(Rot_y(180˚),cano_pcd);
Step 3: 然后再将sym_pcd左乘GT pose就可以得到相机坐标系下的对称点云('_SC.obj')。
_sOC.txt
是(原始深度图转换为点云*尺度缩放因子s=_obsv.obj)(该参数SAR-Net暂时未用到)+obsv的中心cx,cy,cz;
_OS.txt
是obsv的xyz方向上的尺寸,s_x,s_y,s_z。
目前想使用自己的数据集进行训练,但是暂且无法准确确认camera_train_processed以及{}_fps_36_normalized.obj是如何生成的?请问你们会发布这一部分的处理代码吗?