Randomly remixing stems from different songs during training forces the model to learn true source priors
Training a source separation model on real multi-track recordings is limited by dataset size (MUSDB has 150 songs). A powerful augmentation is Remix: during each training batch, the stems from different songs are shuffled and combined into new artificial mixes. The model must then predict the original unshuffled stems. Because the new mix was never in the real world, the model cannot memorise spectral fingerprints of specific recordings — it must learn generalizable representations. Demucs implements this in augment.py’s Remix class, which shuffles sources within batch groups to maintain consistent statistics across GPU counts. Additional augmentations: random amplitude scaling, stereo channel flipping, polarity inversion, and random time shifts.
Examples
From demucs/augment.py, the Remix module:
class Remix(nn.Module):
"""Shuffle sources to make new mixes."""
Applied on-the-fly during each training step.
Assessment
Why is Remix augmentation particularly valuable for a dataset of only 150 songs? What source-pair combinations would be musically implausible but still beneficial for training?