Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - continental/EP-Diffuser: A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset. · GitHub
Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - continental/EP-Diffuser: A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset. · GitHub
Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - continental/EP-Diffuser: A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset. · GitHub
Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - continental/EP-Diffuser: A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset. · GitHub
Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - continental/EP-Diffuser: A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset. · GitHub
Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - continental/EP-Diffuser: A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset. · GitHub
Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

Repository files navigation

Everything Polynomial Diffuser

An efficient diffusion-based model for generating realistic traffic scene via polynomial representations.
This is the official repository of
EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial RepresentationsarXiv PDF


Model Pipeline

Examples on Argoverse 2 (In-Distribution)

Examples on Waymo (Out-of-Distribution)

Getting Started

1. Setup Environment

Step 1: Clone this repository:

git clone https://github.com/continental/EP-Diffuser.git
cd EP_Diffuser

Step 2: Create a new conda environment and install required packages:

conda create -n ep_diffuser python=3.10
conda activate ep_diffuser
pip install -r requirements.txt
pip install torch_cluster==1.6.3
pip install torch_scatter==2.1.2
pip install torchmetrics==1.6.0

Step 3: Download the Argoverse 2 Motion Forecasting Dataset following the Argoverse 2 User Guide. The dataset should be organized as follows:

/data/argo2/
├── train/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/
└── val/
| ├── raw/
| | ├── aaaa-aaaa-aaaa/
| | ├── aaaa-aaaa-aaab/
| | ├── aaaa-aaaa-aaac/

Step 4: Download Waymo Open Motion Dataset (we use the scenario protocol). Same as Argoverse 2, organize the Waymo dataset as follows:

/data/waymo/
├── train/
| ├── raw/
| | ├── training.tfrecord-00000-of-01000/
| | ├── training.tfrecord-00001-of-01000/
| | ├── training.tfrecord-00002-of-01000/
└── val/
| ├── raw/
| | ├── validation.tfrecord-00000-of-00150/
| | ├── validation.tfrecord-00001-of-00150/
| | ├── validation.tfrecord-00002-of-00150/

2. Preprocessing

To start preprocessing for Argoverse 2, run:

python preprocess.py --root data/argo2/ --dataset argoverse2

To start preprocessing for Waymo, run:

python preprocess.py --root data/waymo/ --dataset waymo

Note
This preprocessing step will take considerable time.
It involves tracking trajectories of individual agents and fitting the map geometry.
The process will be slower initially but will accelerate as more maps are processed and cached.
Consider only preprocess the 'val' set of Waymo (e.g. only download the 'val' set)

After completion, two new folders will be created alongside the existing raw/ folder:

  • processed/: Contains preprocessed data, including polynomial representations of trajectories and map geometry.
  • sim_agent/: Contains transformed data required for computing Sim Agent metrics.

3. Training

To start training on Argoverse 2, run:

python train_ep_diffuser.py

Note
Training on Argoverse 2 takes ~2 days on a single A10G.

4. Evaluation

Evluation on 500 most challenging subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_A2_scenario_ids.pkl 

Evluation on 20% random subsamples of Argoverse 2:

python eval_sim_agent_argo2.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_A2_scenario_ids.pkl 

Evluation on 500 challenging subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/500C_WO_scenario_ids.pkl 

Evluation on 20% random subsamples of Waymo:

python eval_sim_agent_waymo.py --ckpt_path checkpoints/EP_Diffuser/checkpoints/epoch\=63-step\=399872.ckpt --val_subsample_path pickle_files/R20P_WO_scenario_ids.pkl 

Note
Calculating "Sim Agents" metrics is computationally expensive. For a more efficient alternative, consider using the CAT-K implementation. (We do not include it in our repository due to licensing restrictions).
For visualization, please refer to the implementation provided in the waymo-open-dataset.

5. Results and checkpoints

EP-Diffuser weights: weights.

In-Distribution Quantitative Results (6s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/A20.8090.6320.8080.9130.398
500CA2/A20.7130.5070.7070.8380.546

Out-of-Distribution Quantitative Results (4.1s Prediction Horizon)

Sub-samplesTrain/TestRealisim MetaKinematicInteractionMapminADE
R20PA2/WO0.7880.4910.8340.9000.348
500CA2/WO0.7420.4560.7820.8540.372

Note
Results may slightly vary from the reported values due to the inherent randomness in generation process.

Citation

If you find this repo useful, please consider giving us a star 🌟 and citing our related paper.

@article{yao2025ep,
title={EP-Diffuser: An Efficient Diffusion Model for Traffic Scene Generation and Prediction via Polynomial Representations},
author={Yue Yao and Mohamed-Khalil Bouzidi and Daniel Goehring and Joerg Reichardt},
year={2025},
journal={https://arxiv.org/abs/2504.05422}
}

Acknowledgements

This repo benefits from QCNet, Forecast-MAE, OptTrajDiff. Thanks for their great works.

About

A novel diffusion-based approach for traffic scene prediction and generation on the Argoverse 2 dataset.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors