Image-to-Image
Diffusers
Safetensors
image-decomposition
layered-image-editing
diffusion
flux
lora
transparent-rgba
Instructions to use SynLayers/synlayers with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use SynLayers/synlayers with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline from diffusers.utils import load_image # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("fill-in-base-model", dtype=torch.bfloat16, device_map="cuda") pipe.load_lora_weights("SynLayers/synlayers") prompt = "Turn this cat into a dog" input_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png") image = pipe(image=input_image, prompt=prompt).images[0] - Notebooks
- Google Colab
- Kaggle
- Local Apps
- Draw Things
Upload demo/real_world_pipeline.py with huggingface_hub
Browse files- demo/real_world_pipeline.py +10 -7
demo/real_world_pipeline.py
CHANGED
|
@@ -24,7 +24,7 @@ from demo.infer.run_caption_bbox_infer import ( # noqa: E402
|
|
| 24 |
draw_boxes,
|
| 25 |
infer_caption_bbox,
|
| 26 |
)
|
| 27 |
-
from demo.hf_repo_assets import build_repo_asset_overrides
|
| 28 |
from demo.infer.vlm_bbox_inference import get_model_and_processor # noqa: E402
|
| 29 |
from infer.common_infer import initialize_pipeline # noqa: E402
|
| 30 |
from infer.infer import build_run_save_dir, get_real_boxes, load_adapter_image # noqa: E402
|
|
@@ -35,9 +35,11 @@ DEFAULT_REAL_CONFIG_PATH = PROJECT_ROOT / "infer" / "infer.yaml"
|
|
| 35 |
DEFAULT_WORK_DIR = PROJECT_ROOT / "demo" / "outputs" / "real_world_demo"
|
| 36 |
DEFAULT_RUN_NAME = "step_120000"
|
| 37 |
DEFAULT_TARGET_SIZE = 1024
|
|
|
|
| 38 |
|
| 39 |
_BBOX_CACHE: dict[str, object] = {"model_path": None, "model": None, "processor": None}
|
| 40 |
_REAL_CACHE: dict[str, object] = {"key": None, "pipeline": None, "transp_vae": None}
|
|
|
|
| 41 |
|
| 42 |
|
| 43 |
def slugify(text: str) -> str:
|
|
@@ -59,9 +61,8 @@ DEFAULT_DECOMP_CKPT_ROOT = Path(
|
|
| 59 |
resolve_existing_path(
|
| 60 |
os.environ.get("SYNLAYERS_DECOMP_CKPT_ROOT"),
|
| 61 |
PROJECT_ROOT / "SynLayers_ckpt" / "step_120000",
|
| 62 |
-
"/project/llmsvgen/share/data/kmw_layered_checkpoint/SynLayers_ckpt/step_120000",
|
| 63 |
)
|
| 64 |
-
or
|
| 65 |
)
|
| 66 |
|
| 67 |
|
|
@@ -148,7 +149,8 @@ def build_runtime_config(
|
|
| 148 |
seed: int | None = None,
|
| 149 |
) -> dict:
|
| 150 |
config = load_config(str(config_path))
|
| 151 |
-
|
|
|
|
| 152 |
decomp_ckpt_root = Path(
|
| 153 |
os.environ.get("SYNLAYERS_DECOMP_CKPT_ROOT")
|
| 154 |
or repo_overrides.get("decomp_ckpt_root")
|
|
@@ -368,7 +370,7 @@ def run_real_world_pipeline(
|
|
| 368 |
bbox_model = (
|
| 369 |
bbox_model
|
| 370 |
or os.environ.get("SYNLAYERS_BBOX_MODEL")
|
| 371 |
-
or os.environ.get("
|
| 372 |
or DEFAULT_BBOX_MODEL
|
| 373 |
)
|
| 374 |
config_path = Path(config_path or os.environ.get("SYNLAYERS_REAL_CONFIG", str(DEFAULT_REAL_CONFIG_PATH)))
|
|
@@ -405,7 +407,8 @@ def run_real_world_pipeline(
|
|
| 405 |
bbox_jsonl = write_bbox_jsonl(record, run_dir / "caption_bbox_infer.jsonl")
|
| 406 |
bbox_vis_path = run_dir / "bbox_vis" / f"{normalized_sample_name}_vis.png"
|
| 407 |
draw_boxes(prepared_image_path, bboxes, bbox_vis_path)
|
| 408 |
-
|
|
|
|
| 409 |
|
| 410 |
config = build_runtime_config(
|
| 411 |
config_path=config_path,
|
|
@@ -466,4 +469,4 @@ def main():
|
|
| 466 |
|
| 467 |
|
| 468 |
if __name__ == "__main__":
|
| 469 |
-
main()
|
|
|
|
| 24 |
draw_boxes,
|
| 25 |
infer_caption_bbox,
|
| 26 |
)
|
| 27 |
+
from demo.hf_repo_assets import build_repo_asset_overrides # noqa: E402
|
| 28 |
from demo.infer.vlm_bbox_inference import get_model_and_processor # noqa: E402
|
| 29 |
from infer.common_infer import initialize_pipeline # noqa: E402
|
| 30 |
from infer.infer import build_run_save_dir, get_real_boxes, load_adapter_image # noqa: E402
|
|
|
|
| 35 |
DEFAULT_WORK_DIR = PROJECT_ROOT / "demo" / "outputs" / "real_world_demo"
|
| 36 |
DEFAULT_RUN_NAME = "step_120000"
|
| 37 |
DEFAULT_TARGET_SIZE = 1024
|
| 38 |
+
DEFAULT_MODEL_REPO_ID = "SynLayers/Bbox-caption-8b"
|
| 39 |
|
| 40 |
_BBOX_CACHE: dict[str, object] = {"model_path": None, "model": None, "processor": None}
|
| 41 |
_REAL_CACHE: dict[str, object] = {"key": None, "pipeline": None, "transp_vae": None}
|
| 42 |
+
RELEASE_BBOX_AFTER_CAPTION = os.environ.get("SYNLAYERS_RELEASE_BBOX_AFTER_CAPTION", "0") == "1"
|
| 43 |
|
| 44 |
|
| 45 |
def slugify(text: str) -> str:
|
|
|
|
| 61 |
resolve_existing_path(
|
| 62 |
os.environ.get("SYNLAYERS_DECOMP_CKPT_ROOT"),
|
| 63 |
PROJECT_ROOT / "SynLayers_ckpt" / "step_120000",
|
|
|
|
| 64 |
)
|
| 65 |
+
or PROJECT_ROOT / "SynLayers_ckpt" / "step_120000"
|
| 66 |
)
|
| 67 |
|
| 68 |
|
|
|
|
| 149 |
seed: int | None = None,
|
| 150 |
) -> dict:
|
| 151 |
config = load_config(str(config_path))
|
| 152 |
+
model_repo = os.environ.get("SYNLAYERS_MODEL_REPO") or DEFAULT_MODEL_REPO_ID
|
| 153 |
+
repo_overrides = build_repo_asset_overrides(model_repo)
|
| 154 |
decomp_ckpt_root = Path(
|
| 155 |
os.environ.get("SYNLAYERS_DECOMP_CKPT_ROOT")
|
| 156 |
or repo_overrides.get("decomp_ckpt_root")
|
|
|
|
| 370 |
bbox_model = (
|
| 371 |
bbox_model
|
| 372 |
or os.environ.get("SYNLAYERS_BBOX_MODEL")
|
| 373 |
+
or os.environ.get("SYNLAYERS_MODEL_REPO")
|
| 374 |
or DEFAULT_BBOX_MODEL
|
| 375 |
)
|
| 376 |
config_path = Path(config_path or os.environ.get("SYNLAYERS_REAL_CONFIG", str(DEFAULT_REAL_CONFIG_PATH)))
|
|
|
|
| 407 |
bbox_jsonl = write_bbox_jsonl(record, run_dir / "caption_bbox_infer.jsonl")
|
| 408 |
bbox_vis_path = run_dir / "bbox_vis" / f"{normalized_sample_name}_vis.png"
|
| 409 |
draw_boxes(prepared_image_path, bboxes, bbox_vis_path)
|
| 410 |
+
if RELEASE_BBOX_AFTER_CAPTION:
|
| 411 |
+
release_bbox_bundle()
|
| 412 |
|
| 413 |
config = build_runtime_config(
|
| 414 |
config_path=config_path,
|
|
|
|
| 469 |
|
| 470 |
|
| 471 |
if __name__ == "__main__":
|
| 472 |
+
main()
|