Spaces:
Running
Running
| """ | |
| This script is the command-line entrypoint for posture model training. | |
| It loads all configs, starts the posture training pipeline, and prints final output. | |
| This is cleaner than keeping training logic inside notebooks or mixed scripts. | |
| It is also better for MLflow, DAGsHub tracking, and repeatable execution. | |
| """ | |
| from dotenv import load_dotenv | |
| load_dotenv() # ← add this BEFORE everything else | |
| import sys | |
| from pathlib import Path | |
| ROOT_DIR = Path(__file__).resolve().parents[1] | |
| if str(ROOT_DIR) not in sys.path: | |
| sys.path.append(str(ROOT_DIR)) | |
| from src.config.configuration import ConfigurationManager | |
| from src.pipeline.posture_training_pipeline import PostureTrainingPipeline | |
| from src.utils.common import create_directories, seed_everything | |
| from src.utils.logger import get_logger | |
| def main() -> None: | |
| config_manager = ConfigurationManager() | |
| project_config = config_manager.get_project_config() | |
| paths_config = config_manager.get_paths_config() | |
| posture_model_config = config_manager.get_posture_model_config() | |
| training_config = config_manager.get_training_config() | |
| create_directories( | |
| [ | |
| paths_config.logs_dir, | |
| paths_config.metrics_dir, | |
| paths_config.posture_weights_dir, | |
| ] | |
| ) | |
| seed_everything(project_config.random_seed) | |
| logger = get_logger( | |
| "train_posture_model", log_dir=paths_config.logs_dir, level="INFO" | |
| ) | |
| logger.info("Starting posture training script.") | |
| logger.info("MLflow tracking URI will be read from config or environment variable.") | |
| pipeline = PostureTrainingPipeline( | |
| paths_config=paths_config, | |
| posture_model_config=posture_model_config, | |
| training_config=training_config, | |
| log_dir=paths_config.logs_dir, | |
| log_level="INFO", | |
| ) | |
| result = pipeline.run() | |
| logger.info("Posture training script completed successfully.") | |
| logger.info("Final result summary: %s", result) | |
| if __name__ == "__main__": | |
| main() | |