Label Studio 的 Image 标签(`<Image>`)完全指南:图像标注界面配置、参数详解与多图分割实战

发布时间:2026/9/13 4:52:31
Label Studio 的 Image 标签(`<Image>`)完全指南:图像标注界面配置、参数详解与多图分割实战 Label Studio 的 Image 标签Image完全指南图像标注界面配置、参数详解与多图分割实战【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioImage是 Label Studio 前端编辑器中用于在标注界面展示图片的核心对象标签object tag几乎所有计算机视觉标注任务目标检测、多边形分割、图像分类、关键点等都以它作为画面载体。本文基于 Image 标签官方文档 及其参数参考 includes/tags/image.md结合前端编辑器源码Image.js、ImageEntity.js、MultiItemObjectBase.js与仓库内置标注模板系统讲解该标签的每个配置参数、坐标存储机制、多图valueList标注用法并给出可直接复制到项目中的配置示例帮助你构建真正可用的图像标注界面。一、Image标签是什么Image标签在标注页面上显示一张图片是 Label Studio 中所有图像标注任务的基础展示组件。在标签配置labeling config中它通常与标签类控制标签如RectangleLabels、PolygonLabels、Choices等配合使用控制标签负责接收标注结果Image负责展示待标注的图片素材。使用该标签时需要注意两个关键事实适用数据类型图片images。value字段可以指向任务数据 JSON 中保存图片 URL 的字段也可以指向 CSV 等外部数据源中存储图片路径的列。坐标存储方式当你通过该标签标注图像区域如矩形框、多边形时标注结果中的坐标以图片原始尺寸的百分比保存取值范围 0–100而不是像素绝对值。这种设计保证了标注结果与显示缩放、屏幕分辨率无关无论标注员在界面上如何缩放图片落盘的数据坐标始终指向图片自身的相对位置。从源码结构看该标签的前端实现位于 web/libs/editor/src/tags/object/Image/Image.js其ImageModel通过types.compose组合了属性模型、ObjectBase、MultiItemObjectBase多图场景、AnnotationMixin、ImageEntityMixin以及坐标换算工具CoordsCalculations最终以Registry.addTag(image, ImageModel, HtxImage)注册为类型名为image的内置标签。二、最小可用配置显示一张图片最简单的用法是让Image从任务数据的某个字段中取图片地址并显示在界面上View !-- 从 JSON 的 url 字段或 CSV 的 url 列中取图片地址 -- Image nameimage value$url rotateControltrue zoomControltrue/Image /View对应任务数据形如{ data: { url: https://images.example.com/sample.jpg } }其中name是元素名称也是后续控制标签通过toName关联该图片的标识value$url表示从数据字段url中读取图片地址rotateControltrue在工具栏显示旋转按钮zoomControltrue在工具栏显示缩放/平移工具。如果value指向的字段本身就是数组例如存放多张图片的字段从ImageModel的images视图见 Image.js可以看到其行为值为数组时按数组处理否则包装成单元素数组。三、完整参数参考下表为Image标签支持的全部参数依据 includes/tags/image.md 整理并与 Image.js 中的 MST 属性模型核对[param]表示可选参数参数类型默认值说明namestring必填元素名称供控制标签通过toName关联valuestring必填包含图片路径或 URL 的数据字段名[valueList]string引用一个保存图片 URL 列表的变量用于多图/多页标注[smoothing]boolean跟随用户设置是否启用图像平滑渲染[width]string100%图片宽度[maxWidth]string750px图片最大宽度[zoom]booleanfalse是否允许用鼠标滚轮缩放图片[negativeZoom]booleanfalse是否允许将图片缩小到原始尺寸以下[zoomBy]float1.1每次缩放的倍率因子[grid]booleanfalse是否显示网格[gridSize]number30网格大小[gridColor]string#EEEEF4网格颜色hex透明度固定 0.15[zoomControl]booleanfalse是否在工具栏显示缩放控制[brightnessControl]booleanfalse是否在工具栏显示亮度控制[contrastControl]booleanfalse是否在工具栏显示对比度控制[rotateControl]booleanfalse是否在工具栏显示旋转控制[crosshair]booleanfalse是否显示十字准星光标[horizontalAlignment]left|center|rightleft图片水平对齐方式[verticalAlignment]top|center|bottomtop图片垂直对齐方式[defaultZoom]auto|original|fitfit图片在视口内的初始缩放方式保持比例[crossOrigin]none|anonymous|use-credentialsnone图片的 CORS 跨域行为配置注意文档表格给出的默认值与源码模型中的默认值存在少数差异如zoom、zoomControl、maxWidth在源码中默认分别为true、true、100%上表以官方文档为准实际生效值以当前版本编辑器源码为准。参数背后的源码行为从源码看几个参数并非简单的“开关”而是直接参与渲染与交互逻辑width/maxWidth/ 对齐方式属性模型定义了width默认100%、maxwidth默认100%等渲染层在 ImageView/Image.jsx 中据此计算画布尺寸horizontalAlignment与verticalAlignment则通过alignmentOffset视图Image.js换算成画布内的偏移量实现左/中/右、上/中/下对齐。zoom/negativeZoom/zoomByzoom控制滚轮缩放是否可用negativeZoom决定能否缩小到 100% 以下zoomBy作为倍率因子参与handleZoom中的currentZoom * zoomBy/currentZoom / zoomBy计算Image.js。源码中还内置了平滑滚轮缩放通过指数公式Math.exp(val * ZOOM_INTENSITY)计算单次缩放量并将单次滚轮事件的缩放变化限制在 ±30%MAX_ZOOM_CHANGE_PER_EVENT防止一次滚动缩放过猛。defaultZoomfit适配视口、original原始尺寸、auto三种取值对应源码中的sizeToFit/sizeToOriginal/sizeToAuto三个动作Image.js它们在图片加载完成updateImageSize后按需调用。crossOrigin除none外的取值会传递给图片加载器并作用于img标签用于解决跨域图片绘制到 Canvas 时被“污染”的问题源码中imageCrossOrigin视图Image.js会把none归一化为anonymous传给加载器。grid/gridSize/gridColor控制画布上的辅助网格网格颜色为十六进制色值、固定透明度 0.15主要用于辅助精确定位。四、多图标注用valueList处理多张图片 / 多页文档当单个任务需要标注多张图片例如多页 PDF 逐页切片、同一物体的多视角图像时使用valueList参数引用一个图片 URL 数组View !-- 从 JSON 的 images 字段或 CSV 的 images 列中读取图片 URL 列表 -- Image nameimage valueList$images rotateControltrue zoomControltrue/Image /View对应任务数据含注释中的示例!-- { data: { images: [ https://images.unsplash.com/photo-1556740734-7f3a7d7f0f9c?ixlibrb-1.2.1ixideyJhcHBfaWQiOjEyMDd9autoformatfitcropw1950q80, https://images.unsplash.com/photo-1556740734-7f3a7d7f0f9c?ixlibrb-1.2.1ixideyJhcHBfaWQiOjEyMDd9autoformatfitcropw1950q80 ] } } --多图能力由MultiItemObjectBase混入mixin提供其定义明确注释了“首个使用valueList参数的场景就是多图分割Multi-Image Segmentation”见 MultiItemObjectBase.js。从源码可以确认以下机制isMultiItem判定只要配置了valuelist属性即视为多图模式MultiItemObjectBase.js因此多图模式与单图模式可以共存于同一个标签配置中仅凭是否提供valueList参数切换。实体entity创建createImageEntitiesImage.js在数组模式下为每张图片创建一个ImageEntityid为图片名#序号单图模式则创建序号为 0 的单个实体。预加载preloadpreloadImages会以IMAGE_PRELOAD_COUNT 3为窗口对当前图片前后的若干图片做预加载避免标注员切换页面时等待加载Image.js。结果归属afterResultCreated会把新创建的标注区域打上item_index currentImage标记Image.js从而区分标注属于哪一张子图regs视图也按item_index过滤出当前图片对应的区域MultiItemObjectBase.js。序列化附加信息createSerializedResult在导出结果时会附带original_width、original_height、image_rotation多图场景下额外附加item_indexImage.js方便下游还原标注位置。实战模板多页文档标注仓库内置的计算机视觉模板 multipage-documents/config.yml 就是valueList的典型落地场景——把 PDF 每一页渲染成一张图片然后在页面上框选文本区域View RectangleLabels namerectangles toNamepdf showInlinetrue Label valueTitle backgroundgreen / Label valueDate backgroundblue / Label valueAuthor backgroundgold/ Label valueOrganization backgroundpink/ Label valueAmount backgroundred/ /RectangleLabels Image valueList$pages namepdf/ /View{ pages: [ https://htx-pub.s3.amazonaws.com/demo/images/demo_stock_purchase_agreement/0001.jpg, https://htx-pub.s3.amazonaws.com/demo/images/demo_stock_purchase_agreement/0002.jpg, https://htx-pub.s3.amazonaws.com/demo/images/demo_stock_purchase_agreement/0003.jpg ] }注意这里的要点RectangleLabels通过toNamepdf绑定ImagevalueList$pages指向数据字段pages一个 URL 数组标注员翻页框选时每条矩形标注都会被记录到对应的item_index页面上。五、图像标注的完整配置示例仅展示图片并不构成标注任务Image必须与一个或多个控制标签组合。以下是仓库内置模板 image-classification/config.yml 的图像分类示例View Image nameimage value$image/ Choices namechoice toNameimage Choice valueAdult content/ Choice valueWeapons / Choice valueViolence / /Choices /View若要做区域级标注目标检测将Choices换成RectangleLabels即可View Image nameimage value$image zoomControltrue zoomtrue/ RectangleLabels namelabel toNameimage Label valuePerson background#ff0000/ Label valueCar background#00ff00/ /RectangleLabels /View配置时可以按需叠加本文第三节中的显示参数例如View Image nameimage value$url zoomtrue negativeZoomfalse zoomBy1.5 zoomControltrue brightnessControltrue contrastControltrue rotateControltrue gridtrue gridSize50 gridColor#FF0000 crosshairtrue horizontalAlignmentcenter verticalAlignmentcenter defaultZoomfit /Image /View六、标注坐标的存储与换算机制理解Image标签还需理解其坐标体系。源码中定义了三级坐标及换算Image.js画布坐标canvas标注员在屏幕上实际看到的像素坐标会随缩放、平移、旋转而变化内部坐标internal以RELATIVE_STAGE_WIDTH/RELATIVE_STAGE_HEIGHT为基准的归一化舞台坐标用于在区域与图片之间解耦图片坐标image以图片naturalWidth/naturalHeight为基准的原始图片坐标。标注事件发生时event()会把屏幕坐标先经fixZoomedCoords扣除缩放变换再换算为内部坐标交给工具管理器处理Image.js而最终导出的区域结果坐标是相对图片原始尺寸的百分比0–100这正是文档开头强调的存储规则。ImageEntity中维护的naturalWidth/naturalHeight图片解码后的真实像素尺寸是这一切换算的基准也是导出结果中original_width/original_height的取值来源ImageEntity.js。此外图片的加载与缓存由 ImageEntity.js 管理通过全局imageCache去重加载、跟踪下载进度、失败后自动重试一次setError中的恢复逻辑并在实体销毁时通过releaseImage释放缓存引用ImageEntity.js避免内存泄漏。七、常见问题与使用建议图片加载失败怎么办crossOrigin保持默认即可满足多数场景若图片来自跨域 CDN 且需要配合 Canvas 处理如掩码标注按需设置为anonymous。源码在加载失败时会自动重试一次并移除可能损坏的缓存项ImageEntity.js。缩放范围单次滚轮缩放的倍率由zoomBy控制negativeZoomtrue才能缩小到 100% 以下源码中还硬性限制了滚轮单次缩放变化不超过 30%避免误触导致画面剧烈跳动。多图标注的数据结构务必保证valueList指向的字段是字符串数组标注结果中每个区域会携带item_index区分图片来源下游解析时不要遗漏该字段。更多模板仓库 label_studio/annotation_templates/computer-vision 目录下还有多边形分割、语义分割、关键点、OCR、目标检测等大量可参考的图像标注模板均以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),仅供参考