微软BEiT v2模型解析:基于向量量化视觉分词器的掩码图像建模技术
概述
微软研究院推出的BEiT v2(BERT Pre-Training of Image Transformers version 2)是计算机视觉领域的一项重要突破,它延续了第一代BEiT的成功,并在多个方面进行了创新和改进。BEiT v2的核心思想是将自然语言处理中的掩码语言建模(Masked Language Modeling, MLM)思想迁移到计算机视觉领域,提出了掩码图像建模(Masked Image Modeling, MIM)的预训练范式。
技术原理
1. 向量量化视觉分词器(VQ-ViT)
BEiT v2最大的创新在于引入了向量量化的视觉分词器(Vector-Quantized Visual Tokenizer),这一组件将图像分割成视觉"词汇"(visual tokens),类似于NLP中将文本分割成单词token的过程。这种分词器通过以下步骤工作:
- 将输入图像分割成固定大小的patch
- 使用编码器-解码器结构的网络提取特征
- 通过向量量化将连续特征离散化为视觉token
2. 掩码图像建模流程
BEiT v2的预训练过程包含两个阶段:
- 视觉分词器训练:首先训练一个强大的视觉分词器,能够将图像区域准确表示为离散token
- 主干网络预训练:随机掩码部分图像patch,让模型基于可见patch预测被掩码patch对应的视觉token
模型架构
BEiT v2提供了两种规模的模型:
-
BEiT-base模型:
- 12层Transformer
- 隐藏层维度768
- 前馈网络扩展因子4x
- 12个注意力头
- 16x16的图像patch大小
- 总参数量86M
-
BEiT-large模型:
- 24层Transformer
- 隐藏层维度1024
- 前馈网络扩展因子4x
- 16个注意力头
- 16x16的图像patch大小
- 总参数量304M
预训练模型
微软提供了在ImageNet-1k上预训练的BEiT v2模型权重,包括:
-
仅在ImageNet-1k上自监督预训练的模型:
- BEiT-base
- BEiT-large
-
在ImageNet-1k上预训练后在ImageNet-21k上微调的模型(推荐使用):
- BEiT-base
- BEiT-large
性能表现
图像分类(ImageNet-1k)
模型 | 初始检查点 | 分辨率 | Top-1准确率 | Top-5准确率 |
---|---|---|---|---|
BEiTv2-base | ImageNet-1k预训练 | 224x224 | 85.5% | 97.5% |
BEiTv2-base | ImageNet-21k微调 | 224x224 | 86.5% | 98.0% |
BEiTv2-large | ImageNet-1k预训练 | 224x224 | 87.3% | 98.2% |
BEiTv2-large | ImageNet-21k微调 | 224x224 | 88.4% | 98.6% |
语义分割(ADE20K)
模型 | 初始检查点 | 方法 | 裁剪尺寸 | mIoU |
---|---|---|---|---|
BEiTv2-base | ImageNet-1k预训练 | UPerNet | 512x512 | 53.1 |
BEiTv2-base | ImageNet-21k微调 | UPerNet | 512x512 | 53.5 |
BEiTv2-large | ImageNet-1k预训练 | UPerNet | 512x512 | 56.7 |
BEiTv2-large | ImageNet-21k微调 | UPerNet | 512x512 | 57.5 |
环境配置
要使用BEiT v2,需要配置以下环境:
-
基础环境:
- PyTorch 1.7.1
- torchvision 0.8.2
- timm 0.4.12
-
混合精度训练(可选):
- 需要安装NVIDIA的apex库
使用指南
1. 图像分类微调
详细指南可参考项目中的图像分类文档,主要步骤包括:
- 下载预训练权重
- 准备ImageNet数据集
- 运行微调脚本
- 评估模型性能
2. 语义分割微调
对于ADE20K数据集的语义分割任务:
- 下载预训练权重
- 准备ADE20K数据集
- 使用UPerNet方法进行微调
- 评估分割性能
3. 自注意力可视化
BEiT v2提供了可视化自注意力图的工具,可以观察模型对不同图像区域的关注程度:
python visualize_attention.py \
--model beit_base_patch16_224_8k_vocab \
--input_size 480 \
--pretrained_weights /path/to/weights.pth \
--image_path input_image.png \
--selected_row 11 \
--selected_col 13
技术优势
- 高效预训练:BEiT v2通过掩码图像建模实现了高效的自监督学习,减少了对标注数据的依赖
- 多任务适应性:预训练后的模型可以轻松迁移到分类、分割等多种视觉任务
- 性能优越:在多项基准测试中达到了state-of-the-art的水平
- 可解释性:通过可视化自注意力图,可以直观理解模型的决策过程
应用场景
BEiT v2可应用于广泛的计算机视觉任务,包括但不限于:
- 图像分类
- 语义分割
- 目标检测
- 图像生成
- 视觉-语言多模态任务
总结
BEiT v2代表了视觉Transformer模型的最新进展,通过创新的向量量化视觉分词器和掩码图像建模方法,在多个视觉任务上取得了优异的性能。其自监督预训练范式大大降低了对标注数据的依赖,为计算机视觉研究提供了新的思路和工具。