跳转至

第16章 前沿视觉模型(2024-2025)

前沿视觉模型图

🎯 学习目标

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

  • 理解并掌握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)是2023-2025年计算机视觉领域最重要的研究方向之一。不同于特定任务的专用模型,基础模型通过大规模预训练获得通用视觉表征能力,可以在零样本或少样本设定下迁移到广泛的下游任务中。

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 sam2.build_sam import build_sam2_video_predictor

# 初始化SAM2视频预测器
checkpoint = "sam2_hiera_large.pt"
model_cfg = "sam2_hiera_l.yaml"
predictor = build_sam2_video_predictor(model_cfg, checkpoint)

# 初始化视频推理状态
video_dir = "./video_frames"  # 存放视频帧的目录
inference_state = predictor.init_state(video_path=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(f"{video_dir}/{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(f"output/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系列多模态模型的视觉骨干,在多个视觉和多模态基准上取得了SOTA表现。


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

视觉语言模型(VLM)是2024-2025年最热门的研究方向,通过将视觉编码器与大语言模型(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实验室推出的开源旗舰多模态模型,在多项基准上超越了GPT-4V。

核心设计

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

InternVL2.5(2024年底)进一步增强了: - 中文理解能力(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
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from qwen_vl_utils import process_vision_info

# 加载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")

# 构建多模态消息
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",
).to(model.device)

# 生成回答
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扩展为时间+高度+宽度三维分解的旋转位置编码,使模型原生支持任意分辨率图像和任意长度视频 - 视频理解:支持20分钟以上的长视频理解 - Grounding能力:支持目标检测(输出bounding box)、OCR等精细视觉定位任务 - Agent能力:可以作为视觉Agent操控电脑和手机界面

16.2.4 GPT-4V/4o 视觉能力分析

GPT-4V(GPT-4 with Vision, 2023.9)和GPT-4o(2024.5)代表了闭源VLM的最高水平:

GPT-4o核心能力: - 原生多模态:图像、文本、音频在同一模型中原生处理,而非拼接式架构 - 实时性:音频输入响应延迟低至232ms,接近人类对话反应速度 - 多语言OCR:强大的多语言文字识别和文档理解能力 - 长图推理:在复杂图表、学术论文理解方面表现突出

局限性:空间定位能力(如精确计数、bounding box输出)相比开源专用模型仍有差距;存在幻觉问题;无法获取模型权重进行定制。

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

维度 开源VLM 闭源VLM (GPT-4o/Gemini/Claude)
通用理解 InternVL2.5-78B接近GPT-4o GPT-4o/Gemini 1.5 Pro 领先
中文能力 Qwen2-VL、InternVL2.5优秀 GPT-4o中文能力好,Gemini稍弱
定制微调 ✅ 完全支持 ❌ 不支持或受限
部署成本 自行部署,7B模型单卡可运行 API按调用量计费
数据隐私 ✅ 本地部署,数据不出域 ❌ 需上传数据到第三方
推理速度 可优化(量化、TRT等) 受限于API响应
特定领域 可针对性微调,表现更好 通用能力强,垂直领域有限

选型建议: - 快速原型验证:先用GPT-4o API测试可行性 - 数据敏感场景:优先选择开源模型本地部署(Qwen2-VL/InternVL2.5) - 垂直领域应用:开源7B模型微调后往往优于GPT-4o的通用能力 - 追求极致效果:InternVL2.5-78B或GPT-4o


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 图像生成最新进展

2024-2025年图像生成领域百花齐放:

模型 机构 架构 关键特点
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 超级分辨率,美学质量突出
DALL-E 3 OpenAI, 2023 扩散模型+LLM 文本理解能力强,用GPT-4辅助prompt改写
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 视频生成

视频生成是2024年最受瞩目的AI方向之一:

模型 机构 发布时间 关键能力
Sora OpenAI 2024.2/12 最长60秒高质量视频,时空一致性强
CogVideoX 智谱AI 2024.8 开源,3D VAE+Expert Transformer
Runway Gen-3 Alpha Runway 2024.6 商业化领先,多模态控制
可灵 (Kling) 快手 2024.6 中国首个发布的Sora级模型,支持120秒
Veo 2 Google DeepMind 2024.12 4K分辨率,物理交互理解
Hunyuan Video 腾讯 2024.12 开源13B参数,Dual-Stream DiT

Sora架构分析(基于OpenAI公开信息推测):

Sora采用Diffusion Transformer(DiT)架构处理时空Patches。核心思想是将视频视为"时空Patch序列",类似语言模型处理token序列。使用3D VAE将视频编码为时空隐空间表示,再用DiT进行去噪生成。关键技术包括:时空注意力(分别在空间和时间维度上做注意力)、可变时长/分辨率支持、DALL-E 3级别的文本理解。

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):当前最先进的虚拟试穿模型,通过双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 point in points:
        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"[{len(points)}]", (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的空间定位、计数和指代理解能力。

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的文本空间;用GPT-4生成视觉指令微调数据;两阶段训练(对齐预训练+指令微调)。

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

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

  5. 开源VLM和GPT-4V各自的优势场景是什么?

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-视觉模型实战与部署 — 学习如何将这些前沿模型落地应用