一个简单的工具,可以手动标记Distinct类别中的图像。

simplabel的Python项目详细描述


单纯形标签

PyPI versionTravis CI statusLicense: GPL v3

一个图形化工具,用于在不同类别中手动标记图像以构建训练数据集。 只需传递一个类别列表,一个包含图像的目录,然后开始标记。 支持多个用户,协调和键盘绑定标签更快!

screenshot

安装

使用pip

安装

simplabel位于pypi上,因此可以使用pip安装它

pip install simplabel

从源安装

将存储库克隆到您的计算机上

git clone https://github.com/hlgirard/Simplabel.git

并使用pip进行安装

cd Simplabel
pip install .

用法

快速启动

simplabel可以从命令行启动,无需任何参数:

simplabel

系统将提示您选择包含要标记的图像的目录。用“+”按钮添加标签并开始标记。数字键对应于标签,可以使用。

目标目录和/或标签也可以直接从命令行传递:

simplabel --labels dog cat bird --directory path/to/image/directory

第一次使用后,标签存储在labels.pkl中,忽略--labels参数。

命令行参数

  • -d, --directory <PATH/TO/DIRECTORY>设置要搜索图像并将标签保存到的目录。默认为当前工作目录。
  • -l, --labels <label1 label2 label3 ...>设置标记任务的类别。仅在给定目录中的第一次使用时传递。
  • -u, --user <USERNAME>设置用户名。如果未传递任何登录名,则默认为操作系统登录名。
  • -r, --redundant不显示独立标签的其他标签选择。在此模式下,“对帐”和“生成主控形状”不可用。
  • -v, --verbose增加了详细级别。
  • --remove-label <LABEL>尝试从保存在labels.pkl中的列表中安全删除标签(还必须通过-d
  • --reset-lock重写锁,防止同一用户名同时被多次使用。
  • --delete-all删除simplabel在目录中创建的所有文件(还必须传递-d

多用户

应用程序依赖文件系统保存每个用户的选择并显示其他用户的选择。如果工作目录位于共享驱动器或同步文件夹(Dropbox、OneDrive…)中,则效果最佳。协调工作流允许任何用户查看和解决冲突。make master选项可用于创建和保存包含所有标记图像的主字典-labeled_master.pkl(在协调之后)。

导入保存的标签

应用程序保存一个labeled_<username>.pkl文件,该文件包含一个pickeled字典{image_name:label}。要导入字典,请使用以下示例代码:

importpicklewithopen("labeled_user1.pkl","rb")asf:label_dict=pickle.load(f)

高级用法

公用事业

完成标记后,使用“Flow_to_目录”工具按标签将图像复制到不同的目录

flow_to_directory --input-directory data/labeled --output-directory data/sorted

python对象

Tkinter应用程序也可以从Python环境启动

fromsimplabelimportImageClassifierimporttkinterastkroot=tk.Tk()directory="data/raw"categories=['dog','cat','bird']MyApp=ImageClassifier(root,directory,categories)tk.mainloop()

许可证

此项目是在gplv3许可下授权的-有关详细信息,请参阅LICENSE.md文件。

致谢

Tkinter图形用户界面的测试基于Ivan_Pozdeev在StackOverflow的回答:

https://stackoverflow.com/questions/4083796/how-do-i-run-unittest-on-a-tkinter-app

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
spring boot+react+mysql连接器上的java构建失败?   java如何从动态标题/文本中仅提取数字?   Eclipse java类在方法注释后插入新行   java是否在makefiles文档中指定了两次编译?   java在Spring拦截url配置中,ROLE_USER和ROLE_ANONYMOUS之间有什么区别?   sql上相同参数的java多值   java将安卓应用程序连接到本地MS SQL数据库   java在运行时收到谓词函数的名称时,如何将一个函数作为谓词传递给另一个函数?   java Lambda输入文件到数组中   java如何在数组中搜索元素?以及如何将声明了方法的变量添加到数组列表中?   java如何按列对分布在众多json文件中的数据进行分组   安装pyjnius时发生java错误,未找到“jni.h”。(操作系统X 10.10.1)   java Android:CursorIndexOutOfBoundsException:请求索引0,大小为0,站点上没有答案   java My应用程序不回退IBM MQ消息   JAVAutil。扫描器Java扫描器或缓冲读取器   java缩短开关盒方法   java获取当前文件夹中的可用空间   Java属性绑定   java如何制作注释类型的AnnotationProcessor测试*子类型*?