def test_run_parallel_moment_noref_fextractor(self): print( 'test on running Moment noref feature extractor on NorefAssets in parallel...' ) ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing( ) fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, delete_workdir=True, result_store=None, ) self.fextractors = [fextractor] fextractor.run(parallelize=True) results = fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207)
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor_with_noref_asset_notyuv(self): print 'test on running Moment noref feature extractor on NorefAssets ' \ '(non-YUV)...' dis_path = VmafConfig.test_resource_path("mp4", "Seeking_10_288_375.mp4") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'yuv_type': 'notyuv', 'quality_width': 720, 'quality_height': 480, }) self.fextractor = MomentNorefFeatureExtractor( [asset], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 63.763580381944436, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 5158.9407083526221, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1084.1635630076041, places=4)
def test_run_parallel_moment_noref_fextractor(self): print 'test on running Moment noref feature extractor on NorefAssets in parallel...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'width':576, 'height':324}) asset_original = NorefAsset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), dis_path=ref_path, asset_dict={'width':576, 'height':324}) fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, delete_workdir=True, result_store=None, ) self.fextractors = [fextractor] fextractor.run(parallelize=True) results = fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207)
def test_explain_train_test_model(self): model_class = SklearnRandomForestTrainTestModel train_dataset_path = VmafConfig.test_resource_path('test_image_dataset_diffdim.py') train_dataset = import_python_file(train_dataset_path) train_assets = read_dataset(train_dataset) fextractor = MomentNorefFeatureExtractor( train_assets, None, fifo_mode=True, delete_workdir=True, result_store=None, optional_dict=None, optional_dict2=None, ) fextractor.run(parallelize=True) self.features = fextractor.results xys = model_class.get_xys_from_results(self.features[:7]) model = model_class({'norm_type':'normalize', 'random_state':0}, None) model.train(xys) np.random.seed(0) xs = model_class.get_xs_from_results(self.features[7:]) explainer = LocalExplainer(neighbor_samples=1000) exps = explainer.explain(model, xs) self.assertAlmostEqual(exps['feature_weights'][0, 0], -0.12416, places=4) self.assertAlmostEqual(exps['feature_weights'][1, 0], 0.00076, places=4) self.assertAlmostEqual(exps['feature_weights'][0, 1], -0.20931, places=4) self.assertAlmostEqual(exps['feature_weights'][1, 1], -0.01245, places=4) self.assertAlmostEqual(exps['feature_weights'][0, 2], 0.02322, places=4) self.assertAlmostEqual(exps['feature_weights'][1, 2], 0.03673, places=4) self.assertAlmostEqual(exps['features'][0, 0], 107.73501, places=4) self.assertAlmostEqual(exps['features'][1, 0], 35.81638, places=4) self.assertAlmostEqual(exps['features'][0, 1], 13691.23881, places=4) self.assertAlmostEqual(exps['features'][1, 1], 1611.56764, places=4) self.assertAlmostEqual(exps['features'][0, 2], 2084.40542, places=4) self.assertAlmostEqual(exps['features'][1, 2], 328.75389, places=4) self.assertAlmostEqual(exps['features_normalized'][0, 0], -0.65527, places=4) self.assertAlmostEqual(exps['features_normalized'][1, 0], -3.74922, places=4) self.assertAlmostEqual(exps['features_normalized'][0, 1], -0.68872, places=4) self.assertAlmostEqual(exps['features_normalized'][1, 1], -2.79586, places=4) self.assertAlmostEqual(exps['features_normalized'][0, 2], 0.08524, places=4) self.assertAlmostEqual(exps['features_normalized'][1, 2], -1.32625, places=4) self.assertEqual(exps['feature_names'], ['Moment_noref_feature_1st_score', 'Moment_noref_feature_2nd_score', 'Moment_noref_feature_var_score'] )
def test_explain_train_test_model(self): model_class = SklearnRandomForestTrainTestModel train_dataset_path = VmafConfig.test_resource_path('test_image_dataset_diffdim.py') train_dataset = import_python_file(train_dataset_path) train_assets = read_dataset(train_dataset) fextractor = MomentNorefFeatureExtractor( train_assets, None, fifo_mode=True, delete_workdir=True, result_store=None, optional_dict=None, optional_dict2=None, ) fextractor.run(parallelize=True) self.features = fextractor.results xys = model_class.get_xys_from_results(self.features[:7]) model = model_class({'norm_type':'normalize', 'random_state':0}, None) model.train(xys) np.random.seed(0) xs = model_class.get_xs_from_results(self.features[7:]) explainer = LocalExplainer(neighbor_samples=1000) exps = explainer.explain(model, xs) self.assertAlmostEqual(exps['feature_weights'][0, 0], -0.12416, places=4) self.assertAlmostEqual(exps['feature_weights'][1, 0], 0.00076, places=4) self.assertAlmostEqual(exps['feature_weights'][0, 1], -0.20931, places=4) self.assertAlmostEqual(exps['feature_weights'][1, 1], -0.01245, places=4) self.assertAlmostEqual(exps['feature_weights'][0, 2], 0.02322, places=4) self.assertAlmostEqual(exps['feature_weights'][1, 2], 0.03673, places=4) self.assertAlmostEqual(exps['features'][0, 0], 107.73501, places=4) self.assertAlmostEqual(exps['features'][1, 0], 35.81638, places=4) self.assertAlmostEqual(exps['features'][0, 1], 13691.23881, places=4) self.assertAlmostEqual(exps['features'][1, 1], 1611.56764, places=4) self.assertAlmostEqual(exps['features'][0, 2], 2084.40542, places=4) self.assertAlmostEqual(exps['features'][1, 2], 328.75389, places=4) self.assertAlmostEqual(exps['features_normalized'][0, 0], -0.65527, places=4) self.assertAlmostEqual(exps['features_normalized'][1, 0], -3.74922, places=4) self.assertAlmostEqual(exps['features_normalized'][0, 1], -0.68872, places=4) self.assertAlmostEqual(exps['features_normalized'][1, 1], -2.79586, places=4) self.assertAlmostEqual(exps['features_normalized'][0, 2], 0.08524, places=4) self.assertAlmostEqual(exps['features_normalized'][1, 2], -1.32625, places=4) self.assertEqual(exps['feature_names'], ['Moment_noref_feature_1st_score', 'Moment_noref_feature_2nd_score', 'Moment_noref_feature_var_score'] )
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor_with_noref_asset_notyuv(self): print 'test on running Moment noref feature extractor on NorefAssets ' \ '(non-YUV)...' dis_path = VmafConfig.test_resource_path("mp4", "Seeking_10_288_375.mp4") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'yuv_type': 'notyuv', 'quality_width': 720, 'quality_height': 480, }) self.fextractor = MomentNorefFeatureExtractor( [asset], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 63.763580381944436, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 5158.9407083526221, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1084.1635630076041, places=4) def test_noref_moment_fextractor_frames(self): print 'test on running Moment noref feature extractor on Assets with frames...' dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'width':576, 'height':324, 'start_frame':2, 'end_frame':2, }) self.fextractor = MomentNorefFeatureExtractor( [asset], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 62.315495327503427, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4888.7623296039092, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1005.5413716918079, places=4)
def test_run_parallel_moment_noref_fextractor(self): print 'test on running Moment noref feature extractor on NorefAssets in parallel...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'width': 576, 'height': 324 }) asset_original = NorefAsset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), dis_path=ref_path, asset_dict={ 'width': 576, 'height': 324 }) fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, delete_workdir=True, result_store=None, ) self.fextractors = [fextractor] fextractor.run(parallelize=True) results = fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207)
def setUp(self): train_dataset_path = VmafConfig.test_resource_path('test_image_dataset_diffdim.py') train_dataset = import_python_file(train_dataset_path) train_assets = read_dataset(train_dataset) runner = MomentNorefFeatureExtractor( train_assets, None, fifo_mode=True, delete_workdir=True, result_store=None, optional_dict=None, optional_dict2=None, ) runner.run(parallelize=True) self.features = runner.results
def setUp(self): train_dataset_path = VmafConfig.test_resource_path('test_image_dataset_diffdim.py') train_dataset = import_python_file(train_dataset_path) train_assets = read_dataset(train_dataset) runner = MomentNorefFeatureExtractor( train_assets, None, fifo_mode=True, delete_workdir=True, result_store=None, optional_dict=None, optional_dict2=None, ) runner.run(parallelize=True) self.features = runner.results
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass @unittest.skipIf('apps' in VmafExternalConfig.ffmpeg_path(), 'ffmpeg should not be in apps') def test_noref_moment_fextractor_with_noref_asset_notyuv_gaussianblur( self): dis_path = VmafConfig.test_resource_path("mp4", "Seeking_10_288_375.mp4") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'yuv_type': 'notyuv', 'quality_width': 720, 'quality_height': 480, 'gblur_cmd': 'sigma=0.01:steps=1', }) self.fextractor = MomentNorefFeatureExtractor([asset], None, fifo_mode=False, result_store=None) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 63.25902145061728, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 5123.705637307099, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1113.0346638689637, places=4)
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor_with_noref_asset_notyuv_gaussianblur( self): dis_path = VmafConfig.test_resource_path("mp4", "Seeking_10_288_375.mp4") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'yuv_type': 'notyuv', 'quality_width': 720, 'quality_height': 480, 'gblur_cmd': 'sigma=0.01:steps=1', }) self.fextractor = MomentNorefFeatureExtractor([asset], None, fifo_mode=True, result_store=None) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 63.273978452932084, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 5124.572291840278, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1111.9962740092349, places=4)
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass @unittest.skipIf( sys.version_info > (3, ), reason="TODO python3: unclear how YuvReader is supposed to work") def test_noref_moment_fextractor_with_noref_asset_notyuv(self): print( 'test on running Moment noref feature extractor on NorefAssets (non-YUV)...' ) dis_path = VmafConfig.test_resource_path("mp4", "Seeking_10_288_375.mp4") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'yuv_type': 'notyuv', 'quality_width': 720, 'quality_height': 480, }) self.fextractor = MomentNorefFeatureExtractor([asset], None, fifo_mode=True, result_store=None) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 63.776442013888882, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 5194.9118422453694, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1118.4952858425261, places=4) @unittest.skipIf( sys.version_info > (3, ), reason="TODO python3: unclear how YuvReader is supposed to work") def test_noref_moment_fextractor_frames(self): print( 'test on running Moment noref feature extractor on Assets with frames...' ) dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'width': 576, 'height': 324, 'start_frame': 2, 'end_frame': 2, }) self.fextractor = MomentNorefFeatureExtractor([asset], None, fifo_mode=True, result_store=None) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 62.315495327503427, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4888.7623296039092, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1005.5413716918079, places=4)
class ParallelNorefFeatureExtractorTestNew(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor(self): print 'test on running Moment noref feature extractor on Assets...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = Asset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), ref_path=ref_path, dis_path=dis_path, asset_dict={ 'width': 576, 'height': 324 }) asset_original = Asset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), ref_path=ref_path, dis_path=ref_path, asset_dict={ 'width': 576, 'height': 324 }) self.fextractor = MomentNorefFeatureExtractor([asset, asset_original], None, fifo_mode=True, result_store=None) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_noref_moment_fextractor_with_noref_asset(self): print 'test on running Moment noref feature extractor on NorefAssets...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'width': 576, 'height': 324 }) asset_original = NorefAsset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), dis_path=ref_path, asset_dict={ 'width': 576, 'height': 324 }) self.fextractor = MomentNorefFeatureExtractor([asset, asset_original], None, fifo_mode=True, result_store=None) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207)
class ParallelNorefFeatureExtractorTestNew(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor(self): print 'test on running Moment noref feature extractor on Assets...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = Asset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), ref_path=ref_path, dis_path=dis_path, asset_dict={'width':576, 'height':324}) asset_original = Asset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), ref_path=ref_path, dis_path=ref_path, asset_dict={'width':576, 'height':324}) self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_noref_moment_fextractor_with_noref_asset(self): print 'test on running Moment noref feature extractor on NorefAssets...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'width':576, 'height':324}) asset_original = NorefAsset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), dis_path=ref_path, asset_dict={'width':576, 'height':324}) self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207)
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_noref_moment_fextractor_with_noref_asset(self): ref_path, dis_path, asset, asset_original = set_default_576_324_noref_videos_for_testing() self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_run_noref_brisque_fextractor(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = BrisqueNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_alpha23_score'], 0.7640625000000005, places=4) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_alpha13_score'], 0.6322500000000002, places=4) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_N34_score'], -0.007239876204980851, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_alpha23_score'], 0.8644583333333339, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_alpha13_score'], 0.82906250000000103, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_N34_score'], -0.0092448158862212092, places=4) def test_run_noref_niqe_fextractor(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = NiqeNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=False, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha23_score'], 0.8168807870370377, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha13_score'], 0.6949641203703707, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha_m1_score'], 2.0924143518518536, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_blbr1_score'], 0.72958634325785898, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha23_score'], 0.89566087962963026, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha13_score'], 0.85539583333333391, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha_m1_score'], 2.7192025462962985, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_blbr1_score'], 0.98723051960738684, places=4) def test_run_noref_niqe_fextractor_train(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = NiqeNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=False, result_store=None, optional_dict={'mode': 'train'}, optional_dict2=None, ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha23_score'], 0.97259000000000073, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha13_score'], 0.80907000000000051, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha_m1_score'], 2.6135250000000019, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_blbr1_score'], 0.9150526409258144, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha23_score'], 0.97447727272727347, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha13_score'], 0.89120909090909162, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha_m1_score'], 3.0300909090909118, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_blbr1_score'], 1.0508255408831713, places=4) def test_run_noref_niqe_fextractor_with_patch_size(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = NiqeNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=False, result_store=None, optional_dict={'patch_size': 48}, optional_dict2=None, ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha23_score'], 0.8430156250000006, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha13_score'], 0.71714583333333359, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_alpha_m1_score'], 2.2195590277777795, places=4) self.assertAlmostEqual(results[0]['NIQE_noref_feature_blbr1_score'], 0.74061215376929412, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha23_score'], 0.9144918981481488, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha13_score'], 0.87132291666666728, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_alpha_m1_score'], 2.8193532986111136, places=4) self.assertAlmostEqual(results[1]['NIQE_noref_feature_blbr1_score'], 0.99354006450609134, places=4) def test_noref_siti_fextractor_with_noref_asset(self): ref_path, dis_path, asset, asset_original = set_default_576_324_noref_videos_for_testing() self.fextractor = SiTiNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['SITI_noref_feature_si_score'], 79.27042052471928) self.assertAlmostEqual(results[0]['SITI_noref_feature_ti_score'], 13.580963712032636) self.assertAlmostEqual(results[1]['SITI_noref_feature_si_score'], 83.46568284569439) self.assertAlmostEqual(results[1]['SITI_noref_feature_ti_score'], 15.570422677885475) perc75 = partial(np.percentile, q=75) [result.set_score_aggregate_method(perc75) for result in results] self.assertAlmostEqual(results[0]['SITI_noref_feature_si_score'], 80.01507800178135) self.assertAlmostEqual(results[0]['SITI_noref_feature_ti_score'], 14.71399321502522) self.assertAlmostEqual(results[1]['SITI_noref_feature_si_score'], 84.00886573293045) self.assertAlmostEqual(results[1]['SITI_noref_feature_ti_score'], 16.862281850395433) perc100 = partial(np.percentile, q=100) [result.set_score_aggregate_method(perc100) for result in results] self.assertAlmostEqual(results[0]['SITI_noref_feature_si_score'], 82.84005099011819) self.assertAlmostEqual(results[0]['SITI_noref_feature_ti_score'], 17.60733889303054) self.assertAlmostEqual(results[1]['SITI_noref_feature_si_score'], 85.28055474796807) self.assertAlmostEqual(results[1]['SITI_noref_feature_ti_score'], 19.500837587311423) def test_noref_moment_fextractor_proc(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() callback_dict = { 'dis_proc_callback': 'identity', } asset.asset_dict.update(callback_dict) asset_original.asset_dict.update(callback_dict) self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207)
class NorefFeatureExtractorTest(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor_with_noref_asset_notyuv(self): dis_path = VmafConfig.test_resource_path("mp4", "Seeking_10_288_375.mp4") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'yuv_type': 'notyuv', 'quality_width': 720, 'quality_height': 480, }) self.fextractor = MomentNorefFeatureExtractor( [asset], None, fifo_mode=False, # TODO python3: fifo mode fails in py3, needs fix result_store=None) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 63.776442013888882, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 5194.9118422453694, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1118.4952858425261, places=4) def test_noref_moment_fextractor_frames(self): dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={ 'width': 576, 'height': 324, 'start_frame': 2, 'end_frame': 2, }) self.fextractor = MomentNorefFeatureExtractor( [asset], None, fifo_mode=False, # TODO python3: fifo mode fails in py3, needs fix result_store=None) self.fextractor.run() results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 62.315495327503427, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4888.7623296039092, places=4) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1005.5413716918079, places=4)
class ParallelNorefFeatureExtractorTestNew(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_noref_moment_fextractor_with_noref_asset(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_run_parallel_brisque_noref_fextractor(self): ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() self.fextractors, results = run_executors_in_parallel( BrisqueNorefFeatureExtractor, [asset, asset_original], fifo_mode=True, delete_workdir=True, parallelize=True, result_store=None, ) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_alpha23_score'], 0.7640625000000005, places=4) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_alpha13_score'], 0.6322500000000002, places=4) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_N34_score'], -0.007239876204980851, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_alpha23_score'], 0.8644583333333339, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_alpha13_score'], 0.82906250000000103, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_N34_score'], -0.0092448158862212092, places=4)
class ParallelNorefFeatureExtractorTestNew(unittest.TestCase): def tearDown(self): if hasattr(self, 'fextractor'): self.fextractor.remove_results() pass def test_noref_moment_fextractor(self): print 'test on running Moment noref feature extractor on Assets...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = Asset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), ref_path=ref_path, dis_path=dis_path, asset_dict={'width':576, 'height':324}) asset_original = Asset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), ref_path=ref_path, dis_path=ref_path, asset_dict={'width':576, 'height':324}) self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_noref_moment_fextractor_with_noref_asset(self): print 'test on running Moment noref feature extractor on NorefAssets...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'width':576, 'height':324}) asset_original = NorefAsset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), dis_path=ref_path, asset_dict={'width':576, 'height':324}) self.fextractor = MomentNorefFeatureExtractor( [asset, asset_original], None, fifo_mode=True, result_store=None ) self.fextractor.run(parallelize=True) results = self.fextractor.results self.assertAlmostEqual(results[0]['Moment_noref_feature_1st_score'], 61.332006624999984) self.assertAlmostEqual(results[0]['Moment_noref_feature_2nd_score'], 4798.659574041666) self.assertAlmostEqual(results[0]['Moment_noref_feature_var_score'], 1036.8371843488285) self.assertAlmostEqual(results[1]['Moment_noref_feature_1st_score'], 59.788567297525134) self.assertAlmostEqual(results[1]['Moment_noref_feature_2nd_score'], 4696.668388042271) self.assertAlmostEqual(results[1]['Moment_noref_feature_var_score'], 1121.519917231207) def test_run_parallel_brisque_noref_fextractor(self): print 'test on running BRISQUE noref feature extractor on NorefAssets in parallel...' ref_path = VmafConfig.test_resource_path("yuv", "src01_hrc00_576x324.yuv") dis_path = VmafConfig.test_resource_path("yuv", "src01_hrc01_576x324.yuv") asset = NorefAsset(dataset="test", content_id=0, asset_id=0, workdir_root=VmafConfig.workdir_path(), dis_path=dis_path, asset_dict={'width':576, 'height':324}) asset_original = NorefAsset(dataset="test", content_id=0, asset_id=1, workdir_root=VmafConfig.workdir_path(), dis_path=ref_path, asset_dict={'width':576, 'height':324}) self.fextractors, results = run_executors_in_parallel( BrisqueNorefFeatureExtractor, [asset, asset_original], fifo_mode=True, delete_workdir=True, parallelize=True, result_store=None, ) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_alpha23_score'], 0.78020833333333384, places=4) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_alpha13_score'], 0.6322500000000002, places=4) self.assertAlmostEqual(results[0]['BRISQUE_noref_feature_N34_score'], -0.0071207420215536723, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_alpha23_score'], 0.87156250000000046, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_alpha13_score'], 0.82906250000000103, places=4) self.assertAlmostEqual(results[1]['BRISQUE_noref_feature_N34_score'], -0.0092448158862212092, places=4)