给连续图片帧标左中右通行状态时,本地浏览器、键盘快捷键和 CSV 输出,比一开始做重平台更顺手。
navgrid-labeler 是一个很小的图像标注工具,公开仓库在这里:
https://github.com/GitLaughs/navgrid-labeler它解决的问题也很具体:给连续图片帧标注 left / center / right 三个区域的导航状态,然后导出一个 labels.csv。
这种工具最容易做歪。很多时候我们会下意识想加账号、项目管理、数据库、云端上传、权限系统、任务分发和复杂看板。但如果场景只是“本地有一批视频抽帧,需要快速把左中右通行状态修一遍”,这些功能反而会拖慢工作。
所以这个工具没有先做平台功能,而是先把标注这一步做快。
标注工具的瓶颈通常是手
连续帧标注有一个特点:单张图片的信息量不大,但重复次数很多。
如果每张图片都要移动鼠标、点选区域、打开下拉框、选择标签、再点保存,几十张还可以忍,几百张以后就会非常痛苦。最后卡住的通常是人的手:一直在重复低效动作,节奏很快就断了。
navgrid-labeler 把交互压缩到键盘上:
1 / 2 / 3切换left / center / right。Q / W / E标记free_near / free_mid / free_far。A / S / D标记obstacle_near / obstacle_mid / obstacle_far。Space / PageDown下一张。PageUp上一张。Ctrl+S立即保存。
这套快捷键看起来朴素,但很适合连续图片帧。手不用离开键盘,眼睛可以一直看图,标注节奏就会稳定很多。
先把标签定死
这个工具没有设计成通用框选工具,也没有做任意标签编辑器。它固定三个区域:
left, center, right每个区域固定六种状态:
free_nearfree_midfree_farobstacle_nearobstacle_midobstacle_far这种限制不算缺点。对机器人导航、视频抽帧清洗、左右中通行状态判断这类任务来说,标签空间越明确,标注一致性越高。标注员不需要每次思考“这类情况该不该新建一个标签”,训练脚本也不需要兼容一堆临时命名。
做内部数据工具时,更合适的做法是先把标签定义写死,等真实使用中反复证明不够,再加配置能力。过早通用化会让工具变重,也会让使用者在每次标注时多一个决策负担。
连续帧应该继承上一张
视频抽帧和机器人连续画面有一个优势:相邻帧通常变化很小。
如果上一张图的 left / center / right 已经标好,下一张图很可能只需要改一个区域,甚至完全不需要改。navgrid-labeler 利用了这个特点:
- 当前图片已有标注时,优先读取已有结果。
- 当前图片还没有标注时,复制上一张图片的三区结果。
- 标注者只修正发生变化的区域。
这比“每张图都从空白开始”省很多力。它也更符合实际标注过程:人是在修正一段连续场景,不是在孤立地处理单张图片。
最后只导出 CSV
这个工具最后只生成一个标准 CSV:
image,left,center,rightframe_000001.png,free_far,obstacle_near,free_midframe_000002.png,free_far,free_far,free_farCSV 的好处是没有绑定。你可以用 Excel 检查,也可以用 Pandas 读取,可以直接接训练脚本,也可以丢进更大的数据清洗流程。
很多内部工具最怕输出格式太聪明。比如把结果放进某个私有数据库,短期看很顺,长期看就会被部署环境、账号权限和导出流程绑住。对小规模数据整理来说,一个可读、可 diff、可脚本处理的文本文件更稳。
本地浏览器是很好的轻量界面
navgrid-labeler 用 Flask 提供本地服务,再用浏览器做界面。这是一个很务实的组合:
- 不需要做桌面 GUI。
- 不需要上传图片。
- 不需要数据库。
- Windows、Linux、macOS 都可以跑。
- 前端交互可以直接用 HTML、CSS、JavaScript 写清楚。
本地浏览器工具有一个优势:它看起来像网页,但数据仍然留在本机。图像标注可能包含实验素材、机器人视角或未公开数据,这一点很实用。
自动保存比“提醒保存”更可靠
标注工具必须尊重一个现实:人会忘记保存。
如果用户标了几十张以后才想起来保存,一次浏览器刷新、一次误操作、一次程序退出都可能让进度丢失。这个工具选择在切换下一张前自动保存 labels.csv,同时保留 Ctrl+S 手动保存。
这类小设计不复杂,但很实用。标注过程本身已经足够重复,工具不该再要求用户记住额外流程。
测试要覆盖数据格式
这种小工具也需要测试,只是测试重点不同。
navgrid-labeler 的测试不需要模拟一个复杂平台,而是覆盖几件会直接影响数据质量的事:
- 图片文件过滤与排序。
labels.csv写入格式。- 未标注图片继承上一张标签。
这个工具最重要的产物是导出的标签文件;CSV 格式一错,后面的训练、分析和复查都会跟着错。
小工具也要有明确范围
这种工具的优点在于,它没有把自己包装成全能标注平台。
它适合:
- 自动驾驶或机器人导航数据预标注。
- 左中右通行状态判断数据集整理。
- 视频抽帧后的快速人工修正。
- 需要轻量 CSV 标注工具的内部数据清洗流程。
它不适合:
- 多人协同标注管理。
- 任意框选或分割标注。
- 大规模在线数据平台。
- 复杂权限和审核流。
范围清楚的小工具反而更容易长期使用。它只处理连续帧里最烦的那一步:快速修左中右的状态。
最后还是回到标注速度
做完这个工具后,最明显的感受是:连续帧标注不该让人频繁换鼠标、找按钮、担心有没有保存。
键盘优先、继承上一张、自动写 CSV,这几件事比平台功能更早该做。
继续读