基于 DINO 与 Chinese-CLIP 的自动驾驶语义检索系统架构

整体架构

组件 原始模型 升级后模型 优势
开集检测 通用目标检测模型 DINO 更强的开放世界检测能力,无需预定义类别
CLIP 模型 英文 CLIP 达摩院 Chinese-CLIP 支持中文语义,适配本地化查询

🛠️ 二、关键组件详解

1. 📸 前视广角图片

  • 来源:车载摄像头(ADAS 系统)
  • 特点:视野宽、包含多个物体(车、人、路牌等),但无标注

2. 🔍 DINO 模型(用于开集检测)

是什么?
  • DINO(DETR with No Object Queries )是 Meta 提出的一种基于 Transformer 的 自监督学习框架
  • 实际应用中常指 DINOv2DINOv2-Huge,具有强大的图像特征提取能力
  • 可用于:
    • 无监督目标分割
    • 零样本分类
    • 开放词汇检测
如何用在本项目中?

✅ 使用 DINO 的 视觉编码器(ViT-Huge) 提取图像特征,再配合 Open-Vocabulary Detection 方法实现"开集检测"

推荐方式:
  • 使用 DINOv2 + Open-Vocabulary Detector (如 Grounding DINO

  • 输入一张广角图 → 输出所有检测框及其描述性标签(如:"红色SUV"、"骑电动车的人")

    from groundingdino.models import build_model
    from groundingdino.util.sliding_window import sliding_window_inference

    model = build_model(args)
    outputs = model(image, text_prompts=["car", "pedestrian", "traffic sign"])

⭐ 优点:可检测未见过的类别;输出带语义信息的目标区域


3. 🖼️ 目标物级别图片

  • 从 DINO 输出的每个检测框中裁剪出独立图像
  • 示例:每辆车、每个人、每个标志都变成单独的小图
  • 存储格式:(bbox, image_crop)

4. 🧠 达摩院 CLIP 模型(damo/chinese-clip

官方名称:
  • damo/chinese-clip-vit-base-patch16
  • 在 ModelScope 上开源,支持中文文本和图像编码
功能:
  • 将图像或文本转换为 512 维 embedding 向量
  • 图像和文本共享同一语义空间,便于计算相似度
使用示例:
复制代码
from modelscope.pipelines import pipeline
clip_pipeline = pipeline(
    task='multi_modal_embedding',
    model='damo/chinese-clip-vit-base-patch16'
)

# 编码图像
img_emb = clip_pipeline({'image': 'car.jpg'})['image_embedding']

# 编码文本
text_emb = clip_pipeline({'text': '一辆黑色奥迪轿车'})['text_embedding']

5. 💾 向量数据库

  • 推荐工具:FAISSMilvusPineconeWeaviate

  • 存储结构:

    复制代码
    {
      "id": "001",
      "embedding": [0.1, 0.2, ..., 0.9],
      "metadata": {
        "timestamp": "2025-04-05T10:00:00Z",
        "camera_id": "cam_01",
        "bbox": [x1,y1,x2,y2],
        "description": "黑色奥迪"
      }
    }

6. 🔎 数据向量搜索(双通道输入)

支持两种查询方式:

表格

查询类型 流程
文本查询 用户输入中文 → CLIP 编码 → 查找最相似 embedding
图片查询 用户上传图片 → CLIP 编码 → 查找匹配项
最终步骤:向量相似度 rerank
复制代码
# 1. 初步召回 Top-K 结果(ANN 搜索)
candidates = vector_db.search(query_embedding, k=100)

# 2. 对候选结果重新计算余弦相似度
scores = []
for cand in candidates:
    score = cosine_sim(query_embedding, cand.embedding)
    scores.append(score)

# 3. 按分数排序,返回 top-N
results = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)[:10]

🚀 三、完整流程图更新版

复制代码
┌──────────────────────────────────────┐
│           数据向量化入库               │
├──────────────────────────────────────┤
│  前视广角图片 ──→ DINO 模型 ──→ 目标物级别图片 ──→ 达摩院 CLIP ──→ embedding ──→ 向量数据库
└──────────────────────────────────────┘
                          ↑
                          │
┌──────────────────────────────────────┐
│           数据向量搜索               │
├──────────────────────────────────────┤
│ 搜索目标文本 ──→ 达摩院 CLIP ──→ embedding ──┐
│ 搜索目标图片 ──→ 达摩院 CLIP ──→ embedding ──┤
│                                          ↓
│                                向量相似度rerank
│                                          ↓
│                                  匹配结果
└──────────────────────────────────────┘
相关推荐
慧知AI14 小时前
用OpenClaw的架构思路,我给公司搭了一套内部AI Agent系统,替代了3个外包岗位
人工智能
balmtv14 小时前
2026年Gemini 3 Pro技术拆解:深度推理、空间智能与Agentic系统的架构革命
人工智能·gpt·架构
Shining059614 小时前
前沿模型系列(四)《大模型前沿架构》
人工智能·学习·其他·ai·架构·大模型·infinitensor
进击的野人14 小时前
Prompt工程入门指南:写给AI学习新手的提示词秘籍
人工智能·aigc·ai编程
Ekehlaft14 小时前
同题画图大考,AiPy 适配性拉满,OpenClaw 全程 “哑火”
人工智能·ai·openclaw·aipy
wáng bēn14 小时前
2025 AI 打卡 Day5:Seaborn 数据可视化基础(Matplotlib 升级版 + Titanic 真实业务全案例 + 完整参数调优)
人工智能·机器学习·信息可视化·matplotlib·seaborn
golang学习记14 小时前
VS Code 1.110 AI大升级:让AI真正实用!
人工智能·visual studio code
程序员小明儿14 小时前
OpenClaw-RL 实战 05|加权损失融合:为什么“评估”+“指导”双信号能让Agent聪明一倍?
人工智能
_遥远的救世主_14 小时前
Claude HUD:给你的 Claude Code 装一块「仪表盘」
人工智能
用户48159301959114 小时前
Token 到底是什么?揭开大模型背后"文字压缩术"的神秘面纱
人工智能