YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Indic Heritage Studio v2
A multimodal content creation tool that reimagines modern photos and prompts through the lens of Indian heritage art forms β running on SDXL + Stable Video Diffusion + ControlNet + per-style LoRAs across 8 Γ NVIDIA 80GB GPUs (dev) and AMD Radeon Cloud (final demo).
Submission for the AMD AI DevMaster Hackathon (July 15 β August 6, 2026) Track 1: Multimodal AI β Development of Multimodal Content Creation Tools Team: TeamIndicForge
π― What It Does (v2 β full rebuild)
Indic Heritage Studio v2 transforms everyday inputs into culturally-rooted visual art. Given a text prompt, a reference photo, or both, it produces:
- Text β Heritage-styled image β SDXL 1.0 (DreamShaper-XL turbo) at 1024Β² with per-style LoRA overlay
- Image β Stylized image β IP-Adapter XL on SDXL with optional multi-style blending (60% Madhubani + 40% Warli)
- Image β 4-second video β Stable Video Diffusion XT 1.1 (25 frames @ 8 fps, 1024Γ576)
- ControlNet composition β Canny / Depth / OpenPose conditioning for precise composition control
- Inpainting β mask a region, restyle it in any heritage style (heritage restoration use case)
- Batch processing β multi-GPU data parallelism across 4 worker GPUs (~4Γ speedup)
Each output is styled after one of five authentic Indian art traditions, each with its own fine-tuned LoRA trained on real heritage art samples:
- π’ Madhubani β Bihar folk art, geometric patterns, natural pigments
- π€ Warli β Maharashtra tribal art, white-on-earth, stick figures
- π΅ Pattachitra β Odisha cloth painting, mythological narratives
- π‘ Mughal Miniature β court painting, fine detail, gold leaf
- π΄ Tanjore β Tamil Nadu, gold-gilded devotional icons
An optional AI Style Advisor (powered by AMD's free Qwen API) helps users pick a style and refine prompts β but the core generation runs 100% on AMD Radeon GPU in compliance with Track 1 rules.
π What's New in v2
| Axis | v1 | v2 |
|---|---|---|
| T2I model | SD 1.5 (DreamShaper) | SDXL 1.0 + DreamShaper-XL turbo |
| Resolution | 512Γ512 | 1024Γ1024 (1536Β² for showcase) |
| Style conditioning | Prompt tags only | Per-style LoRA fine-tune + IP-Adapter XL |
| Image β video | AnimateDiff 16f | Stable Video Diffusion XT 1.1, 25 frames |
| Composition control | β | ControlNet (Canny/Depth/OpenPose) |
| Image repair | β | SDXL inpainting |
| Batch | Single GPU | Multi-GPU data parallel, 4 workers |
| Pipelines | Load/unload on demand | All 4 resident on dedicated GPUs |
ποΈ System Architecture (Multi-GPU)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER INTERFACE (Gradio) β
β 6 tabs + Style Advisor widget + GPU monitor sidebar β
ββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AGENT LAYER (free AMD Qwen/DeepSeek API) β
β StyleAdvisor Β· PromptEngineer Β· Critic β
ββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CORE GPU LAYER β MULTI-GPU (8 Γ 80 GB dev) β
β GPU 0: SDXL T2I + Inpainting GPU 4: Batch worker 0 β
β GPU 1: SDXL + IP-Adapter XL GPU 5: Batch worker 1 β
β GPU 2: SVD-XT 1.1 (I2V) GPU 6: Batch worker 2 β
β GPU 3: SDXL + ControlNet GPU 7: Batch worker 3 β
β Per-style LoRAs (~150 MB each) loaded on demand β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
On AMD Radeon Cloud (single GPU), all pipelines share GPU 0 and load/unload on demand. The code auto-detects device count.
π οΈ Tech Stack
| Layer | Tech |
|---|---|
| Dev hardware | 8 Γ NVIDIA A100/H100 80GB (640 GB total VRAM) |
| Final demo hardware | AMD Radeon Cloud (Radeon GPU, ~16 GB VRAM) |
| Software stack | ROCm 6.2 (AMD) / CUDA 12.1 (NVIDIA dev) |
| Deep learning | PyTorch 2.4.1 + Diffusers 0.30 + Accelerate 0.34 + PEFT 0.12 |
| T2I model | SDXL 1.0 + DreamShaper-XL turbo |
| Style transfer | IP-Adapter XL (h94/IP-Adapter) |
| Image-to-video | Stable Video Diffusion XT 1.1 (stabilityai/stable-video-diffusion-img2vid-xt-1-1) |
| Composition control | ControlNet (Canny/Depth/OpenPose SDXL variants) |
| Per-style LoRAs | Trained with PEFT, rank 32, ~800 steps each |
| Agent LLM | Free AMD Model APIs (Qwen3.6-35B-A3B / DeepSeek-V4-Flash) |
| UI | Gradio 4.x |
| Video post | FFmpeg + OpenCV + imageio |
| Image post | Pillow, imageio |
π¦ Installation
Step 1 β Clone
git clone https://huggingface.co/Dev2506/indic-heritage-studio
cd indic-heritage-studio
Setup
python -m venv .venv source .venv/bin/activate pip install torch==2.4.1 torchvision==0.19.1 --index-url https://download.pytorch.org/whl/cu121 pip install -r requirements.txt
Configure
cp .env.example .env
Edit .env to add AMD_MODEL_API_KEY (free at https://developer.amd.com.cn/radeon/modelapis)
Launch
python app.py
Open http://localhost:7860
```
π Usage
CLI mode
# Text-to-image in Madhubani style (SDXL + LoRA)
python -m core.text_to_image \
--prompt "a young woman reading under a banyan tree" \
--style madhubani \
--out outputs/t2i_madhubani.png \
--steps 25 --size 1024 --seed 42
# Style transfer (IP-Adapter XL)
python -m core.style_transfer \
--image inputs/photo.jpg \
--style warli \
--out outputs/styled_warli.png \
--strength 0.7 --ip-scale 0.7
# Image-to-video (SVD)
python -m core.image_to_video \
--image outputs/styled_warli.png \
--out outputs/warli_animated.mp4 \
--frames 25 --fps 8
# ControlNet (Canny β Mughal)
python -m core.controlnet \
--condition-image inputs/sketch.png \
--condition-type canny \
--prompt "a courtly gathering" \
--style mughal \
--out outputs/controlnet_mughal.png
# Inpainting
python -m core.inpainting \
--image inputs/damaged_painting.jpg \
--mask inputs/damage_mask.png \
--prompt "restore the floral border" \
--style tanjore \
--out outputs/restored.png
# Batch (multi-GPU, 4 workers)
python -m core.batch_processor \
--mode style_transfer \
--input-dir inputs/ \
--output-dir outputs/batch/ \
--workers 4
Web UI
python app.py
The UI exposes all 6 modes plus the Style Advisor widget and GPU monitor.
β‘ Multi-GPU Optimization
The codebase applies these optimizations:
- Pipeline-to-GPU pinning β T2I on GPU 0, IP-Adapter on GPU 1, SVD on GPU 2, ControlNet on GPU 3. No thrash.
- Batch data parallelism β Inputs sharded across GPUs 4-7 via
multiprocessing.spawn. - Per-style LoRA hot-swap β
unload_lora_weightsβload_lora_weightsin ~3 seconds (vs 30+ sec full pipeline reload). - FP16 inference β
torch_dtype=torch.float16everywhere. - SDPA attention β built into PyTorch 2.0+, replaces xformers (CUDA-only).
- Attention + VAE slicing β reduces VRAM peak ~30%.
torch.inference_mode()β all hot paths.- Pipeline singleton reuse β load once, serve many requests.
Multi-GPU Benchmark
python scripts/benchmark.py --configs 1 2 4 8 --samples 4
Reports: latency per image, throughput (img/min), peak VRAM, scaling chart.
π Evaluation Rubric Coverage
| Rubric item | Points | How v2 hits it |
|---|---|---|
| Complete inputβprocessingβoutput workflow | 40 | 6 pipelines: T2I, I2I-style, I2V, ControlNet, Inpaint, batch |
| Innovative creation scenarios | 20 | Indian heritage art Γ LoRA fine-tuning Γ ControlNet Γ SVD = unique vertical |
| Practical application & social value | 20 | Cultural preservation + heritage restoration + accessible creator tool |
| Clear, stable, diverse output on Radeon GPU | 20 | 6 output modes Γ 5 art styles Γ LoRA = 30+ high-quality demo outputs |
ποΈ Project Structure
indic-heritage-studio-v2/
βββ README.md # This file
βββ app.py # Gradio UI entry point
βββ requirements.txt # Python dependencies
βββ .env.example # Environment template
βββ .gitignore
βββ config/
β βββ settings.py # v2 global config (SDXL, multi-GPU, LoRA paths)
β βββ styles.py # 5 heritage styles + LoRA scales + motion tuning
βββ agents/ # LLM agent layer (free AMD API)
β βββ base.py
β βββ style_advisor.py
β βββ prompt_engineer.py # SDXL-aware prompt enrichment
β βββ critic.py # Heuristic + LLM critique
βββ core/ # GPU layer
β βββ text_to_image.py # SDXL + LoRA + optional refiner
β βββ style_transfer.py # IP-Adapter XL + multi-style blending
β βββ image_to_video.py # Stable Video Diffusion XT 1.1
β βββ controlnet.py # Canny / Depth / OpenPose
β βββ inpainting.py # SDXL inpainting + LoRA
β βββ batch_processor.py # Multi-GPU data parallel
βββ training/ # NEW β LoRA training
β βββ prepare_dataset.py # Heritage art dataset prep
β βββ train_lora.py # PEFT LoRA on SDXL UNet
βββ ui/
β βββ gradio_app.py # 6-tab web UI
βββ utils/
β βββ gpu_utils.py # Multi-GPU device management
β βββ image_utils.py
β βββ video_utils.py
βββ scripts/
β βββ benchmark.py # Multi-GPU scaling benchmark
β βββ download_models.py # All v2 models (~35 GB)
β βββ generate_demo_outputs.py # Pre-bake demo gallery
β βββ verify_rocm.py # Env health check
β βββ day1_setup.sh # Day 1 environment setup
β βββ amd_demo_recording.sh # AMD demo recording script
βββ assets/
β βββ styles/ # IP-Adapter reference images (5)
β βββ datasets/ # LoRA training datasets
β βββ loras/ # Trained LoRA weights (5 Γ ~150 MB)
βββ docs/
β βββ architecture.md # Detailed v2 architecture
β βββ 2_week_plan.md # Replan for 8Γ80GB dev
β βββ local_dev_setup.md # NVIDIA CUDA setup
β βββ architecture_diagram.png
βββ examples/ # Demo gallery (pre-baked)
βββ tests/ # Smoke tests
π Build Schedule (2-week plan)
See docs/2_week_plan.md for the day-by-day plan. Summary:
- Week 1 (Jul 16β22): Env setup, source heritage art datasets, train 5 LoRAs, smoke-test all 6 pipelines.
- Week 2 (Jul 23β29): Pre-bake demo gallery, run multi-GPU benchmark, write PDF + PPT, code freeze.
- Week 3 (Jul 30βAug 5): AMD verification + demo recording + submit. Burns ~1.5 of 10 AMD credits.
π Submission Package
The 4 required deliverables (Track 1):
- Project Profile Document (PDF) β generated via the
pdfskill in Week 2 - Source Code (this repo) β fork of
AMD-DEV-CONTEST/Radeon-hackathon-2026-07 - Demo Video (3β5 min) β
rocm-smiβ CLI β live GPU inference β UI walkthrough - PPT / Poster β generated via the
pptxskill in Week 2
PR title format: Track 1, TeamIndicForge, Indic Heritage Studio
π Troubleshooting
| Issue | Fix |
|---|---|
torch.cuda.is_available() == False |
Reinstall PyTorch with --index-url https://download.pytorch.org/whl/cu121 |
| LoRA training OOMs | Lower --rank from 32 β 16, or --batch-size from 1 β 1 with --grad-accum 8 |
| SVD OOM on AMD | Use --frames 14 (instead of 25) |
| ControlNet preprocessor download fails | python -c "from controlnet_aux import CannyDetector; CannyDetector.from_pretrained('lllyasviel/Annotators')" |
| Multi-GPU batch fails to spawn | Set MULTI_GPU=0 in .env |
| HuggingFace download slow | HF_HUB_ENABLE_HF_TRANSFER=1 (already in .env) |
| Qwen API 429 errors | Agent layer is optional; core tool still works |
π§ Contact
- Hackathon email: ai_dev_contests@amd.com
- Discord: https://discord.gg/zt9caur5B3
- Team: TeamIndicForg
π License
MIT for project code. Model checkpoints retain their original licenses (see HuggingFace model cards).