DageBjorne
Expand style transfer catalog with PyTorch backends and richer keywords.
fd8b97e
|
Raw
History Blame Contribute Delete
3.63 kB
---
title: Text-Driven Image Augmentation
emoji: 🖼️
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 5.23.1
python_version: '3.11'
app_file: app.py
startup_duration_timeout: 1h
pinned: false
---
# Text-Driven Image Augmentation
Upload an image and type an instruction. Transforms are selected by **semantic similarity** between your prompt and a catalog of augmentation keywords (1–5 matches above a cosine-similarity threshold).
## How planning works
1. Your instruction is embedded with `sentence-transformers/all-MiniLM-L6-v2`.
2. Each augmentation keyword has several natural-language phrase variants (also pre-embedded).
3. Keywords scoring above the similarity threshold are selected (max 5), with mutual-exclusion rules for opposing effects (e.g. brighten vs darken).
## Supported instructions
**Artistic style transfer** (one style per request; ONNX unless noted)
| Prompt examples | Style | Backend |
|-----------------|-------|---------|
| `cartoon` / `anime style` | Candy (comic/cartoon) | ONNX |
| `mosaic` / `stained glass look` | Mosaic tiles | ONNX |
| `impressionist` / `painterly` | Rain Princess | ONNX |
| `abstract art` / `cubist style` | Udnie | ONNX |
| `pointillism` / `dot art` | Pointillism | ONNX |
| `starry night` / `van gogh starry night` | Starry Night | PyTorch ([ebylmz Space](https://huggingface.co/spaces/ebylmz/fast-neural-style-transfer)) |
| `pencil sketch` / `sketch style` | Sketch | PyTorch (neural if weights available, else classical pencil sketch) |
| `stylize` / `artistic style` | Random style | Picks one of the above |
**Color / classical** (examples — paraphrases work too)
- `rotate randomly`, `rotate left` / `rotate right`, `flip upside down`, `rotate 180 degrees`, `gamma brighten`, `perspective`, `make it brighter`, `more contrast`, `vintage warm look`, `flip horizontally`, `blur softly`, `posterize`, `auto contrast`
**Background replacement** (rembg u2netp + Openverse web search)
- `replace background` — random scenic query
- `replace background with <anything>` — free-form search, e.g. `sunset over Paris`, `neon city at night`
- `replace by <anything>` — same as above
- `replace background with anything` — random query
Backgrounds are CC-licensed photos fetched from Openverse at runtime (no local image files).
**Procedural spatial** (only when prompt mentions cover, cutout, hole, etc.)
- `just cover` — hide a random region (not text-aware)
- `cover and add cutout` — cover plus 1–4 varied cutouts
- `cover and several cutouts avoid text` — covers and cutouts avoid text
- `add cutout avoid text` — 1–4 cutouts placed away from text
## Unsupported
Object insertion (not background swap):
- `put a table behind it`
## Local setup (Windows)
Requires Python 3.10+.
```powershell
cd "C:\Users\Dag Bjornberg\AI\cursor_pilot"
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python app.py
```
First run downloads the embedding model, RapidOCR, and rembg u2netp weights.
## Models
| Component | Role | License |
|-----------|------|---------|
| `sentence-transformers/all-MiniLM-L6-v2` | Instruction → keyword matching | Apache 2.0 |
| RapidOCR (ONNX) | Text region detection | Apache 2.0 |
| rembg u2netp | Foreground segmentation | MIT |
| ONNX fast neural style (onnxmodelzoo) | Artistic style transfer (5 styles) | See ONNX Model Zoo |
| PyTorch TransformNet (ebylmz Space) | Starry Night style | MIT (Space repo) |
| StyleNet / classical fallback | Pencil sketch style | MIT / classical |
See [backgrounds/README.md](backgrounds/README.md) for background prompt examples.