MogensR's picture
Update README.md
4d84cf4 verified
---
title: 🎬 BackgroundFX Pro - SAM2 + MatAnyone
emoji: πŸŽ₯
colorFrom: indigo
colorTo: purple
sdk: streamlit
sdk_version: 1.32.0
app_file: streamlit_app.py
pinned: false
license: mit
tags:
- video
- background-removal
- segmentation
- matting
- SAM2
- MatAnyone
---
# 🎬 BackgroundFX Pro β€” Professional Video Background Replacement
BackgroundFX Pro is a GPU-accelerated app for Hugging Face Spaces (Docker) that replaces video backgrounds using:
- **SAM2** β€” high-quality object segmentation
- **MatAnyone** β€” temporal video matting for stable alpha over time
Built on: **CUDA 12.1.1**, **PyTorch 2.5.1 (cu121)**, **torchvision 0.20.1**, **Streamlit 1.49.1**.
---
## ✨ Features
- Replace backgrounds with: **solid color**, **AI-generated** image (procedural), **custom uploaded image**, or **professional backgrounds**
- Optimized for **T4 GPUs** on Hugging Face
- Two-stage pipeline: SAM2 segmentation β†’ MatAnyone refinement β†’ compositing
- Caching & logs stored in the repo volume:
- HF cache β†’ `./.hf`
- Torch cache β†’ `./.torch`
- App data & logs β†’ `./data` (see `data/run.log`)
- **FFmpeg** β€” video format conversion and frame extraction
---
## πŸš€ Try It
Open the Space in your browser (GPU required):
https://huggingface.co/spaces/MogensR/VideoBackgroundReplacer2
---
## πŸ–±οΈ How to Use
1. **Upload a video** (`.mp4`, `.mov`, `.avi`, `.mkv`).
2. Choose a **Background Type**: Image, Color, Blur, Professional Backgrounds, or AI Generated.
3. If using custom background, upload your image or select from professional options.
4. Click **πŸš€ Process Video**.
5. Preview and **πŸ’Ύ Download Result**.
> Tip: Start with 720p/1080p on T4; 4K can exceed memory limits.
---
## πŸ—‚οΈ Project Structure (key files)
- `Dockerfile` β€” CUDA 12.1.1 + PyTorch 2.5.1 container
- `requirements.txt` β€” Python dependencies
- `app.py` β€” Main Streamlit application
- `integrated_pipeline.py` β€” Two-stage processing pipeline
- `models/sam2_loader.py` β€” SAM2 model loader with HF Hub integration
- `models/matanyone_loader.py` β€” MatAnyone model loader
- `utils/` β€” Utility functions
- `data/` β€” Created at runtime for logs/outputs
- `tmp/` β€” Created at runtime for processing jobs - `video_pipeline.py` β€” Core video processing logic (SAM2 + MatAnyone integration)
- `video_pipeline.py` β€” Core video processing logic (SAM2 + MatAnyone integration)
---
## βš™οΈ Runtime Notes
- Binds to `PORT` / `STREAMLIT_SERVER_PORT` (defaults to **7860**)
- File upload limit: 200MB via `--server.maxUploadSize=200`
- CORS disabled for Docker compatibility: `--server.enableCORS=false`
- Memory management with automatic cleanup between stages
- If processing fails, check Space logs for detailed error information
---
## πŸ§ͺ Local Development (Docker)
Requires an NVIDIA GPU with CUDA drivers.
```bash
git clone https://huggingface.co/spaces/MogensR/VideoBackgroundReplacer2
cd VideoBackgroundReplacer2
# Build (Ubuntu 22.04, CUDA 12.1.1; installs Torch 2.5.1+cu121)
docker build -t backgroundfx-pro .
# Run
docker run --gpus all -p 7860:7860 backgroundfx-pro
```
Access at: http://localhost:7860
---
## πŸ”§ Technical Details
### Pipeline Architecture
1. **Stage 1**: SAM2 generates object masks using click points
2. **Stage 2**: MatAnyone refines masks for temporal consistency
3. **Stage 3**: Composite foreground with new background
### Model Loading
- SAM2 models downloaded from Hugging Face Hub automatically
- Supports small/base/large variants (small recommended for T4)
- MatAnyone loaded from official repository
### Performance Optimizations
- T4-specific optimizations (fp16, channels_last)
- Memory pruning during long video processing
- Automatic model unloading between stages
---
## πŸ“ License
MIT License - See LICENSE file for details.