| | |
| |
|
| | import json |
| | import os |
| |
|
| | from sam3.agent.agent_core import agent_inference |
| |
|
| |
|
| | def run_single_image_inference( |
| | image_path, |
| | text_prompt, |
| | llm_config, |
| | send_generate_request, |
| | call_sam_service, |
| | output_dir="agent_output", |
| | debug=False, |
| | ): |
| | """Run inference on a single image with provided prompt""" |
| |
|
| | llm_name = llm_config["name"] |
| |
|
| | if not os.path.exists(image_path): |
| | raise FileNotFoundError(f"Image file not found: {image_path}") |
| |
|
| | |
| | os.makedirs(output_dir, exist_ok=True) |
| |
|
| | |
| | image_basename = os.path.splitext(os.path.basename(image_path))[0] |
| | prompt_for_filename = text_prompt.replace("/", "_").replace(" ", "_") |
| |
|
| | base_filename = f"{image_basename}_{prompt_for_filename}_agent_{llm_name}" |
| | output_json_path = os.path.join(output_dir, f"{base_filename}_pred.json") |
| | output_image_path = os.path.join(output_dir, f"{base_filename}_pred.png") |
| | agent_history_path = os.path.join(output_dir, f"{base_filename}_history.json") |
| |
|
| | |
| | if os.path.exists(output_json_path): |
| | print(f"Output JSON {output_json_path} already exists. Skipping.") |
| | return |
| |
|
| | print(f"{'-'*30} Starting SAM 3 Agent Session... {'-'*30} ") |
| | agent_history, final_output_dict, rendered_final_output = agent_inference( |
| | image_path, |
| | text_prompt, |
| | send_generate_request=send_generate_request, |
| | call_sam_service=call_sam_service, |
| | output_dir=output_dir, |
| | debug=debug, |
| | ) |
| | print(f"{'-'*30} End of SAM 3 Agent Session... {'-'*30} ") |
| |
|
| | final_output_dict["text_prompt"] = text_prompt |
| | final_output_dict["image_path"] = image_path |
| |
|
| | |
| | json.dump(final_output_dict, open(output_json_path, "w"), indent=4) |
| | json.dump(agent_history, open(agent_history_path, "w"), indent=4) |
| | rendered_final_output.save(output_image_path) |
| |
|
| | print(f"\n✅ Successfully processed single image!") |
| | print(f"Output JSON: {output_json_path}") |
| | print(f"Output Image: {output_image_path}") |
| | print(f"Agent History: {agent_history_path}") |
| | return output_image_path |
| |
|