Download code_inference/all_in.py from huawei-ad/code_hw_object_v8: direct link, hf CLI and curl.
- Browser
- Download file 2.58 kB
-
https://huggingface.co/huawei-ad/code_hw_object_v8/resolve/main/code_inference/all_in.py
- Command line
-
hf download hf://huawei-ad/code_hw_object_v8/code_inference/all_in.py
-
curl -L -o all_in.py https://huggingface.co/huawei-ad/code_hw_object_v8/resolve/main/code_inference/all_in.py
2.58 kB
| import os | |
| import json | |
| import subprocess | |
| import pandas as pd | |
| from pathlib import Path | |
| GLOBAL_MODEL_PATH = "../stage2_object_v8_1200" | |
| ##示例:每个都传入绝对路径 | |
| TASK_CONFIGS = [ | |
| ("rule_11_vllm.py", "文字占比"), | |
| ("rule_12_vllm.py", "文字-样式数量合理"), | |
| #("rule_13_vllm.py", "文字-排布位置"), | |
| #("rule_14_vllm.py", "文字-设计搭配协调"), | |
| ("rule_17_vllm.py", "信息量"), | |
| ("rule_18_vllm.py", "排布间距"), | |
| ("rule_19_vllm.py", "内容构图"), | |
| ] | |
| SUMMARY_OUTPUT = "vllm_audit_summary.csv" | |
| def run_vllm_task(script, input_dir): | |
| cmd = [ | |
| "python", script, | |
| "--input_dir", input_dir, | |
| "--model_path", GLOBAL_MODEL_PATH | |
| ] | |
| print(f"\n[EXEC] 正在运行: {script}") | |
| print(f"[PATH] 输入目录: {Path(input_dir).name}") | |
| try: | |
| subprocess.run(cmd, check=True) | |
| return True | |
| except subprocess.CalledProcessError as e: | |
| print(f"[ERROR] 脚本 {script} 运行失败: {e}") | |
| return False | |
| def extract_metrics(script, input_dir): | |
| input_path = Path(input_dir) | |
| json_file = input_path / f"audit_result_{input_path.name}.json" | |
| if not json_file.exists(): | |
| return { | |
| "规则名称": script, | |
| "对应目录": input_path.name, | |
| "结果": "未找到 JSON 文件" | |
| } | |
| with open(json_file, 'r', encoding='utf-8') as f: | |
| data = json.load(f) | |
| total = len(data) | |
| unsuitable = sum(1 for item in data if item["label"] == "Unsuitable") | |
| suitable = sum(1 for item in data if item["label"] == "Suitable") | |
| recall = (unsuitable / total) if total > 0 else 0 | |
| return { | |
| "规则名称": script.replace("_vllm.py", ""), | |
| "对应目录": input_path.name, | |
| "样本总数": total, | |
| "不通过数(Unsuitable)": unsuitable, | |
| "通过数(Suitable)": suitable, | |
| "召回率(违规检出率)": f"{recall:.2%}", | |
| "所用模型": Path(GLOBAL_MODEL_PATH).name | |
| } | |
| def main(): | |
| final_results = [] | |
| for script, input_dir in TASK_CONFIGS: | |
| success = run_vllm_task(script, input_dir) | |
| metrics = extract_metrics(script, input_dir) | |
| final_results.append(metrics) | |
| df = pd.DataFrame(final_results) | |
| df.to_csv(SUMMARY_OUTPUT, index=False, encoding='utf-8-sig') | |
| print("\n" + "="*70) | |
| print(f"所有任务运行完毕!汇总报告已保存至: {SUMMARY_OUTPUT}") | |
| print("-" * 70) | |
| print(df.to_string(index=False)) | |
| print("="*70) | |
| if __name__ == "__main__": | |
| main() |