From e9cee231ea0afd6867aa9f2f632b88cc87211c4d Mon Sep 17 00:00:00 2001 From: zhiqing0205 Date: Mon, 16 Jun 2025 03:53:40 +0800 Subject: [PATCH 1/5] chore: remove unused dependencies clip, mmcv, openxlab, requests, and tqdm --- env.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/env.yml b/env.yml index 839fe2e..d40f828 100644 --- a/env.yml +++ b/env.yml @@ -141,7 +141,6 @@ dependencies: - bleach==6.1.0 - blobfile==2.1.1 - click==8.1.7 - - clip==1.0 - colorama==0.4.6 - comm==0.2.2 - contourpy==1.2.1 @@ -201,7 +200,6 @@ dependencies: - matplotlib-inline==0.1.7 - mdurl==0.1.2 - mistune==3.0.2 - - mmcv==2.2.0 - mmengine==0.10.4 - model-index==0.1.11 - multidict==6.0.5 @@ -220,7 +218,6 @@ dependencies: - opencv-python==4.8.1.78 - opendatalab==0.0.10 - openmim==0.3.9 - - openxlab==0.1.1 - ordered-set==4.1.0 - oss2==2.17.0 - outdated==0.2.2 @@ -252,7 +249,6 @@ dependencies: - pyzmq==26.0.3 - referencing==0.35.1 - regex==2023.6.3 - - requests==2.28.2 - rfc3339-validator==0.1.4 - rfc3986-validator==0.1.1 - rich==13.4.2 @@ -278,7 +274,6 @@ dependencies: - tokenizers==0.13.3 - tomli==2.0.1 - tornado==6.4.1 - - tqdm==4.65.2 - traitlets==5.14.3 - transformers==4.29.2 - types-python-dateutil==2.9.0.20240316 From b7bef8c0b1b8bd37f2d66b25cf23a7da835a8ab9 Mon Sep 17 00:00:00 2001 From: zhiqing0205 Date: Mon, 16 Jun 2025 03:56:54 +0800 Subject: [PATCH 2/5] feat: add web UI with attention visualization and random mask generation --- run.py | 54 +-- utils/vis_utils.py | 17 +- web_demo.py | 807 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 853 insertions(+), 25 deletions(-) create mode 100644 web_demo.py diff --git a/run.py b/run.py index c0fdca8..73f2b14 100644 --- a/run.py +++ b/run.py @@ -1,6 +1,5 @@ import pprint -from typing import List - +from typing import List, Optional, Dict, Tuple, Callable import pyrallis import torch from PIL import Image @@ -39,18 +38,33 @@ def get_indices_to_alter(stable, prompt: str) -> List[int]: return token_indices -def get_indices_to_alter_new(stable, prompt: str, tokens) -> List[int]: - token_idx_to_word = {idx: stable.tokenizer.decode(t) - for idx, t in enumerate(stable.tokenizer(prompt)['input_ids']) - if 0 < idx < len(stable.tokenizer(prompt)['input_ids']) - 1} +def get_indices_to_alter_new(stable, prompt: str, tokens_str: str) -> Tuple[List[int], Dict[int, str]]: + """ + Parses the prompt to get a map of token indices to words, + and identifies the indices to alter based on user input. + Returns the list of indices to alter and the full token map. + """ + token_ids = stable.tokenizer(prompt)['input_ids'] + token_idx_to_word = { + idx: stable.tokenizer.decode(t) + for idx, t in enumerate(token_ids) + if 0 < idx < len(token_ids) - 1 + } pprint.pprint(token_idx_to_word) - # token_indices = input("Please enter the a comma-separated list indices of the tokens you wish to " - # "alter (e.g., 2,5): ") - # pprint.pprint(token_indices) - token_indices = tokens - token_indices = [int(i) for i in token_indices.split(",")] - print(f"Altering tokens: {[token_idx_to_word[i] for i in token_indices]}") - return token_indices + + # The web UI passes a number, which we convert to a string. + if isinstance(tokens_str, (int, float)): + tokens_str = str(int(tokens_str)) + + try: + # Handle comma-separated strings for indices + token_indices = [int(i.strip()) for i in tokens_str.split(",") if i.strip()] + except (ValueError, AttributeError) as e: + print(f"Warning: Could not parse token indices '{tokens_str}'. Error: {e}. Defaulting to empty list.") + token_indices = [] + + print(f"Altering tokens: {[token_idx_to_word.get(i, '') for i in token_indices]}") + return token_indices, token_idx_to_word def run_on_prompt(prompt: List[str], @@ -150,13 +164,13 @@ def run_on_prompt_and_masked_image(prompt: List[str], mask_image: str, seed: torch.Generator, config: RunConfig, - normal_prompt, detailed_prompt, - - img_prompt = None, - abnormal_img = None, - clip_loss = None) -> Image.Image: + img_prompt=None, + abnormal_img=None, + clip_loss=None, + callback: Optional[Callable] = None, + callback_steps: Optional[int] = 1) -> Image.Image: if controller is not None: ptp_utils.register_attention_control(model, controller) outputs, image_latents = model(prompt=prompt, @@ -182,7 +196,9 @@ def run_on_prompt_and_masked_image(prompt: List[str], normal_prompt=normal_prompt, abnormal_img=abnormal_img, detailed_prompt=detailed_prompt, - clip_loss=clip_loss) + clip_loss=clip_loss, + callback=callback, + callback_steps=callback_steps) # image = outputs.images[0] # return image, image_latents return outputs[0], image_latents diff --git a/utils/vis_utils.py b/utils/vis_utils.py index 0813bb4..d3f4143 100644 --- a/utils/vis_utils.py +++ b/utils/vis_utils.py @@ -23,15 +23,20 @@ def show_cross_attention(prompt: str, attention_maps = aggregate_attention(attention_store, res, from_where, True, select).detach().cpu() images = [] - # show spatial attention for indices of tokens to strengthen + # show spatial attention for all tokens for i in range(len(tokens)): + if i == 0 or i == len(tokens) - 1: # Skip start and end tokens + continue image = attention_maps[:, :, i] + image = show_image_relevance(image, orig_image) + image = image.astype(np.uint8) + image = np.array(Image.fromarray(image).resize((res ** 2, res ** 2))) + token_text = decoder(int(tokens[i])) + # Add a visual indicator for altered tokens if i in indices_to_alter: - image = show_image_relevance(image, orig_image) - image = image.astype(np.uint8) - image = np.array(Image.fromarray(image).resize((res ** 2, res ** 2))) - image = ptp_utils.text_under_image(image, decoder(int(tokens[i]))) - images.append(image) + token_text = f"*{token_text}*" + image = ptp_utils.text_under_image(image, token_text) + images.append(image) ptp_utils.view_images(np.stack(images, axis=0)) # TODO diff --git a/web_demo.py b/web_demo.py new file mode 100644 index 0000000..29cd4fa --- /dev/null +++ b/web_demo.py @@ -0,0 +1,807 @@ +import gradio as gr +import torch +import traceback +import torch +from PIL import Image +import sys +import os +import time +from typing import List, Dict, Optional, Tuple +import json +from datetime import datetime + +import numpy as np +from scipy.ndimage import binary_dilation, binary_erosion +import cv2 + +# 添加系统路径 +sys.path.append(".") +sys.path.append("..") + +# 导入必要的模块 +from clip_pipeline_attend_and_excite import RelationalAttendAndExcitePipeline +from config import RunConfig +from run import run_on_prompt_and_masked_image, get_indices_to_alter_new +from utils.ptp_utils import AttentionStore +from utils import vis_utils + +# English Translations +localization_texts = { + "en": { + "title": "Anomaly Any", + "description": "This is a demo for generating anomaly images. You can specify the object type and anomaly description, and the model will generate an image with the specified anomaly.", + "step1_title": "Step 1: Define Prompts via Templates", + "type_label": "Type", + "type_placeholder": "e.g., hazelnut", + "normal_prompt_template_label": "Normal Prompt Template", + "normal_prompt_template_placeholder": "e.g., a photo of a {type}", + "prompt_template_label": "Anomaly Prompt Template", + "prompt_template_placeholder": "e.g., a photo of a {type} with a crack on it", + "detailed_prompt_template_label": "Detailed Prompt Template", + "detailed_prompt_template_placeholder": "e.g., a photo of a {type} with a large, jagged crack exposing the interior.", + "prompt_preview_header": "✨ Prompt Previews", + "normal_prompt_preview_label": "Normal Prompt Preview", + "anomaly_prompt_preview_label": "Anomaly Prompt Preview", + "detailed_prompt_preview_label": "Detailed Prompt Preview", + "step2_title": "Step 2: Upload Reference Image (Normal)", + "masking_options": "Optional: Masking", + "mask_image": "Mask Image (Optional)", + "mask_ratio": "Mask Size (%)", + "generate_mask": "Generate Random Mask", + "advanced_settings": "Optional: Advanced Settings", + "token_indices": "Token Indices", + "token_indices_placeholder": "e.g., 8 or 5,6,7", + "random_seed": "Random Seed", + "image_guidance_strength": "Image Guidance Strength", + "scale_factor": "Scale Factor for Attention", + "threshold_step": "Threshold at Step {}", + "max_iter": "Max Iterations to Alter", + "use_standard_sd": "Use Standard SD (for comparison)", + "generate_btn": "Generate Anomaly Image", + "output_results": "Output", + "generated_image": "Generated Image", + "attention_map": "Attention Map", + "generation_info": "Generation Info", + "quick_examples": "Quick Examples", + "generation_time": "Generation Time: {:.2f} seconds", + "used_prompt": "Used Prompt: {}", + "token_indices_info": "Token Indices: {}", + "error_prefix": "Error: {}", + "processing": "Processing...", + "ready": "Ready", + "model_loading": "Loading model...", + "model_loaded": "Model loaded successfully!", + "random_mask": "Random Mask Generation", + "mask_ratio": "Mask Size Ratio", + "generate_mask": "Generate Random Mask", + "mask_generated": "Random mask generated successfully!", + "token_attention_maps": "Token Attention Maps", + } +} + +# Global Variables +NUM_DIFFUSION_STEPS = 200 +GUIDANCE_SCALE = 12.5 +MAX_NUM_WORDS = 77 +device = torch.device('cuda:0') if torch.cuda.is_available() else torch.device('cpu') + +# Custom CSS Styles +custom_css = """ +/* Overall style optimization */ +.gradio-container { + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important; + max-width: 1400px !important; + margin: auto !important; +} + +/* Title style */ +h1 { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-weight: 800; + margin-bottom: 0.5em; +} + +/* Card style */ +.gr-group { + border: 1px solid rgba(0, 0, 0, 0.1); + border-radius: 12px; + padding: 16px; + margin-bottom: 16px; + background: rgba(255, 255, 255, 0.6); + backdrop-filter: blur(10px); + transition: all 0.3s ease; +} + +.gr-group:hover { + box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08); + transform: translateY(-2px); +} + +/* Button style */ +.gr-button-primary { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; + border: none !important; + color: white !important; + font-weight: 600 !important; + padding: 12px 24px !important; + border-radius: 8px !important; + transition: all 0.3s ease !important; +} + +.gr-button-primary:hover { + transform: translateY(-2px) !important; + box-shadow: 0 8px 24px rgba(102, 126, 234, 0.4) !important; +} + +/* Input box style */ +.gr-textbox, .gr-number, .gr-slider { + border-radius: 8px !important; + border: 1px solid rgba(0, 0, 0, 0.1) !important; + transition: all 0.3s ease !important; +} + +.gr-textbox:focus, .gr-number:focus { + border-color: #667eea !important; + box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1) !important; +} + +/* Image upload area */ +.gr-image { + border-radius: 12px !important; + overflow: hidden !important; + border: 2px dashed rgba(0, 0, 0, 0.2) !important; + transition: all 0.3s ease !important; +} + +.gr-image:hover { + border-color: #667eea !important; +} + +/* Accordion style */ +.gr-accordion { + border-radius: 12px !important; + border: 1px solid rgba(0, 0, 0, 0.1) !important; + overflow: hidden !important; + margin-top: 16px !important; +} + +.gr-accordion-header { + background: rgba(255, 255, 255, 0.8) !important; + padding: 12px 16px !important; +} + +/* Progress bar style */ +.progress-bar { + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; +} + +/* Label style */ +label { + font-weight: 600 !important; + color: #334155 !important; + margin-bottom: 8px !important; +} + +/* Example style */ +.gr-examples { + border-radius: 12px !important; + background: rgba(255, 255, 255, 0.6) !important; + padding: 16px !important; +} + +/* Dark mode support */ +@media (prefers-color-scheme: dark) { + .gr-group { + background: rgba(30, 30, 30, 0.6); + border-color: rgba(255, 255, 255, 0.1); + } + + label { + color: #e2e8f0 !important; + } +} + +/* Responsive design */ +@media (max-width: 768px) { + .gradio-container { + padding: 16px !important; + } + + .gr-group { + padding: 12px; + } +} + +/* Animation effect */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(10px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.gr-group, .gr-image, .gr-textbox { + animation: fadeIn 0.5s ease-out; +} + +#attention_gallery_centered { + margin-left: auto; + margin-right: auto; + max-width: 90%; /* Ensure it doesn't overflow small screens, adjust as needed */ +} +/* Center images within each gallery item */ +#attention_gallery_centered .thumbnail-item { + display: flex; + justify-content: center; /* Horizontally center the image within the item */ + align-items: center; /* Vertically center the image (optional, but good for consistency) */ +} +#attention_gallery_centered .thumbnail-item > img { + max-width: 100%; /* Ensure image does not overflow its container */ + max-height: 100%; + object-fit: contain; /* Already set in component, but good to be explicit */ +} + +/* Make seed input and button look more integrated */ +#seed_row .gr-number { + border-top-right-radius: 0px !important; + border-bottom-right-radius: 0px !important; + border-right-width: 0px !important; /* Remove right border */ +} +#seed_row button { + border-top-left-radius: 0px !important; + border-bottom-left-radius: 0px !important; + margin-left: -1px; /* Overlap slightly to merge borders */ +} +#seed_row .gr-number input { + text-align: left !important; /* Ensure number input text is left-aligned */ +} +""" + +def _generate_shape(width, height): + """Helper function to generate a random base shape.""" + mask = np.zeros((height, width), dtype=np.uint8) + shape_type = np.random.choice(['ellipse', 'polygon', 'line']) + + if shape_type == 'ellipse': + num_ellipses = np.random.randint(2, 5) + for _ in range(num_ellipses): + center_x, center_y = np.random.randint(0, width), np.random.randint(0, height) + is_elongated = np.random.rand() > 0.5 + if is_elongated: + axis_1, axis_2 = np.random.randint(width // 10, width // 2), np.random.randint(5, 20) + if np.random.rand() > 0.5: # Randomly swap axes + axis_1, axis_2 = axis_2, axis_1 + else: + axis_1, axis_2 = np.random.randint(width // 8, width // 4), np.random.randint(height // 8, height // 4) + angle = np.random.randint(0, 360) + cv2.ellipse(mask, (center_x, center_y), (axis_1, axis_2), angle, 0, 360, 255, -1) + + elif shape_type == 'polygon': + num_vertices = np.random.randint(4, 10) + vertices = np.random.randint(0, width, (num_vertices, 2)) + # Ensure vertices are ordered to form a non-self-intersecting polygon + center = np.mean(vertices, axis=0) + angles = np.arctan2(vertices[:, 1] - center[1], vertices[:, 0] - center[0]) + vertices = vertices[np.argsort(angles)] + cv2.fillPoly(mask, [vertices], 255) + + elif shape_type == 'line': + num_lines = np.random.randint(3, 8) + for _ in range(num_lines): + x1, y1 = np.random.randint(0, width), np.random.randint(0, height) + x2, y2 = np.random.randint(0, width), np.random.randint(0, height) + thickness = np.random.randint(5, 25) + cv2.line(mask, (x1, y1), (x2, y2), 255, thickness) + + return mask + +def generate_random_mask(mask_ratio_percent: float) -> Tuple[Image.Image, str]: + """ + Generates a random, complex mask with a precise area ratio. + """ + try: + mask_ratio = mask_ratio_percent / 100.0 + width, height = 512, 512 + + # 1. Generate a base shape using one of the random strategies + base_mask = _generate_shape(width, height) + + # 2. Ensure single connected component + num_labels, labels, stats, _ = cv2.connectedComponentsWithStats(base_mask, 4, cv2.CV_32S) + if num_labels <= 1: return generate_random_mask(mask_ratio_percent) # Retry if empty + largest_label = 1 + np.argmax(stats[1:, cv2.CC_STAT_AREA]) + mask = np.where(labels == largest_label, 255, 0).astype(np.uint8) + + # 3. Precisely scale the mask to the target ratio + contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) + if not contours: return generate_random_mask(mask_ratio_percent) # Retry + + cnt = max(contours, key=cv2.contourArea) + current_area = cv2.contourArea(cnt) + target_area = width * height * mask_ratio + + if current_area > 10: # Ensure base shape is not too small + scale_factor = np.sqrt(target_area / current_area) + M = cv2.moments(cnt) + cx = int(M['m10'] / M['m00']) if M['m00'] != 0 else width // 2 + cy = int(M['m01'] / M['m00']) if M['m00'] != 0 else height // 2 + + cnt_final = ((cnt - [cx, cy]) * scale_factor + [cx, cy]).astype(np.int32) + + # 4. Draw final mask and apply post-processing + final_mask = np.zeros((height, width), dtype=np.uint8) + cv2.drawContours(final_mask, [cnt_final], -1, 255, -1) + + # Add random noise/blur for more natural edges + kernel_size = np.random.randint(7, 21) // 2 * 2 + 1 + final_mask = cv2.GaussianBlur(final_mask, (kernel_size, kernel_size), 0) + _, final_mask = cv2.threshold(final_mask, np.random.randint(100, 150), 255, cv2.THRESH_BINARY) + + final_area = np.sum(final_mask > 0) + info_text = f"Mask generated successfully! Target: {mask_ratio_percent:.2f}%, Actual: {100 * final_area / (width * height):.2f}%" + + return Image.fromarray(final_mask, mode='L'), info_text + else: + return generate_random_mask(mask_ratio_percent) # Retry for better base shape + + except Exception as e: + return None, f"Error generating mask: {str(e)}" + +def load_examples(): + """Loads a hardcoded list of examples.""" + + base_dir = os.path.abspath(os.path.dirname(__file__)) + example_image_dir = os.path.join(base_dir, "example_image") + example_web_dir = os.path.join(base_dir, "example_web") + mask_dir = os.path.join(example_image_dir, "fg_mask") + default_normal_template = "a photo of a {type}" + + examples = [ + [ + "hazelnut", + default_normal_template, + "a photo of a {type} with a crack on it", + "a photo of a {type} with a large, jagged crack exposing the interior.", + 8, + os.path.join(example_image_dir, "000.png"), + os.path.join(mask_dir, "000.png"), + 14291 + ], + [ + "table", + default_normal_template, + "a photo of a {type} that is faded", + "a photo of a {type} with areas of discoloration or lightening due to prolonged sun exposure", + 8, + os.path.join(example_web_dir, "table.jpg"), + None, + 45678 + ], + [ + "road", + default_normal_template, + "a photo of a {type} with cracks", + "a photo of a {type} with visible fractures and deteriorating surface", + 7, + os.path.join(example_image_dir, "road.png"), + None, + 56789 + ] + ] + + # Verify that files exist to prevent Gradio from erroring on missing files + verified_examples = [] + for ex in examples: + image_path = ex[5] # Index adjusted for new normal_prompt_template + mask_path = ex[6] # Index adjusted + if image_path and os.path.exists(image_path): + if mask_path and not os.path.exists(mask_path): + print(f"Warning: Mask file not found for example {ex[0]}: {mask_path}. Setting mask to None.") + ex[6] = None # Index adjusted + verified_examples.append(ex) + else: + print(f"Warning: Image file not found for example {ex[0]}: {image_path}. Skipping example.") + + return verified_examples + +def get_text(key: str) -> str: + """Get text from translation dictionary""" + return localization_texts["en"].get(key, key) + +# Initialize model +print("Loading model...") +stable = RelationalAttendAndExcitePipeline.from_pretrained( + "runwayml/stable-diffusion-v1-5", + safety_checker=None +).to(device) +tokenizer = stable.tokenizer +print("Model loaded successfully!") + +def run_and_display(prompts: List[str], + controller: AttentionStore, + indices_to_alter: List[int], + init_image: Optional[Image.Image], + init_image_guidance_scale: float, + mask_image: Optional[str], + generator: torch.Generator, + run_standard_sd: bool = False, + scale_factor: int = 20, + thresholds: Dict[int, float] = {0: 0.05, 10: 0.5, 20: 0.8}, + max_iter_to_alter: int = 25, + normal_prompt: str = "", + detailed_prompt: str = "", + progress: gr.Progress = None) -> Tuple[Image.Image, torch.Tensor]: + """Run anomaly generation pipeline""" + + # Progress callback + def progress_callback(step, timestep, latents): + if progress is not None: + progress(step / NUM_DIFFUSION_STEPS, desc=f"Diffusion Step {step}/{NUM_DIFFUSION_STEPS}") + + config = RunConfig( + prompt=prompts[0], + run_standard_sd=run_standard_sd, + scale_factor=scale_factor, + thresholds=thresholds, + max_iter_to_alter=max_iter_to_alter, + n_inference_steps=NUM_DIFFUSION_STEPS, + guidance_scale=GUIDANCE_SCALE + ) + + image, image_latent = run_on_prompt_and_masked_image( + model=stable, + prompt=prompts, + controller=controller, + token_indices=indices_to_alter, + init_image=init_image, + init_image_guidance_scale=init_image_guidance_scale, + mask_image=mask_image, + seed=generator, + config=config, + normal_prompt=normal_prompt, + detailed_prompt=detailed_prompt, + callback=progress_callback, + callback_steps=1 + ) + + return image, image_latent + +def generate_anomaly_image( + type_str: str, + normal_prompt_template: str, + prompt_template: str, + detailed_prompt_template: str, + token_indices_str: str, + normal_image: Image.Image, + mask_image: Optional[Image.Image], + seed: int, + init_image_guidance_scale: float, + scale_factor: int, + threshold_0: float, + threshold_10: float, + threshold_20: float, + max_iter_to_alter: int, + use_standard_sd: bool, + progress=gr.Progress() +) -> Tuple[Image.Image, Image.Image, str]: + """Generate anomaly image main function""" + + try: + progress(0, desc="Initializing...") + + # Build prompt + prompt = prompt_template.format(type=type_str) + normal_prompt = normal_prompt_template.format(type=type_str) + detailed_prompt = detailed_prompt_template.format(type=type_str) + + # Handle guidance image + if normal_image is None: + return None, None, "Error: Please upload a normal guidance image" + + # Resize image + normal_image = normal_image.convert("RGB") + normal_image.thumbnail((512, 512)) + + # Handle mask image + mask_path = None + if mask_image is not None: + mask_path = f"temp_mask_{datetime.now().timestamp()}.png" + mask_image = mask_image.convert("L") + mask_image.thumbnail((512, 512)) + mask_image.save(mask_path) + + progress(0.05, desc="Parsing Tokens...") + + # Get token indices + indices_to_alter, token_map = get_indices_to_alter_new(stable, prompt, str(token_indices_str)) # Ensure it's a string + + # Set random seed + generator = torch.Generator(device).manual_seed(seed) + + # Create controller + controller = AttentionStore() + + # Set thresholds + thresholds = { + 0: threshold_0, + 10: threshold_10, + 20: threshold_20 + } + + # Record start time + start_time = time.time() + + # Generate image + image, image_latent = run_and_display( + prompts=[prompt], + controller=controller, + indices_to_alter=indices_to_alter, + init_image=normal_image, + init_image_guidance_scale=init_image_guidance_scale, + mask_image=mask_path, + generator=generator, + run_standard_sd=use_standard_sd, + scale_factor=scale_factor, + thresholds=thresholds, + max_iter_to_alter=max_iter_to_alter, + normal_prompt=normal_prompt, + detailed_prompt=detailed_prompt, + progress=progress + ) + + progress(0.9, desc="Generating Attention Maps...") + + # Generate attention map + attention_images = vis_utils.show_cross_attention( + attention_store=controller, + prompt=prompt, + tokenizer=tokenizer, + res=16, + from_where=("up", "down", "mid"), + indices_to_alter=indices_to_alter, + orig_image=image + ) + + # Clean up temporary files + if mask_path and os.path.exists(mask_path): + os.remove(mask_path) + + # Calculate generation time + generation_time = time.time() - start_time + + progress(1.0, desc="Ready") + + # Format token map for display + token_map_str = "\n".join([f"{idx}: {word}" for idx, word in token_map.items()]) + + info_text = f""" +Generation Successful! +Generation Time: {generation_time:.2f} seconds +Used Prompt: {prompt} +Altered Token Indices: {token_indices_str} + +--- +**Token Map:** +{token_map_str} +""" + + return image, attention_images, info_text + + except Exception as e: + traceback.print_exc() + return None, None, f"Error: {str(e)}" + +def update_prompt_previews(type_str, normal_prompt_template, prompt_template, detailed_template): + """Dynamically update the prompt preview textboxes.""" + try: + if not type_str or not type_str.strip(): + raise ValueError("Type is empty") + normal_prompt = normal_prompt_template.format(type=type_str) + anomaly_prompt = prompt_template.format(type=type_str) + detailed_prompt = detailed_template.format(type=type_str) + except (KeyError, IndexError, ValueError) as e: + normal_prompt = "Waiting for valid type..." + anomaly_prompt = f"Error: {e}" + detailed_prompt = f"Error: {e}" + return normal_prompt, anomaly_prompt, detailed_prompt + +def build_ui(): + # --- Custom CSS --- + custom_css = """ + @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap'); + .gradio-container { + font-family: 'Inter', sans-serif; + max-width: 1280px !important; + margin: auto !important; + } + .gr-button {white-space: nowrap;} + #refresh-seed-btn {max-width: 2.5em; min-width: 2.5em !important;} + .gr-group {border-radius: 10px !important; box-shadow: 0 2px 5px rgba(0,0,0,0.05) !important;} + h1, h3 {letter-spacing: -0.5px;} + """ + + default_type = "hazelnut" + default_normal_prompt_template = "a photo of a {type}" + default_prompt_template = "a photo of a {type} with a crack on it" + default_detailed_template = "a photo of a {type} with a large, jagged crack exposing the interior." + default_token_indices = "8" + default_mask_ratio = 5.0 # Corresponds to slider's initial value if it were 0-100, but it's 0.1-25 + + with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as demo: + gr.Markdown(f"# {get_text('title')}\n\n{get_text('description')}") + + with gr.Row(equal_height=False): + # --- Input Column --- + with gr.Column(scale=1): + with gr.Group(): + gr.Markdown(f"### {get_text('step1_title')}") + type_textbox = gr.Textbox( + label=get_text("type_label"), + placeholder=get_text("type_placeholder"), + value=default_type + ) + normal_prompt_template_textbox = gr.Textbox( + label=get_text("normal_prompt_template_label"), + placeholder=get_text("normal_prompt_template_placeholder"), + value=default_normal_prompt_template + ) + prompt_template_textbox = gr.Textbox( + label=get_text("prompt_template_label"), + placeholder=get_text("prompt_template_placeholder"), + value=default_prompt_template + ) + detailed_prompt_template_textbox = gr.Textbox( + label=get_text("detailed_prompt_template_label"), + placeholder=get_text("detailed_prompt_template_placeholder"), + value=default_detailed_template + ) + + with gr.Group(): + gr.Markdown(f"### {get_text('prompt_preview_header')}") + normal_prompt_preview_display = gr.Textbox(label=get_text('normal_prompt_preview_label'), interactive=False) + anomaly_prompt_preview_display = gr.Textbox(label=get_text('anomaly_prompt_preview_label'), interactive=False) + detailed_prompt_preview_display = gr.Textbox(label=get_text('detailed_prompt_preview_label'), interactive=False) + + with gr.Group(): + gr.Markdown(f"### {get_text('step2_title')}") + normal_image_input = gr.Image(label=get_text("normal_image"), type="pil") # Changed from normal_image to step2_title for label consistency + + with gr.Accordion(get_text("masking_options"), open=False): + mask_image_input = gr.Image(label=get_text("mask_image"), type="pil") + with gr.Row(): + mask_ratio_slider = gr.Slider(label=get_text("mask_ratio"), minimum=0.1, maximum=25.0, value=default_mask_ratio, step=0.1) + generate_mask_button = gr.Button(get_text("generate_mask"), variant="secondary", size="sm") + mask_info_display = gr.Textbox(label="Mask Info", visible=False, interactive=False) # Renamed from mask_info for clarity + + with gr.Accordion(get_text("advanced_settings"), open=False): + token_indices_textbox = gr.Number( + label=get_text("token_indices"), + value=int(default_token_indices) if default_token_indices else 0, # Convert default string to int + precision=0, # Integer input + step=1, # Increment/decrement by 1 + minimum=0 # Assuming token indices are non-negative + ) + with gr.Row(variant='compact'): + with gr.Row(elem_id="seed_row", variant='compact'): # Use compact variant + seed_number = gr.Number( + label=get_text("random_seed"), + value=np.random.randint(0, 2**32 - 1), + precision=0, + elem_id="seed_input", + scale=4 # Adjust scale + ) + random_seed_button = gr.Button("🎲", elem_id="random_seed_button_inline", scale=1, min_width=40) # Adjust scale and min_width + guidance_slider = gr.Slider(label=get_text("image_guidance_strength"), minimum=0.1, maximum=1.0, value=0.3, step=0.05) + scale_slider = gr.Slider(label=get_text("scale_factor"), minimum=10, maximum=100, value=20, step=5) + threshold_0_slider = gr.Slider(label=get_text("threshold_step").format(0), minimum=0.01, maximum=0.5, value=0.05, step=0.01) + threshold_10_slider = gr.Slider(label=get_text("threshold_step").format(10), minimum=0.1, maximum=0.9, value=0.5, step=0.05) + threshold_20_slider = gr.Slider(label=get_text("threshold_step").format(20), minimum=0.1, maximum=0.9, value=0.8, step=0.05) + max_iter_slider = gr.Slider(label=get_text("max_iter"), minimum=5, maximum=50, value=25, step=5) + standard_sd_checkbox = gr.Checkbox(label=get_text("use_standard_sd"), value=False) + + with gr.Row(): + clear_button = gr.Button("Clear") + generate_button = gr.Button(get_text("generate_btn"), variant="primary", scale=2) + + # --- Output Column --- + with gr.Column(scale=1): + gr.Markdown(f"### {get_text('output_results')}") + main_anomaly_image_display = gr.Image(label=get_text("generated_image"), type="pil", interactive=False) + attention_map_gallery = gr.Gallery( + label=get_text("token_attention_maps"), + columns=2, + object_fit="contain", + height=450, + elem_id="attention_gallery_centered" # For CSS centering + ) + info_textbox_display = gr.Textbox(label=get_text("generation_info"), lines=5, interactive=False) # Renamed + + gr.Markdown(f"### {get_text('quick_examples')}") + + # Define component lists for clarity and reusability + all_template_inputs = [type_textbox, normal_prompt_template_textbox, prompt_template_textbox, detailed_prompt_template_textbox] + preview_outputs = [normal_prompt_preview_display, anomaly_prompt_preview_display, detailed_prompt_preview_display] + + main_inputs = all_template_inputs + [ + token_indices_textbox, normal_image_input, mask_image_input, seed_number + ] + adv_inputs = [ + guidance_slider, scale_slider, threshold_0_slider, threshold_10_slider, + threshold_20_slider, max_iter_slider, standard_sd_checkbox + ] + generation_outputs = [main_anomaly_image_display, attention_map_gallery, info_textbox_display] + + example_loader_inputs = all_template_inputs + [token_indices_textbox, normal_image_input, mask_image_input, seed_number] + + gr.Examples( + examples=load_examples(), + inputs=example_loader_inputs, + label=None, + examples_per_page=5 + ) + + # --- Event Handlers --- + for t_input in all_template_inputs: + t_input.change(update_prompt_previews, inputs=all_template_inputs, outputs=preview_outputs, queue=False) + + demo.load(update_prompt_previews, inputs=all_template_inputs, outputs=preview_outputs, queue=False) + + generate_button.click( + fn=generate_anomaly_image, + inputs=main_inputs + adv_inputs, + outputs=generation_outputs, + api_name="generate" + ) + + def clear_all_fn(): + new_seed = np.random.randint(0, 2**32 - 1) + initial_normal_preview, initial_anomaly_preview, initial_detailed_preview = update_prompt_previews( + default_type, default_normal_prompt_template, default_prompt_template, default_detailed_template + ) + return ( + default_type, default_normal_prompt_template, default_prompt_template, default_detailed_template, + default_token_indices, None, None, default_mask_ratio, new_seed, # Main inputs (type, templates, token, images, mask_ratio, seed) + None, None, "", # Output fields (output_image, attention_map, info_textbox) + "", # mask_info_display + initial_normal_preview, initial_anomaly_preview, initial_detailed_preview # Preview fields + ) + + components_to_clear = main_inputs[:-1] + [mask_ratio_slider] + [main_inputs[-1]] + generation_outputs + [mask_info_display] + preview_outputs + # main_inputs includes seed_number at the end. mask_ratio_slider is separate. + # Order for clear_all_fn outputs: + # type_textbox, normal_prompt_template_textbox, prompt_template_textbox, detailed_prompt_template_textbox, + # token_indices_textbox, normal_image_input, mask_image_input, mask_ratio_slider, seed_number, + # output_image_display, attention_map_gallery, info_textbox_display, + # mask_info_display, + # normal_prompt_preview_display, anomaly_prompt_preview_display, detailed_prompt_preview_display + + clear_button.click( + fn=clear_all_fn, + inputs=None, + outputs=components_to_clear + ) + + random_seed_button.click(lambda: gr.update(value=np.random.randint(0, 2**32 - 1)), outputs=seed_number) + generate_mask_button.click(generate_random_mask, inputs=[mask_ratio_slider], outputs=[mask_image_input, mask_info_display]) + + return demo + +if __name__ == "__main__": + torch.cuda.empty_cache() + + app_demo = build_ui() + app_demo.queue(max_size=3) + app_demo.launch( + server_name="0.0.0.0", + server_port=7860, + share=True, + debug=False, + show_error=True, + favicon_path=None + ) \ No newline at end of file From 50d5e3e5b59ba5aff378911170e0921f89ba8881 Mon Sep 17 00:00:00 2001 From: zhiqing0205 Date: Mon, 16 Jun 2025 03:59:36 +0800 Subject: [PATCH 3/5] chore: add Python gitignore template with IDE and environment exclusions --- .gitignore | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b084f30 --- /dev/null +++ b/.gitignore @@ -0,0 +1,105 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# IDE / Editor specific files +.idea/ +.vscode/ + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# pytype static analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ \ No newline at end of file From e1c104fb4c428d514b9e1d6130669e91d7bf17f0 Mon Sep 17 00:00:00 2001 From: zhiqing0205 Date: Mon, 16 Jun 2025 04:17:57 +0800 Subject: [PATCH 4/5] docs: update reademe with web UI demo --- docs/README.md | 32 ++++++++++++++++++++++++++++++++ docs/imgs/web_ui_demo.png | Bin 0 -> 1029974 bytes 2 files changed, 32 insertions(+) create mode 100644 docs/imgs/web_ui_demo.png diff --git a/docs/README.md b/docs/README.md index 8f65127..63787b6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -215,6 +215,38 @@ Refer to the provided Jupyter notebooks for complete examples and results: ![Example Output](imgs/example.png) +## 💻 Web UI Demo + +To make anomaly generation more interactive, we provide a Gradio-based web interface. + +**Installation:** +```bash +pip install gradio +pip install huggingface_hub==0.24.5 +``` + +**How to Launch:** +```bash +python web_demo.py +``` + +This will start a local web server. Open the provided URL in your browser to access the UI. + +**Features:** +- **Interactive Prompting:** Dynamically create and preview prompts using templates. +- **Real-time Generation:** Upload a reference image and generate anomaly variations on the fly. +- **Flexible Masking:** Use your own mask or let the UI generate a random one for you. +- **Advanced Controls:** Easily tweak parameters like guidance strength, attention scaling, and random seeds. +- **Instant Visualization:** View the final image, attention maps, and generation metadata all in one place. + +*We recommend preparing an image like `imgs/web_ui_demo.png` to showcase your UI.* + +
+Web UI Demo screenshot + +![Web UI Demo](imgs/web_ui_demo.png) +
+ ## 🛠️ Todo List - [ ] Colab demo. - [ ] HuggingFace demo. diff --git a/docs/imgs/web_ui_demo.png b/docs/imgs/web_ui_demo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4dc02bbcbb7471cc4c7f1ad731fc16667f6ad99 GIT binary patch literal 1029974 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