PolarDB for AI工业质检方案集成了深度学习模型与数据库能力,用于构建自动化质检解决方案。该方案可用于构建并部署识别工件结构缺陷(如缺孔、开裂)的智能服务,实现对产线图像的实时分析与预警。该方案已在汽车制造领域完成验证,可降低超过90%的人工复检工作量。
实践效果
合格工件
| 缺陷工件
| 模型报警+辅助定位
|
功能简介
工作流程
PolarDB for AI工业质检方案提供了一个从数据处理、模型训练到部署应用的全链路解决方案。其核心工作流程包括以下几个阶段:
图像预处理:调用图像分割模型,从原始产线图片中自动裁剪出工件的主体部分,排除背景干扰。
模板标注:在标注平台(Label Studio)中,对一张标准工件的裁剪图进行标注,定义所有关键检测点(如孔洞)的位置,形成“标准模板”。
数据集生成:利用“标准模板”,从大量工件图片中自动裁剪出所有待检测的孔洞区域,形成模型训练所需的图像数据集。
模型训练:上传生成的孔洞数据集并进行二次标注,然后使用这些数据训练目标检测模型。
服务部署与调用:将训练好的模型部署为在线服务。业务系统通过调用API接口,传入产线实时拍摄的工件图片,获得包含缺陷定位的质检结果。
功能优势
精准高效:针对预设的关键区域实现像素级缺陷识别(如缺孔、开裂),准确率高,适用于对结构一致性要求严苛的场景。
全流程自动化:将图像处理、数据标注、模型训练和推理集成在数据库内,替代传统人工复检,消除主观误差,提升质检流程的标准化水平。
快速部署:提供标准化的流程和脚本,支持与不同型号产品的快速适配,可迅速集成至现有产线。
降本增效:已在汽车制造等领域成功落地,可降低超过90%的人工审核工作量,显著节约长期质量管控成本。
适用范围
使用本功能前,需满足以下条件:
添加至少一个GPU规格的AI节点,并设置AI节点的连接数据库账号:开启PolarDB for AI功能
说明建议选择16核125 GB+ 一张GU100(
polar.mysql.x8.2xlarge.gpu)规格的AI节点。若您在购买集群时已添加AI节点,则可以直接为AI节点设置连接数据库的账号。
AI节点的连接数据库账号需具有读写权限,以确保能够顺利读取和写入目标数据库。
使用集群地址连接PolarDB集群:登录PolarDB for AI
步骤一:图像预处理与分割阈值调优
通过图像分割模型,将工件从原始图像中分离出来。通过测试找到最佳的threshold(置信度阈值),以确保后续图像能被准确、稳定地裁剪。
图像分割模型目前处于灰度阶段。如您有相关需求,请提交工单与我们联系,以便为您提供相关模型服务与添加模型访问白名单。
准备测试脚本:将以下Python脚本保存为
01_threshold_test.py。该脚本读取本地图片,调用已部署的分割模型,并保存结果图,用于评估分割效果。执行测试与调优:准备包含多种光照、角度的工件图片文件夹(建议30张以上),逐一替换脚本中的
INPUT_IMAGE_PATH并调整SEG_THRESHOLD值进行测试。找到一个能让绝大多数图片中的绿色框(切割位置)都完整包裹工件主体的阈值。该阈值将用于后续所有步骤。确保分割准确率大于等于95%。原图

切割结果图

步骤二:构建工件标准模板与部署标注平台
本步骤定义标准工件模板。通过部署在线标注平台(Label Studio),上传标准工件图,并手动框选出需要检测的关键结构(如孔洞),以形成可复用的模板。
部署数据标注平台(Label Studio):使用PolarDB for AI的内置能力部署一个Label Studio,用于后续所有标注工作。
使用集群地址登录PolarDB集群。
执行以下SQL语句,创建用于存储标注模板和源数据的表。
-- 1. 创建标注模板表,表名固定为 'annotation_template' -- 此表用于定义Label Studio中的标注界面和标签。 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 ); -- 2. 插入一条模板记录,用于工件模板标注 INSERT INTO `annotation_template` (id, tp_name, tp_description, tp_schema, tp_is_active) VALUES (1, 'workpiece_template_schema', '用于标注工件上的孔洞结构', '{"type": "ObjectDetection", "labels": ["yuankong", "changkong", "liubianxingkong"]}', 1); -- 3. 创建标注源数据表,表名必须以 'polardb4ai_annotation_source_' 开头 -- 此表用于存放待标注的图像数据。 CREATE TABLE `polardb4ai_annotation_source_template` ( `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, `base64_data` LONGTEXT COMMENT '图片的Base64编码字符串', `mime_type` VARCHAR(100) NOT NULL COMMENT '图片MIME类型,如 "jpeg"', `original_name` VARCHAR(255) NOT NULL UNIQUE COMMENT '显示在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 COMMENT '存储标注结果(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 DEFAULT 0 COMMENT '标注数量', `annotation_uid` VARCHAR(255) DEFAULT NULL COMMENT '标注者ID' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工件模板标注源数据表';将一张标准工件的图像(建议经过图像分割算法预处理,背景清晰)转换为Base64编码,并插入到
polardb4ai_annotation_source_template表中。您可通过Python脚本或其他工具将本地图片转为Base64字符串插入。INSERT INTO polardb4ai_annotation_source_template (id, base64_data, mime_type, original_name) VALUES (1, '/9j/4AAQSkZJRgABAQEAYABgAAD...', 'jpeg', 'pic_1');执行以下命令部署Label Studio。
/*polar4ai*/DEPLOY MODEL `Label-Studio` WITH ( annotation_template_id = '1', annotation_source = 'polardb4ai_annotation_source_template', deployment_name = 'label_studio' );监控部署状态,直到部署状态变为
Serving。/*polar4ai*/ SHOW DEPLOYMENT `label_studio`;部署成功后,会返回Label Studio的公网访问地址(
request_path)。
标注工件模板:在Label Studio中,框选出标准工件上的所有关键结构。
为保障安全,服务默认禁止所有外部IP访问。您需先配置当前网络的访问白名单。
/*polar4ai*/UPDATE WHITEIPS `model_label_studio` 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)。
访问上一步获取的Label Studio公网访问地址(
request_path)。在界面中,使用目标检测模板(
yuankong、changkong或liubianxingkong)为标准工件图上的每一个孔洞创建标注框。
完成所有标注后,单击Submit提交标注。标注结果会自动同步回集群的
polardb4ai_annotation_source_template表中的annotation_data字段。
步骤三:构建缺陷检测数据集
利用上一步创建的工件模板,从大量工件图片中裁剪出各个孔洞的独立图像,然后对这些孔洞图像进行合格或缺陷的标注,从而构建用于训练最终分类模型的数据集。
批量裁剪孔洞图像:生成用于训练的孔洞图像数据集。
说明裁剪服务目前处于灰度阶段。如您有相关需求,请提交工单与我们联系,以便为您提供相关服务与添加模型访问白名单。
准备一个包含大量待处理工件图像的文件夹,如
input。在Label Studio中,导出模板标注任务。导出格式必须选择
COCO with Images。将下载的result.json文件和对应的图片文件,放置于同级目录下。
将以下脚本保存为
03_batch_crop.py。该脚本读取模板标注,遍历input文件夹下的所有工件图,调用裁剪服务,并将生成的孔洞小图保存到output文件夹。
二次部署Label Studio并标注缺陷:对裁剪出的孔洞图像进行分类标注(例如,合格、缺孔、开裂)。
参考步骤二:构建工件标准模板与部署标注平台的方法,创建一个新的标注源表,如
polardb4ai_img_source_workpiece。-- 创建一个新的标注源表 CREATE TABLE `polardb4ai_img_source_workpiece` ( `id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, `base64_data` LONGTEXT COMMENT '图片的Base64编码字符串', `mime_type` VARCHAR(100) NOT NULL COMMENT '图片MIME类型,如 "jpeg"', `original_name` VARCHAR(255) NOT NULL UNIQUE COMMENT '显示在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 COMMENT '存储标注结果(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 DEFAULT 0 COMMENT '标注数量', `annotation_uid` VARCHAR(255) DEFAULT NULL COMMENT '标注者ID' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='工件模板标注源数据表';将上一步
output文件夹中的所有孔洞图像上传到新创建的源表中。使用
/*polar4ai*/ DROP DEPLOYMENT `label_studio`;删除先前部署的Label Studio。等待系统删除原Label Studio后,您可以通过
/*polar4ai*/ SHOW DEPLOYMENT `label_studio`;命令查看是否已删除。如果提示Unknown deployment 'label_studio'则代表已完成删除。部署一个新的Label Studio,关联新的源表和模板。
/*polar4ai*/DEPLOY MODEL `Label-Studio` WITH ( annotation_template_id = '1', annotation_source = 'polardb4ai_img_source_workpiece', deployment_name = 'label_studio', min_replica='1', max_replica = '1' );配置当前网络的访问白名单,访问新的Label Studio,然后对所有孔洞图像进行分类标注。完成后,标注信息会自动同步到数据库。


步骤四:训练并部署一体化质检模型
使用上一步标注好的缺陷数据集训练一个目标检测模型。然后,将这个模型与之前的工件分割、裁剪逻辑打包成一个名为Workpiece-Quality-Inspection的一体化部署,对外提供API接口。
训练目标检测模型:训练一个能识别孔洞是否合格的AI模型。
执行以下SQL命令,使用
polardb4ai_img_source_workpiece表中的数据创建并训练一个目标检测模型。/*polar4ai*/ CREATE MODEL my_object_detection_model WITH ( model_class = 'object_detection', x_cols = 'base64_data, mime_type, original_name', y_cols = 'annotation_data', model_parameter = (batch_size=4,max_epochs=800, annotation_template_id = '1')) AS (SELECT * FROM polardb4ai_img_source_workpiece);创建后,您可以通过
/*polar4ai*/SHOW MODEL my_object_detection_model;查看创建模型结果。若model_status = saved_oss代表已经创建成功。
部署目标检测模型:
将上一步训练好的
my_object_detection_model部署为一个在线服务。/*polar4ai*/ DEPLOY MODEL my_object_detection_model;部署后,通过
/*polar4ai*/SHOW MODEL my_object_detection_model;查看部署结果,若状态变为Serving表已经部署成功。
部署内置的
Workpiece-Quality-Inspection编排模型:这个模型会自动串联所有步骤,等待部署状态变成Serving。/*polar4ai*/DEPLOY MODEL `Workpiece-Quality-Inspection` WITH ( threashold = 0.8, object_detection_deployment_name = 'my_object_detection_model', annotation_template_id = '1', annotation_source = 'polardb4ai_img_source_workpiece', deployment_name = 'my_workpiece_checkbot' );获取API调用地址:使用
/*polar4ai*/ SHOW DEPLOYMENT my_workpiece_checkbot;命令获取API调用地址request_path。+------------------------------+-----------------------+-------------------+---------------------+---------------------+-------------------------------------+--------------+----------+----------+---------------+ | model_name | deployment_name | deployment_status | start_time | ready_time | request_path | api_key | username | password | white_ip_name | +------------------------------+-----------------------+-------------------+---------------------+---------------------+-------------------------------------+--------------+----------+----------+---------------+ | Workpiece-Quality-Inspection | my_workpiece_checkbot | Serving | 2025-12-05 15:09:09 | 2025-12-05 15:11:00 | http://xxx.com/v1/api/predict | xxx | | | | +------------------------------+-----------------------+-------------------+---------------------+---------------------+-------------------------------------+--------------+----------+----------+---------------+
步骤五:调用服务并验证结果
测试部署的质检模型,验证其功能。向my_workpiece_checkbot部署的API地址发送POST请求。
请求参数
参数 | 类型 | 是否必选 | 说明 |
| String | 是 | 待检测工件图像的Base64编码字符串。 |
| String | 否 | 基准标签,用于自动化测试。传入"Y"(有缺陷)或"N"(无缺陷),API会返回模型判断是否与此标签一致。 |
返回参数
参数 | 类型 | 说明 |
| String | 模型对工件的判断结果。"Y"表示检测到缺陷(报警),"N"表示合格(不报警)。 |
| String | 标注后的结果图像(Base64编码)。如果检测到缺陷,图像上会框出缺陷位置。 |
| String | 仅当请求中包含 |
调用示例
输入产线图片image(如图1):
如果为合格工件,则返回N(不报警)以及裁切后的工件图片
r_image(如图2)。如果工件存在孔结构缺失,则返回Y(报警),同时
r_image会框出缺失孔位(如图3)。
图1
| 图2
| 图3
|





