Sloth标注工具定制完全指南:写一个Python配置文件打造你的专属标注工具
【免费下载链接】slothSloth is a tool for labeling image and video data for computer vision research.项目地址: https://gitcode.com/gh_mirrors/slot/sloth
Sloth 是一款面向计算机视觉研究的图像与视频数据标注工具。它的最大特色是:整个工具的行为都由一个 Python 配置文件驱动——标注哪些类别、用什么快捷键、以什么样式画框,全部可以在一个配置文件里完成。这篇指南将带你一步步写出自己的 Sloth 标注工具 Python 配置文件,把默认工具改造成贴合你研究场景的专属标注工具。
为什么 Sloth 标注工具用 Python 配置?
Sloth 的配置文件就是一个普通的 Python 模块,模块级变量代表各项设置。官方默认配置位于 sloth/conf/default_config.py,你可以直接打开它阅读——每一行都有注释说明。
这种设计带来三个好处:
- 🎯零学习成本:会写 Python 基本语法就能改配置;
- 🧩能力上限高:配置中可以调用函数、实例化对象,甚至定义新的标注类;
- 🔁项目可复用:把配置文件随项目一起保存,团队成员拿到就能用出完全一致的标注环境。
启动时通过命令行参数-c指定配置即可,例如:
sloth -c myconfig image1.jpg image2.jpg配置文件中的 4 个核心设置
打开 default_config.py,你会发现默认配置只包含 4 组变量,对应标注工具的四大方面:
LABELS:定义你的标注类别(核心)
LABELS是一个字典组成的元组,每个字典描述一种标注类型,包含 5 个键:
| 键 | 作用 | 示例 |
|---|---|---|
text | GUI 按钮上显示的文字 | 'Face' |
item | 负责绘制该标注的可视化类 | 'sloth.items.RectItem' |
inserter | 负责捕获鼠标、创建新标注的类 | 'sloth.items.RectItemInserter' |
hotkey | 快速进入插入模式的快捷键 | 'f' |
attributes | 标注的默认属性(键值对) | {'class': 'Face'} |
Sloth 内置了矩形、点、多边形等现成可视化类(详见 doc/items.rst),你通常只需做"配对",不用自己画。
💡 小贴士:item和inserter可以直接写字符串形式的模块路径,Sloth 会自动导入;写成字符串还是直接给类对象,效果相同。
HOTKEYS:定制你的快捷键工作流
HOTKEYS是元组的元组:第一个元素是按键组合,第二个元素是接收标注工具对象的回调函数,第三个元素(可选)是动作说明。默认已包含"下一页 / 上一页 / 确认当前图 / 删除选中"等高频操作,你可以增删改任何一条,比如把PgDown换成Space翻页,让自己的双手几乎不离键盘。
CONTAINERS:支持不同的标注文件格式
CONTAINERS定义"文件名通配符 → 存储容器类"的映射。默认支持 JSON、YAML、MessagePack、Pickle 等格式。如果你的数据集带有第三方标注格式(无需先转成 JSON),可以自定义容器类挂在这里,详见 doc/containers.rst。
PLUGINS:用插件扩展功能
PLUGINS是实现了 Sloth 插件接口的类列表,默认为空。例如项目自带的 plugins/facedetector.py 人脸检测插件,启用后标注工具能自动在图中框出人脸,省去手动画框。
三步写出你的第一份标注工具配置文件
第 1 步:复制默认配置
把 default_config.py 复制到你的项目里,改名为myconfig.py,只保留你需要的标注类别。比如只做人脸标注时,LABELS可以精简为:
LABELS = ( { 'attributes': {'class': 'Face'}, 'inserter': 'sloth.items.RectItemInserter', 'item': 'sloth.items.RectItem', 'hotkey': 'f', 'text': 'Face', }, )第 2 步:注意尾随逗号
LABELS、HOTKEYS等设置末尾的逗号是必须的,否则外层的元组不会成立。这是官方文档 doc/configuration.rst 特别强调的坑。
第 3 步:运行验证
sloth -c myconfig examples/image1.jpg如果窗口标题栏正常打开、按钮区出现"Face"按钮,说明配置生效。此时按f即可进入插入模式画矩形,按Del删除,按PgDown翻到下一张图。
进阶:定制标注的显示样式
如果内置的黄色矩形不够个性,可以写一个自定义可视化类。项目中的示例 examples/customrectitemconfig.py 演示了最小改法:继承RectItem,把画笔设为 2 像素红色,并让矩形内自动显示 x、y 坐标文本。
class CustomRectItem(RectItem): defaultAutoTextKeys = ['x', 'y'] # 框内显示 x、y 坐标 def __init__(self, *args, **kwargs): RectItem.__init__(self, *args, **kwargs) self.setPen(QPen(Qt.red, 2)) # 红色、线宽 2然后在配置的LABELS中把'item'指向这个类即可。更进一步地,你可以通过实例化对象并调用setColor()来为不同类别分配不同颜色(红色矩形标"行人"、绿色矩形标"车辆"),让标注画面一目了然,相关写法见 doc/items.rst 的 "Factorize your custom visualization item" 一节。
扩展而非覆盖:保留默认标注类
如果只想在默认配置基础上追加新类别,不要整个重写LABELS。由于配置就是一个 Python 模块,可以直接导入再拼接:
from sloth.conf.default_config import LABELS LABELS += ({ 'attributes': {'class': 'eye'}, 'inserter': 'sloth.items.PointItemInserter', 'item': 'sloth.items.PointItem', 'hotkey': 'e', 'text': 'Eye', },)注意这里LABELS +=后面必须带逗号,否则又变成"单个对象加括号"的坑。
常见问题速查 🧰
- Q:配置写了没效果?确认命令行带了
-c myconfig,且配置文件所在目录在 Python 路径中(可用--pythonpath参数添加)。 - Q:如何给点标注区分左右眼?用
attributes里的列表值提供可选项,用户在 GUI 属性面板中交互选择即可,无需改代码。 - Q:标注数据存到哪里?与图片同名、后缀按
CONTAINERS匹配,例如image1.json,格式类似 examples/example1_labels.json。
写在最后
Sloth 标注工具的定制思路可以概括为一句话:配置即代码,代码即工具。从修改LABELS开始,到你写出带自定义颜色、自定义快捷键、自定义插件的专属标注环境,全程只需要一个 Python 配置文件。建议从 examples/customrectitemconfig.py 这个最小示例入手,配合 examples/image1.jpg、examples/image2.jpg 两张示例图动手练一练,你会发现打造自己的图像标注工具真的没那么难。
📌 延伸阅读:doc/configuration.rst(配置详解)、doc/concepts.rst(标注概念)、doc/first_steps.rst(上手指南)
【免费下载链接】slothSloth is a tool for labeling image and video data for computer vision research.项目地址: https://gitcode.com/gh_mirrors/slot/sloth
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考