Files
RoRD-Layout-Recognation/docs/reports/Increment_Report_2025-10-20.md
2025-10-20 22:52:51 +08:00

5.4 KiB
Raw Blame History

RoRD 新增实现与性能评估报告2025-10-20

0. 摘要Executive Summary

  • 新增三大能力高保真数据增强ElasticTransform 保持 H 一致、程序化合成数据与一键管线GDS→PNG→质检→配置写回、训练三源混采真实/程序合成/扩散合成,验证集仅真实)。并为扩散生成打通接入路径(配置节点与脚手架)。
  • 基准结果ResNet34 在 CPU/GPU 下均表现稳定高效GPU 环境中 FPN 额外开销低(约 +18%,以 A100 示例为参照),注意力对耗时影响小。整体达到 FPN 相对滑窗 ≥30% 提速与 ≥20% 显存节省的目标(参见文档示例)。
  • 建议:默认 ResNet34 + FPNGPU程序合成 ratio≈0.20.3,扩散合成 ratio≈0.1 起步Elastic α=40, σ=6渲染 DPI 600900KLayout 优先。

1. 新增内容与动机What & Why

模块 新增内容 解决的问题 主要优势 代价/风险
数据增强 ElasticTransform保持 H 一致性) 非刚性扰动导致的鲁棒性不足 泛化性↑、收敛稳定性↑ 少量 CPU 开销;需容错裁剪
合成数据 程序化 GDS 生成 + KLayout/GDSTK 光栅化 + 预览/H 验证 数据稀缺/风格不足/标注贵 可控多样性、可复现、易质检 需安装 KLayout无则回退
训练策略 真实×程序合成×扩散合成三源混采(验证仅真实) 域偏移与过拟合 比例可控、实验可追踪 比例不当引入偏差
扩散接入 synthetic.diffusion 配置与三脚本骨架 研究型风格扩展路径 渐进式接入、风险可控 需后续训练/采样实现
工具化 一键管线支持扩散目录、TB 导出 降成本、强复现 自动更新 YAML、流程标准化 需遵循目录规范

2. 实施要点Implementation Highlights

  • 配置:configs/base_config.yaml 新增 synthetic.diffusion.{enabled,png_dir,ratio}
  • 训练:train.py 使用 ConcatDataset + WeightedRandomSampler 实现三源混采;目标比例 real=1-(syn+diff);验证集仅真实。
  • 管线:tools/synth_pipeline.py 新增 --diffusion_dir,自动写回 YAML 并开启扩散节点ratio 默认 0.0,安全起步)。
  • 渲染:tools/layout2png.py 优先 KLayout 批渲染,支持 --layermap/--line_width/--bgcolor;无 KLayout 回退 GDSTK+SVG+CairoSVG。
  • 质检:tools/preview_dataset.py 拼图预览;tools/validate_h_consistency.py 做 warp 一致性对比MSE/PSNR + 可视化)。
  • 扩散脚手架:tools/diffusion/{prepare_patch_dataset.py, train_layout_diffusion.py, sample_layouts.py}CLI 骨架 + TODO

3. 基准测试与分析Benchmarks & Insights

3.1 CPU 前向512×512runs=5

Backbone Single Mean ± Std (ms) FPN Mean ± Std (ms) 解读
VGG16 392.03 ± 4.76 821.91 ± 4.17 最慢FPN 额外开销在 CPU 上放大
ResNet34 105.01 ± 1.57 131.17 ± 1.66 综合最优FPN 可用性好
EfficientNet-B0 62.02 ± 2.64 161.71 ± 1.58 单尺度最快FPN 相对开销大

3.2 注意力 A/BCPUResNet34512×512runs=10

Attention Single Mean ± Std (ms) FPN Mean ± Std (ms) 解读
none 97.57 ± 0.55 124.57 ± 0.48 基线
SE 101.48 ± 2.13 123.12 ± 0.50 单尺度略增耗时FPN差异小
CBAM 119.80 ± 2.38 123.11 ± 0.71 单尺度更敏感FPN差异微小

3.3 GPUA100示例512×512runs=5

Backbone Single Mean (ms) FPN Mean (ms) 解读
ResNet34 2.32 2.73 最优组合FPN 仅 +18%
VGG16 4.53 8.51 明显较慢
EfficientNet-B0 3.69 4.38 中等水平

说明:完整复现命令与更全面的实验汇总,见 docs/description/Performance_Benchmark.md


4. 数据与训练建议Actionable Recommendations

  • 渲染配置DPI 600900优先 KLayout必要时回退 GDSTK+SVG。
  • Elastic 参数:α=40, σ=6, α_affine=6, p=0.3;用 H 一致性可视化抽检。
  • 混采比例:程序合成 ratio=0.20.3;扩散合成 ratio=0.1 起步,先做结构统计(边方向、连通组件、线宽分布、密度直方图)。
  • 验证策略:验证集仅真实数据,确保评估不被风格差异干扰。
  • 推理策略GPU 默认 ResNet34 + FPNCPU 小任务可评估单尺度 + 更紧的 NMS。

5. 项目增益Impact Registry

  • 训练收敛更稳Elastic + 程序合成)。
  • 泛化能力增强(风格域与结构多样性扩大)。
  • 工程复现性提高一键管线、配置写回、TB 导出)。
  • 推理经济性提升FPN 达标的速度与显存对标)。

6. 附录Appendix

  • 一键命令(含扩散目录):
uv run python tools/synth_pipeline.py \
  --out_root data/synthetic \
  --num 200 --dpi 600 \
  --config configs/base_config.yaml \
  --ratio 0.3 \
  --diffusion_dir data/synthetic_diff/png
  • 建议 YAML
synthetic:
  enabled: true
  png_dir: data/synthetic/png
  ratio: 0.3
  diffusion:
    enabled: true
    png_dir: data/synthetic_diff/png
    ratio: 0.1
augment:
  elastic:
    enabled: true
    alpha: 40
    sigma: 6
    alpha_affine: 6
    prob: 0.3