Skip to content

flyingc2004/Eval_Aware_Poster_Gen

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eval-Aware Scientific Poster Generation

本仓库是一个单仓库复现包,包含 eval-aware PosterGen 主流程、Paper2Poster/P2P 外部基线适配、评测管线和本地示例数据。目标是复现“面向读者理解与评测指标的科学海报生成”实验,而不是保存历史生成结果或下载后的 benchmark 数据。

目录结构

PosterGen/      主生成管线、eval-aware agents、benchmark wrappers、10 篇本地示例数据
Paper2Poster/   外部 Paper2Poster baseline 与 PaperQuiz-style 评测代码
P2P/            外部 P2P/P2PEval checklist 评测代码
PaperX/         related work 参考代码

仓库会提交:

  • PosterGen/data/:本地 10 篇小规模示例论文数据。
  • Paper2Poster/assets/poster_data/Train/**/*.txt:Paper2Poster tree-split layout 训练需要的轻量 txt 文件。
  • Paper2Poster/assets/h1_example/*.jpgPaper2Poster/assets/overflow_example_v2/*.jpg:Paper2Poster baseline 运行时使用的少量示例图。

仓库不会提交:

  • PosterGen/eval_runs/PosterGen/output/ 等生成与评测结果。
  • Paper2Poster/Paper2Poster-data/Paper2Poster/eval_results/ 等运行时数据。
  • Paper2Poster/assets/poster_data/**/*.pdf 等大体积上游 PDF 资产。

环境安装

推荐 Python 3.11。集成评测可以使用一个环境完成;如果 Paper2Poster 依赖和 PosterGen 主环境冲突,可单独给 Paper2Poster 建环境,但默认命令假设在同一个环境中运行。

conda create -n poster python=3.11
conda activate poster
python -m pip install --upgrade pip setuptools wheel

cd PosterGen
pip install -r requirements.txt
pip install -e .

cd ../P2P
pip install -r requirements.txt

cd ../Paper2Poster
pip install -r requirements.txt

系统依赖:

  • LibreOffice:将生成的 PPTX 渲染为 PNG。
  • Tesseract OCR:Paper2Poster 的 word_count/token_count 指标会用到。
  • Poppler/PyMuPDF 相关 PDF 工具:部分 PDF/图片转换路径会用到。
  • OpenAI-compatible API key:生成、离线 VLM、QA、checklist 生成/评测会用到。

API Key 配置

推荐使用 PosterGen/.env,这也是我们实际实验采用的方式:

cd PosterGen
cp .env.example .env

然后编辑 PosterGen/.env

OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=

也可以使用 shell 环境变量:

export OPENAI_API_KEY=...
export OPENAI_BASE_URL=...  # optional

Windows PowerShell:

$env:OPENAI_API_KEY="..."
$env:OPENAI_BASE_URL="..."  # optional

注意:

  • run_all_evals 会显式加载 PosterGen/.env
  • PosterGen 模型调用使用 load_dotenv(override=True),因此 PosterGen/.env 可能覆盖 shell 中同名变量。
  • 通过 run_all_evals 启动的 Paper2Poster/P2P 子进程会继承已加载的环境变量。
  • 如果单独进入 Paper2Poster/P2P/ 运行上游脚本,需要额外 export 环境变量,或在对应目录准备 .env

A. 生成管线

PosterGen/ 目录运行。

本地示例 smoke generation:

cd PosterGen
python -m evaluation.bench.run_generation \
  --run_id demo_gen \
  --dataset postergen_local \
  --methods eval_aware,postergen_original \
  --limit 1 \
  --skip_existing

标准化后的生成结果会写入:

PosterGen/eval_runs/<run_id>/methods/<method>/<paper_id>/
  poster.png
  poster.pptx
  content/*.json
  method_meta.json

常用方法名:

  • eval_aware:本文的 reader/eval-aware PosterGen 管线。
  • postergen_original:原始 PosterGen-style baseline。
  • eval_aware_no_optimizereval_aware_no_repaireval_aware_no_llm_critic:消融实验。
  • paper2poster:外部 Paper2Poster baseline wrapper。
  • gt_reference:有 GT poster 时导入参考海报。

B. 评测管线

一条命令会完成:准备本地数据、批量生成、internal deterministic metrics、offline VLM metrics、Paper2Poster QA/count metrics、P2P checklist metrics 和聚合。

PosterGen/ 目录运行:

python -m evaluation.bench.run_all_evals \
  --run_id final_postergen \
  --dataset postergen_enriched \
  --methods eval_aware,postergen_original,paper2poster,eval_aware_no_optimizer,eval_aware_no_repair,eval_aware_no_llm_critic,gt_reference \
  --model_name gpt-4.1-2025-04-14 \
  --qa_model_name gpt-4.1 \
  --checklist_model_name gpt-4.1-2025-04-14 \
  --paper2poster_qa_model_names gpt-4.1 \
  --skip_hf_match \
  --generate_missing_qa \
  --generate_missing_checklist \
  --download_known_gt_posters \
  --paper2poster_metrics qa,word_count,token_count \
  --p2p_mode checklist \
  --eval_workers 8 \
  --api_workers 32 \
  --vlm_workers 8 \
  --paper2poster_workers 8 \
  --p2p_outer_workers 3 \
  --p2p_checklist_workers 10 \
  --limit 10 \
  --skip_existing

重要说明:

  • --skip_existing 支持断点续跑,已有 poster 和已有指标文件会跳过。
  • VLM 评测在生成完成后离线统一进行,保证所有方法被同一 judge 条件评估。
  • Paper2Poster 上游 stats/judge/aesthetic_judge 默认不跑,因为它们依赖本地/HuggingFace 大模型或 hard-coded GPT-4o。推荐指标是 qa,word_count,token_count
  • LLM 生成的 checklist 是 diagnostic,不应称为官方 P2P ground truth。

评测聚合输出:

PosterGen/eval_runs/<run_id>/aggregate/
  per_paper.csv
  summary.csv
  pairwise_winrate.csv
  latex_tables.json
  failed_artifacts.json

latex_tables.json 转成按指标组织的 JSON 报告:

python -m evaluation.bench.report \
  eval_runs/final_postergen/aggregate/latex_tables.json \
  eval_runs/final_postergen/aggregate/report.json

更细的 benchmark 命令见 PosterGen/evaluation/bench/README.md

Paper2Poster 轻量 assets 说明

paper2poster baseline 生成会间接调用:

Paper2Poster/PosterAgent/new_pipeline.py
  -> PosterAgent/tree_split_layout.py::main_train()

该路径需要:

Paper2Poster/assets/poster_data/Train/**/*.txt
Paper2Poster/assets/h1_example/h1_pos.jpg
Paper2Poster/assets/h1_example/h1_neg.jpg
Paper2Poster/assets/overflow_example_v2/neg.jpg
Paper2Poster/assets/overflow_example_v2/pos.jpg

这些轻量资源会随仓库提交。完整 poster_data/Train PDF 资产很大,不会提交。若只运行 eval_aware/postergen_original/ablations,不需要 Paper2Poster assets;若运行 paper2poster baseline,preflight 会检查这些资源是否存在,缺失时会跳过该 baseline 并给出清晰错误。

重跑和消融

修改某个方法后,只删除该方法目录,再用同一命令 --skip_existing 续跑:

rm -rf eval_runs/final_postergen/methods/eval_aware
python -m evaluation.bench.run_all_evals \
  --run_id final_postergen \
  --dataset postergen_enriched \
  --methods eval_aware \
  --model_name gpt-4.1-2025-04-14 \
  --skip_existing

只强制重跑 VLM,不重新生成 poster:

python -m evaluation.bench.run_all_evals \
  --run_id final_postergen \
  --dataset postergen_enriched \
  --methods eval_aware,postergen_original,paper2poster,eval_aware_no_optimizer,eval_aware_no_repair,eval_aware_no_llm_critic,gt_reference \
  --metrics vlm,aggregate \
  --model_name gpt-4.1-2025-04-14 \
  --force_eval vlm \
  --vlm_workers 8 \
  --skip_existing

提交前检查

运行审计脚本:

cd PosterGen
python -m evaluation.bench.audit_repo_release

它会检查:

  • 必需源码是否存在且未被 ignore。
  • Paper2Poster 轻量运行时 assets 是否存在且未被 ignore。
  • 生成/评测产物和大文件 probe 是否被 ignore。

也可以手动检查:

git check-ignore -v PosterGen/eval_runs/final_postergen/aggregate/report.json
git check-ignore -v Paper2Poster/assets/poster_data/Train/<sample>/<sample>.pdf
git check-ignore -v Paper2Poster/Paper2Poster-data/example/poster.png
git check-ignore -v P2P/eval/temp-v2/example/poster.png

这些应被忽略。

git check-ignore -v PosterGen/evaluation/bench/run_all_evals.py
git check-ignore -v Paper2Poster/assets/h1_example/h1_pos.jpg
git check-ignore -v Paper2Poster/assets/overflow_example_v2/neg.jpg
git check-ignore -v Paper2Poster/assets/poster_data/Train/<sample>/<sample>.txt
git check-ignore -v P2P/eval/common.yaml

这些不应被忽略;没有输出就是正常。

单仓库提交注意事项

本项目准备作为一个单一根仓库发布。PosterGen/Paper2Poster/P2P/PaperX/ 原本各自带 .git/,最终根仓库提交前需要把这些嵌套 .git/ 移出仓库或备份到仓库外。否则 GitHub 上只会记录 embedded repo/submodule-like 指针,而不是实际代码内容。

推荐流程:

cd G:/code/CG/project3
mkdir ../project3_nested_git_backup

mv PosterGen/.git ../project3_nested_git_backup/PosterGen.git
mv Paper2Poster/.git ../project3_nested_git_backup/Paper2Poster.git
mv P2P/.git ../project3_nested_git_backup/P2P.git
mv PaperX/.git ../project3_nested_git_backup/PaperX.git

git rm --cached -r PosterGen Paper2Poster P2P PaperX
git add .
git commit -m "Add eval-aware poster generation and benchmark pipeline"
git remote add origin https://github.com/EvalAwarePosterGen/Eval_Aware_Poster_Gen.git
git branch -M main
git push -u origin main

如果远端已存在:

git remote set-url origin https://github.com/EvalAwarePosterGen/Eval_Aware_Poster_Gen.git

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 95.5%
  • HTML 2.9%
  • TeX 0.8%
  • TypeScript 0.4%
  • Shell 0.2%
  • CSS 0.2%