Replace fixed full-capacity slot initialization with progressive curriculum-based slot expansion to reduce over-fragmentation in video object-centric learning. Improves FG-ARI by +6.8 on YouTube-VIS and +8.3 on MOVi-C. Use when training slot attention models on videos with variable object counts and sizes.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add ADu2021/skillXiv --skill slotcurri-video-object-centric-learning --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Slotcurri Video Object Centric Learning?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adu2021-slotcurri-video-object-centric-learning)More formats (shields.io, HTML) on the badges page.
---
name: slotcurri-video-object-centric-learning
title: "SlotCurri: Reconstruction-Guided Slot Curriculum for Video Object-Centric Learning"
version: 0.0.3
engine: skillxiv-v0.0.3-claude-opus-4.6
license: MIT
url: "https://arxiv.org/abs/2603.22758"
keywords: [Slot Attention, Curriculum Learning, Video Object-Centric Learning, Over-Fragmentation, Progressive Allocation]
description: "Replace fixed full-capacity slot initialization with progressive curriculum-based slot expansion to reduce over-fragmentation in video object-centric learning. Improves FG-ARI by +6.8 on YouTube-VIS and +8.3 on MOVi-C. Use when training slot attention models on videos with variable object counts and sizes."
category: "Component Innovation"
---
## What This Skill Does
Replace the standard practice of allocating all slot attention slots upfront with a progressive curriculum that starts with minimal slots and expands them reconstruction-guided. This eliminates over-fragmentation where single objects split across multiple slots, improving object discovery by +6.8 to +8.3 FG-ARI on real-world video datasets.
## The Component Swap
The old SlotContrast baseline initializes all K slots at training start, forcing the model to use all slots regardless of whether the scene contains K objects:
```python
# Old approach: allocate all slots upfront
K = 10 # Fixed capacity
slots = nn.Parameter(torch.randn(1, K, slot_dim))
# Model pressured to fragment objects across slots to minimize loss
```
The new SlotCurri approach starts with minimal slots and progressively expands them through curriculum stages. Slots are spawned reconstruction-guided from high-error regions:
```python
# New: progressive slot curriculum
K_init = 2 # Start small
K_max = 10 # Final capacity
num_stages = 3
# Stage-dependent slot count: K^(m) = K_init + m*sigma + 3m(m-1)/2
def slot_count_schedule(stage_m, sigma=1):
return K_init + stage_m * sigma + 3 * stage_m * (stage_m - 1) // 2
# Slot spawning: duplicate from high-reconstruction-error parents
reconstruction_error = ||video_recon - video_real||_2 # Per-slot error
high_error_slots = torch.argsort(reconstruction_error)[:top_k]
new_slots = slots[high_error_slots] + noise_perturbation(scale=0.1)
slots = torch.cat([slots, new_slots], dim=1) # Expand capacity
```
Augment the reconstruction loss with structure-aware SSIM to better capture object boundaries:
```python
# Old loss: pixel-level MSE only
loss_old = F.mse_loss(video_recon, video_real)
# New loss: MSE + structure-aware SSIM
loss_mse = F.mse_loss(video_recon, video_real)
loss_ssim = 1.0 - ssim(video_recon, video_real, window_size=11)
loss_new = loss_mse + 0.3 * loss_ssim # Weight SSIM component
```
## Performance Impact
**Object discovery (FG-ARI metric):**
- YouTube-VIS: 38.0 → 44.8 ± 1.2 = **+6.8 percentage points** (18% relative)
- MOVi-C: 69.3 → 77.6 ± 0.9 = **+8.3 pp** (12% relative)
**Boundary quality (mBO metric):**
- YouTube-VIS: 33.7 → 35.5 ± 2.2 = +1.8 pp (modest improvement)
**Trade-off on synthetic datasets:**
- MOVi-E (densely packed objects): +0.8 pp only (curriculum less beneficial for dense object scenarios)
## When to Use
- Video object-centric learning with real-world datasets (variable object counts/sizes)
- Slot attention models showing over-fragmentation (objects split across multiple slots)
- Datasets where objects have varying spatial extents and depths
- Tasks where discovery quality (FG-ARI) is more important than boundary precision
## When NOT to Use
- Dense object scenes with fixed, regular layouts (MOVi-E shows minimal gains)
- Datasets with fixed object counts where fragmentation isn't a problem
- Scenarios where fixed slot allocation is theoretically justified
- Tasks requiring strict per-slot semantics rather than object-level semantics
## Implementation Checklist
To adopt this component swap:
1. **Implement curriculum schedule:**
```python
# Define stage-dependent slot counts
stage = current_epoch // (total_epochs / num_curriculum_stages)
K_current = K_init + stage * sigma + 3 * stage * (stage - 1) // 2
```
2. **Add slot spawning logic:**
```python
# Every curriculum stage, spawn new slots from high-error parents
if should_expand_slots(stage):
reconstruction_errors = compute_per_slot_error(video_recon, video_real)
parent_slots = select_high_error_slots(reconstruction_errors, num_new=sigma)
noise = torch.randn_like(parent_slots) * noise_scale
new_slots = parent_slots + noise
slots = torch.cat([slots, new_slots], dim=0)
```
3. **Replace reconstruction loss:**
```python
# Add structure-aware SSIM to capture boundaries
loss_ssim = structural_similarity_loss(video_recon, video_real)
loss_reconstruction = F.mse_loss(...) + 0.3 * loss_ssim
```
4. **Adjust slot attention mechanism for variable K:**
```python
# Slot attention must handle variable slot count across stages
# Typically achieved by padding/masking unused slots
slots_active = slots[:, :K_current, :] # Only use current stage capacity
```
5. **Verify improvements:**
- Measure FG-ARI on YouTube-VIS validation set
- Compare before (K=10) vs after (curriculum K=2→10) on same split
- Check that per-object consistency improves (fewer splits per ground-truth object)
6. **Hyperparameter tuning:**
- `K_init`: starting slot count (default: 2, range 1-4)
- `sigma`: slots added per stage (default: 1, range 1-3)
- `num_curriculum_stages`: number of expansion stages (default: 3, range 2-5)
- `ssim_weight`: importance of structure loss (default: 0.3, range 0.1-0.5)
- `noise_scale`: perturbation magnitude when spawning (default: 0.1, range 0.05-0.2)
7. **Known issues:**
- Curriculum schedule must align with training epochs; hardcoding stage transitions can cause instability
- Slot spawning initialization is sensitive to noise scale; too high → divergence, too low → redundancy
- MOVi-E and dense scenes show minimal gains; curriculum may not help when over-fragmentation isn't the bottleneck
## Related Work
This builds on slot attention methods and curriculum learning. Progressive allocation relates to dynamic architecture approaches, but applies the curriculum principle specifically to object discovery in video.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!