Spaces:
Running on Zero
Running on Zero
| """Angle presets and dataset configuration for AngleForge. | |
| The camera prompts are bilingual (Chinese + English) to match the | |
| ``dx8152/Qwen-Edit-2509-Multiple-angles`` LoRA training data, which gives | |
| the most reliable results with Qwen Image Edit 2509. | |
| """ | |
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from typing import Dict, List | |
| # --------------------------------------------------------------------------- # | |
| # Camera-angle presets | |
| # --------------------------------------------------------------------------- # | |
| # key -> (human label, prompt). An empty prompt means "keep the original". | |
| ANGLE_PRESETS: Dict[str, tuple[str, str]] = { | |
| "original": ("Original", ""), | |
| "top_down": ("Top-down / overhead", "将镜头转为俯视 Turn the camera to a top-down view."), | |
| "birds_eye": ("Bird's-eye", "将相机转向鸟瞰视角 Turn the camera to a bird's-eye view."), | |
| "worms_eye": ("Worm's-eye", "将相机切换到仰视视角 Turn the camera to a worm's-eye view."), | |
| "rotate_left_45": ("Rotate left 45°", "将镜头向左旋转45度 Rotate the camera 45 degrees to the left."), | |
| "rotate_right_45": ("Rotate right 45°", "将镜头向右旋转45度 Rotate the camera 45 degrees to the right."), | |
| "rotate_left_90": ("Rotate left 90°", "将镜头向左旋转90度 Rotate the camera 90 degrees to the left."), | |
| "rotate_right_90": ("Rotate right 90°", "将镜头向右旋转90度 Rotate the camera 90 degrees to the right."), | |
| "close_up": ("Close-up", "将镜头转为特写镜头 Turn the camera to a close-up."), | |
| "wide_angle": ("Wide-angle", "将镜头转为广角镜头 Turn the camera to a wide-angle lens."), | |
| "move_left": ("Move left", "将镜头向左移动 Move the camera left."), | |
| "move_right": ("Move right", "将镜头向右移动 Move the camera right."), | |
| "move_forward": ("Move forward", "将镜头向前移动 Move the camera forward."), | |
| "move_down": ("Move down", "将镜头向下移动 Move the camera down."), | |
| } | |
| DEFAULT_ANGLES: List[str] = [ | |
| "original", | |
| "top_down", | |
| "birds_eye", | |
| "worms_eye", | |
| "rotate_left_45", | |
| "rotate_right_45", | |
| "close_up", | |
| "wide_angle", | |
| ] | |
| # Models used by the local Qwen backend (mirrors linoyts/Qwen-Image-Edit-Angles). | |
| QWEN_BASE_MODEL = "Qwen/Qwen-Image-Edit-2509" | |
| QWEN_RAPID_TRANSFORMER = "linoyts/Qwen-Image-Edit-Rapid-AIO" | |
| ANGLES_LORA_REPO = "dx8152/Qwen-Edit-2509-Multiple-angles" | |
| ANGLES_LORA_WEIGHT = "镜头转换.safetensors" | |
| # Model id used by the serverless HF Inference Providers backend. | |
| ANGLES_INFERENCE_MODEL = "dx8152/Qwen-Edit-2509-Multiple-angles" | |
| def angle_prompt(angle_key: str) -> str: | |
| """Return the bilingual camera prompt for an angle preset key.""" | |
| if angle_key not in ANGLE_PRESETS: | |
| raise ValueError(f"Unknown angle preset: {angle_key}") | |
| return ANGLE_PRESETS[angle_key][1] | |
| class DatasetConfig: | |
| """All knobs controlling one image-dataset build.""" | |
| out_dir: str = "output" | |
| dataset_name: str = "industrial_angles" | |
| # Output image geometry. | |
| image_size: int = 512 # longest side, snapped to a multiple of 8 | |
| # Angle generation. | |
| angles: List[str] = field(default_factory=lambda: list(DEFAULT_ANGLES)) | |
| variations_per_angle: int = 1 | |
| # Extra, cheap (non-AI) augmentations applied to every saved image family. | |
| plain_augmentations_per_image: int = 0 | |
| # Qwen inference controls. | |
| num_inference_steps: int = 4 | |
| true_guidance_scale: float = 1.0 | |
| # Split & reproducibility. | |
| test_ratio: float = 0.2 | |
| seed: int = 1234 | |