Label Studio 成对回归(Pairwise Regression)标注模板详解:用 Rating 星级评分构建相似度数据集
【免费下载链接】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 仓库内置的成对回归(Pairwise Regression)标注模板为核心,讲解如何在一张标注界面上并排展示两张图片,并让标注者用星级评分衡量两者“代表同一事物”的相似程度,从而为成对回归(pairwise regression)模型的训练构建监督数据。读完本文,你将掌握该模板的完整配置、每个标签参数的含义、标注结果在任务数据中的存储结构,并能举一反三地将同一模式扩展到文本、音频等数据类型的相似度/情感评分场景。
模板定位:为什么需要成对回归标注
回归任务要求模型输出连续数值,而“两张图片有多相似”“两段影评的情感有多接近”这类问题恰恰适合用连续分值来表达。Label Studio 提供的 Pairwise Regression 模板正是为此设计:标注者不再从预置类别中二选一,而是直接打出一个 1~5 星(默认)的相似度分数,该分数即可作为成对回归模型的监督信号。
该模板的完整定义位于仓库的 label_studio/annotation_templates/ranking-and-scoring/pairwise-regression/config.xml,并在 docs/source/templates/pairwise_regression.md 中给出了逐步讲解。其核心思想是:用Image对象标签展示一对数据,用Rating控制标签收集评分,两者通过toName建立关联。
完整标注配置
模板的完整 labeling configuration 如下:
<View> <Header>Set how likely these images represent the same thing:</Header> <View style="display: grid; column-gap: 8px; grid-template: auto/1fr 1fr"> <Image name="image1" value="$image1" /> <Image name="image2" value="$image2" /> </View> <View style="margin-left: auto; margin-right: auto; width: 16em"> <Rating name="rating" toName="image1,image2"/> </View> </View>从仓库中的 config.xml 可以看出,模板还附带了一份可直接用于预览的任务数据与标注结果示例:两张图片分别由任务数据中的image1、image2字段提供,示例标注结果是一个type: "rating"、from_name: "rating"、to_name: "image1,image2"且包含rating: 4的 result 对象(详见下文“标注结果结构”)。
配置逐段拆解
1. 外层 View 容器
所有标注配置都必须用 View 标签包裹,它是 Label Studio 布局系统的根容器:
<View> ... </View>2. Header:给标注者下达指令
Header 用于在界面顶部显示说明文字,让标注者明确本次任务要判断什么:
<Header>Set how likely these images represent the same thing:</Header>好的指令文案能显著提升标注一致性,例如“请评估这两张图片在多大程度上代表同一事物,1 星表示完全不同,5 星表示完全相同”。
3. 双图并排:内层 View 的 Grid 样式
为了让两张图并排显示,模板用一个带内联样式的 View 包裹两个Image标签:
<View style="display: grid; column-gap: 8px; grid-template: auto/1fr 1fr">display: grid将内部元素排列为网格;column-gap: 8px指定列间距为 8 像素;grid-template: auto/1fr 1fr定义两列等宽布局,两张图片各占一列。
4. Image 对象标签:绑定两张图片
Image 是对象标签,负责把任务数据中的图片渲染到界面:
<Image name="image1" value="$image1" /> <Image name="image2" value="$image2" />name是该对象在配置内的唯一标识,后续被Rating的toName引用;value通过$image1、$image2引用任务数据 JSON 中对应字段的图片 URL(也支持 CSV 列名)。
根据 Image 标签文档,该标签还可配置rotateControl、zoomControl、zoom等参数,便于标注者缩放旋转后细看细节。在Image标签之后需要先关闭内层View,再开启新的布局块放置评分控件。
5. Rating 控制标签:收集相似度评分
模板用一个居中的View(margin-left: auto; margin-right: auto; width: 16em)包裹评分控件,使其水平居中显示:
<View style="margin-left: auto; margin-right: auto; width: 16em"> <Rating name="rating" toName="image1,image2"/> </View>Rating 是控制标签,核心参数为:
name:控件名称(如rating);toName:要评分的对象标签名称列表,可同时指定多个对象,用逗号分隔(如image1,image2),评分即作用于这一组对象。
其支持的数据类型覆盖 audio、image、HTML、paragraphs、text、time series、video,这意味着模板完全可以迁移到文本、音频等其他场景。
Rating 标签参数速查
以下参数来自 Rating 标签参考文档,可在实际项目中按需补充:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | string | — | 元素名称(必填) |
toName | string | — | 要标注的目标元素名称(必填,可多个,逗号分隔) |
maxRating | number | 5 | 最大评分值 |
defaultValue | number | 0 | 默认评分值 |
size | small|medium|large | medium | 评分图标大小 |
hotkey | string | — | 用于改变评分值的快捷键 |
required | boolean | false | 是否强制要求评分 |
requiredMessage | string | — | 校验失败时展示的提示信息 |
perRegion | boolean | — | 用于对区域而非整个对象评分 |
perItem | boolean | — | 用于对对象内部条目而非整个对象评分 |
以 Rating 标签文档 中的基础示例为例,<Rating name="rating" toName="txt" maxRating="10" icon="star" size="medium" />即可为一段文本提供 10 级评分。
源码实现:Rating 控件内部如何工作
Rating 控件的前端实现位于 web/libs/editor/src/tags/control/Rating.jsx。从源码可以看出其状态模型(MobX State Tree 定义)只维护一个rating数值字段,并通过selectedValues()、serializableValue等接口把当前分值序列化为{ rating }形式写入标注结果;increaseValue()与onHotKey()实现了快捷键逐级加分、超过maxrating后归零的交互逻辑。这印证了文档中的参数行为:maxRating决定星级上限,defaultValue决定初始分值,而最终落库的标注值是一个纯数值rating,正好契合回归模型所需的连续标签。
标注结果在任务数据中的结构
配置中Rating的name="rating"、toName="image1,image2",对应生成的标注结果(annotation result)结构如下(示例值来自 config.xml 中的注释):
{ "result": [ { "value": { "rating": 4 }, "id": "FRS2itzlbZ", "from_name": "rating", "to_name": "image1,image2", "type": "rating" } ] }其中value.rating即标注者给出的相似度分数,导出时可直接与任务数据中的image1、image2字段一一对应,构造成对样本(x1, x2 → similarity score)用于回归模型训练。相应地,任务数据应形如:
{ "image1": "https://example.com/img/a.jpg", "image2": "https://example.com/img/b.jpg" }举一反三:把模板扩展到其他数据类型
模板的核心是“对象标签成对展示 + Rating 评分”,因此只需替换对象标签即可复用到不同数据:
- 文本情感相似度:将两个
Image换成两个 Text 标签(<Text name="text1" value="$text1"/>、<Text name="text2" value="$text2"/>),并调整Rating的toName="text1,text2",即可让标注者评判两段影评的情感是否相似; - 音频/视频比较:替换为 Audio 或 Video 标签,其余逻辑不变;
- 回归标签细化:通过
maxRating="10"提高评分粒度,或用hotkey提升标注效率、用required="true"强制每张任务都必须给出评分。
模板的 yml 元数据版本位于 label_studio/annotation_templates/ranking-and-scoring/pairwise-regression/config.yml,归入 Ranking & Scoring 分组;同一分组下还提供 pairwise-classification(成对分类)、content-based-image-search(基于内容的图像检索)等相似模板,可对比参考。
相关标签
- Header:界面说明文字
- View:布局容器与网格样式
- Image:图片对象标签
- Rating:星级评分控制标签
【免费下载链接】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),仅供参考