Beispiel #1
0
 def test_table_calc_results(self):
     self.table.rows = [
         Row([IsNotNone(), IsGreatThan(0)],
             [Result(2), Result(0)]),
         Row([IsNone(), IsEqual(0)], [Result(10), Result(1)]),
     ]
     self.assertEqual(self.table.calc([3, 2]), [2, 0])
     self.assertEqual(self.table.calc([None, 0]), [10, 1])
Beispiel #2
0
    def _run_on_asset(self, asset):
        # Override Executor._run_on_asset(self, asset), which runs a
        # FeatureAssembler, collect a feature vector, run
        # TrainTestModel.predict() on it, and return a Result object
        # (in this case, both Executor._run_on_asset(self, asset) and
        # QualityRunner._read_result(self, asset) get bypassed.
        vmaf_fassembler = self._get_vmaf_feature_assembler_instance(asset)
        vmaf_fassembler.run()
        feature_result = vmaf_fassembler.results[0]
        model = self._load_model(asset)
        xs = model.get_per_unit_xs_from_a_result(feature_result)

        if self.optional_dict is not None and 'disable_clip_score' in self.optional_dict:
            disable_clip_score = self.optional_dict['disable_clip_score']
        else:
            disable_clip_score = False

        if self.optional_dict is not None and 'enable_transform_score' in self.optional_dict:
            enable_transform_score = self.optional_dict[
                'enable_transform_score']
        else:
            enable_transform_score = False

        ys_pred = self.predict_with_model(
            model,
            xs,
            disable_clip_score=disable_clip_score,
            enable_transform_score=enable_transform_score)
        result_dict = {}
        result_dict.update(feature_result.result_dict)  # add feature result
        result_dict[self.get_scores_key()] = ys_pred  # add quality score
        return Result(asset, self.executor_id, result_dict)
Beispiel #3
0
    def _run_on_asset(self, asset):
        # Override Executor._run_on_asset(self, asset), which runs a
        # FeatureAssembler, collect a feature vector, run
        # TrainTestModel.predict() on it, and return a Result object
        # (in this case, both Executor._run_on_asset(self, asset) and
        # QualityRunner._read_result(self, asset) get bypassed.

        vmaf_fassembler = self._get_vmaf_feature_assembler_instance(asset)
        vmaf_fassembler.run()
        feature_result = vmaf_fassembler.results[0]

        xs = TrainTestModel.get_perframe_xs_from_result(feature_result)

        model = self._load_model()

        ys_pred = model.predict(xs)

        # 'score_clip'
        ys_pred = self.clip_score(model, ys_pred)

        result_dict = {}
        # add all feature result
        result_dict.update(feature_result.result_dict)
        # add quality score
        result_dict[self.get_scores_key()] = ys_pred

        return Result(asset, self.executor_id, result_dict)
Beispiel #4
0
    def _run_on_asset(self, asset):
        # Override Executor._run_on_asset(self, asset)
        vmaf_fassembler = self._get_vmaf_feature_assembler_instance(asset)
        vmaf_fassembler.run()
        feature_result = vmaf_fassembler.results[0]
        result_dict = {
            self.get_scores_key(): feature_result[VmafFeatureExtractor.get_scores_key(self.FEATURE_NAME)]
        }

        return Result(asset, self.executor_id, result_dict)
Beispiel #5
0
 def _run_on_asset(self, asset):
     # Override Executor._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[
         MsSsimFeatureExtractor.get_scores_key('ms_ssim')] # add ssim score
     del result_dict[MsSsimFeatureExtractor.get_scores_key('ms_ssim')] # delete redundant
     return Result(asset, self.executor_id, result_dict)
Beispiel #6
0
 def start_threads(self, url):
     node = Match(url)
     node_ratio = MatchRatio(url, self.ratio_percents)
     node_result = Result(url)
     node.start()
     node.join()
     #  Здесь сделать request кодов
     xhash, id_sport, id_match, id_version = node.return_keys()
     node_ratio.add_keys(xhash, id_sport, id_match, id_version)
     node_result.add_keys(xhash, id_sport, id_match)
     node_ratio.start()
     node_result.start()
     node.add_data(node_ratio, node_result)
     return node
Beispiel #7
0
    def _run_on_asset(self, asset):
        # Override Executor._run_on_asset(self, asset), which runs a
        # FeatureAssembler, collect a feature vector, run
        # TrainTestModel.predict() on it, and return a Result object
        # (in this case, both Executor._run_on_asset(self, asset) and
        # QualityRunner._read_result(self, asset) get bypassed.

        vmaf_fassembler = self._get_vmaf_feature_assembler_instance(asset)
        vmaf_fassembler.run()
        feature_result = vmaf_fassembler.results[0]

        # =====================================================================

        # SVR predict
        model = self.svmutil.svm_load_model(self.SVM_MODEL_FILE)

        ordered_scaled_scores_list = []
        for scores_key in self.SVM_MODEL_ORDERED_SCORES_KEYS:
            scaled_scores = self._rescale(
                feature_result[scores_key],
                self.FEATURE_RESCALE_DICT[scores_key])
            ordered_scaled_scores_list.append(scaled_scores)

        scores = []
        for score_vector in zip(*ordered_scaled_scores_list):
            vif, adm, ansnr, motion = score_vector
            xs = [[vif, adm, ansnr, motion]]
            score = self.svmutil.svm_predict([0], xs, model)[0][0]
            score = self._post_correction(motion, score)
            scores.append(score)

        result_dict = {}
        # add all feature result
        result_dict.update(feature_result.result_dict)
        # add quality score
        result_dict[self.get_scores_key()] = scores

        return Result(asset, self.executor_id, result_dict)
Beispiel #8
0
 def extract(self,
             response: requests.Response,
             img_num,
             soup=None) -> Optional[Result]:
     data = response.text
     start_end = re.search(pattern="var msg_title = .*?    var msg_link = ",
                           string=data,
                           flags=re.S)
     if not start_end:
         return Empty
     title = ""
     description = ""
     img = []
     for i in start_end.group().split("\n"):
         text = i.strip()
         if text.startswith("var msg_title"):
             title = text.split(" = ", maxsplit=1)[-1][1:-2]
         elif text.startswith("var msg_desc"):
             description = text.split(" = ", maxsplit=1)[-1][1:-2]
         elif len(img) < img_num and text.startswith("var msg_cdn_url"):
             img.append(Img(url=text.split(" = ", maxsplit=1)[-1][1:-2]))
         elif len(img) < img_num and text.startswith("var cdn_url_1_1"):
             img.append(Img(url=text.split(" = ", maxsplit=1)[-1][1:-2]))
         elif len(img) < img_num and text.startswith("var cdn_url_235_1"):
             img.append(Img(url=text.split(" = ", maxsplit=1)[-1][1:-2]))
         else:
             pass
     if img_num > 0 and len(img) < 1:
         img.append(
             Img(url=
                 "https://res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png",
                 width=180,
                 height=180))
     return Result(title=title,
                   keywords=None,
                   description=description,
                   img=img,
                   limit_img_num=img_num)
Beispiel #9
0
    def _run_on_asset(self, asset):
        # Override VmafQualityRunner._run_on_asset(self, asset), by adding
        # additional local explanation info.
        vmaf_fassembler = self._get_vmaf_feature_assembler_instance(asset)
        vmaf_fassembler.run()
        feature_result = vmaf_fassembler.results[0]
        model = self._load_model(asset)
        xs = model.get_per_unit_xs_from_a_result(feature_result)
        ys_pred = self.predict_with_model(model, xs)

        if self.optional_dict2 is not None and \
           'explainer' in self.optional_dict2:
            explainer = self.optional_dict2['explainer']
        else:
            explainer = LocalExplainer()

        exps = explainer.explain(model, xs)
        result_dict = {}
        result_dict.update(feature_result.result_dict)  # add feature result
        result_dict[self.get_scores_key()] = ys_pred  # add quality score
        result_dict[
            self.get_explanations_key()] = exps  # add local explanations
        return Result(asset, self.executor_id, result_dict)
Beispiel #10
0
 def _read_result(self, asset):
     result = {}
     result.update(self._get_feature_scores(asset))
     executor_id = self.executor_id
     return Result(asset, executor_id, result)
Beispiel #11
0
 def _read_result(self, asset):
     result = {}
     result.update(self._get_quality_scores(asset))
     return Result(asset, self.executor_id, result)
Beispiel #12
0
            try:
                to = 10 if self.engine.getOption('http-proxy') is None else 20
                response = urlopen(req, timeout=to)
            except HTTPError, e:
                self._addError(e.code, target.getAbsoluteUrl())
                return
            except URLError, e:
                self._addError(e.reason, target.getAbsoluteUrl())
                return
            except:
                self._addError('Unknown', target.getAbsoluteUrl())
                return
            else:
                result = self.processResponse(response.read().lower(), pl)
                for r in result:
                    self.results.append(Result(target, k, pl, r))

    def _checkStoredInjections(self):
        for r in self.results:
            # At this state injections in Result obj are not
            # compacted yet so it will only be 1st injected param
            url, data = r.target.getPayloadedUrl(r.first_param, "")
            
            # In case of proxy 
            if self.engine.getOption('http-proxy') is not None:
                proxy = ProxyHandler({'http': self.engine.getOption('http-proxy')})
                opener = build_opener(proxy)
                install_opener(opener)
            
            # Some headers
            if self.engine.getOption('ua') is not None: