基于 Hologres 构建智能驾驶图像高性能分析系统
随着人工智能技术的深入发展,企业对数据的利用已不再局限于传统的结构化数据分析。越来越多的行业开始依赖多模态数据进行智能决策,涵盖商品推荐、驾驶行为分析、金融风控、教育个性化等多个场景。这些场景普遍具备一个共同特征:数据形态多样、分析需求复杂、检索方式多元。Hologres 4.0 的整体架构围绕“多模态分析检索 all-in-one”设计,实现“一份数据、一份计算、多模分析”的一站式目标,一条 SQL 即可完成从数据接入、AI 加工到多模查询的全流程。
智能驾驶场景中,可以看到采集的车机各种信号数据,以大宽表的形式存储在数据库中。这些信号数据通常会包含结构化数据(车辆状态、车机版本等)、半结构化数据(车机信号)、非结构化数据(轨迹照片等)。在业务应用的时候,要进行点查、OLAP 分析、全文检索、向量检索、混合检索等多种场景。
传统架构往往依赖多个独立引擎协同工作,导致系统复杂、成本高昂、数据不一致等问题频发。AI 时代的应用需要在一个统一平台上完成 OLAP 分析、点查服务、全文检索、向量搜索以及 AI 推理等多种能力的融合使用。本文以自动驾驶图像数据集为例,介绍 Hologres 如何在传统的结构化分析的基础上,完成文搜图、图搜图等多模态分析场景。
基于 Hologres 构建自动驾驶图像高性能分析系统
在自动驾驶系统中,车辆图片分析是环境感知模块的核心场景之一,主要用于实时解析车辆内外部摄像头捕捉的视觉信息,以实现对周围环境的精准理解与决策。本文以 BDD 自动驾驶数据集为例模拟自动驾驶场景,模拟真实驾驶场景,采集 10 万张包括驾驶区域、地理、环境、天气多样性等数据的图片,通过对图片的分析与检索,进行了行驶轨迹分析、环境感知优化及行人车辆识别精度提升等全栈技术验证,提升系统对复杂交通场景的适应能力、安全性和用户体验。
基于 Hologres 构建自动驾驶图像高性能分析系统包含的主要能力如下:
非结构化数据(Object Table):支持通过表的形式读取 OSS 中非结构化数据(PDF、IMAGE、PPT 等)。
AI Function:在 Hologres 中可以用标准 SQL 的方式调用 Function,自动调用内置大模型,完成 AI 服务建设场景。
数据加工:提供 Embed、Chunk 算子,可以对非结构化数据加工成结构化数据存储,无需使用外部算法就能自动 Embed。
数据检索和分析:提供
<font style="background-color:rgba(0, 0, 0, 0.04);">ai_gen</font>、<font style="background-color:rgba(0, 0, 0, 0.04);">ai_summarize</font>等算子,使用 SQL 就能对数据进行推理、问题总结以及翻译等能力。Dynamic Table 介绍:支持增量刷新模式对非结构化数据自动加工,每次只计算增量的数据有效减少重复计算,降低资源利用率。
向量检索:支持标准 SQL 的向量检索,用于非结构化数据的相似度搜索、场景识别等,在同一个查询中可以自由地实现向量和标量的检索。
全文检索:通过倒排索引、分词等机制实现对非结构化数据的高效检索,支持关键词匹配、短语检索等丰富的检索方式,实现更加灵活的检索。
方案优势
通过如上核心能力,在 Hologres 中对图片检索的核心优势如下:
完整的 AI 数据处理流程:涵盖从数据 Embed、Chunk、增量加工和检索/分析的全流程,与使用大数据系统一样轻松构建 AI 应用。
标准 SQL 加工图片数据:无需使用专用开发语言,纯 SQL 就能完成图片数据提取、加工。
一个平台支持跨模态检索:支持以文搜图、以图搜图,语义理解突破关键词局限,在 Hologres 就能实现跨模态检索。
检索更精准、灵活和智能:可以轻松构建“关键词+语义+多模态”的混合检索链路,覆盖从精准搜索到意图理解的全场景需求。还能结合 AI Function 实现对用户意图的深度理解,语义关联和上下文推理,实现更智能的检索能力。
数据不出库,安全性更高:不需要将数据导出到外部系统,与 Hologres 的多种安全能力无缝集成,并高效保护数据安全。
方案流程
本次方案的流程如下:
数据集准备。
将图片数据上传至 OSS 存储。
图片加工。
使用 Object Table 读取图片的元数据信息,然后创建增量刷新的 Dynamic Table 对数据进行 Embed,并为 Dynamic Table 构建向量索引,以便后续检索能够充分利用索引的功能。
使用
<font style="color:rgb(24, 24, 24);background-color:rgba(0, 0, 0, 0.04);">ai_embed</font>算子将自然语言的问题进行 Embedding,然后使用向量检索输出 Top N 的结果。
准备工作
数据准备
本文使用 ModelScope 公开的 BDD100K 自动驾驶图像数据集中val.zip文件,模拟多个车辆真是行驶数据。
环境准备
购买 Hologres V4.0 及以上版本实例并创建数据库。
购买 AI 资源。
本文以large-96core-512GB-384GB、1 个节点为例。
模型部署。本次方案使用的模型以及分配的资源为:
说明:上述模型的资源均为默认分配的资源。
操作步骤
下载图片数据并导入至 OSS。
下载 BDD100K 自动驾驶图像数据集中的
<font style="color:#000000;background-color:rgba(0, 0, 0, 0.04);">val.zip</font>文件。登录 OSS 管理控制台,创建 Bucket 并将已下载的
<font style="color:#000000;background-color:rgba(0, 0, 0, 0.04);">val.zip</font>文件上传至该 Bucket 路径下。上传操作详情,请参见简单上传。
说明:文件夹名称请使用小写。
账号授权。
a. 登录 RAM 控制台,创建阿里云 RAM 角色并授予 OSS 的相关权限。
推荐授予 AliyunOSSReadOnlyAccess 权限。
b. 为上述阿里云 RAM 角色添加登录和 Hologres 的访问权限。
阿里云账号(主账号)
修改 RAM 角色的信任策略。重点需更新如下参数:
Action:更新为
sts:AssumeRole。Service:更新为
hologres.aliyuncs.com。
RAM 用户(子账号)
a. 为 RAM 用户授权。
在权限管理 > 权限策略页面,单击创建权限策略,并选择脚本编辑模式创建权限策略。具体操作,请参见创建自定义权限策略
Hologres 可通过该策略判断当前 RAM 用户是否具备创建对应 RAM 角色的权限。权限策略内容如下。
在身份管理 > 用户页面,单击目标 RAM 用户操作列中的添加权限,为 RAM 用户(子账号)授予上述步骤已创建的权限策略。具体操作,请参见为 RAM 用户授权。
b. 为已创建的 RAM 角色授权。
修改 RAM 角色的信任策略。重点需更新如下参数:
Action:更新为
sts:AssumeRole。Service:更新为
hologres.aliyuncs.com。
对图片进行 Embedding。
创建 Object Table 和 Dynamic Table 读取图片元数据,并对图片加工 Embedding。因为流程较长,Hologres 直接将过程封装成附录:存储过程。该存储过程包括的能力如下:
创建一张 Object Table,用于读取图片的元数据。
创建一张增量刷新的 Dynamic Table 结果表,用于存储加工后的数据,并设置向量索引。该 Dynamic Table 未设置自动刷新,需要手动刷新。
Dynamic Table 的刷新过程中会使用
ai_embed对图片进行 Embedding。
该存储过程的使用如下:
刷新结果表。
通过上述步骤创建的 Object Table 和 Dynamic Table 都需要手动刷新,才能完成数据加工。该步骤已被封装为附录:存储过程,该存储过程包括的能力如下:
刷新一次 Object Table 获取图片元数据。
刷新一次 Dynamic Table,进行图片的 Embedding 加工。
该存储过程的使用如下:
图片检索。
图片数据处理过后可以使用向量检索和 AI Function 进行检索。
以文搜图:
如果使用clip-ViT-B-32模型进行以文搜图,问题请使用英文。如果是中文问题,请换成 LLM 模型。以文搜图的示例 SQL 如下:
在 OSS 中找到第一个结果的图片如下:
以图搜图:
以图搜图的示例 SQL 如下:
在 OSS 中找到召回的图片,并做对比,结果如下:
附录:存储过程
创建 Object Table 和 Dynamic Table
Object Table 和 Dynamic Table
删除存储过程
如果想体验更多操作流程,欢迎到阿里云官网领取 Hologres 免费试用,开通 Hologres4.0,并按照操作文档实践。
https://help.aliyun.com/zh/hologres/user-guide/visual-data-analysis-for-autonomous-driving







评论