Kitti for 3D Detection
2023/9/19
用来记录一下kitti dataset的学习情况!🧐🧐
来一点参考文献先:
目录结构与文件组织形式
down下来的3D检测文件目录如下所示:
Kitti数据加载
-
OpenPCDet中的kitti dataset setting是:

-
OpenPCDet中的Kitti Dataset实现:
- 有两个主要的类,基类
DatasetTemplate和子类KittiDataset- 基类
DatasetTemplate-./OpenPCDet/pcdet/datasets/dataset.py__init__初始化函数:- 记录了dataset_cfg, training flag, class_name(car, pedestrain, cyclist), logger, path等一系列乱七八糟的属性;
point_cloud_range是[0, -39.68, -3, 69.12, 39.68, 1],应该是数据集的属性,但是各个维度的意义是什么呢?- 在
PillarVFE中有体现,似乎是[min_x, min_y, min_z, max_x, max_y, max_z],用来计算三个坐标的offset; - 其中,voxel size是[0.16, 0.16, 4],而z轴的上限正好是1 - (-3) = 4,符合pillar在z轴上没有划分voxel的描述;
- 看起来这里的单位是米;
- 在
self.point_feature_encoder是PointFeatureEncoder(./OpenPCDet/pcdet/datasets/processor/point_feature_encoder.py),看描述应该是坐标转换;self.data_augmentor是DataAugmentor(./OpenPCDet/pcdet/datasets/augmentor/data_augmentor.py),字面意义能做data aug;根据config往aug queue里面填aug function:gt_sampling- TODO:这里又有个子类
database_sampler.DataBaseSampler,没看
- TODO:这里又有个子类
random_world_flip & rotation & scaling & translationrandom_local_flip & rotation & scaling & translation- …
- OpenPCDet中PointPillar的数据增强设置是,

看起来只有gt_sample,random_world_flip,random_world_rotation,random_world_scaling这四个增强,box aug怎么没有看到?
self.data_processor是DataProcessor(./OpenPCDet/pcdet/datasets/processor/data_processor.py),看描述应该是搞voxelization的(包括mask掉范围外的点、点采样之类的功能);- OpenPCDet中PointPillar的数据处理设置是,

mask掉范围外的点,在训练时shuffle点,按照[0.16, 0.16, 4]的尺寸voxelization,每个voxel中有32个点,最大voxel数是16000(和pointpillar不太一样哎?)- TODO:这里的shuffle_points又在干什么?
- OpenPCDet中PointPillar的数据处理设置是,
self.voxel_size是[0.16, 0.16, 4](虽然4是啥不清楚,但是看起来还挺像pointpillar官方设置的),self.grid_size是[432, 496, 1](TODO:这个是啥?)
- ..
- 子类
KittiDataset-./OpenPCDet/pcdet/datasets/kitti/kitti_dataset.py__init__初始化函数:- 最主要的初始化设置在基类
DatasetTemplate中已经完成了,在这个类中的操作只是一些数据集位置记录等的操作。 - TODO:有个
self.sample_id_list,之前路径设置有问题,没用上这个,不知道会有什么影响…
- 最主要的初始化设置在基类
- ..
- 基类
- 有两个主要的类,基类
Kitti点云可视化
参考链接列表: