PyCIL: 全面、可扩展、高效的类别增量学习工具包
D-W Zhou, F-Y Wang, H-J Ye, D-C Zhan. PyCIL: A Python Toolbox for Class-Incremental Learning. Sci China Inf Sci, doi: 10.1007/s11432-022-3600-y
当前PyCIL中已复现了十余种类别增量学习算法,简要介绍如下:
Finetune: 直接在新的数据上对模型参数进行微调的基线算法,将遭受严重的灾难性遗忘。
Replay: 通过保留少量旧类别数据作为范例集,在新数据更新过程中共同用于训练,实现对旧知识的复习。
EWC (PNAS 2017): 利用费雪信息矩阵来衡量参数的重要性,以其作为权重对参数偏移进行正则化约束。
LwF (ECCV 2016): 将旧类模型的输出作为软标签,利用知识蒸馏限制模型更新。
iCaRL (CVPR 2017): 在LwF的基础上,同时利用范例集对旧类样本进行复习,并使用最近类别中心分类器代替线性分类器。
GEM (NIPS 2017): 利用模型关于范例集的梯度对当前微调梯度进行修正,约束梯度更新方向。
BiC (CVPR 2019): 为模型额外学习偏差矫正层,实现新旧任务在输出维度上的校准。
WA (CVPR 2020): 在iCaRL的基础上将分类器幅度进行归一化,消除模型更新过程中的偏差。
PodNet (ECCV 2020): 对模型卷积层输出进行空间域 (spatial) 蒸馏以限制模型更新。
DER (CVPR 2021): 动态拓展模型结构,提高模型容量以适配新的增量学习任务。
RMM (NeurIPS 2021): 利用强化学习算法决策在不同增量阶段新、旧类样本的存储空间划分。
Coil (ACM MM 2021): 在增量学习过程中利用最优传输理论建立双向的知识传递,同时考虑旧类别对新类别的辅助与新类别对旧类别的约束。
FOSTER (ECCV 2022): 基于梯度提升算法,动态拓展和压缩模型结构,自适应地学习新的增量学习任务。
由此可见,PyCIL工具包具备以下特点:
1) 算法全面:截至目前,PyCIL中已实现了13种增量学习方法,包括两种基线算法,以及11种改进算法。这些算法均被发表在顶级国际会议/期刊上,可为后来的研究者们提供重要的研究基础。
2) 方便、高度自定义化的数据流:PyCIL 目前已支持多种类别增量学习领域的基准数据集,包括CIFAR100,ImageNet100,ImageNet1000上不同基础类别、不同增量阶段数目的数据流生成。方便研究者们在不同基准下测试比较不同方法的性能。
3) 运行高效:PyCIL支持GPU加速与分布式训练,提高算法运行效率,可供快速验证思路。
4) 长期维护:PyCIL 将对增量学习算法的研究进展将进行长期的跟踪与维护,积极、迅速地回复海内外研究者的问题。PyCIL将一直追踪并更新类别增量学习领域发表在顶级会议、期刊上的最新、性能最好的算法。截至目前,已在开源社区收获超过170 Stars,日均访问量超过100次。
5)可拓展性高:PyCIL的代码框架简洁,可读,自由度高,研究者们可以高效地替换、设计新的网络结构以及算法模块进行验证。
为了验证所复现方法的正确性,提供性能保证,本文在被广泛使用的基准数据集CIFAR100, ImageNet100/1000上进行了大量实验。图4汇报了在不同的基准设定下,各个算法的准确率随类别数目的增加的变化曲线,表1汇报了在10阶段CIFAR100上各个算法的准确率数值变化。
图4 基准数据集上随类别数目增加的分类准确率结果