๐ŸŒ Multimodal Domain Generalization Benchmark

May 8, 2026 ยท View on GitHub

Are We Making Progress in Multimodal Domain Generalization? A Comprehensive Benchmark Study

Hao Dong1 โ€ƒ Hongzhao Li2 โ€ƒ Shupan Li2 โ€ƒ Muhammad Haris Khan3 โ€ƒ Eleni Chatzi1 โ€ƒ Olga Fink4
1ETH Zurich, 2Zhengzhou University, 3MBZUAI, 4EPFL

โ€ข arXiv 2026 โ€ข


๐ŸŒ Multimodal Domain Generalization Benchmark

MMDG-Bench is the first comprehensive and standardized benchmark for Multimodal Domain Generalization (MMDG).

Unlike prior work that focuses on limited datasets or settings, MMDG-Bench unifies evaluation across multiple tasks, modalities, and real-world challenges, including corruption robustness, missing modalities, and model trustworthiness.

๐Ÿ” Key insight: Under fair and standardized evaluation, most recent MMDG methods fail to significantly outperform strong baselines (e.g., ERM), suggesting that progress in MMDG may be overestimated.

๐ŸŒŸ What makes MMDG-Bench unique?

  • ๐Ÿ“Š First unified MMDG benchmark across:

    • 6 datasets, 3 task families
    • 6 modality combinations
    • 9 methods + upper bound
  • โš–๏ธ Standardized evaluation protocol

    • Same data splits, hyperparameter search, model selection
    • Enables fair and reproducible comparison
  • ๐Ÿงช Beyond accuracy: realistic evaluation

    • Corruption robustness
    • Missing-modality generalization
    • Misclassification detection
    • OOD detection
  • ๐Ÿ“‰ Key Findings

    • No single method consistently dominates across datasets or modality combinations
    • Trimodal fusion does not consistently outperform bimodal setups
    • A large gap to upper-bound performance remains
    • Current methods are highly vulnerable to corruptions and missing modalities

This repository contains training code for multimodal domain generalization experiments across three tasks:

  • Action recognition on EPIC-Kitchens and HAC with video, audio, and optical flow.
  • Fault diagnosis on the HUST motor dataset with vibration and acoustic signals.
  • Sentiment analysis on CMU-MOSI, CMU-MOSEI, and CH-SIMS with text, audio, and video.

The implemented methods are ERM, RNA-Net, SimMMDG, MOOSA, CMRF, NEL, JAT, MBCD, and GMP. Each task folder also provides a run_all_cross_domain.sh script that runs a selected method over the benchmark cross-domain settings.

Citation

If you find our work useful in your research please consider citing our paper:

@article{dong2026mmdgbench,
	author   = {Dong, Hao and Li, Hongzhao and Li, Shupan and Khan, Muhammad Haris and Chatzi, Eleni and Fink, Olga},
	title    = {Are We Making Progress in Multimodal Domain Generalization? A Comprehensive Benchmark Study},
	journal  = {arXiv preprint arXiv:2605.06643},
	year     = {2026},
}

๐Ÿ—‚๏ธ Repository Layout

PathPurpose
Action recognition/Action-recognition training scripts, dataloaders, MMAction2 code, VGGSound audio backbone, pretrained-model directory, and the action runner.
HUSTmotor/HUST motor fault-diagnosis training scripts, 1D signal dataloader, preprocessing utility, models, and the HUST runner.
MMSA/Multimodal sentiment-analysis training scripts, dataloader, fusion models, and the MMSA runner.
README.mdPublic project guide.

๐Ÿงช Environment

The code was developed with the following environment:

Python                 3.10.19
torch                  2.0.1+cu118
torchvision            0.15.2+cu118
mmaction2              0.13.0
mmcv-full              1.2.7
numpy                  1.23.5
pandas                 1.4.2
scipy                  1.10.1
soundfile              0.11.0

๐Ÿ“ฆ Data Preparation

๐ŸŽฌ Action Recognition

Download pretrained models and place them under Action recognition/pretrained_models/:

ModalityFile
AudioDownload H.pth.tar from http://www.robots.ox.ac.uk/~vgg/data/vggsound/models/H.pth.tar, rename it to vggsound_avgpool.pth.tar.
RGB videoslowfast_r101_8x8x1_256e_kinetics400_rgb_20210218-0dd54025.pth from OpenMMLab.
Optical flowslowonly_r50_8x8x1_256e_kinetics400_flow_20200704-6b384243.pth from OpenMMLab.

Download the action-recognition datasets here:

DatasetDownload
EPIC-KitchensHugging Face
HACHugging Face
EPIC-Kitchens expected layout (click to preview) ๐ŸŽž๏ธ
DATA_ROOT/
  MM-SADA_Domain_Adaptation_Splits/
    D1_train.pkl
    D1_test.pkl
    D2_train.pkl
    D2_test.pkl
    D3_train.pkl
    D3_test.pkl
    video/train/D1/
    video/test/D1/
    flow/train/D1/
    flow/test/D1/
    audio/train/D1/*.wav
    audio/test/D1/*.wav
    ...
HAC expected layout (click to preview) ๐Ÿถ
DATA_ROOT/
  HAC_Splits/
    HAC_train_only_human.csv
    HAC_test_only_human.csv
    human/videos/
    human/flow/
    human/audio/
    animal/videos/
    animal/flow/
    animal/audio/
    cartoon/videos/
    cartoon/flow/
    cartoon/audio/

โš™๏ธ HUST Motor

Download the HUST motor dataset from:

https://drive.google.com/drive/folders/1XmahwIQ4o66FC3dpOaeTV-gqz2dd0XBw

The released HUST files are raw TXT signals, so you need to preprocess them into .mat files before training. Training scripts read:

Place the raw TXT files under HUSTmotor/data/, then run:

cd HUSTmotor
python utils/HUST_preprocess.py

This script writes Motor_Vib.mat and Motor_Aud.mat directly into HUSTmotor/data/.

๐Ÿ’ฌ MMSA

Download CMU-MOSI, CMU-MOSEI, and CH-SIMS data from:

https://drive.google.com/file/d/1tQSw1S16ujHQ069W3QTi3BJ49Q8Gya8N/view

The default dataloader looks for:

data/mosi.pkl
data/mosei.pkl
data/sims.pkl

You can also pass a dataset directory or a concrete .pkl file path through --datapath.

๐Ÿš† Training Scripts

All commands below should be run from the corresponding task folder. Extra hyperparameters can be appended to any runner after --.

๐ŸŽฌ Action Recognition

Folder:

cd "Action recognition"

Single training script format:

python train_ERM.py \
  --dataset epic \
  --num_class 8 \
  -s D2 D3 \
  -t D1 \
  --use_video --use_audio \
  --datapath /path/to/DATA_ROOT

For EPIC, --datapath can point to either DATA_ROOT/ or DATA_ROOT/MM-SADA_Domain_Adaptation_Splits/.

Available method scripts:

train_ERM.py
train_RNA.py
train_SimMMDG.py
train_MOOSA.py
train_CMRF.py
train_NEL.py
train_JAT.py
train_MBCD.py
train_GMP.py

Dataset and class-count options:

DatasetDomains--num_class
epicD1, D2, D38
hachuman, animal, cartoon7

Supported modality combinations:

NameFlags
va--use_video --use_audio
vf--use_video --use_flow
af--use_audio --use_flow
vaf--use_video --use_audio --use_flow

Batch runner:

./run_all_cross_domain.sh --method MBCD --dataset epic --setting all --modality all --datapath /path/to/DATA_ROOT

Runner options:

--method ERM|RNA|SimMMDG|MOOSA|CMRF|NEL|JAT|MBCD|GMP
--dataset epic|hac|all
--setting multi|single|all
--modality va|vf|af|vaf|all
--datapath /path/to/DATA_ROOT
--dry-run

Examples:

./run_all_cross_domain.sh -m ERM -d epic -s multi -M va --dry-run
./run_all_cross_domain.sh -m JAT -d hac -s multi -M vaf -- --nepochs 10 --seed 1
./run_all_cross_domain.sh -m GMP -d all -s all -M all

The action runner enumerates:

DatasetSettingSource -> target domains
EPIC multi-sourcemultiD2,D3 -> D1; D1,D3 -> D2; D1,D2 -> D3
EPIC single-sourcesingleD1 -> D2; D1 -> D3; D2 -> D1; D2 -> D3; D3 -> D1; D3 -> D2
HAC multi-sourcemultianimal,cartoon -> human; human,cartoon -> animal; human,animal -> cartoon
HAC single-sourcesingleall six directed pairs among human, animal, and cartoon

Outputs are written to:

Action recognition/outputs/logs/{EPIC,HAC}/{METHOD}/{single_source_dg,multi_source_dg}/
Action recognition/outputs/models/{EPIC,HAC}/{METHOD}/{single_source_dg,multi_source_dg}/

โš™๏ธ HUST Motor

Folder:

cd HUSTmotor

Single training script format:

python train_HUST_EMR.py -s D2 D3 D4 -t D1

Available method scripts:

train_HUST_EMR.py
train_HUST_RNA.py
train_HUST_SimMMDG.py
train_HUST_MOOSA.py
train_HUST_CMRF.py
train_HUST_NEL.py
train_HUST_JAT.py
train_HUST_MBCD.py
train_HUST_GMP.py

Batch runner:

./run_all_cross_domain.sh --method GMP --setting all

Runner options:

--method ERM|RNA|SimMMDG|MOOSA|CMRF|NEL|JAT|MBCD|GMP
--setting multi|single|all
--dry-run

Examples:

./run_all_cross_domain.sh -m ERM -s multi --dry-run
./run_all_cross_domain.sh -m MOOSA -s all -- --iteration 2000 --seed 1

The HUST runner enumerates:

SettingSource -> target domains
Multi-sourceD2,D3,D4 -> D1; D1,D3,D4 -> D2; D1,D2,D4 -> D3; D1,D2,D3 -> D4
Single-sourceall 12 directed pairs among D1, D2, D3, and D4

Outputs are written to:

HUSTmotor/outputs/logs/{METHOD}/{single_source_dg,multi_source_dg}/
HUSTmotor/outputs/models/{METHOD}/{single_source_dg,multi_source_dg}/

๐Ÿ’ฌ MMSA

Folder:

cd MMSA

Single training script format:

python train_MMSA_ERM.py \
  --source_datasets mosi mosei \
  --target_dataset sims \
  --datapath /path/to/mmsa_data

Available method scripts:

train_MMSA_ERM.py
train_MMSA_RNA.py
train_MMSA_SimMMDG.py
train_MMSA_MOOSA.py
train_MMSA_CMRF.py
train_MMSA_NEL.py
train_MMSA_JAT.py
train_MMSA_MBCD.py
train_MMSA_GMP.py

Batch runner:

./run_all_cross_domain.sh --method CMRF --setting all --datapath /path/to/mmsa_data

Runner options:

--method ERM|RNA|SimMMDG|MOOSA|CMRF|NEL|JAT|MBCD|GMP
--setting multi|single|all
--datapath /path/to/mmsa_data
--dry-run

Examples:

./run_all_cross_domain.sh -m ERM -s multi --dry-run
./run_all_cross_domain.sh -m MBCD -s all --datapath ../data -- --num_epochs 5 --seed 1

The MMSA runner enumerates the reported benchmark settings:

SettingSource -> target datasets
Multi-sourcemosi,mosei -> sims; mosi,sims -> mosei
Single-sourcemosei -> sims; mosi -> sims; mosi -> mosei; sims -> mosi; sims -> mosei

Outputs are written to:

MMSA/outputs/logs/{METHOD}/{single_source_dg,multi_source_dg}/
  • Survey: Advances in Multimodal Adaptation and Generalization: From Traditional Approaches to Foundation Models
  • SimMMDG: A Simple and Effective Framework for Multi-modal Domain Generalization
  • MOOSA: Towards Multimodal Open-Set Domain Generalization and Adaptation through Self-supervision
  • JAT: Towards Robust Multimodal Domain Generalization via Modality-Domain Joint Adversarial Training
  • CMRF: Cross-modal Representation Flattening for Multi-modal Domain Generalization
  • MBCD: Modality-Balanced Collaborative Distillation for Multi-Modal Domain Generalization

Contact

For questions, please contact:

donghaospurs@gmail.com
lihongzhao@gs.zzu.edu.cn