Equivarianza a rotaciones como prior físico en difusión de video
Pesos y videos generados del trabajo final de Visión Artificial Avanzada (UdeSA), de Alexander Bodner y Mateo Costantini.
Se hace fine-tuning con LoRA de SANA-Video 2B imponiendo una simetría en vez de una ley de conservación: si se rota la escena, la cinemática de lo generado tiene que rotar igual. La cinemática se estima con RAFT sobre los propios videos generados, dentro del paso de entrenamiento, y todo se retropropaga hasta los pesos. No hace falta ground truth físico.
Qué hay acá
| carpeta | contenido |
|---|---|
checkpoints/con_fisica/ |
8 checkpoints LoRA del brazo entrenado con la pérdida de equivarianza sobre velocidades (pasos 125 a 1000) |
checkpoints/control/ |
los 8 checkpoints del control: idéntico en semilla, datos y arquitectura, con λ_rot = 0 |
videos/ |
~2400 videos generados a lo largo de todos los experimentos, ordenados por experimento y por paso de entrenamiento |
Los dos brazos comparten semilla, datos y GPU, y difieren sólo en la pérdida, así que cualquier par de checkpoints del mismo paso es una comparación apareada.
Resultado, en dos frases
La restricción sí se aprende: medido fuera del bucle de entrenamiento, sobre clips que el modelo nunca vio, las velocidades de las dos ramas pasan de estar a 63° de diferencia en el control a 51° en el brazo entrenado, y la ventaja es consistente en los 8 checkpoints. Pero no se traduce en mejor física: el error de velocidad contra el ground truth del simulador no mejora, y fuera de distribución el modelo degenera.
Dos advertencias para quien use estos números: el efecto de equivarianza ya está entero en el primer checkpoint (paso 125) y no crece con más entrenamiento; y aun en el mejor caso el desacuerdo entre ramas sigue siendo del ~92% de la magnitud del movimiento, o sea que el modelo está lejos de ser equivariante.
Cómo usar los pesos
from diffusers import SanaVideoPipeline # Efficient-Large-Model/SANA-Video_2B_480p_diffusers
from huggingface_hub import hf_hub_download
ruta = hf_hub_download("AlexBodner/tpf-equivarianza-video",
"checkpoints/con_fisica/checkpoint-1000/pytorch_lora_weights.safetensors")
# LoRA rango 32, alfa 64, sobre to_q / to_k / to_v / to_out.0
Config completa de entrenamiento: LoRA rango 32 y alfa 64, lr 1e-4, batch 1, bf16, 1000 pasos, semilla 42, 500 clips sintéticos de 33 cuadros a 384×384, λ_rot = 4,7e-03 calibrado por sondas de razón de gradiente, rotación de 45°, 12 pasos de Euler dentro del entrenamiento.
Videos
videos/LEEME.md explica la estructura y videos/indice.csv tiene una fila por archivo. La
ruta es <experimento>/paso_XXXX/<tipo>/<brazo>/<escenario>/<clip>.mp4.
Más
Los videos comentados, con la historia de los experimentos y todas las tablas, están en github.com/AlexBodner/tpf-equivarianza-videos.