Shortcuts

分类

在 MMSelfSup 中,我们为分类任务提供了许多基线,因此模型可以在不同分类任务上进行评估。这里有详细的教程和例子来阐述如何使用 MMSelfSup 来运行所有的分类基线。我们在tools/benchmarks/classification/文件夹中提供了所有的脚本,包含 2 个.sh 文件,一个文件夹用于与 VOC SVM 相关的分类任务,另一个文件夹用于 ImageNet 最近邻分类任务。

VOC SVM / Low-shot SVM

为了运行这些基准,您首先应该准备好您的 VOC 数据集。请参考 prepare_data.md 来获取数据准备的详细信息。

为了评估这些预训练的模型, 您可以运行如下指令。

# distributed version
bash tools/benchmarks/classification/svm_voc07/dist_test_svm_pretrain.sh ${SELFSUP_CONFIG} ${GPUS} ${PRETRAIN} ${FEATURE_LIST}

# slurm version
bash tools/benchmarks/classification/svm_voc07/slurm_test_svm_pretrain.sh ${PARTITION} ${JOB_NAME} ${SELFSUP_CONFIG} ${PRETRAIN} ${FEATURE_LIST}

此外,如果您想评估由 runner 保存的ckpt文件,您可以运行如下指令。

# distributed version
bash tools/benchmarks/classification/svm_voc07/dist_test_svm_epoch.sh ${SELFSUP_CONFIG} ${EPOCH} ${FEATURE_LIST}

# slurm version
bash tools/benchmarks/classification/svm_voc07/slurm_test_svm_epoch.sh ${PARTITION} ${JOB_NAME} ${SELFSUP_CONFIG} ${EPOCH} ${FEATURE_LIST}

使用 ckpt 进行测试,代码使用 epoch_*.pth 文件,这里不需要提取权重。

备注:

  • ${SELFSUP_CONFIG} 是自监督实验的配置文件.

  • ${FEATURE_LIST} 是一个字符串,用于指定从 layer1 到 layer5 的要评估特征;例如,如果您只想评估 layer5,那么 FEATURE_LIST 是 “feat5”,如果您想要评估所有的特征,那么 FEATURE_LIST 是 “feat1 feat2 feat3 feat4 feat5” (用空格分隔)。如果为空,那么 FEATURE_LIST 默认是 “feat5”。

  • ${PRETRAIN}:预训练模型文件。

  • 如果您想改变 GPU 个数, 您可以在命令的前面加上 GPUS_PER_NODE=4 GPUS=4

  • ${EPOCH} 是您想要测试的 ckpt 的轮数

线性评估和微调

线性评估和微调是最常见的两个基准。我们为线性评估和微调提供了配置文件和脚本来进行训练和测试。支持的数据集有 ImageNetPlaces205iNaturalist18

首先,确保您已经安装 MIM,这也是 OpenMMLab 的一个项目.

pip install openmim

此外,请参考 MMClassification 的安装数据准备

然后运行如下命令。

# distributed version
bash tools/benchmarks/classification/mim_dist_train.sh ${CONFIG} ${PRETRAIN}

# slurm version
bash tools/benchmarks/classification/mim_slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG} ${PRETRAIN}

备注:

  • ${CONFIG}:使用configs/benchmarks/classification/下的配置文件。具体来说,imagenet (除了imagenet_*percent文件), places205 and inaturalist2018

  • ${PRETRAIN}:预训练模型文件。

例子:

bash ./tools/benchmarks/classification/mim_dist_train.sh \
configs/benchmarks/classification/imagenet/resnet50_linear-8xb32-coslr-100e_in1k.py \
work_dir/pretrained_model.pth

如果您想测试训练好的模型,请运行如下命令。

# distributed version
bash tools/benchmarks/classification/mim_dist_test.sh ${CONFIG} ${CHECKPOINT}

# slurm version
bash tools/benchmarks/classification//mim_slurm_test.sh ${PARTITION} ${CONFIG} ${CHECKPOINT}

备注:

  • ${CHECKPOINT}:您想测试的训练好的分类模型

例子:

bash ./tools/benchmarks/mmsegmentation/mim_dist_test.sh \
configs/benchmarks/classification/imagenet/resnet50_linear-8xb32-coslr-100e_in1k.py \
work_dir/model.pth

ImageNet 半监督分类

为了运行 ImageNet 半监督分类,我们将使用和线性评估和微调一样的.sh脚本进行训练。

备注:

  • 默认GPU数量是4.

  • ${CONFIG}:使用configs/benchmarks/classification/imagenet/下的配置文件,命名为imagenet_*percent的文件。

  • ${PRETRAIN}:预训练模型文件。

ImageNet 最近邻分类

仅支持 CNN 形式的主干网络 (例如 ResNet50)。

为评估用于 ImageNet 最近邻分类基准的预训练模型,您可以运行如下命令。

# distributed version
bash tools/benchmarks/classification/knn_imagenet/dist_test_knn.sh ${SELFSUP_CONFIG} ${PRETRAIN} [optional arguments]

# slurm version
bash tools/benchmarks/classification/knn_imagenet/slurm_test_knn.sh ${PARTITION} ${JOB_NAME} ${SELFSUP_CONFIG} ${CHECKPOINT} [optional arguments]

备注:

  • ${SELFSUP_CONFIG}:是自监督实验的配置文件。

  • ${CHECKPOINT}:检查点模型文件的路径。

  • 如果您想改变GPU的数量,您可以在命令的前面加上GPUS_PER_NODE=4 GPUS=4

  • [optional arguments]:用于可选参数,您可以参考这个脚本

命令的一个例子

# distributed version
bash tools/benchmarks/classification/knn_imagenet/dist_test_knn.sh \
    configs/selfsup/barlowtwins/barlowtwins_resnet50_8xb256-coslr-300e_in1k.py \
    https://download.openmmlab.com/mmselfsup/1.x/barlowtwins/barlowtwins_resnet50_8xb256-coslr-300e_in1k/barlowtwins_resnet50_8xb256-coslr-300e_in1k_20220825-57307488.pth
Read the Docs v: dev-1.x
Versions
latest
stable
1.x
dev-1.x
dev
Downloads
pdf
html
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.