DomainLab: A modular Python package for domain generalization in deep
  learning
Xudong Sun Carla Feistner Alexej Gossmann George Schwarz Rao Muhammad Umer Lisa Beer Patrick Rockenschaub Rahul Babu Shrestha Armin Gruber Nutan Chen Sayedali Shetab Boushehri Florian Buettner Carsten Marr
Poor generalization performance caused by distribution shifts in unseen
domains often hinders the trustworthy deployment of deep neural networks. Many
domain generalization techniques address this problem by adding a domain
invariant regularization loss terms during training. However, there is a lack
of modular software that allows users to combine the advantages of different
methods with minimal effort for reproducibility. DomainLab is a modular Python
package for training user specified neural networks with composable
regularization loss terms. Its decoupled design allows the separation of neural
networks from regularization loss construction. Hierarchical combinations of
neural networks, different domain generalization methods, and associated
hyperparameters, can all be specified together with other experimental setup in
a single configuration file. Hierarchical combinations of neural networks,
different domain generalization methods, and associated hyperparameters, can
all be specified together with other experimental setup in a single
configuration file. In addition, DomainLab offers powerful benchmarking
functionality to evaluate the generalization performance of neural networks in
out-of-distribution data. The package supports running the specified benchmark
on an HPC cluster or on a standalone machine. The package is well tested with
over 95 percent coverage and well documented. From the user perspective, it is
closed to modification but open to extension. The package is under the MIT
license, and its source code, tutorial and documentation can be found at
https://github.com/marrlab/DomainLab.