diff --git a/3d-generation-pipeline/.gitignore b/3d-generation-pipeline/.gitignore index a76e70e7..f807e6e3 100644 --- a/3d-generation-pipeline/.gitignore +++ b/3d-generation-pipeline/.gitignore @@ -2,4 +2,5 @@ .env __pycache__ images/ -models/ \ No newline at end of file +models/ +logs/ \ No newline at end of file diff --git a/3d-generation-pipeline/start_pipeline.py b/3d-generation-pipeline/start_pipeline.py index 729ed2c0..b590adb0 100644 --- a/3d-generation-pipeline/start_pipeline.py +++ b/3d-generation-pipeline/start_pipeline.py @@ -1,6 +1,8 @@ import os import argparse import asyncio +import logging +import time from pathlib import Path from datetime import datetime @@ -18,6 +20,16 @@ PIPELINE_FOLDER = os.environ["PIPELINE_FOLDER"] def get_timestamp(): return datetime.now().strftime("%Y-%m-%d-%H-%M-%S") +def setup_logger(base_folder, timestamp): + log_dir = base_folder / Path("logs") + log_dir.mkdir(parents=True, exist_ok=True) + logging.basicConfig( + filename=log_dir / f"{timestamp}.log", + level=logging.INFO, + #format='%(asctime)s - %(message)s' + force=True + ) + async def main(): parser = argparse.ArgumentParser(description="Text to 3D model pipeline") @@ -34,16 +46,26 @@ async def main(): else: image_generation_prompt = input_prompt - timestamp = get_timestamp() pipeline_folder = Path(PIPELINE_FOLDER) + timestamp = get_timestamp() + setup_logger(pipeline_folder, timestamp) + time_checkpoint = time.time() + image_path = pipeline_folder / "images" / f"{timestamp}.jpg" # TODO: use Invoke AI or Cloudflare, depending on env var #text_to_image_cloudflare(image_generation_prompt, image_path) await text_to_image_invoke_ai(image_generation_prompt, image_path) + image_generation_time = time.time() - time_checkpoint + time_checkpoint = time.time() + logging.info(f"Image generation time: {round(image_generation_time, 1)} s") print(f"Generated image file: {image_path}") + model_path = pipeline_folder / "models" / timestamp model_file = image_to_3d_api(image_path, model_path) + + model_generation_time = time.time() - time_checkpoint + logging.info(f"Model generation time: {round(model_generation_time, 1)} s") print(f"Generated 3D model file: {model_file}")