Spaces:
Runtime error
Runtime error
| #!/usr/bin/python3 | |
| # -*- coding: utf-8 -*- | |
| """ | |
| Event handlers for IC-Custom application. | |
| """ | |
| import gradio as gr | |
| def setup_event_handlers( | |
| # UI components | |
| input_mask_mode, image_target_1, image_target_2, undo_target_seg_button, | |
| custmization_mode, dilate_button, erode_button, bounding_box_button, | |
| mask_gallery, md_input_mask_mode, md_target_image, md_mask_operation, | |
| md_prompt, md_submit, result_gallery, image_target_state, mask_target_state, | |
| seg_ref_mode, image_reference_ori_state, move_to_center, | |
| image_reference, image_reference_rmbg_state, | |
| # Functions | |
| change_input_mask_mode, change_custmization_mode, change_seg_ref_mode, | |
| init_image_target_1, init_image_target_2, init_image_reference, | |
| get_point, undo_seg_points, get_brush, | |
| # VLM buttons (UI components) | |
| vlm_generate_btn, vlm_polish_btn, | |
| # VLM functions | |
| vlm_auto_generate, vlm_auto_polish, | |
| dilate_mask, erode_mask, bounding_box, | |
| run_model, | |
| # Other components | |
| selected_points, prompt, | |
| use_background_preservation, background_blend_threshold, seed, | |
| num_images_per_prompt, guidance, true_gs, num_steps, aspect_ratio, | |
| submit_button, | |
| # extra state | |
| eg_idx, | |
| ): | |
| """Setup all event handlers for the application.""" | |
| # Change input mask mode: precise mask or user-drawn mask | |
| input_mask_mode.change( | |
| change_input_mask_mode, | |
| [input_mask_mode, custmization_mode], | |
| [image_target_1, image_target_2, undo_target_seg_button] | |
| ) | |
| # Change customization mode: pos-aware or pos-free | |
| custmization_mode.change( | |
| change_custmization_mode, | |
| [custmization_mode, input_mask_mode], | |
| [image_target_1, image_target_2, undo_target_seg_button, dilate_button, | |
| erode_button, bounding_box_button, md_input_mask_mode, | |
| md_target_image, md_mask_operation, md_prompt, md_submit, input_mask_mode, mask_gallery] | |
| ) | |
| # Remove background for reference image | |
| seg_ref_mode.change( | |
| change_seg_ref_mode, | |
| [seg_ref_mode, image_reference_ori_state, move_to_center], | |
| [image_reference, image_reference_rmbg_state] | |
| ) | |
| # Initialize components only on user upload (not programmatic updates) | |
| image_target_1.upload( | |
| init_image_target_1, | |
| [image_target_1], | |
| [image_target_state, selected_points, prompt, mask_target_state, mask_gallery, | |
| result_gallery, use_background_preservation, background_blend_threshold, seed, | |
| num_images_per_prompt, guidance, true_gs, num_steps, aspect_ratio] | |
| ) | |
| image_target_2.upload( | |
| init_image_target_2, | |
| [image_target_2], | |
| [image_target_state, selected_points, prompt, mask_target_state, mask_gallery, | |
| result_gallery, use_background_preservation, background_blend_threshold, seed, | |
| num_images_per_prompt, guidance, true_gs, num_steps, aspect_ratio] | |
| ) | |
| image_reference.upload( | |
| init_image_reference, | |
| [image_reference], | |
| [image_reference_ori_state, image_reference_rmbg_state, image_target_state, | |
| mask_target_state, prompt, mask_gallery, result_gallery, image_target_1, | |
| image_target_2, selected_points, input_mask_mode, seg_ref_mode, move_to_center, | |
| use_background_preservation, background_blend_threshold, seed, | |
| num_images_per_prompt, guidance, true_gs, num_steps, aspect_ratio] | |
| ) | |
| # SAM for image_target_1 | |
| image_target_1.select( | |
| get_point, | |
| [image_target_state, selected_points], | |
| [image_target_1, mask_target_state, mask_gallery], | |
| ) | |
| undo_target_seg_button.click( | |
| undo_seg_points, | |
| [image_target_state, selected_points], | |
| [image_target_1, mask_target_state, mask_gallery] | |
| ) | |
| # Brush for image_target_2 | |
| image_target_2.change( | |
| get_brush, | |
| [image_target_2], | |
| [mask_target_state, mask_gallery], | |
| ) | |
| # VLM auto generate | |
| vlm_generate_btn.click( | |
| vlm_auto_generate, | |
| [image_target_state, image_reference_ori_state, mask_target_state, custmization_mode], | |
| [prompt] | |
| ) | |
| # VLM auto polish | |
| vlm_polish_btn.click( | |
| vlm_auto_polish, | |
| [prompt, custmization_mode], | |
| [prompt] | |
| ) | |
| # Mask operations | |
| dilate_button.click( | |
| dilate_mask, | |
| [mask_target_state, image_target_state], | |
| [mask_target_state, mask_gallery] | |
| ) | |
| erode_button.click( | |
| erode_mask, | |
| [mask_target_state, image_target_state], | |
| [mask_target_state, mask_gallery] | |
| ) | |
| bounding_box_button.click( | |
| bounding_box, | |
| [mask_target_state, image_target_state], | |
| [mask_target_state, mask_gallery] | |
| ) | |
| # Run function | |
| ips = [ | |
| image_target_state, mask_target_state, image_reference_ori_state, | |
| image_reference_rmbg_state, prompt, seed, guidance, true_gs, num_steps, | |
| num_images_per_prompt, use_background_preservation, background_blend_threshold, | |
| aspect_ratio, custmization_mode, seg_ref_mode, input_mask_mode, | |
| ] | |
| submit_button.click( | |
| fn=run_model, | |
| inputs=ips, | |
| outputs=[result_gallery, seed, prompt], | |
| show_progress=True, | |
| ) | |