Exemple #1
0
 def _run_on_asset(self, asset):
     vmaf_fassembler = self._get_feature_assembler_instance(asset)
     vmaf_fassembler.run()
     feature_result = vmaf_fassembler.results[0]
     result_dict = {}
     result_dict.update(feature_result.result_dict.copy())  # add feature result
     result_dict[self.get_scores_key()] = feature_result.result_dict[
         STMADFeatureExtractor.get_scores_key('stmad')]  # add strred score
     del result_dict[STMADFeatureExtractor.get_scores_key('stmad')]  # delete redundant
     return Result(asset, self.executor_id, result_dict)
    def test_run_strredOpt_fextractor(self):

        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing(
        )

        self.fextractor = StrredOptFeatureExtractor([asset, asset_original],
                                                    None,
                                                    fifo_mode=True,
                                                    result_store=None)
        self.fextractor.run(parallelize=False)

        results = self.fextractor.results

        # notice that these numbers are the same with ST-RRED, since the opt version should always produce identical results
        self.assertAlmostEqual(results[0]['STRREDOpt_feature_srred_score'],
                               3.0166328541666663,
                               places=4)
        self.assertAlmostEqual(results[0]['STRREDOpt_feature_trred_score'],
                               7.338665770833333,
                               places=4)
        self.assertAlmostEqual(results[0]['STRREDOpt_feature_strred_score'],
                               22.336452104611016,
                               places=4)
        self.assertAlmostEqual(results[1]['STRREDOpt_feature_srred_score'],
                               0.0,
                               places=4)
        self.assertAlmostEqual(results[1]['STRREDOpt_feature_trred_score'],
                               0.0,
                               places=4)
        self.assertAlmostEqual(results[1]['STRREDOpt_feature_strred_score'],
                               0.0,
                               places=4)
    def test_run_strred_fextractor(self):

        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing(
        )

        self.fextractor = StrredFeatureExtractor([asset, asset_original],
                                                 None,
                                                 fifo_mode=True,
                                                 result_store=None)
        self.fextractor.run(parallelize=False)

        results = self.fextractor.results

        self.assertAlmostEqual(results[0]['STRRED_feature_srred_score'],
                               3.0166328541666663,
                               places=4)
        self.assertAlmostEqual(results[0]['STRRED_feature_trred_score'],
                               7.338665770833333,
                               places=4)
        self.assertAlmostEqual(results[0]['STRRED_feature_strred_score'],
                               22.336452104611016,
                               places=4)
        self.assertAlmostEqual(
            results[0]['STRRED_feature_strred_all_same_score'],
            22.138060270044175,
            places=4)
        self.assertAlmostEqual(results[1]['STRRED_feature_srred_score'],
                               0.0,
                               places=4)
        self.assertAlmostEqual(results[1]['STRRED_feature_trred_score'],
                               0.0,
                               places=4)
        self.assertAlmostEqual(results[1]['STRRED_feature_strred_score'],
                               0.0,
                               places=4)
    def test_run_stmad_fextractor(self):

        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing()

        self.fextractor = STMADFeatureExtractor(
            [asset, asset_original],
            None, fifo_mode=True,
            result_store=None
        )
        self.fextractor.run(parallelize=False)

        results = self.fextractor.results

        self.assertAlmostEqual(results[0].result_dict['STMAD_feature_smad_all_same_scores'][0], 2.889626, places=4)
        self.assertAlmostEqual(results[0].result_dict['STMAD_feature_tmad_all_same_scores'][0], 5.649214, places=4)
        self.assertAlmostEqual(results[0].result_dict['STMAD_feature_stmad_all_same_scores'][0], 4.983220, places=4)

        self.assertAlmostEqual(results[1].result_dict['STMAD_feature_smad_all_same_scores'][0], 1.000000, places=4)
        self.assertAlmostEqual(results[1].result_dict['STMAD_feature_tmad_all_same_scores'][0], 0.000000, places=4)
        self.assertAlmostEqual(results[1].result_dict['STMAD_feature_stmad_all_same_scores'][0], -1.818097, places=4)
    def test_run_SpEED_matlab_fextractor(self):

        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing()

        self.fextractor = SpEEDMatlabFeatureExtractor(
            [asset, asset_original],
            None, fifo_mode=True,
            result_store=None
        )

        self.fextractor.run(parallelize=False)
        results = self.fextractor.results
        # S-SpEED assertions on first frame
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_sspeed_2_scores'][0], 13.510418, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_sspeed_3_scores'][0], 7.211881, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_sspeed_4_scores'][0], 4.921501, places=4)
        # T-SpEED assertions on third frame
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_tspeed_2_scores'][2], 32.994605, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_tspeed_3_scores'][2], 22.404285, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_tspeed_4_scores'][2], 15.233468, places=4)
class MatlabFeatureExtractorTest(unittest.TestCase):

    def tearDown(self):
        if hasattr(self, 'fextractor'):
            self.fextractor.remove_results()
        pass

    def test_run_strred_fextractor(self):
        print 'test on running STRRED feature extractor, no parallelization...'
        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing()

        self.fextractor = StrredFeatureExtractor(
            [asset, asset_original],
            None, fifo_mode=True,
            result_store=None
        )
        self.fextractor.run(parallelize=False)

        results = self.fextractor.results

        self.assertAlmostEqual(results[0]['STRRED_feature_srred_score'], 3.0166328541666663, places=4)
        self.assertAlmostEqual(results[0]['STRRED_feature_trred_score'], 7.338665770833333, places=4)
        self.assertAlmostEqual(results[0]['STRRED_feature_strred_score'], 22.336452104611016, places=4)
        self.assertAlmostEqual(results[0]['STRRED_feature_strred_all_same_score'], 22.138060270044175, places=4)
        self.assertAlmostEqual(results[1]['STRRED_feature_srred_score'], 0.0, places=4)
        self.assertAlmostEqual(results[1]['STRRED_feature_trred_score'], 0.0, places=4)
        self.assertAlmostEqual(results[1]['STRRED_feature_strred_score'], 0.0, places=4)

    def test_run_strredOpt_fextractor(self):
        print 'test on running STRREDopt feature extractor, no parallelization...'
        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing()

        self.fextractor = StrredOptFeatureExtractor(
            [asset, asset_original],
            None, fifo_mode=True,
            result_store=None
        )
        self.fextractor.run(parallelize=False)

        results = self.fextractor.results

        # notice that these numbers are the same with ST-RRED, since the opt version should always produce identical results
        self.assertAlmostEqual(results[0]['STRREDOpt_feature_srred_score'], 3.0166328541666663, places=4)
        self.assertAlmostEqual(results[0]['STRREDOpt_feature_trred_score'], 7.338665770833333, places=4)
        self.assertAlmostEqual(results[0]['STRREDOpt_feature_strred_score'], 22.336452104611016, places=4)
        self.assertAlmostEqual(results[1]['STRREDOpt_feature_srred_score'], 0.0, places=4)
        self.assertAlmostEqual(results[1]['STRREDOpt_feature_trred_score'], 0.0, places=4)
        self.assertAlmostEqual(results[1]['STRREDOpt_feature_strred_score'], 0.0, places=4)

    def test_run_SpEED_matlab_fextractor(self):

        print 'test on running SpEED (Matlab) feature extractor, no paralellization...'
        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing()

        self.fextractor = SpEEDMatlabFeatureExtractor(
            [asset, asset_original],
            None, fifo_mode=True,
            result_store=None
        )

        self.fextractor.run(parallelize=False)
        results = self.fextractor.results
        # S-SpEED assertions on first frame
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_sspeed_2_scores'][0], 13.510418, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_sspeed_3_scores'][0], 7.211881, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_sspeed_4_scores'][0], 4.921501, places=4)
        # T-SpEED assertions on third frame
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_tspeed_2_scores'][2], 32.994605, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_tspeed_3_scores'][2], 22.404285, places=4)
        self.assertAlmostEqual(results[0].result_dict[self.fextractor.TYPE + '_tspeed_4_scores'][2], 15.233468, places=4)

    @unittest.skip("Need signal processing toolbox in Matlab.")
    def test_run_stmad_fextractor(self):

        print 'test on running STMAD (Matlab) feature extractor, no parallelization...'
        ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing()

        self.fextractor = STMADFeatureExtractor(
            [asset, asset_original],
            None, fifo_mode=True,
            result_store=None
        )
        self.fextractor.run(parallelize=False)

        results = self.fextractor.results

        self.assertAlmostEqual(results[0].result_dict['STMAD_feature_smad_all_same_scores'][0], 2.889626, places=4)
        self.assertAlmostEqual(results[0].result_dict['STMAD_feature_tmad_all_same_scores'][0], 5.649214, places=4)
        self.assertAlmostEqual(results[0].result_dict['STMAD_feature_stmad_all_same_scores'][0], 4.983220, places=4)

        self.assertAlmostEqual(results[1].result_dict['STMAD_feature_smad_all_same_scores'][0], 1.000000, places=4)
        self.assertAlmostEqual(results[1].result_dict['STMAD_feature_tmad_all_same_scores'][0], 0.000000, places=4)
        self.assertAlmostEqual(results[1].result_dict['STMAD_feature_stmad_all_same_scores'][0], -1.818097, places=4)