FreD
收藏Frequency Domain-based Dataset Distillation (FreD)
概述
FreD是一种新颖的数据集蒸馏参数化方法,利用频率域从大型原始数据集中蒸馏出小型合成数据集。与传统关注空间域的方法不同,FreD采用基于频率的变换来优化每个数据实例的频率表示。通过利用空间域信息在特定频率成分上的集中,FreD智能地选择频率维度的子集进行优化,从而显著减少合成实例所需的预算。基于解释方差的选择频率维度,FreD在有限的预算内高效运行,同时更好地保留原始数据集的信息,与传统参数化方法相比。此外,基于FreD与现有方法的正交兼容性,我们确认FreD在不同基准数据集的评估场景中一致地提高了现有蒸馏方法的性能。
要求
该代码在CUDA 11.4和Python 3.8环境下测试。
使用方法
FreD的主要超参数包括:
msz_per_channel:每个通道的内存大小lr_freq:合成频率表示的学习率mom_freq:合成频率表示的动量
详细的超参数值可在论文中找到。其他超参数遵循每个数据集蒸馏目标的默认设置。请参考bash文件以获取运行实验的详细参数。
示例命令
FreD与梯度匹配(DC)
bash cd DC/scripts sh run_DC_FreD.sh
FreD与分布匹配(DM)
bash cd DM/scripts sh run_DM_FreD.sh
FreD与轨迹匹配(TM)
bash cd TM/scripts sh run_buffer.sh sh run_TM_FreD.sh
FreD与其他数据集蒸馏目标
python
定义频率域参数化
synset = SynSet(args)
初始化
synset.init(images_all, labels_all, indices_class)
获取部分合成数据集
images_syn, labels_syn = synset.get(indices=indices)
获取整个数据集(need_copy可选)
images_syn, labels_syn = synset.get(need_copy=True)
ImageNet-[A,B,C,D,E]
bash cd ImageNet-abcde/scripts sh run_XXX_FreD.sh
3D-MNIST
bash cd 3D-MNIST/scripts sh run_DM_FreD.sh
损坏鲁棒性
bash cd corruption-exp/scripts sh run.sh
实验结果
低维度数据集(≤ 64×64分辨率)与TM的测试准确率(%)
| MNIST | FashionMNIST | SVHN | CIFAR-10 | CIFAR-100 | Tiny-ImageNet | |
|---|---|---|---|---|---|---|
| 1 img/cls | 95.8 | 84.6 | 82.2 | 60.6 | 34.6 | 19.2 |
| 10 img/cls | 97.6 | 89.1 | 89.5 | 70.3 | 42.7 | 24.2 |
| 50 img/cls | - | - | 90.3 | 75.8 | 47.8 | 26.4 |
Image-[Nette, Woof, Fruit, Yellow, Meow, Squawk](128 × 128分辨率)与TM的测试准确率(%)
| ImageNette | ImageWoof | ImageFruit | ImageYellow | ImageMeow | ImageSquawk | |
|---|---|---|---|---|---|---|
| 1 img/cls | 66.8 | 38.3 | 43.7 | 63.2 | 43.2 | 57.0 |
| 10 img/cls | 72.0 | 41.3 | 47.0 | 69.2 | 48.6 | 67.3 |
ImageNet-[A, B, C, D, E](128 × 128分辨率)与TM在1 img/cls下的测试准确率(%)
| ImageNet-A | ImageNet-B | ImageNet-C | ImageNet-D | ImageNet-E | |
|---|---|---|---|---|---|
| DC w/ FreD | 53.1 | 54.8 | 54.2 | 42.8 | 41.0 |
| DM w/ FreD | 58.0 | 58.6 | 55.6 | 46.3 | 45.0 |
| TM w/ FreD | 67.7 | 69.3 | 63.6 | 54.4 | 55.4 |
更多结果可在论文中找到。



