def __init__( self, image_dir: str, job_dir: str, epochs_train_dense: typing.Union[int, str] = EPOCHS_TRAIN_DENSE, epochs_train_all: typing.Union[int, str] = EPOCHS_TRAIN_ALL, learning_rate_dense: typing.Union[float, str] = LEARNING_RATE_DENSE, learning_rate_all: typing.Union[float, str] = LEARNING_RATE_ALL, batch_size: typing.Union[int, str] = BATCH_SIZE, dropout_rate: typing.Union[float, str] = DROPOUT_RATE, base_model_name: str = BASE_MODEL_NAME, loss: str = LOSS, **kwargs, ) -> None: self.image_dir = Path(image_dir).resolve() self.job_dir = Path(job_dir).resolve() self.logger = get_logger(__name__, self.job_dir) self.samples_train = load_json(self.job_dir / 'train_samples.json') self.samples_val = load_json(self.job_dir / 'val_samples.json') self.class_mapping = load_json(self.job_dir / 'class_mapping.json') self.n_classes = len(self.class_mapping) self.epochs_train_dense = int(epochs_train_dense) self.epochs_train_all = int(epochs_train_all) self.learning_rate_dense = float(learning_rate_dense) self.learning_rate_all = float(learning_rate_all) self.batch_size = int(batch_size) self.dropout_rate = float(dropout_rate) self.base_model_name = base_model_name self.loss = loss self.use_multiprocessing, self.workers = use_multiprocessing()
plt.style.use('ggplot') from typing import List, Union, Tuple, Any from pathlib import Path from sklearn.metrics import confusion_matrix, accuracy_score, classification_report from vis.visualization import visualize_cam from imageatm.handlers.image_classifier import ImageClassifier from imageatm.handlers.data_generator import ValDataGenerator from imageatm.utils.io import load_json from imageatm.utils.images import load_image from imageatm.utils.logger import get_logger from imageatm.utils.tf_keras import use_multiprocessing, load_model BATCH_SIZE = 16 BASE_MODEL_NAME = 'MobileNet' USE_MULTIPROCESSING, WORKERS = use_multiprocessing() TYPE_IMAGE_LIST = List[List[Tuple[int, np.array, dict]]] # used for type hinting class Evaluation: """Calculates performance metrics for trained models. Loads the best model (validation accuracy) from *models* directory in job directory. All metrics and graphs are based on *test_samples.json* in job directory. Attributes: image_dir: Path of image directory. job_dir: Path to job directory with samples. batch_size: Number of images per batch (default 64).
def test__use_multiprocessing_false(self, mock): use_multi, num_worker = use_multiprocessing() assert use_multi == False assert num_worker == 1
def test__use_multiprocessing_true(self, mock1, mock2): use_multi, num_worker = use_multiprocessing() assert use_multi == True assert num_worker == 4711