在Label Studio中使用SAM2进行图像标注
Segment Anything 2(简称SAM 2)是Meta于2024年7月发布的模型。作为原始Segment Anything模型的升级版,SAM 2为图像和视频提供了更出色的对象分割能力。本指南将向您展示如何通过label studio使用SAM 2实现更优质的图像标注。
点击下方图片,观看我们的机器学习布道师Micaela Kaplan讲解如何将SAM 2连接到您的Label Studio项目。 在连接模型之前,您需要按照以下说明搭建一个SAM2实例!
开始之前
在开始之前,您必须安装Label Studio ML后端。
本教程使用segment_anything_2_image
示例。
请注意,截至2024年8月1日,SAM2仅支持在GPU上运行。
标注配置
当前Label Studio SAM2机器学习后端的实现采用交互模式运行。用户引导输入包括:
KeypointLabels
RectangleLabels
然后SAM2输出BrushLabels
作为结果。
这意味着所有三个控制标签都应体现在您的标注配置中:
<View>
<Style>
.main {
font-family: Arial, sans-serif;
background-color: #f5f5f5;
margin: 0;
padding: 20px;
}
.container {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
}
.column {
flex: 1;
padding: 10px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
text-align: center;
}
.column .title {
margin: 0;
color: #333;
}
.column .label {
margin-top: 10px;
padding: 10px;
background-color: #f9f9f9;
border-radius: 3px;
}
.image-container {
width: 100%;
height: 300px;
background-color: #ddd;
border-radius: 5px;
}
</Style>
<View className="main">
<View className="container">
<View className="column">
<View className="title">Choose Label</View>
<View className="label">
<BrushLabels name="tag" toName="image">
<Label value="defect" background="#FFA39E"/></BrushLabels>
</View>
</View>
<View className="column">
<View className="title">Use Keypoint</View>
<View className="label">
<KeyPointLabels name="tag2" toName="image" smart="true">
<Label value="defect" background="#250dd3"/></KeyPointLabels>
</View>
</View>
<View className="column">
<View className="title">Use Rectangle</View>
<View className="label">
<RectangleLabels name="tag3" toName="image" smart="true">
<Label value="defect" background="#FFC069"/></RectangleLabels>
</View>
</View>
</View>
<View className="image-container">
<Image name="image" value="$image" zoom="true" zoomControl="true"/>
</View>
</View>
</View>
从源代码运行
- 要在不使用Docker的情况下运行ML后端,您需要克隆代码库并使用pip安装所有依赖项:
git clone https://github.com/HumanSignal/label-studio-ml-backend.git
cd label-studio-ml-backend
pip install -e .
cd label_studio_ml/examples/segment_anything_2_image
pip install -r requirements.txt
将
segment-anything-2
代码库下载到根目录。按照Meta官方文档安装SegmentAnything模型并下载检查点然后你可以在默认端口
9090
上启动ML后端:
cd ../
label-studio-ml start ./segment_anything_2_image
- 将正在运行的ML后端服务器连接到Label Studio:进入项目
Settings -> Machine Learning -> Add Model
并指定http://localhost:9090
作为URL。更多信息请参阅官方Label Studio文档。
使用Docker运行(即将推出)
- 使用预构建镜像在
http://localhost:9090
上启动机器学习后端:
docker-compose up
- 验证后端是否正在运行
$ curl http://localhost:9090/
{"status":"UP"}
- 从同一主机上运行的Label Studio连接到后端:进入项目
Settings -> Machine Learning -> Add Model
并指定http://localhost:9090
作为URL。
配置
在运行容器之前,可以在docker-compose.yml
中设置参数。
以下通用参数可用:
DEVICE
- 指定模型服务器运行的设备(目前仅支持cuda
,cpu
即将推出)MODEL_CONFIG
- SAM2模型配置文件(默认为sam2_hiera_l.yaml
)MODEL_CHECKPOINT
- SAM2模型检查点文件(默认为sam2_hiera_large.pt
)BASIC_AUTH_USER
- 指定模型服务器的基础认证用户BASIC_AUTH_PASS
- 指定模型服务器的基础认证密码LOG_LEVEL
- 设置模型服务器的日志级别WORKERS
- 指定模型服务器的工作进程数量THREADS
- 指定模型服务器的线程数
自定义
可以通过在./segment_anything_2
目录中添加自定义模型和逻辑来定制ML后端。