更新时间:2025-03-21 GMT+08:00
分享

数据提取作业(数据集)

作业输入输出规范

  • Input

    平台会以环境变量的形式提供以下参数:

    • rosbag_path: 数据包路径,如果输入数据源是多个,以','分隔。示例:/tmp/DPK0000001/packageName1,/tmp/DPK0000002/packageName2。
    • output_dir:最终输出数据集路径。
    • tmp_dir:供用户存储临时文件的目录。
    • task_content_json:人工打标需要的标签信息,详细参考“人工打标支持”。(如果没有人工打标,不需要此参数)。
  • Output

    对于output_dir的格式限定如下:

    • 必须有output_dir/dataset目录,存储数据集文件。数据集文件有格式要求(Octopus、PascalVOC...)。
    • 必须有_SUCCESS或 _FAILURE文件,标志用户镜像任务完成(或失败)。
    • 可选有output_dir/auxiliary目录,用于存储附加文件。对格式没有限制。
      图1 output_dir的格式
  • 人工打标支持

    Input

    程序必须能接受task_content_json,该参数以环境变量的形式引入镜像。task_content_json格式为List of Tags。

    如果没有tag,为空list。如果只有一个标签,list内只有一个Tag。

    如果start与end一致,代表单帧打标。
    图2 每个Tag格式示例
    图3 task_content_json示例

示例代码

作业输入输出规范示例代码如下图所示:

图4 示例1
图5 示例2

构建镜像

Octopus平台依赖算子镜像内的/bin/bash、stdbuf、tee软件,请确保基础镜像内包含上述软件且能通过PATH找到。

  1. Dockerfile示例。
    FROM ros:noetic
    COPY ros_to_dataset.py /home/main/
    # 算法启动示例:
    # python3 /home/main/ros_to_dataset.py --topic pandar --type pcd
    RUN apt install ros-noetic-cv-bridge python3-pcl libpcl-dev
    USER root
  2. 构建镜像。

    运行命令:

    docker build -f Dockerfile -t ros-to-dataset:0.1
  3. 本地调试。

    准备一个待处理的rosbag,如~/data/20220620.bag,运行如下命令(基于上述示例镜像):

    docker run -v ${HOME}/data/20220620.bag:/tmp/data/20220620.bag -v 
    ${HOME}/tmp/output:/tmp/output --env output_dir=/tmp/output --env 
    rosbag_path=/tmp/data/20220620.bag --env tmp_dir=/tmp/workspace ros-to-dataset:0.1 /bin/sh -c “python3 /home/main/ros_to_dataset.py --topic pandar --type pcd”

    完成后在${HOME}/tmp/output目录查看运行结果文件:

    图6 运行结果

相关文档