kidney-classifier / src /cnnClassifier /config /configuration.py
Sentoz's picture
Deploy KidneyDL CT Scan Classifier
3e93e14 verified
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,
)