From e4f9423ca6d99a76d571c5113b7b8e468d804964 Mon Sep 17 00:00:00 2001 From: Henri Sellis Date: Sun, 19 Oct 2025 12:17:34 +0300 Subject: [PATCH] passing user prompt to pipeline script as cmd argument --- .../images/2025-10-19-12-14-46.jpg | 3 + .../notebooks/subprocess_test.ipynb | 93 ++++++++++++++++++- 3d-generation-pipeline/start_pipeline.py | 37 +++++++- 3 files changed, 127 insertions(+), 6 deletions(-) create mode 100644 3d-generation-pipeline/images/2025-10-19-12-14-46.jpg diff --git a/3d-generation-pipeline/images/2025-10-19-12-14-46.jpg b/3d-generation-pipeline/images/2025-10-19-12-14-46.jpg new file mode 100644 index 00000000..77404abe --- /dev/null +++ b/3d-generation-pipeline/images/2025-10-19-12-14-46.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0342bd74f24bbfbb5f7ee69977e423ec930a58f36c5ab0849090fad68e5f6b8c +size 367697 diff --git a/3d-generation-pipeline/notebooks/subprocess_test.ipynb b/3d-generation-pipeline/notebooks/subprocess_test.ipynb index f9cc173a..b500f3f2 100644 --- a/3d-generation-pipeline/notebooks/subprocess_test.ipynb +++ b/3d-generation-pipeline/notebooks/subprocess_test.ipynb @@ -25,21 +25,96 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "9419e692", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "STDOUT:\n", + " Device used: cuda\n", + "After Remesh 9998 19996\n", + "\n", + "STDERR:\n", + " D:\\users\\henrisel\\stable-fast-3d\\.venv\\lib\\site-packages\\timm\\models\\layers\\__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers\n", + " warnings.warn(f\"Importing from {__name__} is deprecated, please import via timm.layers\", FutureWarning)\n", + "\n", + " 0%| | 0/1 [00:00\n", + " mesh, glob_dict = model.run_image(\n", + " File \"D:\\users\\henrisel\\stable-fast-3d\\sf3d\\system.py\", line 286, in run_image\n", + " meshes, global_dict = self.generate_mesh(\n", + " File \"D:\\users\\henrisel\\stable-fast-3d\\sf3d\\system.py\", line 369, in generate_mesh\n", + " rast = self.baker.rasterize(\n", + " File \"D:\\users\\henrisel\\stable-fast-3d\\.venv\\lib\\site-packages\\texture_baker\\baker.py\", line 28, in rasterize\n", + " return torch.ops.texture_baker_cpp.rasterize(\n", + " File \"D:\\users\\henrisel\\stable-fast-3d\\.venv\\lib\\site-packages\\torch\\_ops.py\", line 1243, in __call__\n", + " return self._op(*args, **kwargs)\n", + "NotImplementedError: Could not run 'texture_baker_cpp::rasterize' with arguments from the 'CUDA' backend. This could be because the operator doesn't exist for this backend, or was omitted during the selective/custom build process (if using custom build). If you are a Facebook employee using PyTorch on mobile, please visit https://fburl.com/ptmfixes for possible resolutions. 'texture_baker_cpp::rasterize' is only available for these backends: [CPU, Meta, BackendSelect, Python, FuncTorchDynamicLayerBackMode, Functionalize, Named, Conjugate, Negative, ZeroTensor, ADInplaceOrView, AutogradOther, AutogradCPU, AutogradCUDA, AutogradXLA, AutogradMPS, AutogradXPU, AutogradHPU, AutogradLazy, AutogradMTIA, AutogradMAIA, AutogradMeta, Tracer, AutocastCPU, AutocastMTIA, AutocastMAIA, AutocastXPU, AutocastMPS, AutocastCUDA, FuncTorchBatched, BatchedNestedTensor, FuncTorchVmapMode, Batched, VmapMode, FuncTorchGradWrapper, PythonTLSSnapshot, FuncTorchDynamicLayerFrontMode, PreDispatch, PythonDispatcher].\n", + "\n", + "CPU: registered at texture_baker\\csrc\\baker.cpp:543 [kernel]\n", + "Meta: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\MetaFallbackKernel.cpp:23 [backend fallback]\n", + "BackendSelect: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\BackendSelectFallbackKernel.cpp:3 [backend fallback]\n", + "Python: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:194 [backend fallback]\n", + "FuncTorchDynamicLayerBackMode: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\DynamicLayer.cpp:479 [backend fallback]\n", + "Functionalize: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\FunctionalizeFallbackKernel.cpp:375 [backend fallback]\n", + "Named: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\NamedRegistrations.cpp:7 [backend fallback]\n", + "Conjugate: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\ConjugateFallback.cpp:17 [backend fallback]\n", + "Negative: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\native\\NegateFallback.cpp:18 [backend fallback]\n", + "ZeroTensor: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\ZeroTensorFallback.cpp:86 [backend fallback]\n", + "ADInplaceOrView: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:104 [backend fallback]\n", + "AutogradOther: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:63 [backend fallback]\n", + "AutogradCPU: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:67 [backend fallback]\n", + "AutogradCUDA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:75 [backend fallback]\n", + "AutogradXLA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:87 [backend fallback]\n", + "AutogradMPS: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:95 [backend fallback]\n", + "AutogradXPU: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:71 [backend fallback]\n", + "AutogradHPU: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:108 [backend fallback]\n", + "AutogradLazy: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:91 [backend fallback]\n", + "AutogradMTIA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:79 [backend fallback]\n", + "AutogradMAIA: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:83 [backend fallback]\n", + "AutogradMeta: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\VariableFallbackKernel.cpp:99 [backend fallback]\n", + "Tracer: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\torch\\csrc\\autograd\\TraceTypeManual.cpp:294 [backend fallback]\n", + "AutocastCPU: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:322 [backend fallback]\n", + "AutocastMTIA: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:466 [backend fallback]\n", + "AutocastMAIA: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:504 [backend fallback]\n", + "AutocastXPU: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:542 [backend fallback]\n", + "AutocastMPS: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:209 [backend fallback]\n", + "AutocastCUDA: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\autocast_mode.cpp:165 [backend fallback]\n", + "FuncTorchBatched: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\LegacyBatchingRegistrations.cpp:731 [backend fallback]\n", + "BatchedNestedTensor: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\LegacyBatchingRegistrations.cpp:758 [backend fallback]\n", + "FuncTorchVmapMode: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\VmapModeRegistrations.cpp:27 [backend fallback]\n", + "Batched: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\LegacyBatchingRegistrations.cpp:1075 [backend fallback]\n", + "VmapMode: fallthrough registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\VmapModeRegistrations.cpp:33 [backend fallback]\n", + "FuncTorchGradWrapper: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\TensorWrapper.cpp:210 [backend fallback]\n", + "PythonTLSSnapshot: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:202 [backend fallback]\n", + "FuncTorchDynamicLayerFrontMode: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\functorch\\DynamicLayer.cpp:475 [backend fallback]\n", + "PreDispatch: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:206 [backend fallback]\n", + "PythonDispatcher: registered at C:\\actions-runner\\_work\\pytorch\\pytorch\\pytorch\\aten\\src\\ATen\\core\\PythonFallbackKernel.cpp:198 [backend fallback]\n", + "\n", + "\n", + "Return Code: 1\n" + ] + } + ], "source": [ "import subprocess\n", "\n", + "MODEL_FOLDER = r\"D:\\users\\henrisel\\stable-fast-3d\"\n", + "PROJECT_FOLDER = r\"D:\\users\\henrisel\\DeltaVR3DModelGeneration\\3d-generation-pipeline\"\n", + "\n", "# Path to the Python interpreter in the other virtual environment\n", - "venv_python = r\"/path/to/other/venv/bin/python\" # On Windows: r\"C:\\path\\to\\other\\venv\\Scripts\\python.exe\"\n", + "venv_python = MODEL_FOLDER + r\"\\.venv\\Scripts\\python.exe\"\n", "\n", "# Path to the .py file you want to run\n", - "script_path = r\"/path/to/your_script.py\"\n", + "script_path = MODEL_FOLDER + r\"\\run.py\"\n", "\n", "# Optional: arguments to pass to the script\n", - "args = [\"arg1\", \"arg2\"]\n", + "args = [MODEL_FOLDER + r\"\\demo_files\\examples\\chair1.png\", \"--output-dir\", PROJECT_FOLDER + r\"\\images\"]\n", "\n", "# Build the command\n", "command = [venv_python, script_path] + args\n", @@ -56,6 +131,14 @@ "except Exception as e:\n", " print(f\"Error occurred: {e}\")\n" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee480ba6", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/3d-generation-pipeline/start_pipeline.py b/3d-generation-pipeline/start_pipeline.py index c3468779..9e2ab9b9 100644 --- a/3d-generation-pipeline/start_pipeline.py +++ b/3d-generation-pipeline/start_pipeline.py @@ -1,6 +1,7 @@ import os import base64 import requests +import argparse from datetime import datetime from dotenv import load_dotenv @@ -66,10 +67,44 @@ def refine_text_prompt(prompt): data = response.json() return data["result"]["response"] +def image_to_3d(image_path, output_path): + import subprocess + + MODEL_FOLDER = r"D:\users\henrisel\stable-fast-3d" + + venv_python = MODEL_FOLDER + r"\.venv\Scripts\python.exe" + script_path = MODEL_FOLDER + r"\run.py" + + args = [image_path, "--output-dir", output_path] + command = [venv_python, script_path] + args + + try: + # Run the subprocess + result = subprocess.run(command, capture_output=True, text=True) + + # Print output and errors + print("STDOUT:\n", result.stdout) + print("STDERR:\n", result.stderr) + print("Return Code:", result.returncode) + + except Exception as e: + print(f"Error occurred: {e}") + def main(): - user_prompt = "Give epic sword" + parser = argparse.ArgumentParser(description="Text to 3D model pipeline") + parser.add_argument("--prompt", type=str, required=True, help="User text prompt") + args = parser.parse_args() + + user_prompt = args.prompt print(f"User prompt: {user_prompt}") refined_prompt = refine_text_prompt(user_prompt) print(f"Refined prompt: {refined_prompt}") image_path = text_to_image(refined_prompt, get_timestamp()) print(f"Generated image file: {image_path}") + output_path = r"\models" + image_to_3d(image_path, output_path) + print(f"Generated 3D model file: {output_path}") + + +if __name__ == "__main__": + main()