视觉感知与场景理解是计算机视觉领域的核心研究方向,旨在让机器像人类一样理解视觉世界。这一领域涵盖了从底层特征提取到高层语义理解的完整技术链条,是现代人工智能系统实现环境交互的基础能力。
在过去的十年里,深度学习技术彻底革新了这一领域。从早期的传统图像处理算法,到如今基于深度神经网络的端到端学习框架,视觉系统的性能得到了质的飞跃。特别是在ImageNet竞赛的推动下,卷积神经网络(CNN)和Transformer架构不断突破性能极限,使得机器在图像分类、目标检测、语义分割等任务上达到甚至超越人类水平。
AlexNet在2012年ImageNet竞赛中的突破性表现,标志着深度学习在计算机视觉领域的复兴。这个八层架构引入了多项创新设计:
ReLU激活函数:替代传统的Sigmoid或Tanh函数,有效缓解了深层网络的梯度消失问题。其数学表达式为f(x)=max(0,x),计算简单且导数恒定,大幅加速了训练过程。
局部响应归一化(LRN):通过侧抑制机制增强模型的泛化能力。其计算公式为:
$$b_{x,y}^i = \frac{a_{x,y}^i}{\left(k + \alpha \sum_{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)} (a_{x,y}^j)^2 \right)^\beta}$$
这种设计模拟了生物神经系统的抑制现象,使相邻特征图之间产生竞争。
Dropout正则化:以概率p随机置零神经元输出,相当于训练时对网络结构进行采样,实现了模型集成的效果。测试时使用全部神经元但缩小权重,近似贝叶斯平均。
VGG网络通过堆叠小尺寸卷积核(3×3)替代大卷积核,在不损失感受野的前提下显著增加了网络深度。这种设计带来了两个优势:
参数效率:两个3×3卷积堆叠的感受野相当于一个5×5卷积,但参数量减少了28%。
非线性增强:每层都带有ReLU激活,增加了模型的表达能力。
ResNet则通过残差连接(residual connection)解决了极深网络的退化问题。其核心思想是让网络学习残差映射F(x)而非直接映射H(x):
$$y = F(x, {W_i}) + x$$
当F(x)→0时,网络自动退化为恒等映射,确保深层网络至少不会比浅层网络表现更差。这种设计使得训练超过100层的网络成为可能。
Vision Transformer(ViT)将自然语言处理中的Transformer架构成功迁移到计算机视觉领域。其核心创新包括:
图像分块处理:将输入图像分割为固定大小的非重叠patches,每个patch视为一个"视觉词"。
位置编码:由于Transformer本身具有置换不变性,需要额外添加位置嵌入(positional embeddings)来编码空间信息。
多头自注意力机制:通过计算query、key和value之间的交互,捕获全局依赖关系:
$$\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
ViT在大规模数据上表现出色,但在小规模数据集上容易过拟合,且计算复杂度随图像分辨率平方增长。
ConvNeXt是对传统CNN的现代化改造,通过借鉴Transformer的成功经验,在纯卷积架构中达到了与ViT相当的性能。其关键技术包括:
大卷积核(7×7):增大感受野,模拟Transformer的全局注意力。
深度可分离卷积:降低计算复杂度,保持参数效率。
LayerNorm替代BatchNorm:更适合小批量训练,与Transformer保持一致。
GELU激活函数:平滑的非线性变换,被证明比ReLU更适合深层网络。
ConvNeXt证明了经过适当改进,传统卷积架构仍具有强大的竞争力,特别是在需要平移等变性的任务中。
SimCLR(Simple Contrastive Learning of Representations)是典型的对比学习框架,其训练流程包含四个关键步骤:
数据增强:对输入图像x生成两个随机增强视图x_i和x_j。
编码器f(·):通常使用ResNet等CNN提取特征表示。
投影头g(·):将特征映射到对比学习空间,通常为2-3层的MLP。
对比损失:使用归一化温度缩放交叉熵损失(NT-Xent):
$$L_{i,j} = -\log \frac{\exp(\text{sim}(z_i, z_j)/\tau)}{\sum_{k=1}^{2N} \mathbb{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k)/\tau)}$$
其中τ是温度参数,控制分布的尖锐程度。实验表明,适当的数据增强组合(如随机裁剪+颜色扰动)对性能至关重要。
Momentum Contrast(MoCo)通过两个关键技术解决了对比学习需要大批次的限制:
动态字典:维护一个大型的负样本队列,通过动量更新保持一致性:
$$\theta_k \leftarrow m\theta_k + (1-m)\theta_q$$
其中m∈[0,1)是动量系数,θ_k和θ_q分别是键编码器和查询编码器的参数。
分离批处理:查询和键可以来自不同批次,使得负样本数量不再受GPU内存限制。
MoCo v2进一步引入了MLP投影头和更强的数据增强,在ImageNet线性评估协议下达到了73.8%的top-1准确率。
掩码自编码器(Masked Autoencoders, MAE)采用非对称的编码器-解码器设计:
高比例掩码:随机掩码75%的图像块,仅将可见块输入ViT编码器。
轻量级解码器:重建原始像素值,计算均方误差损失:
$$L = \frac{1}{|M|} \sum_{i \in M} |\tilde{x}_i - x_i|^2$$
这种设计大幅降低了计算成本,使模型能够训练更大的ViT架构(如ViT-Huge)。
BEiT(Bidirectional Encoder Representations from Image Transformers)采用不同的重建目标:
视觉token化:使用预训练的离散变分自编码器(dVAE)将图像块量化为离散token。
掩码语言建模:预测被掩码块的视觉token而非原始像素。
这种方法更接近NLP中的BERT预训练范式,学习到的特征更具语义性。BEiT-v2进一步引入了视觉-文本对齐,支持多模态学习。
Faster R-CNN确立了现代两阶段检测器的基本框架:
区域提议网络(RPN):在特征图上滑动小网络,预测锚框(anchors)的前景/背景概率和边界框回归参数。其损失函数为:
$$L({p_i}, {t_i}) = \frac{1}{N_{cls}} \sum_i L_{cls}(p_i, p_i^) + \lambda \frac{1}{N_{reg}} \sum_i p_i^ L_{reg}(t_i, t_i^*)$$
RoI池化:将不同大小的候选区域转换为固定尺寸特征,供后续分类和回归。
RoIAlign的改进消除了量化误差,通过双线性插值保留亚像素精度,显著提升了小物体检测性能。
Cascade R-CNN通过多阶段级联检测头,逐步优化检测框质量。每个阶段的IoU阈值递增,使网络能够渐进式学习更精确的定位。其他重要改进包括:
Feature Pyramid Network(FPN):构建多尺度特征金字塔,增强对小目标的检测能力。
Deformable Convolution:引入可学习偏移量,使卷积核能够适应物体形变。
Attention机制:如Non-local Networks,增强特征表示能力。
YOLO(You Only Look Once)开创了单阶段检测范式,将检测任务重新定义为单次回归问题:
网格划分:将图像划分为S×S网格,每个网格预测B个边界框。
边界框参数化:
$$b_x = \sigma(t_x) + c_x, \quad b_y = \sigma(t_y) + c_y$$
$$b_w = p_w e^{t_w}, \quad b_h = p_h e^{t_h}$$
YOLOv3引入多尺度预测和更好的骨干网络,YOLOv4整合了大量训练技巧(Bag of Freebies),YOLOv5则进一步优化了工程实现。
近年来Anchor-free方法逐渐流行,代表性工作包括:
CenterNet:将物体表示为关键点+尺寸,简化了检测流程。
FCOS:全卷积单阶段检测器,直接在特征图上预测边界框。
这些方法减少了超参数调优的复杂性,在多个基准上达到了state-of-the-art性能。
单目深度估计面临的核心挑战是尺度模糊性(scale ambiguity),即从单张图像无法确定绝对深度。现代方法通常采用以下策略:
尺度不变损失:如尺度不变对数误差:
$$L = \alpha \sqrt{\frac{1}{n} \sum_i d_i^2 - \frac{\lambda}{n^2} (\sum_i d_i)^2}$$
多任务学习:联合估计表面法线和语义分割等辅助任务。
自监督学习:利用视频序列或立体图像对作为监督信号。
传统立体匹配算法如半全局匹配(SGM)通过优化能量函数计算视差:
$$E(D) = \sum_p C(p, D_p) + \sum_{q \in N_p} P_1 \mathbb{1}[|D_p - D_q|=1] + \sum_{q \in N_p} P_2 \mathbb{1}[|D_p - D_q|>1]$$
深度学习-based方法如PSMNet构建4D代价体(cost volume),通过3D卷积进行正则化,显著提升了在弱纹理区域的匹配精度。
PointNet直接处理原始点云数据,通过对称函数解决点云的无序性:
$$f({x_1, \dots, x_n}) \approx g(\max_{i=1,\dots,n} {h(x_i)})$$
PointNet++引入层次化特征学习,通过最远点采样(FPS)和k近邻构建点集金字塔,实现了更好的局部特征提取。
VoxelNet将点云量化为规则3D网格,通过体素特征编码(VFE)层聚合局部点特征:
$$V_{ijk} = \frac{1}{N_{ijk}} \sum_{p \in P_{ijk}} [x_p, y_p, z_p, r_p, f_p]^T$$
稀疏卷积的应用大幅降低了计算开销,使得处理大规模点云成为可能。
SAM构建了通用的可提示(promptable)分割系统:
图像编码器:基于ViT提取高维图像嵌入。
提示编码器:处理各种输入提示(点、框、文本等)。
掩码解码器:轻量级Transformer融合图像和提示信息,预测分割掩码。
其动态聚焦机制通过迭代细化支持高分辨率预测,处理歧义性输出。
SAM在包含1100万图像和10亿掩码的SA-1B数据集上训练,展现出强大的零样本泛化能力。通过提示工程,可以适应各种下游任务:
交互式分割:通过前景/背景点提示
自动实例分割:结合目标检测器的框提示
边缘检测:通过密集网格点提示
DINO通过学生-教师网络的自蒸馏学习高质量视觉表示:
动量教师:教师参数是学生参数的指数移动平均:
$$\theta_t \leftarrow \lambda \theta_t + (1-\lambda) \theta_s$$
多视图训练:学生处理所有增强视图,教师仅处理全局视图。
中心化与锐化:防止表示崩溃。
DINO训练的ViT展现出有趣的涌现特性:
自注意力图自动聚焦于语义对象边界。
特征空间形成清晰的语义聚类结构。
不同层捕获不同级别的视觉特征(纹理→形状→语义)。
这些特性使DINO特征非常适合作为各种下游任务的预训练初始化。