Label Studio 与 Hugging Face Spaces 中的 Segment Anything 结合

Label Studio社区很高兴地宣布发布Segment Anything Machine Learning Backend on Hugging Face Spaces!这一新版本通过使用MobileSAM构建的模型作为Hugging Face Spaces应用,提供了Segment Anything通用物体检测知识的突破性能力,这将使您更轻松地启动并连接到您的Label Studio实例。
什么是Segment Anything模型?
Segment Anything是Meta AI研究团队开发的一个模型,能够"通过单次点击从任何图像中'切出'任意对象"。SAM最引人注目的特性之一是它"作为一个可提示的分割系统,具备对陌生对象和图像的零样本泛化能力,无需额外训练"。

使用边界框约束选择狗的Segment Anything模型
从更高层次来看,这意味着SAM对物体具有更广义的认知概念,使其能够识别并分割图像中的物体,即使这些物体在训练过程中从未出现过。这种零样本泛化能力,结合强大的关键点和边界框提示功能,使SAM成为预标注新图像分割数据集的理想工具。
您可以在官方SAM网站上了解更多关于该模型的信息。
什么是Hugging Face Spaces?
根据Hugging Face Spaces文档说明:"Spaces提供了一种简单的方式,可直接在您或您组织的平台上托管机器学习演示应用。这个灵活的平台能让您创建机器学习作品集,在会议或向利益相关者展示项目,并与机器学习生态系统中的其他成员开展协作。"除此之外,Hugging Face Spaces还为用户提供了与更广泛的机器学习社区协作构建和分享机器学习应用的途径。
例如,Label Studio社区今年早些时候推出了自己的Label Studio Space。这个空间允许用户在沙盒环境中试用Label Studio,或复制Label Studio Space以在自己的环境中运行。随着Spaces中永久存储功能的加入,您甚至可以在Hugging Face Spaces中完全托管一个生产就绪的Label Studio实例。
现在,我们正在通过发布"Label Studio x Segment Anything"空间来扩展Label Studio Spaces的产品组合。本文将指导您启动Label Studio和Segment Anything Model实例,以构建对象标注工作流程。
启动与配置Label Studio
最快开始使用的方法是复制Label Studio Space到您的Hugging Face账户中。导航至官方Label Studio应用空间,展开Spaces工具栏中的菜单,选择复制此Space。系统会提示您填写一些基本信息,点击复制Space按钮后即可开始使用。当界面运行后,您可以创建新的登录信息并开始使用全新的Label Studio演示环境。

复制官方Label Studio空间
要运行一个具有持久化存储的安全Label Studio实例,请查阅今年早些时候的文章Kickstart your Label Studio Annotation Project on Hugging Face Spaces获取完整详情。
为了让Segment Anything模型能够访问您的图像数据,您必须在Label Studio中启用文件共享功能。在您的Label Studio空间中选择设置,然后向下滚动到变量与密钥部分,并添加以下变量:
LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/label-studio/data/images

在Label Studio中启用本地文件服务
第一个选项启用本地文件服务,允许SAM从Label Studio下载文件。第二个选项指定Label Studio应提供文件的位置。如果您在演示模式下运行Label Studio,请使用上述设置。如果使用永久存储,按照文章中的说明,将该变量设置为/data/images
。
获取您的Label Studio终端地址和API密钥
您需要配置SAM实例,提供与Label Studio的连接信息。要获取Label Studio实例的直接URL,请选择Spaces应用菜单,点击嵌入此空间,并记录直接URL的值。

复制Label Studio的URL链接
要获取Label Studio API密钥,请登录Label Studio,点击应用右上角的用户设置,从下拉菜单中选择账户与设置,并记录访问令牌。

复制Label Studio访问令牌
有了这两个值,您就可以启动您的SAM Space了!
启动并配置SAM机器学习后端
现在是启动Segment Anything Space的时候了。前往官方的Label Studio Space for Segment Anything,选择Space应用菜单,然后点击复制此Space。和之前一样,系统会提示您填写一些基本信息,点击复制Space按钮后,您的模型副本将开始构建。
在模型构建过程中,请导航至空间的“设置”并配置以下密钥,其值已在步骤2中收集:
LABEL_STUDIO_HOST=<YOUR_DIRECT_URL_HERE>
LABEL_STUDIO_ACCESS_TOKEN=<YOUR_ACCESS_TOKEN_HERE>

设置LABEL_STUDIO_HOST变量
等待空间构建并启动。当应用程序报告以下内容时,您就知道它已准备就绪:
{"model_class":"SamMLBackend","status":"UP"}

验证Segment Anything模型是否正在运行
通过选择Spaces应用菜单并点击嵌入此空间来获取SAM URL。请记录下直接URL的值。
设置您的标注项目
首次登录时,您将看到Heidi the Opossum欢迎界面,系统会提示您创建一个新项目。请选择创建项目。

"海蒂在这里看不到任何项目。"
在创建项目对话框中,您将看到三个标签页。在第一个标签页中,输入项目名称(例如Segment Anything),然后选择标注设置。系统会显示预配置的标注模板,但我们将为该项目导入自定义模板。请选择自定义模板选项。

标注设置界面
您将看到一个模板编辑界面。选择代码,删除任何现有代码,然后将以下配置粘贴到文本框中。
<View>
<Image name="image" value="$image" zoom="true"/>
<Header value="Brush Labels"/>
<BrushLabels name="tag" toName="image">
<Label value="Dog" background="#FF0000"/>
<Label value="Possum" background="#0d14d3"/>
</BrushLabels>
<Header value="Keypoint Labels"/>
<KeyPointLabels name="tag2" toName="image" smart="true">
<Label value="Dog" smart="true" background="#000000" showInline="true"/>
<Label value="Possum" smart="true" background="#000000" showInline="true"/>
</KeyPointLabels>
<Header value="Rectangle Labels"/>
<RectangleLabels name="tag3" toName="image" smart="true">
<Label value="Dog" background="#000000" showInline="true"/>
<Label value="Possum" background="#000000" showInline="true"/>
</RectangleLabels>
</View>
请注意,在本示例中,我们关注的是为图像标注"狗"和"负鼠"标签。您可以根据实际应用需求自由替换这些标签值,并添加任意数量的标签。
标注配置包含笔刷、关键点和矩形标注界面元素。关键点和矩形标注会向SAM机器学习后端发送推理请求。SAM后端不支持智能笔刷标注,但您可以使用笔刷工具优化自动生成的关键点标注。
在输入代码时,您将看到一个示例标注界面。当您对界面满意时,请选择保存。

终极自定义标注界面
连接Label Studio与SAM
选择项目菜单,然后选择Segment Anything(或您为项目设置的任何名称)。选择设置,然后选择机器学习。

机器学习配置面板
选择添加模型,并填写标题和URL详情。URL将是你设置的Segment Anything空间的地址。将用于交互式预标注的开关切换为开启状态,然后选择验证并保存。

添加并验证Segment Anything模型
选择保存,然后在导航器中选择项目名称(紧接在项目之后,在本例中为项目/分割任意对象)以返回任务界面。
Label Studio将向您展示任务管理界面,您会看到一个提示您尚未导入任何数据的屏幕。

"看起来您还没有导入任何数据。"
选择前往导入并导入您的首个项目图像。选择上传文件并选取您想使用的任意图片。在本示例中,我们将使用狗和负鼠的图片,但您可以使用任何您想要的数据集。
开始标注
导入图像后,现在可以开始标注了!选择标注所有任务开始吧!
使用关键点标注
选择标注所有任务后,您将进入任务标注界面。界面左上角会显示您的图像标注任务,下方将呈现三行标签:首行用于笔刷标注,第二行用于关键点标注,第三行用于边界框标注。图像右侧可见工具栏,底部设有导航按钮。请通过导航按钮确保自动标注功能已开启,同时取消图像顶部自动接受标注建议的勾选状态。

标注界面概览
我们将从自动关键点标注开始。在右侧工具栏中,选择紫色的智能选择工具,点击直到选中三个紫色圆点(这将启用智能关键点工具)。

选择智能关键点工具
现在在第二行选择您想要的标签(专业提示:使用与该标签关联的快捷键来选择您想要的标签,在本例中为3)。当标签高亮显示时,在图像任意位置点击放置关键点,系统将自动触发SAM后端。根据您的硬件配置,模型可能需要几秒钟时间返回预测结果。

使用智能关键点选择对象遮罩
如果您对分割遮罩效果满意,请点击自动标注工具旁的勾选标记。若效果不理想,可重复以下流程:选择关键点工具后点击需要添加到标注的区域(此时使用快捷键会非常便捷,例如在本案例中,您可以按3键选择犬类关键点标注,然后点击需要细化的区域)。

通过额外关键点优化选择
如果模型过度选择了某个区域,您可以通过按住option键并放置关键点来进行负向选择。Option-select操作将创建负向关联并移除标注中不需要的部分。当您对选择结果满意时,请勾选确认标记,标注界面会将您的关键点选择合并为一个遮罩。请注意,模型还会给出选择结果的置信度评分,本例中为97%。

最终图像标注
如果您对标注结果满意,请选择提交并自动进入下一个标注任务。
使用边界框进行标注
在以下示例中,这次以负鼠为例,首先选择适当的智能标注工具,本例中使用的是矩形边界框。

选择智能矩形工具
然后从第三行选择您想要应用的矩形标签,在本例中是Possum(对应的快捷键为6)。在您感兴趣的主体周围拖动绘制一个矩形,SAM模型将基于该区域进行预测。

使用智能矩形工具进行对象遮罩
如果对所选区域满意,请勾选确认标记并提交标注。

提交最终标注
假设您发现(如本示例所示,置信度为92%)区域被过度选择;您应使用关键点工具,通过亲和点和反亲和点提供更精细的选择控制。
接下来是什么?
Label Studio在机器学习流程中扮演着关键角色,它提供了一个界面让人类能够指导数据标注和注释这一关键步骤,与机器学习系统协同工作以加速流程。您可以在Label Studio文档中了解更多关于将Label Studio集成到机器学习流程的信息。查看GitHub仓库获取关于SAM ML后端的完整文档。
标注项目完成后,您可以通过项目管理首页的"导出"界面导出标签。掩码和标注将以JSON目录形式导出,供您的机器学习和数据科学流程使用。
Shivansh Sharma,一位活跃的Label Studio社区成员,开发了最初的SAM ML后端。如果您有想要分享的项目或希望与他人合作启动标注项目,加入Label Studio Slack社区,已有超过10,000名Label Studio用户注册分享见解并与同行交流。
标注愉快!