MCPcopy
hub / github.com/BIT-DataLab/Edit-Banana / evaluate_and_refine

Function evaluate_and_refine

modules/refinement_processor.py:475–529  ·  view source on GitHub ↗

一键执行评估+补救的便捷函数 这个函数整合了MetricEvaluator和RefinementProcessor的完整流程。 Args: elements: 已检测的元素列表 image_path: 原始图片路径 eval_config: MetricEvaluator配置(可选) refine_config: RefinementProcessor配置(可选) Returns: 字典包含: - elements: 最终元素列

(elements: List[ElementInfo],
                        image_path: str,
                        eval_config: Dict = None,
                        refine_config: Dict = None)

Source from the content-addressed store, hash-verified

473 return result.elements
474
475def evaluate_and_refine(elements: List[ElementInfo],
476 image_path: str,
477 eval_config: Dict = None,
478 refine_config: Dict = None) -> Dict[str, Any]:
479 """
480 一键执行评估+补救的便捷函数
481
482 这个函数整合了MetricEvaluator和RefinementProcessor的完整流程。
483
484 Args:
485 elements: 已检测的元素列表
486 image_path: 原始图片路径
487 eval_config: MetricEvaluator配置(可选)
488 refine_config: RefinementProcessor配置(可选)
489
490 Returns:
491 字典包含:
492 - elements: 最终元素列表(包含原有+新增)
493 - evaluation: 评估结果字典
494 - refinement: 补救结果字典(如果执行了的话)
495
496 使用示例:
497 result = evaluate_and_refine(elements, "test.png")
498
499 print(f"评分: {result['evaluation']['overall_score']}/100")
500 print(f"新增元素: {result['refinement']['new_elements_count']}")
501 print(f"最终元素数: {len(result['elements'])}")
502 """
503 from .metric_evaluator import MetricEvaluator
504
505 # 1. 评估
506 evaluator = MetricEvaluator(eval_config)
507 context = ProcessingContext(
508 image_path=image_path,
509 elements=elements.copy()
510 )
511 eval_result = evaluator.process(context)
512
513 result = {
514 'evaluation': eval_result.metadata,
515 'refinement': None,
516 'elements': context.elements
517 }
518
519 # 2. 如果需要refinement且有问题区域
520 bad_regions = eval_result.metadata.get('bad_regions', [])
521 if eval_result.metadata.get('needs_refinement', False) and bad_regions:
522 context.intermediate_results['bad_regions'] = bad_regions
523 processor = RefinementProcessor(refine_config)
524 refine_result = processor.process(context)
525
526 result['refinement'] = refine_result.metadata
527 result['elements'] = context.elements
528
529 return result
530
531
532def refine_from_rendered_comparison(elements: List[ElementInfo],

Callers

nothing calls this directly

Calls 5

processMethod · 0.95
processMethod · 0.95
MetricEvaluatorClass · 0.85
ProcessingContextClass · 0.85
RefinementProcessorClass · 0.85

Tested by

no test coverage detected