from cnnClassifier.constants import CONFIG_FILE_PATH, PARAMS_FILE_PATH from cnnClassifier.utils.common import read_yaml, create_directories from cnnClassifier.entity.config_entity import DataIngestionConfig, PrepareBaseModelConfig, TrainingConfig, EvaluationConfig from pathlib import Path class ConfigurationManager: def __init__( self, config_filepath=CONFIG_FILE_PATH, params_filepath=PARAMS_FILE_PATH ): self.config = read_yaml(config_filepath) self.params = read_yaml(params_filepath) create_directories([self.config.artifacts_root]) def get_data_ingestion_config(self) -> DataIngestionConfig: config = self.config.data_ingestion create_directories([config.root_dir]) return DataIngestionConfig( root_dir=config.root_dir, source_URL=config.source_URL, local_data_file=config.local_data_file, unzip_dir=config.unzip_dir ) def get_prepare_base_model_config(self) -> PrepareBaseModelConfig: config = self.config.prepare_base_model create_directories([config.root_dir]) return PrepareBaseModelConfig( root_dir=config.root_dir, base_model_path=config.base_model_path, updated_base_model_path=config.updated_base_model_path, params_image_size=self.params.IMAGE_SIZE, params_learning_rate=self.params.LEARNING_RATE, params_include_top=self.params.INCLUDE_TOP, params_weights=self.params.WEIGHTS, params_classes=self.params.CLASSES ) def get_training_config(self) -> TrainingConfig: training = self.config.training prepare_base_model = self.config.prepare_base_model training_data = Path(self.config.data_ingestion.unzip_dir) / "kidney-ct-scan-image" create_directories([training.root_dir]) return TrainingConfig( root_dir=training.root_dir, trained_model_path=training.trained_model_path, updated_base_model_path=prepare_base_model.updated_base_model_path, training_data=training_data, params_epochs=self.params.EPOCHS, params_batch_size=self.params.BATCH_SIZE, params_is_augmentation=self.params.AUGMENTATION, params_image_size=self.params.IMAGE_SIZE, params_learning_rate=self.params.LEARNING_RATE, ) def get_evaluation_config(self) -> EvaluationConfig: config = self.config.evaluation return EvaluationConfig( path_of_model=config.path_of_model, training_data=config.training_data, all_params=dict(config.all_params), mlflow_uri=config.mlflow_uri, params_image_size=self.params.IMAGE_SIZE, params_batch_size=self.params.BATCH_SIZE, )