# Dataflow **Repository Path**: zwhcodes/dataflow ## Basic Information - **Project Name**: Dataflow - **Description**: 用于把我们的rosbag转模型训练的数据集 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-07-18 - **Last Updated**: 2025-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dataflow #### 介绍 用于把我们的rosbag转模型训练的数据集 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### dataflow2.0 使用说明 1. 建立数据处理的work_space,并放入需要处理的数据集和标定文件,目录如下
work_space_tmp ├── annotate ├── bags │ ├── 000.bag │ ├── 001.bag │ ├── 002.bag │ └── calib.json ├── datasets └── dataview2. 生成标注数据集,修改sh/run1.sh参数。(如果rosbag解析可能失败,需要手动运行对应的python脚本) work_dir="XXX/work_space_tmp"\ rosbag_dir="$work_dir/bags"\ data_path="$work_dir/datasets"\ out_path="$work_dir/dataview"\ anno_path="$work_dir/annotate" 然后运行 >sh sh/run1.sh rosbag解析的临时数据集如下:
work_space_tmp ├── annotate ├── bags │ ├── 000.bag │ ├── 001.bag │ ├── 002.bag │ └── calib.json ├── datasets │ ├── 000 │ │ ├── calib │ │ ├── camera │ │ ├── lidar │ │ ├── localization │ │ └── radar │ ├── 001 │ │ ├── calib │ │ ├── camera │ │ ├── lidar │ │ ├── localization │ │ └── radar │ └── 002 │ ├── calib │ ├── camera │ ├── lidar │ ├── localization │ └── radar └── dataview当前步骤运行成功后文件夹目录如下:
work_space_tmp ├── annotate │ ├── anno___000 │ │ ├── camera │ │ ├── label │ │ └── lidar │ ├── anno___001 │ │ ├── camera │ │ ├── label │ │ └── lidar │ └── anno___002 │ ├── camera │ ├── label │ └── lidar ├── bags │ ├── 000.bag │ ├── 001.bag │ ├── 002.bag │ └── calib.json ├── datasets │ ├── __000 │ │ ├── calib │ │ ├── camera │ │ ├── lidar_bin │ │ ├── localization │ │ ├── radar_bin │ │ ├── README.csv │ │ └── samples │ ├── 000 │ │ ├── calib │ │ ├── camera │ │ ├── lidar │ │ ├── localization │ │ └── radar │ ├── __001 │ │ ├── calib │ │ ├── camera │ │ ├── lidar_bin │ │ ├── localization │ │ ├── radar_bin │ │ ├── README.csv │ │ └── samples │ ├── 001 │ │ ├── calib │ │ ├── camera │ │ ├── lidar │ │ ├── localization │ │ └── radar │ ├── __002 │ │ ├── calib │ │ ├── camera │ │ ├── lidar_bin │ │ ├── localization │ │ ├── radar_bin │ │ ├── README.csv │ │ └── samples │ └── 002 │ ├── calib │ ├── camera │ ├── lidar │ ├── localization │ └── radar └── dataview3. dataview文件夹为点云图像可视化,用于检查。annotate文件夹为标注文件,标注后将label文件夹拷回对应子数据集的samples文件夹。 4. 生成数据集,修改sh/run2.sh参数。 work_dir="/media/adt/ZWH4T/ZWH/bags/dataset/tm3/work_space_tmp"\ data_path="$work_dir/datasets"\ split_ratio="10,0,0" #一个包内train:test:val\ val_datasets="__001,__000" #一个包内train:test:val\ #split_ratio="0,0,10" #一个包内train:test:val\ sweeps=10 #n个历史帧 其中val_datasets用来标记哪些数据集会是验证集。 > sh sh/run2.sh 运行后生成pkl文件
data_base ├── dbinfos_train.pkl ├── gt_database ├── infos_test.pkl ├── infos_train.pkl ├── infos_trainval.pkl └── infos_val.pkl#### 使用说明 1. rosbag截取有效子包 目的:原始包内可能有些时间段没有所需的目标 步骤:使用rqt_bag打开一个或者多个相邻子包,选择合适的时间段(eg.包含人或者车的段),选择截取范围后 save bag,命名为原包名+"filter" 2. 解析数据包 目的:将rosbag转换为单帧的图像(jpg),点云(pcd)等格式 步骤:a. 在parse_ros.py中设置参数--rosbag-dir为rosbag包所在的文件夹全局路径,该文件夹下能存在多个rosbag,--data-path为数据输出路径 b. 然后执行文件,将会一次过解析多个bag,并按照传感器类型分类,每类下面有一个或者多个传感器按照时间戳命名;定位信息存储为一个csv文件; 为lidar和radar新建外参文件,初始外参为单位阵,需要手动填入  3. 数据时间同步 目的:各个topic的单帧数据集之间,数量和时间戳存在差异,需要按照某一topic(如前激光)的时间进行同步和筛选 步骤:a. 在sync_data.py中设置参数--data-path为数据输入路径(和parse_ros.py中一致),--is-save为是否要保存(--is-view可选) b. 然后执行文件,将会在--data-path下新建 **__<源文件夹>** 文件夹下生成新的数据集, 该数据集各topic之间数据量相同,且使用同步topic(如前激光)的时间戳命名,定位文件夹和之前保持一致,radar文件集改名为radar_bin  4. 数据标注 步骤: 启动STPointsSServer 容器,将上述的data_sync文件夹拷贝到挂载目录下,并在文件夹内创建label文件夹 在浏览器启动STPointsSServer 网页,选择对应文件夹和对应点云进行标注 5. 格式转换2 目的:json转txt 步骤: a. 在reformat.py中设置参数--data-path --fun json b. 然后执行文件,将会生成对应的txt格式的label文件 direcoty before process:  README.cvs before process:  direcoty after process:  README.cvs after process:  6. 数据划分 目的:把每个数据集划分为train、test、val 步骤:a.在split_datasets.py中设置参数--data-path,和划分比例, shuffle defalut to false for multiseq b.然后执行文件,将会生成对应split_sets文件夹下的train.txt,test.txt,val.txt文件 direcoty after process  within diretory split_sets:  7. 数据集check(可选) 步骤:运行check_dataset.py中设置参数--data-path 8. pkl制作 目的:读取数据集,制作pkl文件存储数据集的信息(路径和label等) 步骤:a. 在dataset2pkl.py设置参数data_root为数据集路径; b. 然后执行文件,生成对应的pkl文件夹和目标点云bin文件 direcoty after process:  files in diretory data_base:  9. dataset读取 见train工程