Point-GNN
1.os.path.join 路径要写完全了
1 | DATASET_DIR="/dataset/KITTI" |
2.数据增强tips: * * kwargs和 * args :
可以设置选择data augment的模式:如下就是选择random_rotation_all模式对应的操作。
args传的是【非键值对】可变数量的参数*列表 *
- kwargs 传递的就是具体方法涉及的参数信息不定长度【键值对】。
1 | aug_method = aug_method_map[aug_config['method_name']] |
- 测试
1 | "data_aug_configs": [ |
3.Points = namedtuple(‘Points’, [‘xyz’, ‘attr’])
velo points[x,y,z,flection] velopoints2camera points xyz in camera with rgb[x,y,z,flection,RGB]
4.建图
1 | graph_generate_fn= get_graph_generate_fn(config['graph_gen_method']) |
gen_multi_level_local_graph_v3
voxel采样:multi_layer_downsampling
采样后 得到vertex+keypoint_indices 相当于node
create edges 重要参数 graph_level
- 自己采样测试 :结果1024→816;1000→802
遍历采样后的每一个点,找邻居值【使用kneighbors】
5.数据变化过程:以car为例 input:3260samples
分成两个batch [m,n]【猜测是并行加载数据的操作,看不懂为啥这边要分两个】
batch_list += [fetch_data(dataset, m或n, train_config, config)]
input_v, vertex_coord_list, keypoint_indices_list, edges_list, \
cls_labels, encoded_boxes, valid_boxes = batch_data(batch_list)
cam_rgb_points:[x,y,z,flection,RGB]
input_v = cam_rgb_points.attr.flection
假设graph level=2
points_xyz = vertex_coord_list[0]
keypoint_indices_list=特征点的index
- 结果分析:
共有37255个point 【含有xyz坐标:vertex_coord_list[0] 】下采样得到3091个点【含有xyz坐标:points_xyz = vertex_coord_list[1]】
下采样的点在原始point中的index:keypoint_indices_list: 3,6,19…
vertex_coord_list [ 0 ] [ 3 ]==→ vertex_coord_list[ 1 ] [ 0 ]
【torch.equal(vertex_coord_list[1],vertex_coord_list[2]) =True 为什么是一样的】
valid_boxes:flag :bool 表明采样后的 points 在一个 3D box中 比如sum(valid_boxes)=145,有145个点在框中,当然是越大越好。