Project Icon

Parameter-Efficient-Transfer-Learning-Benchmark

统一视觉参数高效迁移学习评测基准

V-PETL Bench是一个统一的视觉参数高效迁移学习评测基准。该项目选择30个多样化数据集,涵盖图像识别、视频动作识别和密集预测任务,评估25种主流PETL算法。提供模块化代码库和完整训练资源,为计算机视觉研究提供全面评测平台。

统一视觉参数高效迁移学习基准

GitHub stars GitHub forks GitHub contributors GitHub activity

· 论文 · 基准 · 主页 · 文档 ·

🔥 新闻与更新

  • ✅ [2024/07/25] 视觉PEFT基准开始发布数据集、代码等。

  • ✅ [2024/06/20] 视觉PEFT基准主页创建。

  • ✅ [2024/06/01] 视觉PEFT基准仓库创建。

📚 目录

简介

参数高效迁移学习(PETL)方法在将预训练模型适应到各种下游任务时表现出promising的效果,同时只需训练少量参数。在计算机视觉(CV)领域,已经提出了许多PETL算法,但直接使用或比较它们仍然不便。为解决这一挑战,我们通过从图像识别、视频动作识别和密集预测任务中选择30个多样化、具有挑战性和综合性的数据集构建了一个统一的视觉PETL基准(V-PETL Bench)。在这些数据集上,我们系统地评估了25种主流PETL算法,并开源了一个模块化和可扩展的代码库,用于对这些算法进行公平评估。

⚙️ 入门指南

👉 数据准备

1. 图像分类数据集

  • 细粒度视觉分类任务(FGVC)

    FGVC包含5个细粒度视觉分类数据集。可以按照官方链接下载这些数据集。如果没有公开的验证集,我们会对训练数据进行分割。分割后的数据集可以在这里找到:下载链接

  • 视觉任务适应基准(VTAB)

    VTAB包含19个多样化的视觉分类数据集。我们已经处理了所有数据集,可以在这里下载:下载链接。具体的处理程序和技巧,请参见VTAB_SETUP

2. 视频动作识别数据集

  • Kinetics-400

    1. 下载链接下载链接下载数据集。

    2. 通过将视频的短边调整为320像素来预处理数据集。你可以参考MMAction2 数据基准

    3. 为数据加载器生成所需的注释("<video_id> <video_class>"格式的注释)。注释通常包括train.csvval.csvtest.csv*.csv文件的格式如下:

      video_1.mp4  label_1
      video_2.mp4  label_2
      video_3.mp4  label_3
      ...
      video_N.mp4  label_N
      

  • Something-Something V2 (SSv2)

    1. 下载链接下载数据集。

    2. 通过将视频扩展名从webm更改为.mp4,并保持原始高度为240像素来预处理数据集。你可以参考MMAction2 数据基准

    3. 为数据加载器生成所需的注释("<video_id> <video_class>"格式的注释)。注释通常包括train.csvval.csvtest.csv*.csv文件的格式如下:

      video_1.mp4  label_1
      video_2.mp4  label_2
      video_3.mp4  label_3
      ...
      video_N.mp4  label_N
      

3. 密集预测数据集

  • MS-COCO

    MS-COCO可从此下载链接获取。

  • ADE20K

    ADE20K的训练集和验证集可从此下载链接下载。 我们也可以从下载链接下载测试集。

  • PASCAL VOC

    Pascal VOC 2012可从下载链接下载。 此外,大多数针对Pascal VOC数据集的最新工作通常会利用额外的增强数据,可以在下载链接找到。

👉 预训练模型准备

  • 下载并将ViT-B/16预训练模型放置在/path/to/pretrained_models中。
mkdir pretrained_models
wget https://storage.googleapis.com/vit_models/imagenet21k/ViT-B_16.npz
  • 或者你可以下载Swin-B预训练模型。注意,你还需要将下载的Swin-B检查点从swin_base_patch4_window7_224_22k.pth重命名为Swin-B_16.pth
mkdir pretrained_models

wget https://github.com/SwinTransformer/storage/releases/download/v1.0.0/swin_base_patch4_window7_224_22k.pth

mv swin_base_patch4_window7_224_22k.pth Swin_B_16.pth
  • 另一种方法是从下面的链接下载预训练模型,并将其放在/path/to/pretrained_models中。
预训练骨干网络预训练目标预训练数据集检查点
ViT-B/16有监督ImageNet-21K下载链接
ViT-L/16有监督ImageNet-21K下载链接
ViT-H/16有监督ImageNet-21K下载链接
Swin-B有监督ImageNet-22K下载链接
Swin-L有监督ImageNet-22K下载链接
ViT-B (VideoMAE)自监督Kinetics-400下载链接
Video Swin-B有监督Kinetics-400下载链接

💻 V-PETL Bench的结构(关键文件标有👉)

  • ImageClassification/configs:处理实验的配置参数。

    • 👉 ImageClassification/config/vtab/cifar100.yaml实验的主要配置设置和每个数据集的说明。

    • .....

  • ImageClassification/dataloader:加载和设置输入数据集。

    • ImageClassification/dataloader/transforms:图像变换。

    • ImageClassification/dataloader/loader:为给定数据集构建数据加载器。

  • ImageClassification/models:处理不同微调协议的骨干架构和头部。

    • 👉ImageClassification/models/vision_transformer_adapter.py包含与vit_backbones文件夹中相同的骨干网络的文件夹,专门用于Adapter。

    • 👉ImageClassification/models/vision_transformer_sct.py包含与vit_backbones文件夹中相同的骨干网络的文件夹,专门用于SCT。

    • .....

  • 👉ImageClassification/train包含训练文件文件夹的文件夹,

    • 👉ImageClassification/train/train_model_adapter.py:调用此文件以使用指定的传输类型训练和评估模型,专门用于Adapter。

    • 👉ImageClassification/train/train_model_sct.py:调用此文件以使用指定的传输类型训练和评估模型,专门用于SCT。

    • .....

  • ImageClassification/scripts包含脚本文件文件夹的文件夹,

    • ImageClassification/scripts/run_vit_adapter.sh:你可以一次性在所有数据集上运行Adapter方法。

    • ImageClassification/scripts/run_vit_sct.sh:你可以一次性在所有数据集上运行SCT方法。

    • .....

  • ImageClassification/Visualize:可视化工具。

    • ImageClassification/Visualize/AttentionMap.py:注意力图可视化。

    • ImageClassification/Visualize/TSNE.py:T-SNE可视化。

  • ImageClassification/utils:创建日志记录器、设置种子等。

  ❗️注意❗️:如果你想创建自己的PETL算法,请注意`ImageClassification/models`。

🐌 快速开始

这是如何在本地设置V-PETL Bench的示例。

要获取本地副本并运行,请按照以下简单步骤操作。

👉 安装V-PETL Bench

git clone https://github.com/synbol/Parameter-Efficient-Transfer-Learning-Benchmark.git

👉 环境设置

V-PETL Bench基于pytorch构建,使用torchvision、torchaudio和timm等。

  • 要安装所需的包,你可以创建一个conda环境。
conda create --name v-petl-bench python=3.8
  • 激活conda环境。
conda activate v-petl-bench
  • 使用pip安装所需的包。
cd Parameter-Efficient-Transfer-Learning-Benchmark

pip install -r requirements.txt

👉 训练

  • 你可以在一个数据集上测试PETL算法的性能。
python python train/train_model_sct.py --dataset cifar100 --task vtab --lr 0.012 --wd 0.6 --eval True --dpr 0.1 --tuning_mode $tuning_mode --model_type $model_type --model $model --model_checkpoint $model_checkpoint
  • 或者你可以在所有数据集上测试PETL算法的性能
bash scripts/run_model_sct.sh

👉 评估

  • 你可以评估你训练的模型的性能。

  • 你也可以测试我们提供的预训练检查点。下载链接请参见"结果和检查点"。

🎯 结果和检查点

FGVC图像分类的基准结果

  • 我们在五个数据集上评估了13种PETL算法,使用在ImageNet-21K上预训练的ViT-B/16模型。

  • 要获取检查点,请在下载链接下载。 | 方法 | CUB-200-2011 | NABirds | 牛津花卉 | 斯坦福狗 | 斯坦福汽车 | 平均值 | 参数量 | PPT | |-----------------------|--------------|---------|----------------|---------------|---------------|------|---------------|-----| | 全量微调 | 87.3 | 82.7 | 98.8 | 89.4 | 84.5 | 88.54 | 85.8M | - | | 线性探测 | 85.3 | 75.9 | 97.9 | 86.2 | 51.3 | 79.32 | 0 M | 0.79| | 适配器 | 87.1 | 84.3 | 98.5 | 89.8 | 68.6 | 85.66 | 0.41M | 0.84| | AdaptFormer | 88.4 | 84.7 | 99.2 | 88.2 | 81.9 | 88.48 | 0.46M | 0.87| | 前缀微调 | 87.5 | 82.0 | 98.0 | 74.2 | 90.2 | 86.38 | 0.36M | 0.85| | U-Tuning | 89.2 | 85.4 | 99.2 | 84.1 | 92.1 | 90.00 | 0.36M | 0.89| | BitFit | 87.7 | 85.2 | 99.2 | 86.5 | 81.5 | 88.02 | 0.10M | 0.88| | VPT-浅层 | 86.7 | 78.8 | 98.4 | 90.7 | 68.7 | 84.66 | 0.25M | 0.84| | VPT-深层 | 88.5 | 84.2 | 99.0 | 90.2 | 83.6 | 89.10 | 0.85M | 0.86| | SSF | 89.5 | 85.7 | 99.6 | 89.6 | 89.2 | 90.72 | 0.39M | 0.89| | LoRA | 85.6 | 79.8 | 98.9 | 87.6 | 72.0 | 84.78 | 0.77M | 0.82| | GPS | 89.9 | 86.7 | 99.7 | 92.2 | 90.4 | 91.78 | 0.66M | 0.90| | HST | 89.2 | 85.8 | 99.6 | 89.5 | 88.2 | 90.46 | 0.78M | 0.88| | LAST | 88.5 | 84.4 | 99.7 | 86.0 | 88.9 | 89.50 | 0.66M | 0.87| | SNF | 90.2 | 87.4 | 99.7 | 89.5 | 86.9 | 90.74 | 0.25M | 0.90|

VTAB图像分类基准测试结果

  • VTAB基准测试结果。我们在19个数据集上评估了18种PETL算法,使用在ImageNet-21K上预训练的ViT-B/16模型。
  • 请在下载链接处下载检查点。
方法CIFAR-100Caltech101DTDFlowers102PetsSVHNSun397Patch CamelyonEuroSATResisc45RetinopathyClevr/countClevr/distanceDMLabKITTI/distancedSprites/locdSprites/oriSmallNORB/aziSmallNORB/ele平均参数量PPT
全量微调68.987.764.397.286.987.438.879.795.784.273.956.358.641.765.557.546.725.729.165.5785.8M-
线性探测63.485.063.297.086.336.651.078.587.568.674.034.330.633.255.412.520.09.619.252.940M0.53
适配器69.290.168.098.889.982.854.384.094.981.975.580.965.348.678.374.848.529.941.671.440.16M0.71
VPT-浅层77.786.962.697.587.374.551.278.292.075.672.950.558.640.567.168.736.120.234.164.850.08M0.65
VPT-深层78.890.865.898.088.378.149.681.896.183.468.468.560.046.572.873.647.932.937.869.430.56M0.68
BitFit72.887.059.297.585.359.951.478.791.672.969.861.555.632.455.966.640.015.725.162.050.10M0.61
LoRA67.191.469.498.890.485.354.084.995.384.473.682.969.249.878.575.747.131.044.072.250.29M0.71
AdaptFormer70.891.270.599.190.986.654.883.095.884.476.381.964.349.380.376.345.731.741.172.320.16M0.72
SSF69.092.675.199.491.890.252.987.495.987.475.575.962.353.380.677.354.929.537.973.100.21M0.72
NOAH69.692.770.299.190.486.153.784.495.483.975.882.868.949.981.781.848.332.844.273.250.43M0.72
SCT75.391.672.299.291.191.255.085.096.186.376.281.565.151.780.275.446.233.245.773.590.11M0.73
FacT70.690.670.899.190.788.654.184.896.284.575.782.668.249.880.780.847.433.243.073.230.07M0.73
RepAdapter72.491.671.099.291.490.755.185.395.984.675.982.368.050.479.980.449.238.641.073.840.22M0.72
Hydra72.791.372.099.291.490.755.585.896.086.175.983.268.250.982.380.350.834.543.174.210.28M0.73
LST59.591.569.099.289.979.554.686.995.985.374.181.861.852.281.071.749.533.745.271.702.38M0.65
DTL69.694.871.399.391.383.356.287.196.286.175.082.864.248.881.993.953.934.247.174.580.04M0.75
HST76.794.174.899.691.191.252.387.196.388.676.585.463.752.981.787.256.835.852.175.990.78M0.74
GPS81.194.275.899.491.791.652.487.996.286.576.579.962.655.082.484.055.429.746.175.180.22M0.74
LAST66.793.476.199.689.886.154.386.296.386.875.481.965.949.482.687.946.732.351.574.150.66M0.72
SNF84.094.072.799.391.390.354.987.297.385.574.582.363.849.882.575.849.231.442.174.100.25M0.73

SSv2和HMDB51视频动作识别基准测试结果

  • 在SSv2和HMDB51上的基准测试结果。我们使用来自VideoMAE和Video Swin Transformer的ViT-B评估了5种PETL算法。

  • 要获取检查点,请在下载链接处下载。

方法模型预训练参数量SSv2 (Top1)SSv2 (PPT)HMDB51 (Top1)HMDB51 (PPT)
全量微调ViT-BKinetics 40085.97 M53.97%-46.41%-
冻结ViT-BKinetics 4000 M29.23%0.2949.84%0.50
AdaptFormerViT-BKinetics 4001.19 M59.02%0.5655.69%0.53
BAPATViT-BKinetics 4002.06 M57.78%0.5357.18%0.53
全量微调Video Swin-BKinetics 40087.64 M50.99%-68.07%-
冻结Video Swin-BKinetics 4000 M24.13%0.2471.28%0.71
LoRAVideo Swin-BKinetics 4000.75 M38.34%0.3762.12%0.60
BitFitVideo Swin-BKinetics 4001.09 M45.94%0.4468.26%0.65
AdaptFormerVideo Swin-BKinetics 4001.56 M40.80%0.3868.66%0.64
Prefix-tuningVideo Swin-BKinetics 4006.37 M39.46%0.3256.13%0.45
BAPATVideo Swin-BKinetics 4006.18 M53.36%0.4371.93%0.58

COCO数据集上的密集预测基准测试结果

  • COCO数据集上的基准测试结果。我们使用在ImageNet-22K上预训练的Swin-B模型评估了9种PETL算法。

  • 要获取检查点,请在即将推出处下载。

Swin-B参数量内存COCO ($\mathrm{AP_{Box}}$)COCO (PPT)COCO ($\mathrm{AP_{Mask}}$)COCO (PPT)
全量微调86.75 M17061 MB51.9%-45.0%-
冻结0.00 M7137 MB43.5%0.4438.6%0.39
Bitfit0.20 M13657 MB47.9%0.4741.9%0.42
LN TUNE0.06 M12831 MB48.0%0.4841.4%0.41
Partial-112.60 M7301 MB49.2%0.3542.8%0.30
Adapter3.11 M12557 MB50.9%0.4543.8%0.39
LoRA3.03 M11975 MB51.2%0.4644.3%0.40
AdaptFormer3.11 M13186 MB51.4%0.4644.5%0.40
LoRand1.20 M13598 MB51.0%0.4943.9%0.42
E$^3$VA1.20 M7639 MB50.5%0.4843.8%0.42
Mona4.16 M13996 MB53.4%0.4646.0%0.40

PASCAL VOC和ADE20K数据集上的密集预测基准测试结果

  • PASCAL VOC和ADE20K数据集上的基准测试结果。我们使用在ImageNet-22K上预训练的Swin-L模型评估了9种PETL算法。

  • 要获取检查点,请在即将推出处下载。

Swin-L参数量内存 (VOC)Pascal VOC ($\mathrm{AP_{Box}}$)Pascal VOC (PPT)ADE20K ($\mathrm{mIoU}$)ADE20K (PPT)
全量微调198.58 M15679 MB83.5%-52.10%-
冻结0.00 M3967 MB83.6%0.8446.84%0.47
Bitfit0.30 M10861 MB85.7%0.8548.37%0.48
LN TUNE0.09 M10123 MB85.8%0.8647.98%0.48
Partial-128.34 M3943 MB85.4%0.4847.44%0.27
Adapter4.66 M10793 MB87.1%0.7450.78%0.43
LoRA4.57 M10127 MB87.5%0.7450.34%0.43
AdaptFormer4.66 M11036 MB87.3%0.7450.83%0.43
LoRand1.31 M11572 MB86.8%0.8250.76%0.48
E$^3$VA1.79 M4819 MB86.5%0.8149.64%0.46
Mona5.08 M11958 MB87.3%0.7351.36%0.43

💬 社区和联系方式

📝 引用

  • 如果您发现我们的调查和仓库对您的研究有用,请按以下方式引用:
@article{辛2024基准,
  title={V-PETL基准:统一的视觉参数高效迁移学习基准},
  author={辛毅, 罗思琪, 刘旭阳, 周浩迪, 程新宇, 李露露, 杜俊龙, 杜云涛, 王浩哲, 陈明才, 刘挺, 胡桂敏, 万中伟, 张荣超, 李傲雪, 易明阳, 刘晓红},
  year={2024}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号