def __init__(self, batch_size, input_shape, json_path, classes, num_parallel_calls=2, prefetch_size=2): self.batch_size = batch_size self.input_shape = input_shape self.json_path = json_path self.num_parallel_calls = num_parallel_calls self.prefetch_size = prefetch_size ObjectDetectorJson.init_cache(self.json_path, cache_type='NONE', classes=classes) dataset, self.dataset_size = ObjectDetectorJson.create_dataset( self.json_path, classes=classes) _, self.transform_param = MobileNetSSD.create_transform_parameters( *input_shape[:2]) self.transformer = AnnotatedDataTransformer(self.transform_param, is_training=False) print('Total evaluation steps: {}'.format( math.ceil(self.dataset_size / self.batch_size))) transform_fn = lambda value: ObjectDetectorJson.transform_fn( value, self.transformer) map_fn = lambda value: tf.py_func(transform_fn, [value], (tf.float32, tf.string)) self.dataset = dataset.map(map_fn, num_parallel_calls=num_parallel_calls) self.dataset = self.dataset.batch( self.batch_size).prefetch(prefetch_size)
def __init__(self, batch_size, input_shape, json_path, cache_type='NONE', classes=['bg'], fill_with_current_image_mean=True, num_parallel_calls=4, prefetch_size=16): self.batch_size = batch_size self.input_shape = input_shape self.json_path = json_path self.cache_type = cache_type self.num_parallel_calls = num_parallel_calls self.prefetch_size = prefetch_size self.classes = classes ObjectDetectorJson.init_cache(self.json_path, cache_type, classes=classes) self.train_dataset, self.dataset_size = ObjectDetectorJson.create_dataset( self.json_path, classes) self.train_transform_param, _ = MobileNetSSD.create_transform_parameters( input_shape[0], input_shape[1], fill_with_current_image_mean) self.train_transformer = AnnotatedDataTransformer( self.train_transform_param, is_training=True)
def sample_data(json_path, num_samples, input_shape, classes, seed=666): if num_samples == 0: return None data, _ = ObjectDetectorJson.json_iterator(json_path, classes) data = [x for x in data()] # data = ObjectDetectorJson.convert_coco_to_toolbox_format(COCO(json_path), classes) ObjectDetectorJson.init_cache(json_path, cache_type='NONE', classes=classes) rng = random.Random(seed) selected_items = rng.sample(range(len(data)), num_samples) _, transform_param = MobileNetSSD.create_transform_parameters(*input_shape[:2]) transformer = AnnotatedDataTransformer(transform_param, is_training=False) transform_fn = lambda value: ObjectDetectorJson.transform_fn(value, transformer, add_original_image=True) return [transform_fn(data[i]) for i in selected_items]