3D Mixup Augmentation

SkillMonitoring & ops

Applies Mixup augmentation to 3D volumetric images and their segmentation masks, interpolating both inputs and loss targets.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 3D Mixup Augmentation skill

What this skill tells your AI

The instructions your AI receives, as published by wenmin-wu/ds-skills in skills/cv/3d-mixup-augmentation/SKILL.md and read by ahel’s review.

Overview

Mixup creates virtual training samples by linearly interpolating pairs of inputs and their labels. For 3D medical imaging (CT, MRI), this regularizes the model by blending volumetric scans and their segmentation masks. The loss is computed against both original and shuffled targets, weighted by the interpolation factor lambda. Reduces overfitting on small 3D datasets where traditional augmentations (flip, rotate) are limited.

Quick Start

import torch
import numpy as np

def mixup_3d(images, masks, alpha=1.0):
    """Mixup for 3D volumes and segmentation masks.

    Args:
        images: (B, C, D, H, W) volumetric input
        masks: (B, C, D, H, W) segmentation targets
        alpha: Beta distribution parameter (1.0 = uniform)
    """
    lam = np.random.beta(alpha, alpha)
    indices = torch.randperm(images.size(0))
    mixed_images = lam * images + (1 - lam) * images[indices]
    return mixed_images, masks, masks[indices], lam

# In training loop:
if np.random.random() < 0.5:  # 50% probability
    images, masks_a, masks_b, lam = mixup_3d(images, masks)
    logits = model(images)
    loss = lam * criterion(logits, masks_a) + (1 - lam) * criterion(logits, masks_b)
else:
    logits = model(images)
    loss = criterion(logits, masks)

Workflow

  1. Sample lambda from Beta(alpha, alpha) distribution
  2. Shuffle batch to get pairing indices
  3. Blend images: lam * img_A + (1-lam) * img_B
  4. Compute loss against both original and shuffled targets, weighted by lambda

Key Decisions

  • alpha: 1.0 gives uniform lambda; lower values (0.2-0.4) keep lambda closer to 0 or 1
  • Probability: Apply mixup stochastically (30-50% of batches) to preserve some clean samples
  • Segmentation vs classification: For segmentation, blend masks too; for classification, blend labels
  • CutMix alternative: Replace a random 3D patch instead of blending the whole volume

References

Signals

GitHub stars
61
Forks
4
Last commit
Apr 2026
Advanced
Catalog kind
skill
Gateway key
cv-3d-mixup-augmentation
Source
github.com/wenmin-wu/ds-skills