Пример #1
0
    def test_command_through_experiment(self):
        src_path = data_file_path('small-rgb-tile.tif')
        with RVConfig.get_tmp_dir() as tmp_dir:
            cog_path = os.path.join(tmp_dir, 'cog.tif')

            e = mk.create_mock_experiment().to_builder() \
                                           .with_root_uri(tmp_dir) \
                                           .with_custom_config({
                                               'cogify': {
                                                   'key': 'test',
                                                   'config': {
                                                       'uris': [(src_path, cog_path)],
                                                       'block_size': 128
                                                   }
                                               }
                                           }) \
                                           .build()

            rv.ExperimentRunner.get_runner(rv.LOCAL).run(
                e, splits=2, commands_to_run=[rv.COGIFY])

            # Check that it's cogified
            with rasterio.open(cog_path) as ds:
                self.assertEqual(ds.block_shapes, [(128, 128), (128, 128),
                                                   (128, 128)])
                self.assertEqual(ds.overviews(1), [2, 4, 8, 16, 32])
Пример #2
0
    def test_respects_utilizes_gpu(self):
        config = self.mock_config()
        config['AWS_BATCH_job_queue'] = 'GPU_JOB_QUEUE'
        config['AWS_BATCH_job_definition'] = 'GPU_JOB_DEF'
        config['AWS_BATCH_cpu_job_queue'] = 'CPU_JOB_QUEUE'
        config['AWS_BATCH_cpu_job_definition'] = 'CPU_JOB_DEF'

        rv._registry.initialize_config(config_overrides=config)

        with RVConfig.get_tmp_dir() as tmp_dir:
            e = mk.create_mock_experiment().to_builder() \
                                           .with_root_uri(tmp_dir) \
                                           .clear_command_uris() \
                                           .build()

            runner = MockAwsBatchExperimentRunner()

            runner.run(
                e, commands_to_run=[rv.CHIP, rv.TRAIN, rv.PREDICT, rv.EVAL])

            submit_args = runner.mock_client.submit_job.call_args_list

            self.assertEqual(len(submit_args), 4)

            for args in submit_args:
                jobName, jobQueue = args[1]['jobName'], args[1]['jobQueue']

                if 'EVAL' in jobName or 'CHIP' in jobName:
                    self.assertTrue('CPU' in jobQueue)
                else:
                    self.assertTrue('GPU' in jobQueue)
    def test_accounts_for_aoi(self):
        task = rv.TaskConfig.builder(rv.CHIP_CLASSIFICATION) \
                            .with_classes(['car', 'building', 'background']) \
                            .build()

        label_source_uri = data_file_path('evaluator/cc-label-filtered.json')
        label_source = rv.LabelSourceConfig.builder(rv.CHIP_CLASSIFICATION_GEOJSON) \
                                           .with_uri(label_source_uri) \
                                           .build()

        label_store_uri = data_file_path('evaluator/cc-label-full.json')
        label_store = rv.LabelStoreConfig.builder(rv.CHIP_CLASSIFICATION_GEOJSON) \
                                         .with_uri(label_store_uri) \
                                         .build()

        source_uri = data_file_path('evaluator/cc-label-img-blank.tif')
        raster_source = rv.RasterSourceConfig.builder(rv.GEOTIFF_SOURCE) \
                                             .with_uri(source_uri) \
                                             .build()

        aoi_uri = data_file_path('evaluator/cc-label-aoi.json')
        s = rv.SceneConfig.builder() \
                          .with_id('test') \
                          .with_raster_source(raster_source) \
                          .with_label_source(label_source) \
                          .with_label_store(label_store) \
                          .with_aoi_uri(aoi_uri) \
                          .build()

        with RVConfig.get_tmp_dir() as tmp_dir:
            scene = s.create_scene(task, tmp_dir)

            output_uri = os.path.join(tmp_dir, 'eval.json')

            e = rv.EvaluatorConfig.builder(rv.CHIP_CLASSIFICATION_EVALUATOR) \
                                  .with_task(task) \
                                  .with_output_uri(output_uri) \
                                  .build()

            e.update_for_command(rv.EVAL, create_mock_experiment())

            evaluator = e.create_evaluator()

            evaluator.process([scene], tmp_dir)

            results = None
            with open(output_uri) as f:
                results = json.loads(f.read())['overall']

            for result in results:
                self.assertEqual(result['f1'], 1.0)
Пример #4
0
    def test_command_from_experiment_case_insensitive(self):
        with RVConfig.get_tmp_dir() as tmp_dir:
            uris = [('one', '1'), ('two', '2'), ('three', '3'), ('four', '4')]

            e = mk.create_mock_experiment().to_builder() \
                                           .with_root_uri(tmp_dir) \
                                           .with_custom_config({
                                               'MOCK_AUX_COMMAND': {
                                                   'key': 'mock',
                                                   'config': {
                                                       'uris': uris
                                                   }
                                               }
                                           }) \
                                           .build()

            rv.ExperimentRunner.get_runner(rv.LOCAL).run(
                e, splits=2, commands_to_run=[mk.MOCK_AUX_COMMAND])
Пример #5
0
    def test_update_for_command_and_report_io(self):
        b = rv.BackendConfig.builder(rv.TF_DEEPLAB) \
                            .with_task(self.generate_task()) \
                            .with_template(self.get_template_uri()) \
                            .with_batch_size(100) \
                            .build()

        exp_id = 'exp_id'
        training_data_uri = '/chip_uri'
        train_uri = '/train_uri'
        model_uri = '/train_uri/model'
        checkpoint_path = '/train_uri/{}.tar.gz'.format(exp_id)

        exp = create_mock_experiment()
        exp.id = exp_id
        exp.chip_uri = training_data_uri
        exp.train_uri = train_uri

        b.update_for_command(rv.CHIP, exp)
        b.update_for_command(rv.TRAIN, exp)

        self.assertEqual(b.training_data_uri, training_data_uri)
        self.assertEqual(b.model_uri, model_uri)
        self.assertEqual(b.fine_tune_checkpoint_name, exp_id)

        chip_io = rv.core.CommandIODefinition()
        b.report_io(rv.CHIP, chip_io)
        self.assertEqual(chip_io.output_uris, set([training_data_uri]))

        train_io = rv.core.CommandIODefinition()
        b.report_io(rv.TRAIN, train_io)
        self.assertEqual(train_io.input_uris, set([training_data_uri]))
        self.assertEqual(train_io.output_uris,
                         set([model_uri, checkpoint_path]))

        bundle_io = rv.core.CommandIODefinition()
        b.report_io(rv.BUNDLE, bundle_io)
        self.assertEqual(bundle_io.input_uris, set([model_uri]))