基于浏览器的标签数据平台

iris-image-labelling的Python项目详细描述


虹膜

A browser based UI for labelling image files that tracks the labels using a database, rather than using folders and paths

Iris

为什么要用虹膜?在

  • 标记数千张图片(或者可能是数百万张?)无需使用文件管理器,文件太多,速度会变慢。
    • Iris使用分页来查看数据的子集,因此平台在处理大量图像时不会减慢速度。在
  • 使用数据库跟踪所有标签。
    • Iris将数据的标签存储在SQLite数据库文件中的.iris目录中,该目录是在data文件夹的根目录下创建的。这将标签与目录路径分离,有助于避免错误。在
  • 简单易用的拖放界面。
    • 图像可以使用简单的拖放交互来标记,使任何人都可以轻松使用。在

安装

要安装iris,请使用以下命令:

$   pip install iris-image-labelling

使用

安装后,iris将注册为终端中的命令,可从任何目录访问。在

Iris假设您的数据最初是在一个目录中组织的,该目录为您的数据的每个类别都有子目录可能会接受。在

^{pr2}$

文件夹最初用于推断数据可以采用的类别。它们不需要在其中包含任何数据/图像。在

设置好以下项目结构后,导航到data/的父目录,然后从终端启动iris

$   iris launch -f data

Iris默认情况下在端口5000上启动,您可以从那里继续并开始标记数据。在

ArgumentDescription
-fFolder to build database from
-hThe host to run the server on
-pThe port number to run the server on

重组数据

为了避免重新标记的数据与由图像的文件路径推断出的原始类别之间的任何混淆,工具栏中有一个标记为“重组数据”的按钮。 这将根据新标签在文件夹中重新组织文件。在

标签

图像也可以带有标记,这些标记最初是根据子目录推断出来的。它是顶层目录下的任何目录。例如:

data/
    tag_1/
        another_tag/
            file_1.png
            file_2.png
            file_3.png
    tag_2/
        file_4.png
        file_5.png
        file_6.png

将鼠标悬停在Tag标签上之后,这些标记会显示在基于浏览器的UI中。在

编程API

一旦在目录中启动iris,并且.iris文件夹 安装时,可以使用pythonapi获取标签并进行更多更改 程序化的。在

获取文件列表

可以使用以下代码段返回完整的文件列表。Query类的folder参数是存储图像的文件夹的相对路径。在

fromiris.api.filesimportQueryq=Query(folder="../images/")df=q.get_all_files()

输出示例:

^{tb2}$

修改文件的属性

可以使用以下代码段修改文件的任何或所有属性。在

fromiris.api.filesimportQueryq=Query(folder="../images/")q.update_file(270,{"category":"new_category"})

第二个参数file_kwargs,是一个字典,其键应该对应于DataFrame中的一个列。如果提供的密钥不存在,它将被忽略。在

待办事项

  • []使用拖放界面更改标记的能力
  • []使用浏览器UI添加新类别
  • []编写JS前端的单元测试
  • []为Python后端编写单元测试

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

推荐PyPI第三方库


热门话题
java JavaFX SwingWorker等价物?   java如何检查一个字符串只包含数字和一个小数点?   java遇到了异常组织。阿帕奇。卡塔琳娜。LifecycleException:无法启动组件   java如何从日期格式获取最低计时单位?   java应用服务器与开发过程的集成   java我无法运行Junit测试   无法在java多线程处理中维护生产者任务的顺序   java如何在CLI应用程序中“拦截”Ctrl+C?   java如何使用JSch进行原子SFTP文件传输,以便在写入过程完成之前无法访问该文件?   java当用户摆弄html范围滑块时,如何更改内容(文本)?   如何在Java中向现有文件追加文本?   JUnit测试中的java模拟Apache驼峰位置   java Maven更新项目和依赖项