支持SAM的Grounding DINO后端集成
该集成将允许您:
- 使用文本提示对图像中的物体进行零样本检测。
- 无需任何模型微调,即可指定检测任意对象并获得最先进的结果。
- 仅通过文本提示即可从SAM获取分割预测结果。
有关预训练Grounding DINO模型的更多详情,请参阅此处。
开始之前
在开始之前,您必须安装Label Studio ML后端。
本教程使用grounding_sam
示例。
快速入门
确保已安装Docker。
编辑
docker-compose.yml
文件以包含以下内容:LABEL_STUDIO_HOST
设置Label Studio主机的终端节点。必须以http://
开头LABEL_STUDIO_ACCESS_TOKEN
设置Label Studio主机的API访问令牌。可以通过登录Label Studio并访问账户与设置页面获取。
示例:
LABEL_STUDIO_HOST=http://123.456.7.8:8080
LABEL_STUDIO_ACCESS_TOKEN=your-api-key
运行
docker compose up
使用
docker ps
检查后端的IP地址。在将后端连接到Label Studio项目时需要使用此URL。通常为http://localhost:9090
。创建一个项目并编辑标注配置(下方提供了示例)。在编辑标注配置时,请确保将所有矩形标签添加在
RectangleLabels
标签下,并将所有对应的笔刷标签添加在BrushLabels
标签下。
<View>
<Image name="image" value="$image"/>
<Style>
.lsf-main-content.lsf-requesting .prompt::before { content: ' loading...'; color: #808080; }
</Style>
<View className="prompt">
<TextArea name="prompt" toName="image" editable="true" rows="2" maxSubmissions="1" showSubmitButton="true"/>
</View>
<RectangleLabels name="label" toName="image">
<Label value="cats" background="yellow"/>
<Label value="house" background="blue"/>
</RectangleLabels>
<BrushLabels name="label2" toName="image">
<Label value="cats" background="yellow"/>
<Label value="house" background="blue"/>
</BrushLabels>
</View>
- 在项目设置的模型页面中,连接模型。
- 进入项目中的图像任务。启用自动标注(位于标注界面底部)。然后在提示框中输入内容并点击添加。完成后,您应该会收到预测结果。观看上方视频可查看演示。
使用GPU
为了获得最佳用户体验,建议使用GPU。为此,您可以更新docker-compose.yml
文件,包含以下内容:
environment:
- NVIDIA_VISIBLE_DEVICES=all
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
使用GroundingSAM
将Segment Anything模型与您的文本输入相结合,自动生成掩码预测!
要实现这一点,请在运行前设置 USE_SAM=true
。
警告:在没有GPU的情况下使用GroundingSAM可能导致性能缓慢,不建议这样做。如果必须在仅支持CPU的机器上使用,并且遇到性能缓慢或在标注界面看不到任何预测结果的情况,请考虑以下建议之一:
- 增加分配给Docker容器的内存(例如在
docker-compose.yml
中设置memory: 16G
)- 通过设置环境变量
ML_TIMEOUT_PREDICT=100
来增加Label Studio实例的预测超时时间。- 使用“MobileSAM”作为“SAM”的轻量级替代方案。
如果想使用更高效的SAM版本,请设置USE_MOBILE_SAM=true
。
批量输入
注意:这是一个实验性功能。
克隆包含实验性批处理功能的Label Studio特性分支。
git clone -b feature/dino-support https://github.com/HumanSignal/label-studio.git
使用
docker compose up
运行此分支按照快速入门部分的步骤2-5操作,现在使用新克隆的Label Studio分支的访问代码和主机IP信息。支持GroundingSAM功能。
前往项目中的数据管理器,选择您想要标注的任务。
选择操作 > 为GroundingDINO添加文本提示。
输入您想要获取预测结果的提示词,然后点击提交。
注意:如果您的提示词与已分配的标签值不同,可以使用下划线为提示输出指定正确的标签值。例如,如果您想选择所有棕色猫,但仍希望它们在标注配置中显示为"cats"标签值,您的提示词应为"brown cat_cats"。
其他环境变量
如果在实验中,请将Dockerfile中的BOX_THRESHOLD
和TEXT_THRESHOLD
值调整为0到1之间的数字。默认值设置在dino.py
中。有关这些值的更多信息,点击此处。
如果想使用从目录保存的SAM模型,可以按照Dockerfile中所示使用MOBILESAM_CHECKPOINT
和SAM_CHECKPOINT
。