✅ [2024/07/25] 视觉PEFT基准开始发布数据集、代码等。
✅ [2024/06/20] 视觉PEFT基准主页创建。
✅ [2024/06/01] 视觉PEFT基准仓库创建。
参数高效迁移学习(PETL)方法在将预训练模型适应到各种下游任务时表现出promising的效果,同时只需训练少量参数。在计算机视觉(CV)领域,已经提出了许多PETL算法,但直接使用或比较它们仍然不便。为解决这一挑战,我们通过从图像识别、视频动作识别和密集预测任务中选择30个多样化、具有挑战性和综合性的数据集构建了一个统一的视觉PETL基准(V-PETL Bench)。在这些数据集上,我们系统地评估了25种主流PETL算法,并开源了一个模块化和可扩展的代码库,用于对这些算法进行公平评估。
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/ca5e6545-06a9-4a83-aaa1-14385685d544.png" width="100%" height="100%"> </div>细粒度视觉分类任务(FGVC)
FGVC包含5个细粒度视觉分类数据集。可以按照官方链接下载这些数据集。如果没有公开的验证集,我们会对训练数据进行分割。分割后的数据集可以在这里找到:下载链接。
视觉任务适应基准(VTAB)
VTAB包含19个多样化的视觉分类数据集。我们已经处理了所有数据集,可以在这里下载:下载链接。具体的处理程序和技巧,请参见VTAB_SETUP。
Kinetics-400
通过将视频的短边调整为320像素来预处理数据集。你可以参考MMAction2 数据基准。
为数据加载器生成所需的注释("<video_id> <video_class>"格式的注释)。注释通常包括train.csv
、val.csv
和test.csv
。*.csv
文件的格式如下:
video_1.mp4 label_1
video_2.mp4 label_2
video_3.mp4 label_3
...
video_N.mp4 label_N
<br>
Something-Something V2 (SSv2)
从下载链接下载数据集。
通过将视频扩展名从webm
更改为.mp4
,并保持原始高度 为240像素来预处理数据集。你可以参考MMAction2 数据基准。
为数据加载器生成所需的注释("<video_id> <video_class>"格式的注释)。注释通常包括train.csv
、val.csv
和test.csv
。*.csv
文件的格式如下:
video_1.mp4 label_1
video_2.mp4 label_2
video_3.mp4 label_3
...
video_N.mp4 label_N
MS-COCO
MS-COCO可从此下载链接获取。
ADE20K
PASCAL VOC
Pascal VOC 2012可从下载链接下载。 此外,大多数针对Pascal VOC数据集的最新工作通常会利用额外的增强数据,可以在下载链接找到。
/path/to/pretrained_models
中。mkdir pretrained_models wget https://storage.googleapis.com/vit_models/imagenet21k/ViT-B_16.npz
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
中。ImageClassification/configs
:处理实验的配置参数。
👉 ImageClassification/config/vtab/cifar100.yaml
:<u>实验的主要配置设置和每个数据集的说明。</u>
.....
ImageClassification/dataloader
:加载和设置输入数据集。
ImageClassification/dataloader/transforms
:图像变换。
ImageClassification/dataloader/loader
:为给定数据集构建数据加载器。
ImageClassification/models
:处理不同微调协议的骨干架构和头部。
👉ImageClassification/models/vision_transformer_adapter.py
:<u>包含与vit_backbones
文件夹中相同的骨干网络的文件夹,</u>专门用于Adapter。
👉ImageClassification/models/vision_transformer_sct.py
:<u>包含与vit_backbones
文件夹中相同的骨干网络的文件夹,</u>专门用于SCT。
.....
👉ImageClassification/train
:<u>包含训练文件
文件夹的文件夹,</u>
👉ImageClassification/train/train_model_adapter.py
:调用此文件以使用指定的传输类型训练和评估模型,专门用于Adapter。
👉ImageClassification/train/train_model_sct.py
:调用此文件以使用指定的传输类型训练和评估模型,专门用于SCT。
.....
ImageClassification/scripts
:<u>包含脚本文件
文件夹的文件夹,</u>
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的示例。
要获取本地副本并运行,请按照以下简单步骤操作。
git clone https://github.com/synbol/Parameter-Efficient-Transfer-Learning-Benchmark.git
V-PETL Bench基于pytorch构建,使用torchvision、torchaudio和timm等。
conda create --name v-petl-bench python=3.8
conda activate v-petl-bench
cd Parameter-Efficient-Transfer-Learning-Benchmark pip install -r requirements.txt
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
bash scripts/run_model_sct.sh