PolarDB for AI已集成开源数据标注工具Label Studio,为您提供了一站式解决方案。您仅需通过SQL命令即可快速部署一个功能完善的标注服务,实现图片数据从数据库到标注界面的自动加载,以及标注结果的实时回写。无需管理额外服务器或数据流转,即可构建高效、安全的数据标注工作流。
功能简介
Label Studio是一款开源的多功能数据标注平台,支持图像分类、目标检测、文本标注等多种任务类型。它提供了一个直观的Web界面,便于人工对机器学习的训练数据进行高质量标注。
PolarDB for AI在AI节点中集成了Label Studio的部署能力,并实现了与数据库的双向数据同步。当您部署服务时,系统会自动从您指定的数据库表中加载图片数据,当您在Web界面提交标注后,标注结果会以JSON格式实时写回该表的相应字段中。
优势
自动化数据流转:自动从指定数据表加载图片,标注结果实时回写至数据库,无需手动导入导出。
简化运维:全程通过SQL接口完成服务的部署、管理和清理,无需操作和维护额外的服务器。
多项目并发:通过SQL命令按需部署和管理多个独立的标注项目,每个项目拥有独立的服务和访问地址。
内置安全保障:通过IP白名单和自动生成的初始随机凭证,确保您的数据访问安全。
适用范围
使用本功能前,需满足以下条件:
添加至少一个GPU规格的AI节点,并设置AI节点的连接数据库账号:开启PolarDB for AI功能
说明若您在购买集群时已添加AI节点,则可以直接为AI节点设置连接数据库的账号。
AI节点的连接数据库账号需具有读写权限,以确保能够顺利读取和写入目标数据库。
使用集群地址连接PolarDB集群:登录PolarDB for AI
准备环境与数据
部署服务前,需准备数据表及待标注数据。
步骤一:登录集群
使用AI节点的连接数据库账号与集群地址,登录PolarDB MySQL版集群。
使用命令行连接集群时,需增加
-c选项。在使用DMS体验和使用PolarDB for AI功能时,DMS默认使用PolarDB集群的主地址进行连接,无法将SQL语句路由至AI节点。因此,您需要手动将连接地址修改为集群地址。
步骤二:创建标注模板表
此表用于定义标注任务的界面样式和标签类别。表名annotation_template和表结构为固定设计,不可修改。
创建用于存储标注模板的表。
CREATE TABLE `annotation_template` ( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `tp_name` varchar(255) NOT NULL, -- 模板名称 `tp_description` text, -- 模板描述 `tp_schema` json NOT NULL, -- JSON 格式的标注 schema `tp_is_active` tinyint(1) DEFAULT '1', -- 是否启用 UNIQUE KEY `tp_name` (`tp_name`) USING BTREE );插入两个物体识别(Object Detection)任务的模板样例。
INSERT INTO annotation_template (id, tp_name, tp_description, tp_schema, tp_is_active) VALUES (1, 'schema_animal', '标注动物', '{"type": "ObjectDetection", "labels": ["cat", "dog"]}', TRUE), (2, 'schema_vehicular', '标注交通工具', '{"type": "ObjectDetection", "labels": ["car", "airplane"]}', TRUE);tp_schema字段说明:type:定义标注任务类型。当前仅支持ObjectDetection(目标检测)。labels:定义可选的标签列表。Label Studio将根据此列表生成标注界面上的标签可选框。
步骤三:准备图片数据源表
数据源表用于存放待标注图片的信息。您可以为每个项目创建不同的数据源表,但表的字段名和类型为固定设计,不可修改。
创建用于存储图片URL的数据源表。
CREATE TABLE `polardb4ai_annotation_source_animal` ( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `base64_data` longtext, -- 图片的 Base64 编码字符串 `mime_type` varchar(100) NOT NULL, -- 图片 MIME 类型,如 'jpg' `original_name` varchar(255) NOT NULL, -- 显示在 Label Studio 中的任务名称 `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `annotation_data` json DEFAULT NULL, -- 存储标注结果(JSON) `annotation_create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `annotation_update_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `annotation_count` int(11) NOT NULL, `annotation_uid` varchar(255) DEFAULT NULL );向数据源表中插入图片数据。您可通过Python脚本或其他工具将本地图片转为Base64字符串插入。
INSERT INTO polardb4ai_annotation_source_animal (id, base64_data, mime_type, original_name) VALUES (1, '/9j/4AAQSkZJRgABAQEAYABgAAD...', 'jpeg', 'animal1'), (2, '/9j/4AAQSkZJRgABAQEAWABgAAD...', 'png', 'animal2');
部署和访问Label Studio服务
完成数据准备后,即可部署服务。
步骤一:部署服务
使用SQL命令启动Label Studio服务。
/*polar4ai*/DEPLOY MODEL `Label-Studio` WITH (
annotation_template_id = '1',
annotation_source = 'polardb4ai_annotation_source_animal',
deployment_name = 'mark_animal'
);参数说明
参数 | 是否必须 | 说明 |
| 是 | 固定关键字,表示部署Label Studio服务。 |
| 是 | 对应 |
| 是 | 数据源表名,服务将从此表加载数据。 |
| 否 | 自定义部署名称,用于区分多个服务,且不可重复。 默认值为: |
步骤二:查看服务状态并获取凭证
确认服务部署状态,并获取访问地址和登录凭证。
/*polar4ai*/SHOW DEPLOYMENT `mark_animal`;关键返回字段说明
字段 | 说明 |
| 服务状态。
说明 启动服务时,系统将自动导入图片数据至Label Studio,具体耗时与图片数量相关。 |
| Label Studio的公网访问地址。 |
| 初始登录用户名。 |
| 初始登录密码(随机生成)。 |
| 与此服务绑定的IP白名单组名称,用于配置访问控制。 |
步骤三:配置网络访问白名单
为保障安全,服务默认禁止所有外部IP访问。需将客户端的公网IP地址添加至服务白名单。
添加公网IP到白名单。
/*polar4ai*/UPDATE WHITEIPS `model_mark_animal` WITH (ips='118.178.XXX.XXX');说明model_mark_animal需替换为SHOW DEPLOYMENT命令返回的white_ip_name值。118.178.XXX.XXX需替换为实际客户端公网IP地址。白名单支持配置多个 IP(使用英文逗号
,分隔)以及CIDR格式的IP网段(如192.168.100.0/24)。
(可选)查看当前白名单配置。
/*polar4ai*/SHOW WHITEIPS `model_mark_animal`;
步骤四:登录并开始标注
访问Label Studio界面并登录:在浏览器中打开
SHOW DEPLOYMENT命令返回的request_path地址,使用返回的username和password进行登录。说明当前版本不支持自行注册新账号,仅可使用初始生成的账号登录。

对图片进行标注并提交。
登录后,单击项目(默认为
my_project),进入项目页面将显示从polardb4ai_annotation_source_animal表中加载的所有图片。

点击任意图片进入标注界面。
单击下方标签(如cat或dog),并使用矩形框工具框选目标对象。随后单击Submit提交标注。

步骤五:查看标注结果
验证标注结果已写回数据库:在Label Studio界面提交标注后,结果会以JSON格式实时写入数据源表polardb4ai_annotation_source_animal的annotation_data字段。可随时查询该表获取最新标注数据。
SELECT id, original_name, annotation_data FROM polardb4ai_annotation_source_animal;返回结果如下:
+----+--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | original_name | annotation_data |
+----+--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1 | 6233a17a4db949fdb73d395389e28333.png | [{"id": "937YIRGx5v", "type": "rectanglelabels", "value": {"x": 43.00291545189505, "y": 12.973760932944606, "width": 49.8542274052478, "height": 33.673469387755105, "rotation": 0, "rectanglelabels": ["dog"]}, "origin": "manual", "to_name": "image", "from_name": "label", "image_rotation": 0, "original_width": 1328, "original_height": 1328}, {"id": "nu8ZcTbIfM", "type": "rectanglelabels", "value": {"x": 16.18075801749271, "y": 27.1137026239067, "width": 25.801749271137027, "height": 25.80174927113703, "rotation": 0, "rectanglelabels": ["cat"]}, "origin": "manual", "to_name": "image", "from_name": "label", "image_rotation": 0, "original_width": 1328, "original_height": 1328}] |
+----+--------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+清理与删除服务
部署的Label Studio服务会持续占用AI节点资源并产生费用。为避免产生不必要的成本,建议您在完成标注任务后,及时删除服务与释放AI节点资源。
/*polar4ai*/DROP DEPLOYMENT `mark_animal`;删除服务后:
外网访问链接将失效。
关联的IP白名单将自动清除。
数据源表和已有的标注数据将保留在数据库中,不受影响。