ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CVAT 3D 点云标注实战指南:从 LiDAR 数据导入到 KITTI 格式导出

CVAT 3D 点云标注实战指南:从 LiDAR 数据导入到 KITTI 格式导出 CVAT 3D 点云标注实战指南从 LiDAR 数据导入到 KITTI 格式导出【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvatCVATComputer Vision Annotation Tool是一个开源的计算机视觉数据标注平台支持图像、视频和 3D 点云标注附带 AI 辅助标注、质量管控和团队协作能力。一帧 LiDAR 点云可能有几十万到上百万个点逐帧人工画框基本不可行。但换个角度想相邻两帧里那辆车的移动距离通常只有几厘米大部分帧其实不需要画只需要把前一帧的框带过来微调一下。CVAT 的 3D 标注就是围绕这个思路设计的——点云进来后你在透视、顶视、侧视、前视四个联动视图里画一次 3D 立方体它会自动成为 Track轨迹后续帧沿轨迹延续你只处理新增物体和明显偏移的位置。本文按实际操作顺序讲一遍数据怎么进来、框怎么画、重复劳动怎么省、结果怎么导出给模型、多人协作时质量怎么兜底。点云数据怎么进来这一节解决手上的 PCD/BIN 文件和相机图片如何变成可标注任务的问题。创建任务时把维度Dimension选为 3DCVAT 就会按点云任务处理而不是按图片序列处理。点云本身支持两种主流来源PCD 文件标准点云格式每帧一个.pcd按目录或压缩包上传即可。BIN 原始文件Velodyne 系列 LiDAR 的原始二进制每帧 576 个点CVAT 可以直接解析。真正的难点通常不在点云本身而在多传感器对齐。CVAT 在这里的做法是参考 KITTI 数据组织方式相机图片image_2右目相机为主和点云按相同的帧序号对应导入时按文件名里的帧号自动配对。这样你在顶视图里拉一条框线时右侧能同时看到对应视角的相机图像用来判断遮挡和截断——纯看点云判断这辆车被挡了一半是很困难的。除了直接上传原始点云CVAT 还能导入已标注数据继续加工。后端在 formats 模块 里注册了一组导入/导出器与 3D 任务相关的包括 KITTI Raw Format点云 相机 3D 框标注的完整任务包、KITTI2D 检测/分割标注、以及 Velodyne 点云相关格式。也就是说你可以把别处做好的标注批量导进来在 CVAT 里修订后再以别的格式导出不必从头标。整条链路如下四视图联动下怎么画准 3D 框这一节解决3D 空间里凭直觉定位容易出错的问题。CVAT 的 3D 画布代码在 cvat-canvas3d前端渲染基于 WebGL。核心交互是三件事透视视图里旋转、缩放整朵点云用来建立空间感顶视图负责定位置——在 XZ 平面上拖动确定物体的长宽和朝向这是最常用也最可靠的视图因为自动驾驶场景里车辆的横向位置对定位精度影响最大侧视和前视用来定高度和朝向角——俯仰角pitch和绕 Y 轴的旋转在顶视图里几乎看不出差别必须切到侧面才能校正。四个视图是实时联动的在任何一个视图里拖了框的边缘其他视图同步刷新。一个实用的标注顺序是顶视图先定位置和长宽 → 前视图校正确定朝向和高度 → 透视视图最后看一眼整体包裹是否合理。标注对象支持 3D 立方体Cuboid用于车辆、行人等和关键点。立方体可以设置 Track 标签一旦挂上 Track这个物体在后续帧里就会以半透明形式延续出现你只需要在它明显偏了的帧上调整不用重新画。怎么把逐帧标注变成轨迹标注这一节解决几百帧里同一个物体被标几百次的效率问题。除了 Track 的自动延续CVAT 还提供几个减少重复劳动的手段插值给一段轨迹的首帧和末帧分别标好后中间帧的框可以按线性插值自动生成。对匀速行驶的车辆效果很好急转的帧再手动修正。Track 管理可以整条选中一个 Track 批量修改类别、属性或颜色也可以把标错的一段整体删除而不是一帧帧撤销。自动预标注如果部署了模型服务CVAT 的 serverless 模型部署脚本见 serverless 目录可以先把模型输出的检测框批量导入作为初始标注人只做验收和修正。预标注的质量直接决定这一步省多少时间——对自动驾驶 3D 检测模型来说通常能把纯手动的工作量压到原来的两三成左右具体取决于场景复杂度和模型精度。属性Attributes体系同样适用给vehicle标签挂truncated截断、occluded遮挡、velocity速度等属性导入导出时随标注一起携带。标注结果怎么导出给训练这一节解决标完之后如何变成模型能吃的数据集的问题。导出格式由后端的 dataset_manager 统一调度每个格式对应一个独立的导入/导出器文件。与 3D 标注最相关的是Kitti Raw Format它把点云、相机图像和 3D 框标注打包成 KITTI 原始任务结构的 ZIP可以直接对接基于 KITTI 协议的检测 pipeline。值得注意的是代码里的 3D 立方体会先做格式转换——CVAT 内部用中心点 尺寸 欧拉角描述立方体导出时按目标格式的要求变换坐标和角度表示这一步在 kitti.py 中处理。如果你的下游只关心 2D 部分比如用点云任务顺带标了 2D 框也可以只导出 KITTI、COCO 等 2D 格式3D 属性会被自动过滤。反过来已有 KITTI 标注的数据集可以导入 CVAT 做修订导入入口支持完整的任务包 ZIP 或单独的 XML 标注文件。导出时可以选是否包含原始媒体只导出标注文件会小很多适合标注结果先走一轮质检再决定要不要带上原始数据归档。多人协作时质量怎么兜底这一节解决一个人标得再仔细也无法保证整批数据一致的问题。CVAT 的任务可以拆成多个 Job 分派给不同标注员进度按 Job 状态实时可见。多人处理同一批数据时CVAT 提供共识Consensus机制同一个 Job 分配给 N 个人独立标注之后可以选择合并策略——要么由审查人逐个比对决定要么用内置的交叠合并consensus 模块按 IoU 匹配不同标注员的框并取并集/交集。对 3D 标注来说两个人对同一辆车框出的长宽差几厘米是常态共识合并时建议人工介入而不是直接取平均。除此之外任务级还能叠加质量报告Quality Reports按规则比较已验收和标注中两个阶段的标注差异框移动超过阈值、类别改变、漏标都会列进报告审查人只看差异部分不用重看全量数据。怎么上手与怎么选这一节给出最短路径和几个常见选择问题。部署与创建第一个 3D 任务。仓库根目录的 docker-compose 文件可以直接拉起完整服务起服务后在界面创建任务时把 Dimension 选为 3D按帧上传 PCD 文件即可。如果偏好用代码管理数据cvat-sdk 提供了 Python 客户端示例脚本在 cvat-sdk/examples 里from cvat_sdk.api.client import Client client Client() task client.tasks.create( namelidar_demo, dimension3, labels[{name: car, color: #ff0000}, {name: pedestrian, color: #00ff00}], ) task.upload_data([frame_000.pcd, frame_001.pcd])几个常见的选择问题你的情况建议只有 PCD 文件、无相机直接建 3D 任务高度判断靠侧视图精度会略降有相机 点云、要交 KITTI 协议用 KITTI 目录结构组织数据导出选 Kitti Raw Format已有历史标注要修订先导入对应格式别从零标数据量大、人力有限先跑预标注模型再人工验收Track 插值兜底官方文档的 3D 任务操作细节见 workspace/tasks-page3D 画布实现细节可以看 cvat-canvas3d 下的源码画布控制器和模型的划分比较清晰方便排查交互行为。【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进