news 2026/8/27 17:23:13

Sloth标注工具定制完全指南:写一个Python配置文件打造你的专属标注工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Sloth标注工具定制完全指南:写一个Python配置文件打造你的专属标注工具

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 个键:

作用示例
textGUI 按钮上显示的文字'Face'
item负责绘制该标注的可视化类'sloth.items.RectItem'
inserter负责捕获鼠标、创建新标注的类'sloth.items.RectItemInserter'
hotkey快速进入插入模式的快捷键'f'
attributes标注的默认属性(键值对){'class': 'Face'}

Sloth 内置了矩形、点、多边形等现成可视化类(详见 doc/items.rst),你通常只需做"配对",不用自己画。

💡 小贴士:iteminserter可以直接写字符串形式的模块路径,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 步:注意尾随逗号

LABELSHOTKEYS等设置末尾的逗号是必须的,否则外层的元组不会成立。这是官方文档 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 17:21:19

掌握 CISSP,筑牢网络安全防线

掌握 CISSP,筑牢网络安全防线 CISSP(Certified Information Systems Security Professional,注册信息系统安全专业人员)是全球公认的网络安全领域 “黄金认证”,由 (ISC)(国际信息系统安全认证联盟&#xf…

作者头像 李华
网站建设 2026/8/27 17:19:49

基于MediaPipe与状态机的实时俯卧撑计数系统:从原理到工程实践

1. 项目缘起:从“数到崩溃”到“让机器看懂”去年帮一个体育学院的朋友做体能测试,其中一项是记录学生在一分钟内完成标准俯卧撑的次数。我坐在旁边,一手拿秒表,一手拿记录板,眼睛死死盯着测试者的动作。前二十个还好&…

作者头像 李华
网站建设 2026/8/27 17:19:33

免费内存清理工具 Mem Reduct:30 秒把电脑内存清清爽爽

免费内存清理工具 Mem Reduct:30 秒把电脑内存清清爽爽 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 先…

作者头像 李华
网站建设 2026/8/27 17:18:38

免费Fan Control教程:如何5步设置电脑风扇转速压低声浪?

免费Fan Control教程:如何5步设置电脑风扇转速压低声浪? 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…

作者头像 李华
网站建设 2026/8/27 17:17:34

bat脚本- 将jar 包批量安装到 Maven 本地仓库

文章目录前言bat脚本- 将jar 包批量安装到 Maven 本地仓库1. 脚本内容2. 测试3. 验证前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实…

作者头像 李华