RL-Project/Fetch-Reinforcement_learning_Project
0
1# <-- this must come first, before any mujoco / gym imports2import os3os.environ["MUJOCO_GL"] = "osmesa"4 5 6import gradio as gr7import wandb8import requests9from PIL import Image10from io import BytesIO11 12# Connect to W&B13api = wandb.Api()14 15# Replace this with your correct run path16ENTITY = "jarrett-defreitas-university-of-rhode-island" # your wandb username or team17PROJECT = "pickup-and-place"18RUN_ID = "trr5oagz" # NOT the display name; the ID like "3xi2sld8"19 20run = api.run(f"{ENTITY}/{PROJECT}/{RUN_ID}")21 22# Collect all images and metrics23logged_images = []24logged_scalars = []25 26# Scan all rows of logged history27for row in run.scan_history():28 for key, val in row.items():29 # Handle images correctly30 if isinstance(val, list):31 for item in val:32 if isinstance(item, wandb.data_types.Image):33 logged_images.append((key, item.url))34 elif isinstance(val, wandb.data_types.Image):35 logged_images.append((key, val.url))36 37 # Handle scalars (numbers like loss, accuracy)38 if isinstance(val, (int, float)):39 logged_scalars.append((key, val))40 41# Debug: show what was found42print("Logged Images:", logged_images)43print("Logged Scalars:", logged_scalars)44 45# --------------------------------------46# 3. Prepare Dropdown Choices47# --------------------------------------48 49image_keys = [key for key, _ in logged_images]50scalar_keys = [key for key, _ in logged_scalars]51 52# --------------------------------------53# 4. Define viewer functions54# --------------------------------------55 56# View image by selected key57def view_image(selected_key):58 for key, url in logged_images:59 if key == selected_key:60 response = requests.get(url)61 if response.status_code == 200:62 return Image.open(BytesIO(response.content))63 else:64 return None65 return None66 67# View scalar (number) by selected key68def view_scalar(selected_key):69 for key, value in logged_scalars:70 if key == selected_key:71 return f"{key}: {value}"72 return "Not found"73 74# --------------------------------------75# 5. Build the Gradio App76# --------------------------------------77 78with gr.Blocks() as demo:79 gr.Markdown("# ๐ WandB Run Viewer")80 gr.Markdown("View images and metrics logged to a specific W&B run.")81 82 with gr.Tab("Logged Images"):83 img_selector = gr.Dropdown(choices=image_keys, label="Select an Image Key")84 img_display = gr.Image()85 86 img_selector.change(fn=view_image, inputs=img_selector, outputs=img_display)87 88 with gr.Tab("Logged Scalars"):89 scalar_selector = gr.Dropdown(choices=scalar_keys, label="Select a Scalar Metric")90 scalar_display = gr.Textbox()91 92 scalar_selector.change(fn=view_scalar, inputs=scalar_selector, outputs=scalar_display)93 94demo.launch(share=True)95 