Sloth标注工具定制完全指南写一个Python配置文件打造你的专属标注工具【免费下载链接】slothSloth is a tool for labeling image and video data for computer vision research.项目地址: https://gitcode.com/gh_mirrors/slot/slothSloth 是一款面向计算机视觉研究的图像与视频数据标注工具。它的最大特色是整个工具的行为都由一个 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 按钮上显示的文字Faceitem负责绘制该标注的可视化类sloth.items.RectIteminserter负责捕获鼠标、创建新标注的类sloth.items.RectItemInserterhotkey快速进入插入模式的快捷键fattributes标注的默认属性键值对{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),仅供参考