跳转至

第 16 章 前沿视觉模型近年进展(持续更新)

🎯 学习目标

完成本章学习后,你将能够:

  • 理解并掌握 SAM2 、 DINOv2 等视觉基础模型的架构原理与应用方法
  • 深入了解 LLaVA 、 InternVL 、 Qwen-VL 等代表性视觉语言模型( VLM )的设计思想
  • 掌握 3D Gaussian Splatting 等 3D 视觉前沿技术的核心原理
  • 了解图像/视频生成模型的近年进展与工业应用
  • 熟悉 Visual Prompting 、开放词汇检测等视觉理解新范式
  • 为 CV/AI 前沿方向的研究与复盘打下坚实基础

前置知识:需掌握 12-视觉 Transformer 、 13-多模态学习、 14-自监督学习的内容


16.1 视觉基础模型( Vision Foundation Models )

视觉基础模型( VFM )是近年计算机视觉领域的重要研究方向之一。不同于特定任务的专用模型,基础模型通过大规模预训练获得通用视觉表征能力,可以在零样本或少样本设定下迁移到广泛的下游任务中。

16.1.1 SAM2 ( Segment Anything Model 2 )

论文: SAM 2: Segment Anything in Images and Videos, Meta AI, 2024

SAM2 是 Meta AI 于 2024 年发布的通用分割基础模型,是 SAM1 的全面升级版本,核心突破在于将图像分割扩展到视频分割领域,实现了统一的 Promptable Visual Segmentation ( PVS )范式。

架构设计

SAM2 的整体架构由以下核心组件构成:

Text Only
SAM2 架构总览
┌──────────────────────────────────────────────────┐
│                   输入视频帧                       │
│                  (或单张图像)                       │
└────────────────────┬─────────────────────────────┘
┌──────────────────────────────────────────────────┐
│          Hiera 图像编码器 (Image Encoder)           │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐          │
│  │ Stage 1 │→│ Stage 2 │→│ Stage 3 │→ Stage 4  │
│  │ (下采样) │  │ (下采样) │  │ (下采样) │          │
│  └─────────┘  └─────────┘  └─────────┘          │
│  多尺度特征提取 + 窗口注意力 (MAE预训练)            │
└────────────────────┬─────────────────────────────┘
         ┌───────────────────────┐
         │  Memory Attention 模块│ ←── Memory Bank
         │  (交叉注意力融合)       │     (存储历史帧信息)
         └───────────┬───────────┘
┌──────────────────────────────────────────────────┐
│           Prompt Encoder + Mask Decoder            │
│  支持: 点击(Point)、框(Box)、Mask 等交互提示        │
│  输出: 分割掩码 + 质量分数                          │
└──────────────────────────────────────────────────┘

关键组件详解

  1. Hiera 图像编码器:替代 SAM1 中的 ViT-H , Hiera 是一种层次化视觉 Transformer ,采用逐级下采样策略,在保持特征质量的同时显著提升了计算效率。使用 MAE 预训练,速度比 SAM1 的 ViT-H 快约 6 倍。

  2. Memory Attention 模块: SAM2 引入的核心创新。通过交叉注意力机制将当前帧特征与历史帧信息融合,实现时序连贯的视频分割。 Memory Attention 包含自注意力(当前帧内)和交叉注意力(跨帧记忆)两部分。

  3. Memory Bank:维护一个固定大小的 FIFO 队列,存储最近 N 帧的分割结果和编码特征。包含两类记忆:

  4. Spatial Memory:存储历史帧的空间特征
  5. Object Pointers:轻量级对象级别表征,用于快速定位

  6. Occlusion Head:新增的遮挡预测头,可以判断目标是否在当前帧中被遮挡,遮挡时自动跳过分割并依靠记忆在目标重新出现时恢复跟踪。

SAM1 vs SAM2 对比

特性 SAM1 SAM2
输入类型 仅图像 图像+视频
图像编码器 ViT-H (632M) Hiera (224M)
时序建模 Memory Attention + Memory Bank
交互方式 Point/Box/Mask Point/Box/Mask + 视频传播
推理速度 ~6 FPS (ViT-H) ~44 FPS (Hiera-B+)
训练数据 SA-1B (11M 图像) SA-V (50.9K 视频, 642.6K Masklet)
遮挡处理 不支持 支持( Occlusion Head )

代码示例:使用 SAM2 进行视频分割

Python
import torch
from pathlib import Path
from sam2.build_sam import build_sam2_video_predictor

checkpoint = "sam2_hiera_large.pt"
model_cfg = "sam2_hiera_l.yaml"
predictor = build_sam2_video_predictor(model_cfg, checkpoint)

video_dir = Path("./video_frames")
output_dir = Path("./output")
output_dir.mkdir(parents=True, exist_ok=True)
inference_state = predictor.init_state(video_path=str(video_dir))

# 在第0帧添加点击提示(前景点)
frame_idx = 0
obj_id = 1  # 目标对象ID
points = torch.tensor([[500, 375]], dtype=torch.float32)  # [x, y]
labels = torch.tensor([1], dtype=torch.int32)  # 1=前景, 0=背景

_, out_obj_ids, out_mask_logits = predictor.add_new_points_or_box(
    inference_state=inference_state,
    frame_idx=frame_idx,
    obj_id=obj_id,
    points=points,
    labels=labels,
)

# 传播到整个视频
video_segments = {}
for out_frame_idx, out_obj_ids, out_mask_logits in predictor.propagate_in_video(
    inference_state
):
    video_segments[out_frame_idx] = {
        obj_id: (out_mask_logits[i] > 0.0).cpu().numpy()
        for i, obj_id in enumerate(out_obj_ids)  # enumerate同时获取索引和元素
    }

# 可视化结果
import matplotlib.pyplot as plt
import numpy as np

for frame_idx, masks in video_segments.items():
    frame = plt.imread(video_dir / f"{frame_idx:05d}.jpg")
    plt.figure(figsize=(10, 8))
    plt.imshow(frame)
    for obj_id, mask in masks.items():
        colored_mask = np.zeros((*mask.shape[-2:], 4))
        colored_mask[mask.squeeze()] = [1, 0, 0, 0.5]  # 红色半透明
        plt.imshow(colored_mask)
    plt.title(f"Frame {frame_idx}")
    plt.axis('off')
    plt.savefig(output_dir / f"frame_{frame_idx:05d}.png")
    plt.close()

print(f"视频分割完成,共处理 {len(video_segments)} 帧")

应用场景

  • 视频编辑与特效:一键分割视频中的任意对象,便于后期编辑
  • 自动驾驶:实时分割道路场景中的行人、车辆、交通标志
  • 医学影像:视频内窥镜中的自动病灶追踪与分割
  • 增强现实:实时分割前景对象,实现虚实融合
  • 视频监控:目标持续跟踪与行为分析

16.1.2 DINOv2 ( Meta )

论文: DINOv2: Learning Robust Visual Features without Supervision, Meta AI, 2024, TMLR

DINOv2 是 Meta 推出的自监督视觉基础模型,核心思想是完全不依赖标注数据,通过自监督预训练学习高质量视觉表征。

关键创新

  1. LVD-142M 数据集:通过自动化数据管线从大规模原始数据中筛选出 1.42 亿张高质量图像,无需人工标注。
  2. 训练框架:结合 Image-level ( iBOT 的[CLS] token 蒸馏)和 Patch-level (掩码图像建模)两种自监督目标。
  3. KoLeo 正则化:确保特征空间中的表征均匀分布,避免特征坍塌。
  4. 模型蒸馏:从 ViT-g ( 1.1B 参数)教师模型蒸馏出 ViT-S/B/L 等小模型。

特征质量分析

DINOv2 的特征具有极强的通用性,在不需要微调的情况下(线性探测/kNN ),就能在多个下游任务上取得出色表现:

任务 DINOv2 ViT-g OpenCLIP ViT-G MAE ViT-H
ImageNet kNN 83.5% 79.2% 76.2%
ImageNet Linear 86.5% 83.6% 82.5%
ADE20K (mIoU) 49.0 39.3 46.2
深度估计 (NYUd RMSE) 0.279 0.411 0.305
Python
import torch
from torchvision import transforms
from PIL import Image

# 加载DINOv2预训练模型
model = torch.hub.load('facebookresearch/dinov2', 'dinov2_vitl14_reg')
model.eval()  # eval()评估模式

# 图像预处理
transform = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406],
                         std=[0.229, 0.224, 0.225]),
])

image = Image.open("example.jpg")
input_tensor = transform(image).unsqueeze(0)  # unsqueeze增加一个维度

# 提取特征
with torch.no_grad():  # 禁用梯度计算,节省内存
    # CLS token特征 (全局表征)
    cls_feature = model(input_tensor)  # [1, 1024]

    # Patch token特征 (局部表征)
    patch_features = model.forward_features(input_tensor)
    patch_tokens = patch_features["x_norm_patchtokens"]  # [1, 256, 1024]

print(f"全局特征维度: {cls_feature.shape}")
print(f"局部特征维度: {patch_tokens.shape}")

16.1.3 EVA-02 / InternViT

EVA-02EVA-02: A Visual Representation for Neon Genesis, BAAI, 2024, IJCV ):北京智源研究院推出的大规模视觉基础模型,通过 MIM 预训练+CLIP 蒸馏的策略,在 ViT 架构上实现了极强的特征表示能力。 EVA-02 ViT-E ( 4.4B 参数)在 ImageNet 上达到 90.0%的 top-1 精度。关键设计包括: SwiGLU FFN 替代传统 FFN 、 RoPE 旋转位置编码、子词级嵌入的图像 patch tokenizer 。

InternViTInternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks, Shanghai AI Lab, 2024, CVPR ):上海 AI 实验室推出的大规模视觉 Transformer ,参数量达 6B ,是开源视觉编码器中较大规模的一类。 InternViT-6B 通过渐进式对齐训练,先进行对比学习(与 InternLM 对齐),再通过生成训练进一步增强。它是 InternVL 系列多模态模型的视觉骨干,在多个视觉和多模态基准上取得了有竞争力的结果。


16.2 视觉语言模型( Vision-Language Models, VLMs )

视觉语言模型( VLM )是近年非常活跃的研究方向,通过将视觉编码器与大语言模型( LLM )结合,实现多模态理解与推理能力。

16.2.1 LLaVA 系列

论文: Visual Instruction Tuning, NeurIPS 2023; Improved Baselines with Visual Instruction Tuning (LLaVA-1.5), 2024

LLaVA ( Large Language and Vision Assistant )系列是开源 VLM 的标杆,由威斯康星大学的 Haotian Liu 等人提出,其架构简洁而高效:

Text Only
LLaVA 架构
┌─────────────┐    ┌──────────────┐    ┌─────────────────┐
│  图像输入     │    │  视觉编码器    │    │   投影层          │
│  (H×W×3)    │ →→ │  (CLIP ViT)  │ →→ │  (MLP/Linear)   │
│             │    │  视觉tokens   │    │  对齐到LLM空间    │
└─────────────┘    └──────────────┘    └────────┬────────┘
┌─────────────┐                                 │
│  文本输入     │ ──────────────────────┐       │
│  (指令/问题)  │                       │       │
└─────────────┘                       ▼       ▼
                              ┌──────────────────────┐
                              │   大语言模型 (LLM)      │
                              │  (Vicuna/LLaMA等)     │
                              │  视觉tokens + 文本tokens │
                              │       共同输入          │
                              └──────────┬───────────┘
                              ┌──────────────────────┐
                              │     文本输出 (回答)     │
                              └──────────────────────┘

LLaVA 版本演进

版本 视觉编码器 LLM 分辨率 关键改进
LLaVA-1.0 CLIP ViT-L/14 Vicuna-13B 224 首次提出 Visual Instruction Tuning
LLaVA-1.5 CLIP ViT-L/14@336 Vicuna-7B/13B 336 MLP 投影层、 Academic 数据
LLaVA-1.6 (Next) CLIP ViT-L/14@336 Mistral-7B/LLaMA3-8B Dynamic (672-1344) 动态高分辨率、 AnyRes 策略
LLaVA-OneVision SigLIP-SO400M Qwen2-7B/72B Dynamic 统一图像/视频/多图理解

LLaVA-OneVision( 2024 )是 LLaVA 系列的集大成之作,核心创新包括: - 统一架构:同一模型处理单图像、多图像和视频理解任务 - AnyRes 策略:将高分辨率图像自适应切割为多个子图,按比例处理 - 三阶段训练: Stage1 (单图像)→ Stage2 (单图像质量提升)→ Stage3 ( OneVision 跨场景泛化)

16.2.2 InternVL2/2.5 (书生多模态模型)

论文: InternVL2: Better than the Best—Expanding Performance Boundaries of Open-Source Multimodal Models with a Progressive Strategy, Shanghai AI Lab, 2024

InternVL2 是上海 AI 实验室推出的开源旗舰多模态模型,在多个公开评测中表现非常强势,也是 2024 年开源 VLM 讨论度最高的代表之一。

核心设计

  1. Dynamic Resolution (动态分辨率):对输入图像进行动态分片,根据图像宽高比和分辨率自适应选择更合适的分片方案(最高支持 4K 分辨率),每个分片独立通过视觉编码器处理。
  2. 像素洗牌( Pixel Shuffle ):在投影层中使用像素洗牌操作将视觉 token 数量压缩为 ¼ ,在保持信息量的同时大幅降低 LLM 的计算负担。
  3. 渐进式训练策略:分阶段逐步提升模型能力——先对齐视觉-语言表征,再进行指令微调。
  4. 丰富的模型规格:从 InternVL2-1B 到 InternVL2-Llama3-76B ,覆盖从端侧到服务器的不同部署场景。

InternVL2.5 等后续版本进一步增强了: - 中文理解能力( ChineseOCRBench 等基准大幅提升) - 数学推理能力 - 视频理解能力(支持更长视频)

16.2.3 Qwen-VL/Qwen2-VL (通义多模态模型)

论文: Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution, Alibaba, 2024

Qwen2-VL 是阿里巴巴推出的多模态大模型,在动态分辨率处理和视频理解方面有独到设计。

Naive Dynamic Resolution: Qwen2-VL 采用一种"朴素"但高效的动态分辨率策略——直接将任意分辨率的图像输入 ViT (使用 2D-RoPE 旋转位置编码来编码位置),不需要 LLaVA-Next 那样的显式分片裁剪。

Python
import torch
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info  # 需额外安装 qwen-vl-utils

# 加载Qwen2-VL模型
model = Qwen2VLForConditionalGeneration.from_pretrained(
    "Qwen/Qwen2-VL-7B-Instruct",
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
processor = AutoProcessor.from_pretrained("Qwen/Qwen2-VL-7B-Instruct")

def get_input_device(model) -> torch.device:
    if hasattr(model, "hf_device_map"):
        for mapped_device in model.hf_device_map.values():
            if isinstance(mapped_device, int):
                return torch.device(f"cuda:{mapped_device}")
            if isinstance(mapped_device, str) and mapped_device not in {"cpu", "disk"}:
                return torch.device(mapped_device)

    return next(model.parameters()).device

# 构建多模态消息
messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "image": "example.jpg"},
            {"type": "text", "text": "请详细描述这张图片中的内容。"},
        ],
    }
]

# 处理输入
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
    text=[text],
    images=image_inputs,
    videos=video_inputs,
    padding=True,
    return_tensors="pt",
)
input_device = get_input_device(model)
inputs = {
    name: tensor.to(input_device)
    for name, tensor in inputs.items()
}

# 生成回答
output_ids = model.generate(**inputs, max_new_tokens=512)
output_text = processor.batch_decode(
    output_ids[:, inputs.input_ids.shape[1]:],
    skip_special_tokens=True,
)
print(output_text[0])

Qwen2-VL 关键特性: - M-RoPE ( Multimodal Rotary Position Embedding ):将标准 1D RoPE 扩展为时间+高度+宽度三维分解的旋转位置编码,使模型原生支持任意分辨率图像和任意长度视频 - 视频理解:支持较长视频理解,具体时长上限取决于输入采样策略、上下文长度和部署配置 - Grounding 能力:支持目标检测(输出 bounding box )、 OCR 等精细视觉定位任务 - Agent 能力:可以作为视觉 Agent 操控电脑和手机界面

16.2.4 闭源视觉能力演进:以 GPT-4V / GPT-4o 等系统为例

说明:闭源商业多模态模型迭代极快,具体型号、价格、上下文长度和 API 能力请以各厂商官方文档为准。本节只保留学习视觉能力演进所需的相对稳定结论。

GPT-4V ( GPT-4 with Vision, 2023 )和 GPT-4o ( 2024 )是闭源 VLM 发展的两个重要里程碑。对学习者来说,更值得关注的是它们所代表的能力方向,而不是记忆某一时点的具体产品命名:

  • 从“图像可读”走向“原生多模态”:模型不再只是给图像配一个外接编码器,而是更强调统一的多模态输入输出体验。
  • 从单张图片理解走向复杂文档与长图理解:图表、截图、表格、UI 页面等场景的重要性明显提高。
  • 从“看懂图”走向“看图后行动”:视觉理解与工具调用、系统操作、语音交互逐步结合,形成更强的多模态 Agent 能力。

局限性:闭源通用模型通常在开放问答和文档理解上很强,但在精确定位、稳定输出结构化框、可解释可控部署等方面,仍常需要开源专用模型或工程化后处理来补足。

16.2.5 开源 vs 闭源 VLM 对比与选型

维度 开源 VLM 闭源商业 VLM
通用理解 近年开源模型提升很快,部分公开基准已接近商用闭源系统 通常仍在综合稳定性、工具生态和端到端体验上领先
中文能力 Qwen2-VL 、 InternVL2.x 等通常更有本地化优势 取决于具体厂商与版本,需按任务实测
定制微调 ✅ 完全支持 ❌ 不支持或受限
部署成本 自行部署, 7B 模型单卡可运行 API 按调用量计费
数据隐私 ✅ 本地部署,数据不出域 ❌ 需上传数据到第三方
推理速度 可优化(量化、 TRT 等) 受限于 API 响应
特定领域 可针对性微调,表现更好 通用能力强,垂直领域有限

选型建议: - 快速原型验证:先用成熟的商用 API 验证可行性 - 数据敏感场景:优先选择开源模型本地部署(如 Qwen2-VL / InternVL 系列) - 垂直领域应用:开源 7B 模型微调后往往优于通用闭源模型的通用能力 - 追求更高效果:需要结合最新公开榜单、官方文档和你自己的任务集实测,而不是只看型号名称


16.3 3D 视觉前沿

16.3.1 3D Gaussian Splatting ( 3DGS )

论文: 3D Gaussian Splatting for Real-Time Radiance Field Rendering, Kerbl et al., SIGGRAPH 2023

3D Gaussian Splatting ( 3DGS )是 2023-2024 年 3D 视觉领域最具影响力的突破之一,它用显式的 3D 高斯基元替代了 NeRF 的隐式神经辐射场,实现了实时高质量的新视角合成。

基本原理

核心思想:用大量 3D 高斯椭球体(通常数十万到数百万个)来显式表示场景。每个 3D 高斯具有以下可学习参数:

  • 位置 \(\mu \in \mathbb{R}^3\):高斯中心的 3D 坐标
  • 协方差 \(\Sigma \in \mathbb{R}^{3\times3}\):控制高斯的形状和方向(通过缩放向量 \(s\) 和旋转四元数 \(q\) 参数化)
  • 不透明度 \(\alpha \in [0, 1]\):高斯的透明度
  • 颜色:使用球谐函数( SH, Spherical Harmonics )表示,支持视角相关的颜色效果

Splatting 渲染

不同于 NeRF 的体积光线步进( Ray Marching ), 3DGS 采用Splatting(抛雪球)渲染策略:

  1. 将每个 3D 高斯投影到 2D 图像平面上得到 2D 高斯
  2. 对所有投影的 2D 高斯按深度排序
  3. 通过 alpha 合成(\(\alpha\)-blending )从前到后逐像素累积颜色
\[C = \sum_{i=1}^{N} c_i \alpha_i \prod_{j=1}^{i-1}(1 - \alpha_j)\]

其中 \(c_i\) 是第 \(i\) 个高斯的颜色,\(\alpha_i\) 是其在该像素处的有效不透明度。

高效渲染流程

Text Only
3DGS 渲染管线 (可微分光栅化)
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│ 3D高斯集合     │ ──→ │ 投影到2D      │ ──→ │ 基于Tile的    │
│ (位置,协方差,  │     │ (透视投影+    │     │  排序与渲染    │
│  颜色,不透明度) │     │  雅可比近似)   │     │ (CUDA并行)   │
└──────────────┘     └──────────────┘     └──────────────┘
      ┌──────────────┐     ┌──────────────┐      │
      │ 反向传播梯度   │ ←── │ 与GT图像      │ ←──  │
      │ (更新高斯参数) │     │  计算损失      │     ▼
      └──────────────┘     └──────────────┘  渲染图像
                          自适应密度控制
                     (克隆/分裂/剪枝高斯)

自适应密度控制:训练过程中周期性地调整高斯的数量: - 克隆( Clone ):当高斯梯度大但尺寸小 → 表示欠重建区域 → 复制并轻微移动 - 分裂( Split ):当高斯梯度大且尺寸大 → 表示过大的高斯 → 分裂为两个更小的 - 剪枝( Prune ):移除不透明度过低或过大的高斯

3DGS vs NeRF 对比

特性 3D Gaussian Splatting NeRF (Instant-NGP)
场景表示 显式( 3D 高斯集合) 隐式(神经网络+哈希网格)
渲染方式 Splatting 光栅化 体积光线步进
训练速度 ~15-30 分钟 ~5-60 分钟
渲染速度 100+ FPS (1080p) 10-30 FPS (1080p)
渲染质量 PSNR ≈ 25-33 dB PSNR ≈ 25-33 dB
可编辑性 ✅ 高(直接操作高斯) ❌ 低(隐式表示难编辑)
存储空间 较大(数百 MB ) 较小(~100MB )
动态场景 已有扩展( 4D-GS ) 已有扩展( D-NeRF )

重要变体

  • 4D Gaussian SplattingReal-time Photorealistic Dynamic Scene Representation and Rendering with 4D Gaussian Splatting, 2024, ICLR ):为每个高斯添加时间维度,实现动态场景的实时渲染。通过 4D 球谐函数建模颜色随时间的变化。

  • GaussianEditorGaussianEditor: Swift and Controllable 3D Editing with Gaussian Splatting, 2024, CVPR ):结合文本指令和语义追踪,实现 3DGS 场景的交互式语义编辑。

  • DreamGaussianDreamGaussian: Generative Gaussian Splatting for Efficient 3D Content Generation, 2024, ICLR ):将 3DGS 与 Score Distillation Sampling ( SDS )结合,仅需 2 分钟即可从文本/图像生成 3D 内容。

  • SuGaRSuGaR: Surface-Aligned Gaussian Splatting for Efficient 3D Mesh Reconstruction, 2024, CVPR ):将 3DGS 与显式网格表面对齐,实现高质量网格提取。

应用领域

  • 自动驾驶:用 3DGS 重建驾驶场景,在仿真中生成逼真的新视角数据用于训练( Street Gaussians, CVPR 2024 )
  • 数字人:实时渲染逼真数字人,用于直播、虚拟主播( GaussianAvatar, CVPR 2024 )
  • VR/AR:高保真场景漫游、空间计算( Apple Vision Pro 等 XR 设备需实时渲染)
  • 文化遗产:古迹、文物的高保真数字化重建

16.3.2 Dust3R / MASt3R

论文: DUSt3R: Geometric 3D Vision Made Easy, Naver Labs, 2024, CVPR

Dust3R 是一种革命性的 3D 重建方法,它不需要相机内外参数,直接从图像对预测稠密的 3D 点云。

核心创新:将多视图 3D 重建问题转化为一个简单的回归任务——输入两张图像,输出两个对齐的 3D 点图( Pointmap )。使用基于 CroCo 预训练的 Vision Transformer 作为骨干网络,一次前向传播即可完成匹配+深度估计+位姿估计。

MASt3RGrounding Image Matching in 3D with MASt3R, 2024 )是 Dust3R 的升级版,增加了局部特征匹配头,进一步提升了匹配精度和 3D 重建质量。

16.3.3 大规模 3D 数据集

Objaverse-XLObjaverse-XL: A Universe of 10M+ 3D Objects, Allen AI, 2023 ):包含超过 1000 万个 3D 物体的大规模数据集,是目前最大的开放 3D 物体数据集。涵盖从 GitHub 、 Thingiverse 、 Sketchfab 等平台收集的多样化 3D 资产,是训练 3D 生成模型的重要数据基石。


16.4 视觉生成模型

16.4.1 图像生成最新进展

近两年图像生成领域迭代很快:

模型 机构 架构 关键特点
SD3/SD3.5 Stability AI, 2024 MMDiT (多模态 DiT) 双流 Transformer ,文本-图像联合注意力, Flow Matching
FLUX.1 Black Forest Labs, 2024 DiT 变体 SD3 团队新作,极高生成质量,开源开放
Playground v3 Playground AI, 2024 DiT 超级分辨率,美学质量突出
OpenAI 图像生成模型 OpenAI 商业闭源 图像生成与编辑能力强,具体产品名与接口能力请以官方文档为准
Midjourney v6 Midjourney, 2024 未公开 美学质量极高,文字生成支持

SD3/FLUX 架构核心——MMDiT

Text Only
MMDiT (Multimodal DiT) 架构
┌──────────┐    ┌──────────┐
│ 图像tokens │    │ 文本tokens │
│ (噪声图)   │    │ (T5/CLIP) │
└─────┬────┘    └─────┬────┘
      │                │
      ▼                ▼
 ┌────────────────────────────┐
 │    Joint Attention Block    │  × N layers
 │  ┌──────┐     ┌──────┐    │
 │  │ 图像  │ ←→ │ 文本  │    │  ← 双流交叉注意力
 │  │ Self- │     │ Self- │    │
 │  │ Attn  │     │ Attn  │    │
 │  └──────┘     └──────┘    │
 │        ↕  Cross-Attn  ↕    │
 └────────────────────────────┘
      生成的图像 (v-prediction)

Flow Matching 是 SD3 引入的新去噪范式,相比传统 DDPM 的前向高斯扩散, Flow Matching 在数据分布和噪声分布之间学习一条常见会被近似为“直线流”的路径。它在不少实现里训练更稳定、采样步数也可以更少,但具体收益仍依赖模型规模、调度器和训练配方。

16.4.2 视频生成

视频生成是近年最受关注的 AI 方向之一:

模型 机构 发布时间 关键能力
Sora OpenAI 2024 年首次公开展示 公开视频中体现出较强的长程时空一致性
CogVideoX 智谱 AI 2024 年 开源路线,强调视频生成与研究可复现性
Runway Gen-3 Alpha Runway 2024 年 商业视频生成系统,强调多模态控制
可灵 (Kling) 快手 2024 年 国内代表性视频生成系统之一
Veo 2 Google DeepMind 2024 年 强调高分辨率与复杂场景生成
Hunyuan Video 腾讯 2024 年 开源大参数视频生成路线

Sora 技术解读(基于公开演示与技术说明的归纳,不应视为完整官方架构披露):

公开信息普遍指向这样一种设计方向:把视频表示为时空 token / patch 序列,在压缩后的潜空间里做扩散式或 Transformer 式生成,再通过时空一致性建模提升长视频质量。由于 OpenAI 并未完整公开训练细节,这里更适合把 Sora 当成“视频生成正在向时空统一建模演进”的代表案例,而不是把外界拆解视为已证实的官方架构。

16.4.3 图像编辑

  • InstructPix2PixInstructPix2Pix: Learning to Follow Image Editing Instructions, Brooks et al., CVPR 2023 ):给定编辑指令直接修改图像,无需每图优化
  • LEDITS++LEDITS++: Limitless Image Editing using Text-to-Image Models, 2024 ):基于 DDPM Inversion 实现精确的文本引导编辑
  • IP-AdapterIP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models, Tencent, 2024 ):支持图像作为 prompt 引导风格/内容生成,可与 ControlNet 组合使用
  • InstantStyleInstantStyle: Free Lunch towards Style-Preserving in Text-to-Image Generation, 2024 ):解耦内容和风格,仅需一张参考图即可进行高质量风格迁移

16.4.4 虚拟试穿 / 人像驱动

  • IDM-VTONImproving Diffusion Models for Authentic Virtual Try-on in the Wild, 2024, ECCV ):2024 年非常有代表性的虚拟试穿模型之一,通过双 UNet 架构和高保真服装特征注入实现较强的试穿真实感
  • MagicAnimateMagicAnimate: Temporally Consistent Human Image Animation, ByteDance, 2024, CVPR ):字节跳动推出的人像动画生成框架,通过 Appearance Encoder 和时序注意力实现一致性极高的人像动画
  • Animate AnyoneAnimate Anyone: Consistent and Controllable Image-to-Video Synthesis for Character Animation, Alibaba, 2024, CVPR ):阿里推出的角色动画生成方法,输入一张人像和姿态序列即可生成高质量视频

16.5 视觉理解新范式

16.5.1 Visual Prompting (视觉提示学习)

类似 NLP 中的 prompt engineering , Visual Prompting 将"提示"概念引入视觉领域:

代表方法: - Visual Prompting (VP):在图像像素空间添加可学习的扰动(类似对抗样本),引导预训练模型完成新任务 - Context-based Visual Prompting:在输入图像周围添加标注示例(如红色圆圈标记),引导 VLM/VFM 关注特定区域 - Inpainting-based Prompting:给模型展示几个"输入-输出"图像对,让模型类比推理完成新图像的变换

Python
# Visual Prompting的简化示例 - 通过标注引导SAM2
import cv2
import numpy as np

def add_visual_prompt(image, points, prompt_type="circle"):
    """通过视觉提示标注引导模型关注特定区域"""
    annotated = image.copy()
    for idx, point in enumerate(points, start=1):
        x, y = point
        if prompt_type == "circle":
            cv2.circle(annotated, (x, y), 20, (255, 0, 0), 3)
        elif prompt_type == "arrow":
            cv2.arrowedLine(annotated, (x - 30, y - 30), (x, y), (255, 0, 0), 3)
        elif prompt_type == "star":
            # Set-of-Mark: 用带编号标记标注图像中的不同对象
            cv2.putText(annotated, f"[{idx}]", (x, y - 10),
                        cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2)
    return annotated

16.5.2 视觉 Chain-of-Thought ( VCoT )

受 NLP 中"Chain-of-Thought Prompting"启发, Visual Chain-of-Thought 让 VLM 在回答复杂视觉问题时,先逐步描述观察和推理过程,再给出最终答案。

关键方法: - CoT prompting for VLMs:在 prompt 中要求"Let's think step by step"触发 VLM 的逐步推理 - Visual CoTVisual CoT: Advancing Multi-Modal Language Models with a Comprehensive Dataset and Benchmark for Chain-of-Thought Reasoning, 2024 ):构建了系统化的视觉 CoT 数据集和训练框架 - Multimodal CoT:结合视觉区域标注和文本推理的多模态思维链

16.5.3 Set-of-Mark (SoM) Prompting

论文: Set-of-Mark Prompting Unleashes Extraordinary Visual Grounding in GPT-4V, Microsoft, 2024

SoM Prompting 是微软提出的一种创新性视觉提示方法。核心思想是在图像中对不同对象或区域标注带编号的标签(如[1], [2], [3]...),然后让 VLM 通过引用编号来精准描述和推理图像中的对象关系。

Text Only
原始图像                    SoM标注后的图像
┌──────────┐              ┌──────────┐
│  🚗  🏠   │   ──SoM──→  │ [1]🚗 [2]🏠│
│     🌳   │              │    [3]🌳  │
│  👤      │              │ [4]👤     │
└──────────┘              └──────────┘

提问: "图中[1]和[4]之间的空间关系是什么?"
回答: "[1]汽车停在[4]行人的左侧,距离约5米..."

论文和公开案例都表明, SoM 对 GPT-4V 一类 VLM 的空间定位、计数和指代理解通常有明显帮助;但实际增益仍取决于标注质量、任务形式和底层模型本身的视觉 grounding 能力。

16.5.4 开放词汇检测( Open-Vocabulary Detection )

传统目标检测只能识别训练集中的固定类别。开放词汇检测突破了这一限制,可以检测任意文本描述的物体。

Grounding DINOGrounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection, IDEA Research, 2024, ECCV ): - 将 closed-set 检测器 DINO 与语言 grounding 能力结合 - 输入图像+文本描述 → 输出对应的 bounding box - 支持任意文本 prompt 检测,无需重新训练

DINO-XDINO-X: A Unified Vision Model for Open-World Object Detection and Understanding, IDEA Research, 2024 ): Grounding DINO 的升级版,通用视觉感知基座模型,实现了目标检测、分割、描述、定位的统一。

YOLO-WorldYOLO-World: Real-Time Open-Vocabulary Object Detection, Tencent, 2024, CVPR ): - 将 YOLO 的实时检测速度与开放词汇能力结合 - 通过 Re-parameterizable Vision-Language PAN 高效融合 CLIP 文本特征 - 推理速度达 35+ FPS ,适合实时应用

Python
from ultralytics import YOLOWorld

# 加载YOLO-World模型
model = YOLOWorld("yolov8x-worldv2.pt")

# 设置开放词汇类别 - 可以是任意文本描述
model.set_classes(["person wearing a red jacket",
                    "golden retriever dog",
                    "traffic light showing green",
                    "coffee cup on table"])

# 推理
results = model.predict("street_scene.jpg", conf=0.1)

# 可视化结果
for result in results:
    for box in result.boxes:
        cls_id = int(box.cls[0])
        conf = float(box.conf[0])
        xyxy = box.xyxy[0].tolist()
        class_name = result.names[cls_id]
        print(f"检测到: {class_name}, 置信度: {conf:.2f}, 位置: {xyxy}")

    # 保存标注图像
    result.save("output_detection.jpg")

📋 关键复盘点

视觉基础模型

  1. SAM2 核心创新是什么?相比 SAM1 有哪些改进?
  2. Hiera 编码器替代 ViT-H ,速度快 6 倍; Memory Attention 实现视频时序建模; Occlusion Head 处理遮挡; SA-V 数据集(视频级别)。

  3. DINOv2 为什么能学到高质量特征?

  4. 高质量 LVD-142M 数据集;融合 iBOT+MIM 的双重自监督目标; KoLeo 正则化防止特征坍缌;教师-学生蒸馏。

VLM 相关

  1. LLaVA 的架构设计思路? Visual Instruction Tuning 的核心思想?
  2. 用投影层将视觉 tokens 对齐到 LLM 的文本空间;常用强教师模型或人工流程生成视觉指令微调数据;两阶段训练(对齐预训练+指令微调)。

  3. Qwen2-VL 的 M-RoPE 是什么?为什么需要这种设计?

  4. 将 1D RoPE 扩展为 3D (时间、高度、宽度),使模型原生理解图像的 2D 空间结构和视频的时间维度,无需显式分片裁剪。

  5. 开源 VLM 和闭源通用 VLM 各自的优势场景是什么?

3D 视觉

  1. 3DGS 的渲染为什么比 NeRF 快很多?
  2. NeRF 需要逐光线步进采样,计算密集; 3DGS 用光栅化的 Splatting ,可利用 GPU 高并行 Tile-based 渲染, 100+ FPS 。

  3. 3DGS 的自适应密度控制包含哪些操作?作用分别是什么?

  4. Dust3R 如何在不知道相机参数的情况下实现 3D 重建?

视觉生成

  1. SD3/FLUX 使用的 Flow Matching 和传统 DDPM 有什么区别?
  2. Flow Matching 学习数据到噪声之间的"直线"传输路径,训练更稳定; DDPM 是随机正向扩散+逆向去噪,通常需要更多采样步数。

  3. Sora 的核心技术架构是什么?

视觉理解新范式

  1. 什么是开放词汇检测?和传统检测有何区别?

    • 传统检测在固定类别数据集上训练,只能检测已见过的类别;开放词汇检测融合语言特征,可检测任意文本描述的物体。
  2. Set-of-Mark Prompting 的原理和优势?


✏️ 练习

练习 1 : SAM2 实践(★★★)

部署 SAM2 模型,在一段包含遮挡场景的视频上进行分割实验,分析 Memory Bank 的作用。比较不同 prompt 方式(点击/框选/掩码)对分割质量的影响。

练习 2 : VLM 对比评测(★★★★)

选择 3 个开源 VLM (如 LLaVA-OneVision 、 Qwen2-VL-7B 、 InternVL2-8B ),在以下任务上进行对比评测: 1. 中文图片描述 2. 视觉问答( VQAv2 ) 3. OCR/文档理解 4. 图像中的物体计数

记录各模型的准确率、推理速度和显存占用。

练习 3 : 3DGS 场景重建(★★★★)

使用官方 3DGS 代码,用手机拍摄一个室内场景( 50-100 张照片),完成以下步骤: 1. 使用 COLMAP 进行 Structure-from-Motion 2. 训练 3DGS 模型 3. 渲染新视角图像并评估质量( PSNR/SSIM ) 4. 对比不同高斯数量对质量和速度的影响

练习 4 : YOLO-World 部署(★★★)

部署 YOLO-World 到本地,实现一个开放词汇检测 Demo : 1. 用户输入任意类别描述(如"穿红衣服的人") 2. 实时检测视频流中的目标 3. 统计检测 FPS 和精度

练习 5 :视觉 CoT 推理(★★★★★)

使用 Qwen2-VL 或 InternVL2 ,构建一个视觉 CoT 推理系统: 1. 给定复杂场景图片(如交通场景、医学影像) 2. 设计"逐步推理"的 prompt 模板 3. 对比有/无 CoT 对回答准确率的影响 4. 分析 CoT 推理链条中的错误传播问题


扩展阅读

综述论文

  • A Survey on Multimodal Large Language Models, 2024 (多模态大模型综述)
  • 3D Gaussian Splatting: A Survey, 2024 ( 3DGS 综述)
  • A Survey on Visual Foundation Models, 2024 (视觉基础模型综述)

必读论文

  • SAM2: Segment Anything in Images and Videos, Meta AI, 2024
  • DINOv2: Learning Robust Visual Features without Supervision, Meta AI, 2024, TMLR
  • LLaVA-OneVision: Easy Visual Task Transfer, NeurIPS 2024
  • InternVL2: Better than the Best, Shanghai AI Lab, 2024
  • Qwen2-VL: Enhancing Vision-Language Model's Perception, Alibaba, 2024
  • 3DGS: 3D Gaussian Splatting for Real-Time Radiance Field Rendering, SIGGRAPH 2023
  • Grounding DINO: Marrying DINO with Grounded Pre-Training, IDEA, 2024, ECCV
  • FLUX/SD3: Scaling Rectified Flow Transformers for High-Resolution Image Synthesis, 2024, ICML

开源项目

💡 提示:以下 GitHub 链接可能随项目归档、迁移或重命名而失效。如遇到链接失效,请在 GitHub 上搜索项目名称(如"sam2"、"LLaVA"等)查找最新仓库地址。


下一章17-视觉模型实战与部署 — 学习如何将这些前沿模型落地应用

⚠️ 核验说明(2026-04-03):本页已再次逐段人工复核。若文中涉及外部模型、API、版本号、价格、部署依赖或第三方产品名称,请以官方文档、论文原文和实际运行环境为准。


最后更新日期: 2026-04-03