Press "Enter" to skip to content

更简单、更易用的迁移学习领域泛化代码库DeepDG开源啦!

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本期我们将为大家介绍 一个领域泛化的深度学习库 。 领域泛化(Domain Generalization, DG) 是近几年非常热门的一个研究方向。(详情请看 第一篇领域泛化综述文章 )它研究的问题是从若干个具有不同数据分布的数据集(领域)中学习一个泛化能力强的模型,以便在 未知 (Unseen) 的测试集上取得较好的效果。尽管已经有很多学者对DG展开研究,也有一批公开库进入公众视野。但是,依然缺少一个DG领域入门研究者容易学习、容易拓展、公平比较的库。因此,我们重新构建整理和实现了一批领域自适应的代码,采用同样的基础代码和网络结构,用统一的评测脚本进行评估。

代码地址: https:// github.com/jindongwang/ transferlearning/tree/master/code/DeepDG

 

同时,我们在之前也开源了更简单更好用的 领域自适应(Domain adaptation) 代码: 王晋东不在家:伴随着《迁移学习导论》上市,新的迁移学习代码库也全面开源啦!

 

本文及代码主要作者:卢旺 中科院计算所博士生

 

背景介绍

 

DG作为一个近年来相对热门的领域,受到了越来越多学者的关注。FaceBook团队,在ICLR 2020中发表文章In Search of Lost Domain Generalization [1],对已有的一些DG以及DA领域工作进行总结,并公开的他们的开源库 DomainBed 。作为DG领域较早的一个开源库,DomainBed被很多学者所使用。虽然,DomainBed考虑相对较为全面,然而在实际使用中却依然存在以下问题:

需要大量的计算资源 :需对超参数甚至网络结构进行搜索,跑一个任务需要几天时间
对入门研究者不友好 :包含大量核心算法外的代码
不易拓展 :代码模式相对固定,使用者需尽量按照对应的模式修改update等部分,并用sweep进行参数搜索
其它问题 :Mixup随机不充分、DANN实现繁琐且结果不稳定…

考虑到以上的这些问题,为了方便DG领域入门研究者更快地进入研究,我们大幅度简化了DomainBed的库,构建了一个基于PyTorch的 容易学习、容易拓展、方便公平比较 的开源库: DeepDG 。

 

如何使用

 

首先需要下载我们的库,并进入相关目录,安装torch库:

 

git clone https://github.com/jindongwang/transferlearning.git
cd code/DeepDG
pip install -r requirements.txt

 

然后根据自己的需求,修改script下的run.sh文件,输入

 

bash scripts/run.sh

 

就可以运行。

 

当然你也可以使用自己的算法或者自己的数据集进行拓展。

 

DeepDG 目前支持 七种 主流算法:ERM、DCC、CORAL、DANN、MLDG、、RSC。如果需要拓展自己的算法,只需:

 

 

    1. 在alg模块加入自己的算法

 

    1. 在train文件以及util中增加算法的相关注释

 

    1. 修改scripts中的运行脚本

 

 

这三个简单步骤,就可以很快与这7种方法同台比较。

 

DeepDG 目前支持 六个 常用的数据集:office31、office-home、office-caltech、PACS、dg5、VLCS。这六个数据集在我们的库中都提供了下载链接。若想使用自己的数据集进行实验,按照以下方式组织好文件结构,在util中加入库注释即可快速使用。

 

RootDir
└───Domain1Name
│   └───Class1Name
│       │   file1.jpg
│       │   file2.jpg
│       │   ...
│   ...
└───Domain2Name
|   ...

 

实验结果

 

我们在PACS以及office-home这两个常用的数据集上对这7种算法进行了比较。因为计算资源缘故,我们使用Resnet18作为特征提取模块,并且没有仔细地进行调参。你可以很容易地复现我们的结果。

总结

 

欢迎有志之士将自己的算法、新的算法实现上来,一起将迁移学习变得更美好!

 

Reference

 

[1] Gulrajani, Ishaan, and David Lopez-Paz. “In Search of Lost Domain Generalization.” International Conference on Learning Representations. 2020.

 

[2] Jindong Wang, Wang Lu. DeepDG: Deep Domain Generalization Toolkit. https:// github.com/jindongwang/ transferlearning/tree/master/code/DeepDG

 

[3] Jindong Wang et al. Generalizing to Unseen Domains: A Survey on Domain Generalization. IJCAI 2021.

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注