SAM 3 + LoRA por clase para imágenes aéreas
Entrena un LoRA de SAM 3 por clase para segmentar tiles aéreos RGB. Es un fork del SAM3_LoRA de Sompote (KMUTT).
SAM3, LoRA, PyTorch, Fine tuning, Segmentación

Créditos
Ilustración generada con IA: no muestra datos ni una salida del modelo.
El detalle
SAM3_LoRA es un fork del repo de Sompote (AI Research Group, KMUTT), y de ahí vienen la inyección de LoRA en SAM 3 y el bucle de entrenamiento. Lo que agrega esta versión es un método de un LoRA por clase.
Le das un COCO con polígonos, que puede traer varias clases, eliges una, por ejemplo construcciones o árboles de aguacate, y sale un adaptador liviano que se carga sobre el modelo base congelado.
Pide tiles RGB de 8 bits y no verifica la profundidad, así que un recorte de 16 bits o con bandas extra lo conviertes tú antes de entrenar. Acepta .tif, pero ignora sus coordenadas: la máscara sale en PNG por tile y la georreferenciación la haces tú después en tu SIG.
Para entrenar, la guía pide una GPU NVIDIA de 16 GB o más con Linux y acceso aprobado a facebook/sam3 en Hugging Face. Trae seis manuales en español y una prueba de humo con tiles sintéticos.
Del método por clase todavía no hay resultados publicados sobre imágenes reales: el ejemplo y las métricas del README vienen del repo original.
Características
- Un LoRA por clase:
- el modelo base queda congelado y solo se entrenan los adaptadores
- Entra un COCO con polígonos sobre tiles RGB y sale una máscara PNG por tile, a la resolución original, que georreferencias después en tu SIG
- Cada clase queda en su propio archivo LoRA (la guía estima de 20 a 40 MB), y en cada inferencia eliges cuál cargar
- Un registro de sinónimos por clase en prompts/class_prompts.yaml, que el entrenamiento muestrea al azar: trae seis clases, y cinco tienen variante en español
- Seis manuales en español y una prueba de humo con tiles sintéticos para confirmar que el pipeline corre de punta a punta
- Requisitos según la guía:
- GPU NVIDIA de 16 GB o más, Linux con CUDA y acceso aprobado a facebook/sam3
Stack tecnológico
- PyTorch
- SAM 3 de Meta (código incluido en sam3/)
- LoRA implementado en lora_layers.py, sin la librería PEFT
- Hugging Face Hub para bajar los pesos de facebook/sam3
- COCO con pycocotools
Lo difícil
- El trainer ni siquiera importaba: la pérdida llamaba a una clase que no existe en el código de SAM 3, y hubo que portar el Sam3LossWrapper con el matcher húngaro
- Un entrenamiento dejó el LoRA en cero detecciones: las cajas iban en píxeles y la pérdida las espera normalizadas entre 0 y 1
- El paquete triton no publica wheels para Windows: la rama agregó rutas alternativas en PyTorch puro para que el código importe allí, pero la guía solo documenta el entrenamiento en Linux con CUDA
Lo aprendido
- Pide acceso a facebook/sam3 en Hugging Face antes de instalar: sin esa aprobación, el primer entrenamiento falla con GatedRepoError aunque hayas hecho login
- Comprueba en el código que el trainer use lo que declara el config: hasta el commit cf324ae ignoraba la precisión mixta y la acumulación de gradiente, y corría en fp32 con batch 1 sin avisar