from vis_common import * import vis_utils as v_uts import io_utils as io_uts from datasets import Dataset import pandas as pd import gradio as gr # install gradio of 3.14 os.system("echo $BYTED_HOST_IP") # Load the dataset change to your local path root = "/mnt/bn/datacompv6/data/chat_edit/assets/ChatEdit/" # method = "parquet" # prompt_version = "prompt_0" # append = "" # parquet_file = f'{root}/data/{prompt_version}.parquet' # df = pd.read_parquet(parquet_file) jsonl_file = f"{root}/full_val.jsonl" method = "raw_file" print("reading data") df = [] items = io_uts.load_jsonl(jsonl_file) print("reading data finished", len(items)) all_prompts = ['prompt_0', 'prompt_1'] def find_key(name): for prompt in all_prompts: if prompt in name: return prompt def display_data(index, prompt_version): try: key = find_key(prompt_version) if method == "parquet": row = df.iloc[index] image = v_uts.decode64(row['image'])[:, :, ::-1] # Ensure this returns a PIL image prompt = row[key] return image, prompt elif method == "raw_file": image_file = f"{root}/{prompt_version}/{index:03}.png" image = cv2.imread(image_file)[:, :, ::-1] prompt = items[index][key] else: return "Invalid method", "" except IndexError: return "No more data", "" except Exception as e: return f"Error: {str(e)}", "" def search_and_display(prompt_key, prompt_version): try: key = find_key(prompt_version) if method == "parquet": results = df[df['image_id'].astype(str).str.contains(prompt_key, case=False)] if not results.empty: image = v_uts.decode64(results.iloc[0]['image'])[:, :, ::-1] # Ensure this returns a PIL image prompt = results.iloc[0][key] return image, prompt elif method == "raw_file": index = int(prompt_key) image_file = f"{root}/{prompt_version}/{index:03}.png" assert os.path.exists(image_file), f"Image {image_file} file not found" image = cv2.imread(image_file)[:, :, ::-1] prompt = items[index][key] return image, prompt else: return "No image found", "No matching prompt found" except Exception as e: return f"Error: {str(e)}", "" def combined_function(prompt_key=None, prompt_name=None): print(prompt_key, prompt_name) return search_and_display(prompt_key, prompt_name) max_len = len(df) # Set max_len to the length of the dataframe iface = gr.Interface( fn=combined_function, inputs=[ gr.inputs.Textbox(default="", label="Or, enter image_id to search, 0-292"), gr.Radio(["prompt_0_sd", "prompt_0_hd", "prompt_1_sd", "prompt_1_hd"]), ], outputs=[ gr.outputs.Image(label="Image", type="pil"), gr.outputs.Textbox(label="Prompt") ], examples=[ ["1", "prompt_0_sd"], ["2", "prompt_1_hd"], # Adjust these examples as per your dataset ], allow_flagging=False, ) # iface.queue(concurrency_count=1) # iface.launch(debug=True, share=True, inline=False, enable_queue=True, server_name="0.0.0.0") iface.queue().launch(debug=True, share=True, inline=False, enable_queue=True, server_name="[::]")