移动端网站推广,响应式布局和弹性布局的区别,下载班级优化大师app,我国的跨境电商平台有哪些lidar坐标系
lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系#xff0c;参考链接。这个坐标系和车辆的ego坐标系是一致的。
标准lidar坐标系 opendet3d#xff0c;mmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y ------ 0kitti采…lidar坐标系
lidar坐标系可以简单归纳为标准lidar坐标系和nucense lidar坐标系参考链接。这个坐标系和车辆的ego坐标系是一致的。
标准lidar坐标系 opendet3dmmdetection3d和kitt都i使用了该坐标系 up z^ x front| /| /left y ------ 0kitti采集平台传感器安装示意图如下其中红色圆圈标记的为lidar坐标系。 后面说的global yaw就是目标与’-y’的夹角与’-y’重合时是0 与x重合为90度。
nucense lidar坐标系 nucense传感器坐标系示意图如下可以看出lidar坐标系和和标准lidar坐标系有个90度的旋转关系。
local yaw global yaw
由于透视投影的关系目标在相平面上的成像会同时收到目标转动和相对相机位移的双重影响。所以引出了local yaw和global yaw。
网络学习的对象为local yaw(下面的 α z \alpha_z αz 其中 α z α x p i / 2 \alpha_z \alpha_x pi/2 αzαxpi/2) 推理时根据目标位置local yaw计算出global yaw。 α x \alpha_x αx在kitti数据集中的定义为 α∈[−π,π]即从 −180∘ 到 180∘。 α0目标物体的方向与相机光轴完全对齐面向相机。 α0目标物体的朝向偏向相机光轴的 左侧逆时针方向。 α0目标物体的朝向偏向相机光轴的 右侧顺时针方向。 部分公司2d目标标注的local yaw目标与相机z同向重叠90度与右侧方向的相机x轴重叠0度。 global yaw为[-pi, pi]之间一般正前方为0左边为90右边-90. 参考lidar_box3d.py中的定义
class LiDARInstance3DBoxes(BaseInstance3DBoxes):3D boxes of instances in LIDAR coordinates.Coordinates in LiDAR:.. code-block:: noneup z x front (yaw0)^ ^| /| /(yaw0.5*pi) left y ------ 0The relative coordinate of bottom center in a LiDAR box is (0.5, 0.5, 0),and the yaw is around the z axis, thus the rotation axis2. The yaw is 0 atthe positive direction of x axis, and increases from the positive directionof x to the positive direction of y.Attributes:tensor (Tensor): Float matrix with shape (N, box_dim).box_dim (int): Integer indicating the dimension of a box. Each row is(x, y, z, x_size, y_size, z_size, yaw, ...).with_yaw (bool): If True, the value of yaw will be set to 0 as minmaxboxes.YAW_AXIS 2propertydef corners(self) - Tensor:Convert boxes to corners in clockwise order, in the form of (x0y0z0,x0y0z1, x0y1z1, x0y1z0, x1y0z0, x1y0z1, x1y1z1, x1y1z0)... code-block:: noneup zfront x ^/ |/ |(x1, y0, z1) ----------- (x1, y1, z1)/| / |/ | / |(x0, y0, z1) ----------- (x1, y1, z0)| / . | /| / origin | /left y ------- ----------- (x0, y1, z0)(x0, y0, z0)Returns:Tensor: A tensor with 8 corners of each box in shape (N, 8, 3).if self.tensor.numel() 0:return torch.empty([0, 8, 3], deviceself.tensor.device)dims self.dimscorners_norm torch.from_numpy(np.stack(np.unravel_index(np.arange(8), [2] * 3), axis1)).to(devicedims.device, dtypedims.dtype)corners_norm corners_norm[[0, 1, 3, 2, 4, 5, 7, 6]]# use relative origin (0.5, 0.5, 0)corners_norm corners_norm - dims.new_tensor([0.5, 0.5, 0])corners dims.view([-1, 1, 3]) * corners_norm.reshape([1, 8, 3])# rotate around z axiscorners rotation_3d_in_axis(corners, self.tensor[:, 6], axisself.YAW_AXIS)corners self.tensor[:, :3].view(-1, 1, 3)return cornersmmdetection3d box_3d_mode.py中定义的各种坐标系:
class Box3DMode(IntEnum):Enum of different ways to represent a box.Coordinates in LiDAR:.. code-block:: noneup z^ x front| /| /left y ------ 0The relative coordinate of bottom center in a LiDAR box is (0.5, 0.5, 0),and the yaw is around the z axis, thus the rotation axis2.Coordinates in Camera:.. code-block:: nonez front//0 ------ x right||vdown yThe relative coordinate of bottom center in a CAM box is (0.5, 1.0, 0.5),and the yaw is around the y axis, thus the rotation axis1.Coordinates in Depth:.. code-block:: noneup z^ y front| /| /0 ------ x rightThe relative coordinate of bottom center in a DEPTH box is (0.5, 0.5, 0),and the yaw is around the z axis, thus the rotation axis2.SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation 对local yaw给出了示意图
globa2local转换 参考fcos3d代码
def _get_target_single(..):
#...# change orientation to local yawgt_bboxes_3d[..., 6] -torch.atan2(gt_bboxes_3d[..., 0], gt_bboxes_3d[..., 2]) gt_bboxes_3d[..., 6]