Label Studio 野生动物保护多边形语义分割标注模板:从 PolygonLabels 配置到像素级标注实战
【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio
导读
本文基于 Label Studio 官方提供的高阶使用模板polygon_wildlife.md,完整讲解如何在图像标注任务中通过PolygonLabels控制标签实现多边形语义分割(Semantic Segmentation),并以野生动物保护(物种识别、栖息地分析、种群监测、威胁检测)为实战场景。读完本文,你将掌握:完整的标注界面 XML 配置、PolygonLabels/Label标签全部核心参数的语义与取值范围、多边形标注结果的 JSON 数据结构,以及从模板到源码(web/libs/editor/src/tags/control/PolygonLabels.jsx)的底层实现印证,可直接复制配置到自己的项目中开展多边形分割标注。
场景背景:为什么野生动物保护需要多边形语义分割
在野生动物保护领域,用多边形进行语义分割标注的数据是构建高精度物种识别模型的关键。借助这些带标注数据,AI 模型可以执行栖息地分析、种群数量监测、威胁检测等任务——模型需要从复杂的自然环境中分辨出动物轮廓与周边植被、地形等背景信息,而多边形标注恰好能以像素级精度圈出每个物种的边界。
现实中,野生动物图像的标注面临三类典型挑战:
- 耗时费力:复杂背景下逐点描绘动物轮廓成本高昂;
- 标注质量参差不齐:标注人员专业水平不一,容易产生不一致的标注;
- 需要领域专家复核:物种边界的判定往往需要生态学专家参与整合性审查。
Label Studio 通过 AI 辅助预标注(pre-labeling)显著降低起标成本,配合专家校验保证标注准确性与一致性,同时依托团队协作工具和可定制模板,将工作流收敛到满足野生动物保护特定需求的形态。本模板即这一思路的落地示例——它定义了可直接投入使用的多边形标注界面。
标注配置:完整的 PolygonLabels 模板
模板对应的完整标注配置如下(来源:use-cases/polygon_wildlife.md):
<View> <Header value="Select label and click the image to start"/> <Image name="image" value="$image" zoom="true"/> <PolygonLabels name="label" toName="image" strokeWidth="3" pointSize="small" opacity="0.5"> <Label value="Elephant" background="green"/> <Label value="Lion" background="orange"/> <Label value="Rhinoceros" background="gray"/> <Label value="Zebra" background="blue"/> <Label value="Giraffe" background="yellow"/> </PolygonLabels> </View>该配置的核心使用流程是:标注员先在左侧标签区选择物种类别(Elephant / Lion / Rhinoceros / Zebra / Giraffe),然后点击图像开始逐点绘制多边形,将动物或特征区域圈选出来。界面内置支持缩放的图像查看器,便于精细识别;多边形工具的描边宽度、控制点大小与填充透明度均经过专门调优,以提升可见性与操作体验。
所有标注配置都必须包裹在View标签内,这是 Label Studio 标签体系的根容器。
用 Header 向标注员传达操作指引
在标注界面顶部加入提示文案,可以显著降低新标注员的上手成本:
<Header value="Select label and click the image to start"/>Header的值即标注界面顶部显示的操作指引文本,本例明确告知标注员"选择标签后点击图像开始标注"。
用 Image 对象标签指定图像数据源
<Image name="image" value="$image" zoom="true"/>name:该图像对象的唯一标识,供PolygonLabels的toName引用;value:指向任务数据字段$image(即 JSON 任务数据中的图像 URL 或路径);zoom:设为true允许标注员放大图像,这是精细描绘动物轮廓的关键能力。
用 PolygonLabels 控制标签承载多边形标注
<PolygonLabels name="label" toName="image" strokeWidth="3" pointSize="small" opacity="0.9"> <Label value="Elephant" background="green"/> <Label value="Lion" background="orange"/> <Label value="Rhinoceros" background="gray"/> <Label value="Zebra" background="black"/> <Label value="Giraffe" background="yellow"/> </PolygonLabels>标注员可以通过opacity参数控制多边形的填充透明度,通过pointSize与strokeWidth控制多边形工具控制点与描边的视觉样式,并通过Label标签的background参数为每个物种类别指定独立的颜色,实现多类别标注的视觉区分。
PolygonLabels 标签参数全解析
PolygonLabels的完整参数定义记录在 includes/tags/polygonlabels.md,并在前端源码 PolygonLabels.jsx 中以 JSDoc 形式保持一致,以下逐一说明:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | string | 必填 | 标签名称,界面标识与数据引用键 |
toName | string | 必填 | 要标注的图像对象名称(对应<Image>的name) |
choice | single|multiple | single | 控制一次标注可选择一个还是多个标签 |
maxUsages | number | — | 单个标签在每个任务中被使用的最大次数 |
showInline | boolean | true | 标签是否在同一视觉行内展示 |
opacity | number | 0.2 | 多边形的填充透明度(0~1) |
fillColor | string | — | 多边形填充色(十六进制) |
strokeColor | string | — | 描边颜色(十六进制) |
strokeWidth | number | 1 | 描边宽度 |
pointSize | small|medium|large | medium | 多边形控制点(锚点)的大小 |
pointStyle | rectangle|circle | rectangle | 控制点的形状样式 |
snap | pixel|none | none | 是否将多边形顶点吸附到图像像素 |
模板中strokeWidth="3"、pointSize="small"、opacity="0.5"(或0.9)分别对应描边加宽、控制点缩小、填充半透明,这些视觉参数在绘制野生动物的不规则轮廓时,既能保证边界清晰可见,又不会遮挡图像细节。
Label 子标签:为每个物种分配独立颜色
<Label value="Elephant" background="green"/>Label的value是写入标注结果的实际类别名,background控制该类多边形在画布上的显示颜色。模板按物种分配了绿、橙、灰、蓝、黄(示例变体中 Zebra 可为黑色)等易区分的颜色,方便标注员在同一画面中快速区分多种动物。
其他可复用示例
同仓库的编辑器内置示例 image_polygons/config.xml 展示了更多参数的组合用法:
<View> <Image name="img" value="$image" showMousePos="true" zoom="true"></Image> <PolygonLabels name="tag" toName="img" strokewidth="5" fillcolor="red" pointstyle="circle" pointsize="small"> <Label value="Hello" background="red"></Label> <Label value="World" background="blue"></Label> </PolygonLabels> </View>其中fillcolor="red"直接指定填充色、pointstyle="circle"将控制点改为圆形,说明多边形工具的外观可以高度自定义。
从源码看 PolygonLabels 的实现与约束
在编辑器中,PolygonLabels是一个以 MobX State Tree 模型注册的控件(注册名为polygonlabels,见 PolygonLabels.jsx)。从源码结构可以推断以下几点:
- 受控对象:
Validation.controlledTags声明PolygonLabels仅接受Image类型的对象标签,即toName只能指向<Image>,这也印证了该标签仅适用于图像数据类型; - 子标签约束:
children允许label、header、view、hypertext四类子节点,模板中使用的<Label>即其中核心的一种; - 区域类型:每个多边形标注会生成
PolygonRegion(@regions PolygonRegion),对应标注结果中的一个独立区域对象。
仓库中的标注模板目录 semantic-segmentation-with-polygons/config.yml 提供了本模板的同源变体(如 Airplane / Car 类别),并注明其可延伸的行业场景包括自动驾驶、医学图像分析、卫星影像分析、精准农业、环境监测等,说明多边形语义分割模板在 Label Studio 中是一套跨领域的通用标注能力。
标注结果格式:多边形数据如何落到 JSON
每次完成一个多边形标注,Label Studio 都会生成一条标准化 result 记录,字段结构由PolygonLabels的结果参数定义(见 includes/tags/polygonlabels.md):
| 字段 | 类型 | 说明 |
|---|---|---|
original_width | number | 原始图像宽度(px) |
original_height | number | 原始图像高度(px) |
image_rotation | number | 图像旋转角度(deg) |
value.points | Array<Array<number>> | 多边形顶点 (x, y) 坐标列表,按图像尺寸百分比(0-100)表示 |
value.polygonlabels | Array<string> | 该多边形对应的类别标签 |
示例 JSON:
{ "original_width": 1920, "original_height": 1280, "image_rotation": 0, "value": { "points": [[2, 2], [3.5, 8.1], [3.5, 12.6]], "polygonlabels": ["Car"] } }注意:points中的坐标是以**图像尺寸的百分比(0-100)**存储的,配合original_width、original_height可还原为像素坐标——这一设计保证标注数据与图像缩放、旋转无关,便于在不同分辨率下复用。训练语义分割模型时,将points还原为像素坐标并栅格化为掩膜(mask),即可得到常规的逐像素分割标签。
在项目中落地本模板的操作路径
要将该模板应用到自己的标注项目中,典型步骤如下:
- 创建项目并上传图像数据:任务数据中需包含
image字段(如{"image": "https://.../elephant.jpg"}); - 粘贴标注配置:将上文完整的
<View>配置粘贴到项目"Labeling Setup"中的 XML 编辑区,保存并应用; - 按需调整标签集:将
Label的value替换为实际物种列表,调整background颜色以便于区分; - 微调视觉参数:根据图像分辨率与动物体型,调节
opacity、strokeWidth、pointSize等参数; - 开始标注与导出:标注完成后,在项目 Data Manager 中选择导出格式(如 COCO、JSON),即可得到包含
points与polygonlabels字段的标准化结果。
小结
本模板以野生动物保护为切入点,完整演示了 Label Studio 中基于PolygonLabels的多边形语义分割标注方案:通过Header指引、Image缩放与PolygonLabels+Label的可视化定制,构建出高效、一致、可扩展的标注流程。其核心配置与结果格式同样适用于车辆检测、农业遥感、医学影像等其他多边形分割场景,且底层实现(PolygonLabels仅受控于Image对象、顶点坐标以百分比存储)保证了模板的通用性与数据可移植性,可作为多边形语义分割任务的直接起点。
【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考