公司动态
bdd100k标注格式完全解析:box2d、poly2d与box3d字段逐项详解
bdd100k标注格式完全解析box2d、poly2d与box3d字段逐项详解【免费下载链接】bdd100kThis repo has been moved to https://github.com/bdd100k/bdd100k permanently.项目地址: https://gitcode.com/gh_mirrors/bd/bdd100kBDD100K 是一个大规模驾驶视频数据集其标注格式采用帧级 JSON 文件组织通过 box2d、poly2d、box3d 三种标注原语完整描述道路场景。本文逐项详解 bdd100k 标注格式的每一个字段帮助你快速读懂标注文件、上手自动驾驶目标检测任务。 一图看懂 bdd100k 的标注内容先看效果再抠细节。下图展示了 BDD100K 数据集的标注可视化绿色/紫色区域是可行驶区域drivable area红色线条是车道线lane方框是 2D/3D 目标框彩色覆盖层则是语义/实例分割结果这些标注全部存储在 JSON 文件中与 Scalabel 标注工具兼容。官方字段定义见 doc/format.md 所对应的格式文档。️ 标注文件整体结构帧对象 标签列表一个标注 JSON 文件是一组帧对象frame objects的列表每一帧包含以下顶层字段字段类型说明namestring图片/帧名19 字符标识符urlstring图片下载地址videoNamestring可选所属视频名attributesobject帧级属性天气、场景、时段intrinsicsobject相机内参focal [x, y]、center [x, y]、nearClipextrinsicsobject相机外参location、rotationtimestampint64毫秒级时间戳epoch time msframeIndexint可选帧在该视频中的序号labels []array该帧内所有标注对象列表⚠️重要提示这个格式是数据字段的超集。比如 2D 标注的box3d可以缺失相机标定未知时intrinsics也可能不出现。读取代码时记得判空。⬜ box2d 字段详解2D 目标框怎么写box2d用于标注全部 10 类道路对象车辆、行人、交通信号灯等只有 4 个字段字段类型含义x1float左上角横坐标像素y1float左上角纵坐标像素x2float右下角横坐标像素y2float右下角纵坐标像素新手易错点坐标原点在图像左上角[x1, y1]是左上角、[x2, y2]是右下角有效框必须满足x1 x2且y1 y2转换检测格式时通常要过滤非法框可参考 bdd100k/label2det.py 中的判断逻辑数据集图像分辨率为 1280×720。 poly2d 字段详解可行驶区域与车道线的多边形poly2d是一个对象数组用于drivable area可行驶区域和lane车道线两类标注每个对象含 3 个字段字段类型含义vertices[[]]float顶点列表每个顶点为[x, y]二维坐标typesstring每个字符对应同下标顶点的类型L为直线顶点C为贝塞尔曲线控制点closedbooleantrue为闭合多边形面false为开放路径线理解要点可行驶区域→closed: true填充成一个面车道线→closed: false画成一条开放曲线绘制时按types依次连接verticesL用直线段、C用贝塞尔曲线。可视化示例可参考 bdd100k/show_labels.py 中poly2patch的画法。 box3d 字段详解三维目标框的四个分量box3d用于 3D 目标标注如 3D 点云、3D 重建任务包含字段类型含义location[x, y, z]盒子中心的 3D 坐标dimension[height, width, length]盒子的高、宽、长orientationfloat3D 朝向角用于点云标注alphafloat观测角observation angle存在 2D 视图时使用新手最常被绕晕的是orientation和alpha的区别orientation目标在 3D 世界坐标系中的真实朝向alpha从相机观测角度看目标的角度与视角相关。bdd100k/geometry.py 中的Label3d类演示了如何从location dimension orientation还原出 8 个角点并通过投影矩阵get_edges_with_visibility把 3D 框画到 2D 图像上可见边实线、遮挡边虚线。数据集本身是在真实道路上行车采集的下图是采集 GPS 轨迹图覆盖城市道路、高速、隧道等多种场景️ labels 通用字段与 attributes 属性详解每个 label 对象除了box2d/poly2d/box3d三种几何信息外还有一组通用字段字段类型说明idint32实例唯一 ID用于跨帧跟踪categorystring类别名称分类标签manualShapeboolean形状是否人工创建/修改manualAttributesboolean属性是否人工创建/修改scorefloat标注置信度/质量分数attributesobject细粒度属性见下表attributes中常见的属性项属性取值适用对象occludedtrue / false通用目标是否被遮挡truncatedtrue / false通用目标是否被截断trafficLightColorred / green / yellow / none交通信号灯areaTypedirect / alternative可行驶区域直接/可替代laneDirectionparallel / vertical车道线平行/垂直方向laneStylesolid / dashed车道线实线/虚线laneTypes8 种之一车道线类型 10 类道路对象与 8 种车道线类型box2d 标注的 10 类道路对象bike、bus、car、motor、person、rider、traffic light、traffic sign、train、truckpoly2d 标注的 8 种车道线类型laneTypescrosswalk、double other、double white、double yellow、road curb、single other、single white、single yellow帧级attributes还包含场景元信息方便做困难样本分析weatherrainy / snowy / clear / overcast / partly cloudy / foggy / undefinedscenecity street / highway / tunnel / residential / parking lot / gas stations / undefinedtimeofdaydaytime / night / dawn-dusk / undefined 从标注到评测检测任务提交格式做目标检测时官方评测APIoU0.75使用的提交格式比标注格式更简洁是一个扁平的 JSON 数组[ { name: 帧名, timestamp: 1000, category: car, bbox: [x1, y1, x2, y2], score: 0.99 } ]注意提交时bbox是[x1, y1, x2, y2]的数组形式0-indexed从左上角计与标注文件里的box2d对象不同。分割任务则沿用 Cityscapes 的 IoU 指标结果需使用train_id编码例如 car 对应 13详见 doc/evaluation.md。 快速上手三步走获取仓库git clone https://gitcode.com/gh_mirrors/bd/bdd100k可视化检查运行 bdd100k/show_labels.py用-l指定标注 JSON、--image-dir指定图片目录即可看到 box2d、车道线、可行驶区域的叠加效果格式转换用 bdd100k/label2det.py 把标注转成检测提交格式用 bdd100k/coco2bdd.py 和 bdd100k/bdd2coco.py 与 COCO 格式互转方便直接训练主流检测模型。❓ 常见问题 FAQQ1box2d 和 box3d 会同时出现在一个 label 里吗会。有 3D 标注的目标同时附带其在图像上的投影框bdd100k/show_labels.py 中get_boxes函数正是按box2d或box3d任一存在来筛选目标框的。Q2老版本标注文件2018-08-28 之前有什么不同旧格式采用frames → objects两级嵌套且poly2d直接是[x, y, type]三元组数组新格式改为帧列表 labelspoly2d升级为带vertices / types / closed的结构。bdd100k/label2det_v1.py 对应旧格式转换可视化时可用--format v1切换。Q3可行驶区域的 direct 和 alternative 是什么区别direct指当前可正常行驶的区域alternative指临时可借用如可停靠/绕行的区域可视化代码中分别用红色和蓝色区分。小结bdd100k 标注格式 帧级元信息天气/场景/相机参数 标签列表id/类别/属性 几何信息几何信息三件套各司其职——box2d 管目标、poly2d 管区域和车道线、box3d 管三维空间。吃透本文的字段表你就能自信地读写和转换 BDD100K 标注数据了。【免费下载链接】bdd100kThis repo has been moved to https://github.com/bdd100k/bdd100k permanently.项目地址: https://gitcode.com/gh_mirrors/bd/bdd100k创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考