论文地址:https://arxiv.org/abs/2012.04355v3
项目地址:https://github.com/THU17cyz/3DIoUMatch-PVRCNN
本篇论文的关键代码:
- Dataset:
KittiDatasetSSL
(本篇文章介绍) - Model:
PVRCNN_SSL_3DIOU
Training Mode
1. 数据读取 __init__
全部数据读取
根据config
中的DATA_CONFIG.INFO_PATH
,获得全部数据。KITTI中共有3712个数据。
Labeled 数据读取
根据argument
中的--split
,获得有Label数据的Id和Index。根据Index,从全部数据中提取Label数据。
举例:
--split train_0.01_1
,读取./data/kitti/ImageSets/train_0.01_1.txt
,其中包含sample_id和sample_index。
Unlabeled 数据读取
1)针对0.01, 0.02的有Label划分
从全部数据中剔除Labeled数据,即为Unlabeled数据。但是代码实现中,Unlabeled数据为全部数据,不确定是bug还是作者有意为之,但我认为影响不大。
2)针对1.00的有Label划分
Unlabeled数据即为Labeled数据,也是全部数据。
数据读取的总结
- Labeled 数据
- self.sample_id_list
- self.sample_index_list
- self.kitti_infos:
每个info的keys为['point_cloud', 'image', 'calib', 'annos']
- Unlabeled 数据
- self.unlabeled_index_list
- self.unlabeled_kitti_infos
2. Batch数据 __getitem__
读取一份label数据
1) 数据增强(暂未细看)
保持配置文件中的数据增强方式(no_db_sample=False)
2) data_dict中的数据说明
- 数据增强参数:[‘flip_x’, ‘flip_y’, ‘rot_angle’, ‘scale’]
- 强数据增强后的数据:[‘points’, ‘gt_boxes’, ‘voxels’, ‘voxel_coords’, ‘voxel_num_points’]
- 弱数据增强后的数据:[‘points_ema’, ‘gt_boxes_ema’, ‘voxels_ema’, ‘voxel_coords_ema’, ‘voxel_num_points_ema’]
二者的数据差异在于有无进行翻转、旋转、缩放操作。即通过四个参数可以转换[‘points’, ‘gt_boxes’]与[‘points_ema’, ‘gt_boxes_ema’]。
读取一份unlabel数据
1) 数据增强(暂未细看)
保持配置文件中的数据增强方式(no_db_sample=True)
2) data_dict中的数据说明
同label数据