图像领域的预训练
一、为什么图像领域需要预训练?
1.1 数据困境:标注成本高昂
- 一张高清图像的像素数通常为 10610^6106 级别(如 224×224×3=150,528224 \times 224 \times 3 = 150,528224×224×3=150,528 像素)
- 高质量标注需要专业领域知识:
- 医学影像:需执业医师标注病灶区域
- 遥感图像:需地理信息专家识别地物类型
- 工业检测:需工程师定义缺陷标准
- 预训练的核心思想:先在大规模无标注/弱标注数据上学习通用视觉表征,再迁移到下游任务
1.2 预训练的价值对比
| 维度 | 从头训练 | 预训练+微调 |
|---|---|---|
| 数据需求 | 百万级标注样本 | 千级标注即可 |
| 训练时间 | 数周(多GPU) | 数小时(单卡) |
| 收敛稳定性 | 高度依赖初始化 | 更稳健,易收敛 |
| 泛化性能 | 易过拟合,域迁移差 | 显著提升,跨域鲁棒 |
| 计算成本 | 高(重复造轮子) | 低(一次预训练,多次复用) |
1.3 预训练的生物学启发
人类视觉系统的发育过程:
- 婴儿期:大量观察环境,学习边缘、颜色、纹理等低级特征
- 成长期:通过少量指导,快速识别物体类别和关系
- 专家期:特定领域深度优化
预训练模拟了这一过程:无监督/弱监督阶段对应婴儿期观察,微调阶段对应成长期指导。
二、预训练的技术演进路线
2.1 第一代:监督预训练(2012-2018)
ImageNet 的诞生与影响
- 2009年,李飞飞团队发布 ImageNet,包含 1280 万张图像,2.2 万个类别
- 2012年,AlexNet 在 ImageNet 竞赛中以显著优势夺冠,开启深度学习革命
代表性网络架构演进:
AlexNet (2012) → VGGNet (2014) → ResNet (2015) → DenseNet (2017) → EfficientNet (2019)
↑ ↑ ↑ ↑ ↑
8层 16-19层 152+层 特征复用 复合缩放
核心范式——监督分类:
LCE=−∑i=1N∑c=1Cyi,clog(y^i,c) \mathcal{L}_{\text{CE}} = -\sum_{i=1}^{N} \sum_{c=1}^{C} y_{i,c} \log(\hat{y}_{i,c}) LCE=−i=1∑Nc=1∑Cyi,clog(y^i,c)
迁移学习的发现:
- 浅层卷积(第1-3层):学习边缘、颜色、纹理等通用低级特征
- 中层卷积(第4-5层):学习部件、轮廓、纹理组合等中级特征
- 深层卷积(第6层+):学习物体部件、类别特征等高级语义特征
2.2 第二代:自监督预训练(2019-2022)
动机与背景:
- ImageNet 标注成本:每张图像约 $0.5-2 美元,总成本超 2500 万美元
- 互联网图像:数十亿张无标注图像等待利用
- 核心问题:如何设计代理任务,让模型从图像自身结构中学习?
2.2.1 对比学习家族
| 方法 | 核心创新 | 技术细节 | 性能 |
|---|---|---|---|
| SimCLR (2020) | 简单对比学习 | 同图像的不同增强视图为正样本,其他为负样本;大batch(4096)+ 温度系数 | ResNet-50 达到 76.5% Top-1 |
| MoCo v1/v2/v3 (2019-2021) | 动量编码器 | 维护动态字典,动量更新编码器,无需大batch | 小batch也能工作,更实用 |
| SwAV (2020) | 聚类对比 | 在线聚类分配伪标签,避免显式负样本 | 更稳定的训练 |
| BYOL/SimSiam (2020-2021) | 无负样本 | 在线网络+动量网络/孪生网络,停止梯度传播 | 揭示对比学习不一定需要负样本 |
SimCLR 的损失函数(InfoNCE):
LSimCLR=−logexp(sim(zi,zj)/τ)∑kexp(sim(zi,zk)/τ) \mathcal{L}_{\text{SimCLR}} = -\log \frac{\exp(\text{sim}(z_i, z_j)/\tau)}{\sum_{k} \exp(\text{sim}(z_i, z_k)/\tau)} LSimCLR=−log∑kexp(sim(zi,zk)/τ)exp(sim(zi,zj)/τ)
其中 sim(u,v)=u⊤v∥u∥∥v∥\text{sim}(u, v) = \frac{u^\top v}{\|u\| \|v\|}sim(u,v)=∥u∥∥v∥u⊤v 为余弦相似度,τ\tauτ 为温度系数。
2.2.2 掩码图像建模(MIM)
MAE(Masked Autoencoder,2021):
- 随机掩码 75% 的图像块(patches)
- 用非对称的编码器-解码器架构重建原图
- 编码器仅处理可见 patches,计算高效
MAE 的数学形式:
LMAE=1∣M∣∑i∈M∥xi−x^i∥2 \mathcal{L}_{\text{MAE}} = \frac{1}{|\mathcal{M}|} \sum_{i \in \mathcal{M}} \|x_i - \hat{x}_i\|^2 LMAE=∣M∣1i∈M∑∥xi−x^i∥2
其中 M\mathcal{M}M 为掩码位置集合,x^i=D(E(xvisible)+mask tokens)\hat{x}_i = D(E(x_{\text{visible}}) + \text{mask tokens})x^i=D(E(xvisible)+mask tokens)。
MAE 的优势:
- 掩码比例高达 75% 仍能重建,说明模型学到了强语义表征
- 下游微调时,仅用 1% 的 ImageNet 标签即可达到 80%+ 准确率
BEiT(2021)与后续改进:
- 使用离散 VAE 将图像 token 化,预测离散视觉 token
- 结合 NLP 的 BERT 思想到视觉领域
2.3 第三代:多模态预训练(2021-至今)
CLIP:连接视觉与语言的桥梁(2021)
核心创新:
- 4亿互联网图文对(WebImageText)进行对比学习
- 双塔架构:图像编码器 + 文本编码器
- 对比损失对齐视觉-语义空间
CLIP 的对比损失:
LCLIP=12[∑i−logexp(sim(Ii,Ti)/τ)∑jexp(sim(Ii,Tj)/τ)+∑j−logexp(sim(Ij,Tj)/τ)∑iexp(sim(Ii,Tj)/τ)] \mathcal{L}_{\text{CLIP}} = \frac{1}{2} \left[ \sum_{i} -\log \frac{\exp(\text{sim}(I_i, T_i)/\tau)}{\sum_{j} \exp(\text{sim}(I_i, T_j)/\tau)} + \sum_{j} -\log \frac{\exp(\text{sim}(I_j, T_j)/\tau)}{\sum_{i} \exp(\text{sim}(I_i, T_j)/\tau)} \right] LCLIP=21[i∑−log∑jexp(sim(Ii,Tj)/τ)exp(sim(Ii,Ti)/τ)+j∑−log∑iexp(sim(Ii,Tj)/τ)exp(sim(Ij,Tj)/τ)]
CLIP 的零样本能力:
- 给定类别描述(如 “a photo of a dog”),计算图像与描述的相似度
- 在 ImageNet 上零样本达到 76.2% Top-1,媲美监督 ResNet-50
后续多模态工作:
| 模型 | 年份 | 规模 | 特点 |
|---|---|---|---|
| ALIGN | 2021 | 18亿图文对 | 噪声鲁棒的对比学习 |
| Florence | 2021 | 9亿图文对 | 统一视觉-语言-任务 |
| BLIP/BLIP-2 | 2022-2023 | 14亿图文对 | 引导式过滤 + Q-Former |
| LLaVA | 2023 | 视觉指令微调 | 连接 CLIP 与 LLM |
| GPT-4V | 2023 | 未公开 | 端到端多模态大模型 |
三、预训练模型的架构演进
3.1 从 CNN 到 Transformer 的范式转移
卷积神经网络(CNN)的局限:
- 局部感受野,难以建模长距离依赖
- 平移等变性是优势,但对旋转、尺度变化需额外设计
- 深层网络优化困难(梯度消失/爆炸)
Vision Transformer(ViT,2020)的突破:
- 将图像切分为 16×1616 \times 1616×16 的 patches,视为 “视觉 token”
- 标准 Transformer 编码器处理全局关系
- 在大规模数据(JFT-300M)上超越 ResNet
ViT 的架构公式:
Patch Embedding:z0=[xclass;xp1E;xp2E;⋯ ;xpNE]+EposTransformer Block:zl′=MSA(LN(zl−1))+zl−1zl=MLP(LN(zl′))+zl′Classification:y=Head(LN(zL0)) \begin{aligned} &\text{Patch Embedding:} && z_0 = [x_{\text{class}}; x_p^1 E; x_p^2 E; \cdots; x_p^N E] + E_{\text{pos}} \\ &\text{Transformer Block:} && z_l' = \text{MSA}(\text{LN}(z_{l-1})) + z_{l-1} \\ & && z_l = \text{MLP}(\text{LN}(z_l')) + z_l' \\ &\text{Classification:} && y = \text{Head}(\text{LN}(z_L^0)) \end{aligned} Patch Embedding:Transformer Block:Classification:z0=[xclass;xp1E;xp2E;⋯;xpNE]+Eposzl′=MSA(LN(zl−1))+zl−1zl=MLP(LN(zl′))+zl′y=Head(LN(zL0))
3.2 层次化设计:融合 CNN 与 Transformer 优势
| 模型 | 核心设计 | 优势 | 典型应用 |
|---|---|---|---|
| Swin Transformer (2021) | 移位窗口 + 层次化特征金字塔 | 线性复杂度,多尺度特征 | 检测、分割 |
| PVT (2021) | 金字塔结构 + 空间缩减注意力 | 渐进式下采样 | 密集预测 |
| Twins-SVT (2021) | 空间可分离注意力 | 全局-局部信息交互 | 分类、检测 |
| ConvNeXt (2022) | 现代化纯 CNN 设计 | 挑战 Transformer 性能 | 各类视觉任务 |
Swin Transformer 的关键创新:
- 窗口自注意力:在 M×MM \times MM×M 局部窗口内计算,复杂度从 O(N2)O(N^2)O(N2) 降至 O(N)O(N)O(N)
- 移位窗口(Shifted Window):窗口划分偏移 M/2M/2M/2,实现跨窗口连接
- 层次化特征:每阶段 patches 合并,生成多尺度特征金字塔
四、下游任务的迁移策略
4.1 图像分类
策略一:线性探测(Linear Probing)
- 冻结预训练骨干,仅训练分类头
- 测试预训练特征的判别性
策略二:部分微调(Partial Fine-tuning)
- 微调最后几层,冻结浅层
- 平衡效率与性能
策略三:全量微调(Full Fine-tuning)
- 以较小学习率(如 10−510^{-5}10−5)更新全部参数
- 数据充足时的最佳选择
# PyTorch 伪代码:分层学习率微调
model = torchvision.models.resnet50(pretrained=True)
# 分层设置优化器参数
param_groups = [
{'params': model.layer1.parameters(), 'lr': 1e-5},
{'params': model.layer2.parameters(), 'lr': 1e-4},
{'params': model.layer3.parameters(), 'lr': 1e-4},
{'params': model.layer4.parameters(), 'lr': 1e-3},
{'params': model.fc.parameters(), 'lr': 1e-2}, # 新头,较大学习率
]
optimizer = torch.optim.Adam(param_groups)
4.2 目标检测与实例分割
两阶段方法(Faster R-CNN 系列):
- 预训练骨干 → RPN 提取候选框 → RoI 分类与回归
- 常用预训练:ImageNet 监督、MoCo、Detectron2 提供的 COCO 预训练
单阶段方法(YOLO、RetinaNet):
- 端到端训练,预训练加速收敛
- YOLOv8 支持多种预训练权重切换
Transformer-based(DETR、Deformable DETR):
- 编码器用预训练 ViT/Swin 初始化
- 解码器随机初始化,端到端训练
4.3 语义分割与全景分割
| 方法 | 预训练策略 | 代表模型 |
|---|---|---|
| FCN/DeepLab | ImageNet 骨干 + ASPP | DeepLabV3+ |
| U-Net 系列 | 医学领域特定预训练 | nnU-Net |
| Mask2Former | 预训练 Transformer 骨干 | Swin + Mask2Former |
| SAM | 1100万图像 + 10亿掩码 | 提示分割基础模型 |
4.4 特殊领域适配
医学影像:
- 挑战:数据隐私、标注稀缺、域差异大
- 策略:ImageNet 预训练 → 领域自监督预训练(SimCLR、MAE)→ 任务微调
- 代表:TransUNet、Swin-UNETR、MedSAM
遥感图像:
- 挑战:多尺度、多光谱、大场景
- 策略:地理空间预训练(RingMo、SkySense)、时序建模
- 应用:土地利用分类、变化检测、目标检测
工业检测:
- 挑战:缺陷样本极少、正常样本海量
- 策略:自监督预训练正常样本 + 异常检测/少样本学习
- 代表:PatchCore、CutPaste、SimpleNet
五、最新趋势:基础模型与生成式预训练
5.1 视觉基础模型(Visual Foundation Models)
SAM(Segment Anything Model,2023):
- 数据规模:1100万图像,10亿高质量掩码
- 架构:ViT 图像编码器 + 提示编码器 + 轻量掩码解码器
- 能力:零样本分割、交互式提示(点、框、文本、掩码)
DINOv2(2023):
- 自监督预训练强视觉特征
- 无需微调即可在分类、分割、深度估计等任务上表现优异
- 支持多种尺寸(ViT-S/B/L/g),开源可商用
EVA/EVA-02(2022-2023):
- 以 CLIP 视觉特征为重建目标,统一表示学习
- 在多个基准上刷新记录
5.2 生成式预训练
潜在扩散模型(Latent Diffusion Models):
| 模型 | 能力 | 应用场景 |
|---|---|---|
| Stable Diffusion | 文本到图像生成 | 艺术创作、设计辅助 |
| ControlNet | 条件控制生成 | 姿态、边缘、深度引导 |
| InstructPix2Pix | 指令式图像编辑 | 自然语言修图 |
| SDXL/Turbo | 高分辨率、实时生成 | 生产环境部署 |
多模态大模型:
- GPT-4V/GPT-4o:端到端视觉-语言理解与生成功能
- Gemini:原生多模态架构,跨模态推理
- Qwen-VL/LLaVA:开源视觉指令微调模型
5.3 高效微调技术(Parameter-Efficient Fine-Tuning)
| 技术 | 核心思想 | 可训练参数量 | 适用场景 |
|---|---|---|---|
| LoRA (2021) | 低秩适配:W=W0+BAW = W_0 + BAW=W0+BA | <1% | 大模型快速适配 |
| Adapter (2019) | 插入小型瓶颈网络 | ~5% | 多任务持续学习 |
| Prompt Tuning (2021) | 学习软提示嵌入 | ~0.1% | 大语言模型 |
| VPT (2022) | 视觉提示微调 | ~0.1% | ViT 迁移学习 |
| SSF (2022) | 缩放与移位因子 | ~0.3% | 统一高效微调 |
LoRA 的数学形式:
h=W0x+ΔWx=W0x+BAx h = W_0 x + \Delta W x = W_0 x + BAx h=W0x+ΔWx=W0x+BAx
其中 B∈Rd×rB \in \mathbb{R}^{d \times r}B∈Rd×r,A∈Rr×kA \in \mathbb{R}^{r \times k}A∈Rr×k,秩 r≪min(d,k)r \ll \min(d, k)r≪min(d,k),可训练参数量大幅减少。
六、实践建议:如何选择预训练模型?
6.1 决策流程图
开始
│
├── 数据规模 < 1K?
│ └── 是 → 选择大模型 + 高效微调(LoRA/Adapter)
│ └── 否 → 继续
│
├── 数据规模 1K-10K?
│ └── 是 → 中等模型 + 部分微调(最后几层)
│ └── 否 → 继续
│
├── 数据规模 > 10K?
│ └── 是 → 大模型全量微调或从头训练
│
├── 任务类型?
│ ├── 分类 → ImageNet 预训练权重
│ ├── 检测/分割 → COCO 预训练或检测专用预训练
│ ├── 生成 → Stable Diffusion 或自研扩散模型
│ └── 多模态 → CLIP/BLIP/GPT-4V API
│
└── 领域差异?
├── 通用视觉 → 标准 ImageNet/CLIP 预训练
├── 医学 → Medical MAE/SAM/MedSAM
├── 遥感 → RingMo/SkySense/领域 MAE
└── 工业 → 自监督预训练 + 异常检测
6.2 推荐资源与工具
模型库与框架:
- timm (PyTorch Image Models):600+ 预训练模型,统一接口
- Hugging Face Transformers:多模态模型中心
- OpenMMLab (MMPreTrain, MMDetection, MMSegmentation):完整视觉工具链
- Detectron2:Facebook 检测/分割研究平台
数据集资源:
- ImageNet-1K/21K:经典分类基准
- LAION-5B/400M:大规模图文对,CLIP 训练数据
- SA-1B:SAM 的 10 亿掩码数据集
- 领域数据集:CheXpert(医学)、DOTA(遥感)、MVTec AD(工业)
开发工具:
- PyTorch Lightning:简化训练流程
- Weights & Biases:实验追踪与可视化
- Hugging Face Accelerate:分布式训练简化
6.3 性能对比参考
| 预训练方法 | ImageNet-1K 微调 | COCO 检测 AP | 下游样本效率 |
|---|---|---|---|
| 随机初始化 | 1.0× 基线 | 基线 | 100% 数据 |
| ImageNet 监督 | 1.5-2.0× | +10-15 AP | 50% 数据 |
| SimCLR/MoCo | 1.8-2.2× | +12-18 AP | 30% 数据 |
| MAE/BEiT | 2.0-2.5× | +15-20 AP | 10% 数据 |
| CLIP 零样本 | 0.8-1.2× | - | 0% 数据(零样本) |
七、未来展望
7.1 技术趋势
- 统一架构:视觉-语言-动作多模态统一建模(如 GPT-4o、Gemini)
- 世界模型:从预测下一个 token 到预测下一帧视频
- 神经渲染:3D 场景理解与生成(NeRF、Gaussian Splatting)
- 持续学习:预训练模型的终身学习与知识更新
7.2 开放问题
- 如何评估预训练模型的通用视觉能力?
- 如何实现真正的小样本学习(1-shot 甚至 0-shot)?
- 如何平衡模型规模与推理效率?
- 如何建立可信的、可解释的视觉预训练模型?
一句话总结
图像预训练经历了 “监督学习(ImageNet 时代)→ 自监督学习(对比学习与掩码建模时代)→ 多模态统一(CLIP 与大模型时代)” 的三代演进,核心目标始终是:用更少标注、更低成本,获得更强的视觉理解、泛化与生成能力。未来,视觉预训练将与语言、音频、动作等多模态深度融合,迈向真正的通用人工智能。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)