EMR Serverless StarRocks AI Function构建智能驾驶训练数据管理平台

简介: 针对自动驾驶海量图像挖掘难题,团队基于阿里云 EMR Serverless StarRocks 构建全链路解决方案。通过 Object Table 挂载 OSS 原图,利用 AI Function 在库内完成场景理解、结构化打标及向量化,将非结构化数据转化为统一 Schema 资产。借助标量过滤与向量相似度融合的 SQL 混合检索,实现长尾场景精准圈选与标签回写。该方案消除跨系统数据搬运,显著提升数据挖掘效率与模型迭代闭环速度,实现“推理即查询”。

一、业务背景

自动驾驶的量产车与路测车队,前视、环视、后视摄像头每天回传海量道路场景图像。一辆采集车一天就能产出几十万帧,整个车队沉淀在对象存储 OSS 里的图像数以亿计。

  • 智能驾驶数据的规模与复杂性
  • 数据类型:摄像头图像(多路)、LiDAR 点云、毫米波雷达、GPS/IMU、CAN 总线信号
  • 规模:单车单日产生数百 GB,全车队数据 PB 级别
  • 多模态融合:不同传感器时间戳对齐、空间坐标对齐

这些图像是模型迭代的燃料——但燃料本身不产生价值,能从里面精准挖出"模型现在最需要的那几千帧"才产生价值。真正的难题不是数据不够多,而是当模型在某类场景上表现不好时,怎么从上亿帧里快速捞出这类场景的训练数据

二、业务挑战

第一,图像语义无法用传统条件表达。

比如感知模型在"阴天 + 行人横穿""夜间逆光""施工路段锥桶绕行"这些长尾场景上频繁误检,算法团队就需要定向扩充这些 Corner Case 的训练集。可图像本身只是一堆 jpg,文件名里没有"天气""光照""有没有行人"这些信息,几亿帧根本看不过来。

第二,理解、向量化、检索、打标回写是四个割裂环节。

图像先送模型打标,再算 Embedding,再灌进向量库检索,再把圈选结果写回,中间反复落表读表、跨引擎搬数据,链路长、延迟大、排查难。从海量数据中找到特定驾驶场景(鬼探头、夜间变道)耗时数天

第三,图像原文与打标结果两套系统,检索和训练取数割裂。

原图在 OSS、标签向量在向量库或湖表,想按语义圈选、想把结果交给训练管线,都要跨系统关联,还得自己维护增量水位,避免存量图像重复推理白烧成本。


三、解决方案

团队基于阿里云 EMR Serverless StarRocks,用 StarRocks AI Function 在库内直接调用大模型,把"道路图像 → 结构化标签 + 向量 → 混合检索圈选 → 打标回写训练集"整条链路收敛成标准 SQL。

核心思路:图像原图不出 OSS,用 Object Table 挂载增量文件,AI 抽取的场景标签与图像向量直接落 DLF Paimon 湖表,参与检索圈选和打标回写,下游训练管线按标签直接取数、数据不出湖。

  • AI_EMBED(image_url / frame_description, model):图像 / 场景描述向量化
  • AI_CLASSIFY(frame_data, scenario_labels):驾驶场景分类
  • AI_EXTRACT(annotation_json, schema):标注数据结构化提取与校验
  • AI_GENERATE(context):自动生成标注说明、数据质量报告
  • cosine_similarity :做"给一张困难样本、找语义相似帧"的向量检索、标量过滤与向量相似度在一条 SQL 里原生融合,实现"约束条件下找相似图"

整条链路的关键,是用一份固定的场景 schema 把杂乱图像收敛成一套可查询、可聚合的结构化标签。


四、平台整体架构

五、实践步骤

验证环境:EMR Serverless StarRocks 3.5.16-2.2.1(object-table 分支),ai_embed_multimodal 实测输出 2560 维;数据集为 nuScenes CAM_FRONT 前视图像。

第一步,用 Object Table 挂载 OSS 上的道路图像。

图像按采集批次/相机位/年月目录沉淀在 OSS,建 Object Table 把对象映射进来,file 描述符直接交给 AI 函数、签名地址由系统自动生成,用 object_uri + etag 做增量水位,实现"文件不出 OSS、只处理新增帧"。

SET CATALOG default_catalog;
CREATE DATABASE IF NOT EXISTS ad_data_mining;
CREATE OBJECT TABLE ad_data_mining.camfront_objects PROPERTIES (
  "path" = "oss://<BUCKET>/CAM_FRONT/",
  "aliyun.oss.endpoint" = "oss-cn-hangzhou-internal.aliyuncs.com",
  "aliyun.oss.public_endpoint" = "oss-cn-hangzhou.aliyuncs.com",
  "aliyun.oss.access_key" = "<AK>",
  "aliyun.oss.secret_key" = "<SK>",
  "recursive" = "true",
  "file_pattern" = ".*\\.(jpg|jpeg|png)$"
);
REFRESH OBJECT TABLE ad_data_mining.camfront_objects;

打标结果落 DLF Paimon 湖表,供检索圈选与下游训练共享。

CREATE TABLE dlf_catalog_demo.`default`.camfront_ai_enriched (
  id STRING, object_uri STRING, etag STRING, file_name STRING,
  caption STRING,            -- 场景自然语言描述
  metadata STRING,           -- 结构化元数据 JSON(天气/光照/路况/目标物/风险)
  vector ARRAY<FLOAT>,       -- 图像向量,2560 维
  weather STRING, lighting STRING, road_type STRING,
  is_cloudy_candidate INT, is_daytime INT, is_nighttime INT,
  scene_type STRING,
  dataset_tag INT            -- 检索圈选后回写:0 未选 / 1 阴天 / 2 阴天+行人
) ENGINE = paimon
PROPERTIES ("file.format"="parquet","primary-key"="id","merge-engine"="partial-update","bucket"="1");

第二步,一条 SQL 完成场景理解、结构化打标与向量化。

这是方案核心:无论输入是哪种路况,ai_complete 先把图像读成一句场景描述,再用带 JSON Schema 的 ai_complete 按同一份固定字段输出规范元数据(天气/光照/道路/目标物/风险,值域用枚举锁死),ai_embed_multimodal 生成图像向量。

LEFT ANTI JOINobject_uri + etag 做增量,只处理新增/变更帧——去重在 AI 函数之前:

INSERT INTO dlf_catalog_demo.`default`.camfront_ai_enriched
  (id, object_uri, etag, file_name, caption, metadata, vector,
   weather, lighting, road_type, is_cloudy_candidate, is_daytime, is_nighttime, scene_type, dataset_tag)
WITH enriched AS (
  SELECT o.object_uri, o.etag,
    regexp_extract(o.object_uri, '.*/(.+)$', 1) AS file_name,
    -- 场景描述(自由文本,4 参数带 model)
    ai_complete('qwen3.6-plus',
      'You are an autonomous driving data analysis assistant. Describe the road scene in 1-2 English sentences, highlighting weather, lighting, road type, key traffic participants and potential risks. Output only the descriptive text.',
      o.file, 'image') AS caption,
    -- 结构化元数据(4 参数带 schema:prompt, file, modality, PARSE_JSON —— 不带 model)
    ai_complete(
      'You are an autonomous driving data analysis assistant. Output structured metadata.',
      o.file, 'image',
      PARSE_JSON('{"type":"object","required":["weather","lighting","road_type","objects","risks"],"properties":{"weather":{"type":"string","enum":["sunny","cloudy","rainy","snowy","foggy","other"]},"lighting":{"type":"string","enum":["daytime","nighttime","dusk","tunnel","other"]},"road_type":{"type":"string","enum":["urban","expressway","rural","intersection","ramp","parking_lot","other"]},"objects":{"type":"array","items":{"type":"string"}},"risks":{"type":"array","items":{"type":"string"}}},"additionalProperties":false}')
    ) AS metadata,
    ai_embed_multimodal(o.file, 'image') AS vector
  FROM `default_catalog`.`ad_data_mining`.`camfront_objects` o
  LEFT ANTI JOIN dlf_catalog_demo.`default`.camfront_ai_enriched e
    ON o.object_uri = e.object_uri AND o.etag = e.etag
  WHERE object_file_is_image(o.file)
)
SELECT
  uuid(), object_uri, etag, file_name, caption, metadata, vector,
  get_json_string(metadata, '$.validated_result.weather')   AS weather,
  get_json_string(metadata, '$.validated_result.lighting')  AS lighting,
  get_json_string(metadata, '$.validated_result.road_type') AS road_type,
  IF(get_json_string(metadata, '$.validated_result.weather')  = 'cloudy',   1, 0),
  IF(get_json_string(metadata, '$.validated_result.lighting') = 'daytime',  1, 0),
  IF(get_json_string(metadata, '$.validated_result.lighting') = 'nighttime',1, 0),
  concat_ws('_', get_json_string(metadata,'$.validated_result.lighting'), get_json_string(metadata,'$.validated_result.weather')),
  0
FROM enriched;

带 Schema 的 ai_complete 返回 {is_valid, validated_result, validation_errors} 结构,字段值被强制约束到枚举、口径统一,这正是自由文本打标做不到的——不加 schema 时模型常夹带 markdown 围栏,导致字段解析失败。

第三步,数据质量巡检 + 混合检索圈选,标量过滤与向量相似度原生融合。

训练前先看标签分布是否均衡、有无长尾;再给一张困难样本做种子,在约束条件下找相似帧。

-- 训练集均衡性评估:各天气占比,判断是否需要定向采集
SELECT weather, COUNT(*) AS cnt,
       ROUND(COUNT(*) * 100.0 / SUM(COUNT(*)) OVER (), 1) AS pct
FROM dlf_catalog_demo.`default`.camfront_ai_enriched
GROUP BY weather ORDER BY cnt DESC;
-- 混合检索:阴天 + 行人 高危 Corner Case(标量过滤 + 向量相似度 一条 SQL)
WITH seed AS (
  SELECT vector AS seed_vec FROM dlf_catalog_demo.`default`.camfront_ai_enriched
  WHERE is_cloudy_candidate = 1 ORDER BY id LIMIT 1
)
SELECT t.object_uri, t.caption, t.weather, t.road_type,
       json_query(t.metadata, '$.validated_result.objects') AS objects,
       cosine_similarity(t.vector, seed.seed_vec) AS similarity
FROM dlf_catalog_demo.`default`.camfront_ai_enriched t CROSS JOIN seed
WHERE t.weather = 'cloudy'
  AND t.metadata LIKE '%pedestrian%'
  AND cosine_similarity(t.vector, seed.seed_vec) > 0.8
ORDER BY similarity DESC;

"给一张阴天行人困难样本、把视觉相似的帧全捞出来",这种语义召回配合天气/目标物的精确过滤,一条 SQL 就完成,不需要独立向量库、不需要跨系统搬数据。

第四步,检索后打标,Partial Update 回写供下游训练取数。

把圈中的候选按策略打上 dataset_tag(阴天+行人→2、仅阴天→1、其余→0)写进中间表,预览确认无误后,用 Partial Update 只把标签回写源表,其他列不动。下游训练管线直接按标签取数:

-- 打标:阴天+行人(相似度>0.7)→2;仅阴天(相似度>0.4)→1;其余→0
CREATE TABLE dlf_catalog_demo.`default`.dataset_search_tags (id VARCHAR(65533), dataset_type INT);
INSERT INTO dlf_catalog_demo.`default`.dataset_search_tags
SELECT id,
  CASE
    WHEN id IN (SELECT t.id FROM dlf_catalog_demo.`default`.camfront_ai_enriched t,
                 (SELECT vector AS v FROM dlf_catalog_demo.`default`.camfront_ai_enriched WHERE is_cloudy_candidate=1 ORDER BY id LIMIT 1) s
                WHERE t.weather='cloudy' AND t.metadata LIKE '%pedestrian%' AND cosine_similarity(t.vector,s.v)>0.7) THEN 2
    WHEN id IN (SELECT t.id FROM dlf_catalog_demo.`default`.camfront_ai_enriched t,
                 (SELECT vector AS v FROM dlf_catalog_demo.`default`.camfront_ai_enriched WHERE is_cloudy_candidate=1 ORDER BY id LIMIT 1) s
                WHERE t.weather='cloudy' AND cosine_similarity(t.vector,s.v)>0.4) THEN 1
    ELSE 0 END
FROM dlf_catalog_demo.`default`.camfront_ai_enriched;
-- Partial Update 回写:只更新 dataset_tag,caption/metadata/vector 不动
INSERT INTO dlf_catalog_demo.`default`.camfront_ai_enriched
SELECT t.id, t.object_uri, t.etag, t.file_name, t.caption, t.metadata, t.vector,
  t.weather, t.lighting, t.road_type, t.is_cloudy_candidate, t.is_daytime, t.is_nighttime, t.scene_type,
  COALESCE(s.dataset_type, t.dataset_tag) AS dataset_tag
FROM dlf_catalog_demo.`default`.camfront_ai_enriched t
LEFT JOIN dlf_catalog_demo.`default`.dataset_search_tags s ON t.id = s.id;
-- 下游训练直接按标签取数
SELECT object_uri FROM dlf_catalog_demo.`default`.camfront_ai_enriched WHERE dataset_tag = 2;

需要提醒的成本细节:大模型按调用次数计费,去重必须发生在 AI 函数之前,用 Object Table 的 object_uri + etag 做增量水位——图像被重新上传后 etag 变化会自动触发重跑;

六、实施成效

方案上线后,最直接的变化是上亿帧"只能看不能算"的道路图像,第一次变成了一套字段固定、口径统一、可查询可聚合的结构化标签 + 向量。

归纳起来收益有四点。

挖掘效率上,"按场景找训练数据"从人工翻图变成一句 SQL,新场景、新长尾无需写规则,视觉大模型语义理解天然覆盖。

闭环速度上,理解、向量化、检索、打标回写收敛在同一引擎、同一套 SQL,数据不跨系统搬运,模型迭代的数据闭环显著提速。

数据链路上,图像原图与标签向量同库,检索圈选与训练取数不再割裂。

数据安全上,图像不导出到第三方,在库内完成加工分析,数据始终留在数据湖。

七、总结

通过 StarRocks AI Function,把视觉大模型能力以 SQL 函数的形式嵌入数据链路,构建了"图像挂载 → 场景理解 → 结构化打标 + 向量化 → 混合检索圈选 → 检索后打标 → 回写训练集"的全链路闭环。整个方案数据不出湖,推理即查询,用一份固定 schema 把杂乱图像收敛成一套可检索、可圈选的结构化资产,让原本依赖人工翻图的训练数据挖掘,变成了可复用、可编排的标准 SQL。

同一套 SQL 模板,还可以平移到多相机位场景检索、事件片段挖掘、数据集去重与均衡、仿真素材筛选等更多自动驾驶数据闭环场景。对于同样面临"海量非结构化图像、需要按语义挖掘、图片进标签出"需求的团队,StarRocks 提供了一条清晰的落地路径——会写 SQL,就能从上亿帧里精准挖出模型最需要的那一批。

相关文章
|
7天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1922 6
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
5天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
652 111
|
15天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2556 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
7天前
|
人工智能 弹性计算 数据库
阿里云优惠券种类解析:主要券种区别和适用群体及领取和使用指南
2026年阿里云构建了覆盖全用户的七类优惠券,本文逐一拆解了每类优惠券的核心规则、适用人群与使用技巧:大促限定的阶梯满减券分个人、企业双通道,最高可减800元;学生专属300元无门槛券支持全品类通用;按量付费用户可参与消费达标返券形成循环优惠;新用户有低门槛专享满减券尝鲜;老用户可领取系统自动发放的随机福利券;中大型企业迁云可申请最高100万元的专项补贴;云产品通用券还能在活动价基础上实现折上折。不同身份、不同采购场景的用户均可通过精准匹配对应优惠券,最大化享受优惠力度。
462 110
阿里云优惠券种类解析:主要券种区别和适用群体及领取和使用指南
|
13天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
1620 2
|
15天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
1428 2
|
17天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
1499 55
|
2天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
249 0

热门文章

最新文章