第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的整体架构由以下核心组件构成:
SAM2 架构总览
┌──────────────────────────────────────────────────┐
│ 输入视频帧 │
│ (或单张图像) │
└────────────────────┬─────────────────────────────┘
▼
┌──────────────────────────────────────────────────┐
│ Hiera 图像编码器 (Image Encoder) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Stage 1 │→│ Stage 2 │→│ Stage 3 │→ Stage 4 │
│ │ (下采样) │ │ (下采样) │ │ (下采样) │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ 多尺度特征提取 + 窗口注意力 (MAE预训练) │
└────────────────────┬─────────────────────────────┘
▼
┌───────────────────────┐
│ Memory Attention 模块│ ←── Memory Bank
│ (交叉注意力融合) │ (存储历史帧信息)
└───────────┬───────────┘
▼
┌──────────────────────────────────────────────────┐
│ Prompt Encoder + Mask Decoder │
│ 支持: 点击(Point)、框(Box)、Mask、文本提示 │
│ 输出: 分割掩码 + 置信度分数 │
└──────────────────────────────────────────────────┘
关键组件详解:
-
Hiera图像编码器:替代SAM1中的ViT-H,Hiera是一种层次化视觉Transformer,采用逐级下采样策略,在保持特征质量的同时显著提升了计算效率。使用MAE预训练,速度比SAM1的ViT-H快约6倍。
-
Memory Attention模块:SAM2引入的核心创新。通过交叉注意力机制将当前帧特征与历史帧信息融合,实现时序连贯的视频分割。Memory Attention包含自注意力(当前帧内)和交叉注意力(跨帧记忆)两部分。
-
Memory Bank:维护一个固定大小的FIFO队列,存储最近N帧的分割结果和编码特征。包含两类记忆:
- Spatial Memory:存储历史帧的空间特征
-
Object Pointers:轻量级对象级别表征,用于快速定位
-
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进行视频分割¶
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推出的自监督视觉基础模型,核心思想是完全不依赖标注数据,通过自监督预训练学习高质量视觉表征。
关键创新:
- LVD-142M数据集:通过自动化数据管线从大规模原始数据中筛选出1.42亿张高质量图像,无需人工标注。
- 训练框架:结合Image-level(iBOT的[CLS] token蒸馏)和Patch-level(掩码图像建模)两种自监督目标。
- KoLeo正则化:确保特征空间中的表征均匀分布,避免特征坍塌。
- 模型蒸馏:从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 |
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-02(EVA-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。
InternViT(InternVL: 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等人提出,其架构简洁而高效:
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。
核心设计:
- Dynamic Resolution(动态分辨率):对输入图像进行动态分片,根据图像宽高比和分辨率自适应选择最优的分片方案(最高支持4K分辨率),每个分片独立通过视觉编码器处理。
- 像素洗牌(Pixel Shuffle):在投影层中使用像素洗牌操作将视觉token数量压缩为¼,在保持信息量的同时大幅降低LLM的计算负担。
- 渐进式训练策略:分阶段逐步提升模型能力——先对齐视觉-语言表征,再进行指令微调。
- 丰富的模型规格:从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那样的显式分片裁剪。
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(抛雪球)渲染策略:
- 将每个3D高斯投影到2D图像平面上得到2D高斯
- 对所有投影的2D高斯按深度排序
- 通过alpha合成(\(\alpha\)-blending)从前到后逐像素累积颜色
其中 \(c_i\) 是第 \(i\) 个高斯的颜色,\(\alpha_i\) 是其在该像素处的有效不透明度。
高效渲染流程:
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 Splatting(Real-time Photorealistic Dynamic Scene Representation and Rendering with 4D Gaussian Splatting, 2024, ICLR):为每个高斯添加时间维度,实现动态场景的实时渲染。通过4D球谐函数建模颜色随时间的变化。
-
GaussianEditor(GaussianEditor: Swift and Controllable 3D Editing with Gaussian Splatting, 2024, CVPR):结合文本指令和语义追踪,实现3DGS场景的交互式语义编辑。
-
DreamGaussian(DreamGaussian: Generative Gaussian Splatting for Efficient 3D Content Generation, 2024, ICLR):将3DGS与Score Distillation Sampling(SDS)结合,仅需2分钟即可从文本/图像生成3D内容。
-
SuGaR(SuGaR: 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作为骨干网络,一次前向传播即可完成匹配+深度估计+位姿估计。
MASt3R(Grounding Image Matching in 3D with MASt3R, 2024)是Dust3R的升级版,增加了局部特征匹配头,进一步提升了匹配精度和3D重建质量。
16.3.3 大规模3D数据集¶
Objaverse-XL(Objaverse-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:
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 图像编辑¶
- InstructPix2Pix(InstructPix2Pix: 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-Adapter(IP-Adapter: Text Compatible Image Prompt Adapter for Text-to-Image Diffusion Models, Tencent, 2024):支持图像作为prompt引导风格/内容生成,可与ControlNet组合使用
- InstantStyle(InstantStyle: Free Lunch towards Style-Preserving in Text-to-Image Generation, 2024):解耦内容和风格,仅需一张参考图即可进行高质量风格迁移
16.4.4 虚拟试穿 / 人像驱动¶
- IDM-VTON(Improving Diffusion Models for Authentic Virtual Try-on in the Wild, 2024, ECCV):当前最先进的虚拟试穿模型,通过双UNet架构和高保真服装特征注入实现真实感极强的试穿效果
- MagicAnimate(MagicAnimate: Temporally Consistent Human Image Animation, ByteDance, 2024, CVPR):字节跳动推出的人像动画生成框架,通过Appearance Encoder和时序注意力实现一致性极高的人像动画
- Animate Anyone(Animate 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:给模型展示几个"输入-输出"图像对,让模型类比推理完成新图像的变换
# 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 CoT(Visual 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通过引用编号来精准描述和推理图像中的对象关系。
原始图像 SoM标注后的图像
┌──────────┐ ┌──────────┐
│ 🚗 🏠 │ ──SoM──→ │ [1]🚗 [2]🏠│
│ 🌳 │ │ [3]🌳 │
│ 👤 │ │ [4]👤 │
└──────────┘ └──────────┘
提问: "图中[1]和[4]之间的空间关系是什么?"
回答: "[1]汽车停在[4]行人的左侧,距离约5米..."
SoM显著提升了GPT-4V等VLM的空间定位、计数和指代理解能力。
16.5.4 开放词汇检测(Open-Vocabulary Detection)¶
传统目标检测只能识别训练集中的固定类别。开放词汇检测突破了这一限制,可以检测任意文本描述的物体。
Grounding DINO(Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection, IDEA Research, 2024, ECCV): - 将closed-set检测器DINO与语言grounding能力结合 - 输入图像+文本描述 → 输出对应的bounding box - 支持任意文本prompt检测,无需重新训练
DINO-X(DINO-X: A Unified Vision Model for Open-World Object Detection and Understanding, IDEA Research, 2024):Grounding DINO的升级版,通用视觉感知基座模型,实现了目标检测、分割、描述、定位的统一。
YOLO-World(YOLO-World: Real-Time Open-Vocabulary Object Detection, Tencent, 2024, CVPR): - 将YOLO的实时检测速度与开放词汇能力结合 - 通过Re-parameterizable Vision-Language PAN高效融合CLIP文本特征 - 推理速度达35+ FPS,适合实时应用
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")
📋 面试要点¶
视觉基础模型¶
- SAM2核心创新是什么?相比SAM1有哪些改进?
-
Hiera编码器替代ViT-H,速度快6倍;Memory Attention实现视频时序建模;Occlusion Head处理遮挡;SA-V数据集(视频级别)。
-
DINOv2为什么能学到高质量特征?
- 高质量LVD-142M数据集;融合iBOT+MIM的双重自监督目标;KoLeo正则化防止特征坍缌;教师-学生蒸馏。
VLM相关¶
- LLaVA的架构设计思路?Visual Instruction Tuning的核心思想?
-
用投影层将视觉tokens对齐到LLM的文本空间;用GPT-4生成视觉指令微调数据;两阶段训练(对齐预训练+指令微调)。
-
Qwen2-VL的M-RoPE是什么?为什么需要这种设计?
-
将1D RoPE扩展为3D(时间、高度、宽度),使模型原生理解图像的2D空间结构和视频的时间维度,无需显式分片裁剪。
-
开源VLM和GPT-4V各自的优势场景是什么?
3D视觉¶
- 3DGS的渲染为什么比NeRF快很多?
-
NeRF需要逐光线步进采样,计算密集;3DGS用光栅化的Splatting,可利用GPU高并行Tile-based渲染,100+ FPS。
-
3DGS的自适应密度控制包含哪些操作?作用分别是什么?
-
Dust3R如何在不知道相机参数的情况下实现3D重建?
视觉生成¶
- SD3/FLUX使用的Flow Matching和传统DDPM有什么区别?
-
Flow Matching学习数据到噪声之间的"直线"传输路径,训练更稳定;DDPM是随机正向扩散+逆向去噪,通常需要更多采样步数。
-
Sora的核心技术架构是什么?
视觉理解新范式¶
-
什么是开放词汇检测?和传统检测有何区别?
- 传统检测在固定类别数据集上训练,只能检测已见过的类别;开放词汇检测融合语言特征,可检测任意文本描述的物体。
-
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"等)查找最新仓库地址。
- SAM2: https://github.com/facebookresearch/sam2
- LLaVA: https://github.com/haotian-liu/LLaVA
- InternVL: https://github.com/OpenGVLab/InternVL
- Qwen-VL: https://github.com/QwenLM/Qwen2-VL
- 3DGS: https://github.com/graphdeco-inria/gaussian-splatting
- Grounding DINO: https://github.com/IDEA-Research/GroundingDINO
- YOLO-World: https://github.com/AILab-CVC/YOLO-World
- DUSt3R: https://github.com/naver/dust3r
下一章:17-视觉模型实战与部署 — 学习如何将这些前沿模型落地应用