本报告总结 2025 年 10 月 20 日新增的 RoRD 项目能力:高保真增强、程序化 / 扩散合成、三源混采训练、一键管线与配置回写,以及 ResNet34 + FPN 的高效推理组合。
报告日期:2025 年 10 月 20 日
报告类型:技术报告
关键词:ElasticTransform、H 一致性、程序化合成、扩散合成、FPN 推理、ResNet34。
本阶段新增三大能力:
基准结果显示,ResNet34 在 CPU 和 GPU 下均表现稳定高效。GPU 环境中,FPN 额外开销较低,以 A100 示例为参照约为 +18%。整体达到 FPN 相对滑窗至少 30% 提速与至少 20% 显存节省的目标。
建议默认配置:
| 模块 | 新增内容 | 解决的问题 | 主要优势 | 代价 / 风险 |
|---|---|---|---|---|
| 数据增强 | ElasticTransform,并保持 H 一致性 | 非刚性扰动导致的鲁棒性不足 | 泛化性提升,收敛更稳定 | 少量 CPU 开销;需要容错裁剪 |
| 合成数据 | 程序化 GDS 生成 + KLayout / GDSTK 光栅化 + 预览 / H 验证 | 数据稀缺、风格不足、标注成本高 | 可控多样性、可复现、易质检 | 需要安装 KLayout;无则回退 |
| 训练策略 | 真实 × 程序合成 × 扩散合成三源混采,验证仅真实 | 域偏移与过拟合 | 比例可控、实验可追踪 | 比例不当可能引入偏差 |
| 扩散接入 | synthetic.diffusion 配置与三脚本骨架 | 研究型风格扩展路径 | 渐进式接入、风险可控 | 需要后续训练和采样实现 |
| 工具化 | 一键管线、扩散目录支持、TensorBoard 导出 | 降低成本、增强复现 | 自动更新 YAML,流程标准化 | 需要遵循目录规范 |
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。| 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 相对开销大。 |
| 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 差异微小。 |
| 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。
| Backbone | Attention | Single Mean ± Std (ms) | FPN Mean ± Std (ms) |
|---|---|---|---|
| vgg16 | none | 351.65 ± 1.88 | 719.33 ± 3.95 |
| vgg16 | se | 349.76 ± 2.00 | 721.41 ± 2.74 |
| vgg16 | cbam | 354.45 ± 1.49 | 744.76 ± 29.32 |
| resnet34 | none | 90.99 ± 0.41 | 117.22 ± 0.41 |
| resnet34 | se | 90.78 ± 0.47 | 115.91 ± 1.31 |
| resnet34 | cbam | 96.50 ± 3.17 | 111.09 ± 1.01 |
| efficientnet_b0 | none | 40.45 ± 1.53 | 127.30 ± 0.09 |
| efficientnet_b0 | se | 46.48 ± 0.26 | 142.35 ± 6.61 |
| efficientnet_b0 | cbam | 47.11 ± 0.47 | 150.99 ± 12.47 |
要点:ResNet34 在 CPU 场景下具备稳健的速度与 FPN 额外开销折中;EfficientNet-B0 单尺度很快,但 FPN 代价显著。
| Backbone | Attention | Single Mean ± Std (ms) | FPN Mean ± Std (ms) |
|---|---|---|---|
| vgg16 | none | 4.53 ± 0.02 | 8.51 ± 0.002 |
| vgg16 | se | 3.80 ± 0.01 | 7.12 ± 0.004 |
| vgg16 | cbam | 3.73 ± 0.02 | 6.95 ± 0.09 |
| resnet34 | none | 2.32 ± 0.04 | 2.73 ± 0.007 |
| resnet34 | se | 2.33 ± 0.01 | 2.73 ± 0.004 |
| resnet34 | cbam | 2.46 ± 0.04 | 2.74 ± 0.004 |
| efficientnet_b0 | none | 3.69 ± 0.07 | 4.38 ± 0.02 |
| efficientnet_b0 | se | 3.76 ± 0.06 | 4.37 ± 0.03 |
| efficientnet_b0 | cbam | 3.99 ± 0.08 | 4.41 ± 0.02 |
要点:GPU 环境下注意力对耗时影响较小;ResNet34 仍是单尺度与 FPN 的最佳选择。
速度提升:
显存节省:
精度保障:匹配数不显著下降,例如:
{
"timestamp": "2025-10-20 14:30:45",
"config": "configs/base_config.yaml",
"model_path": "path/to/model_final.pth",
"layout_path": "test_data/layout.png",
"template_path": "test_data/template.png",
"device": "cuda:0",
"fpn": {
"method": "FPN",
"mean_time_ms": 245.32,
"std_time_ms": 12.45,
"gpu_memory_mb": 1024.5,
"num_runs": 5
},
"sliding_window": {
"method": "Sliding Window",
"mean_time_ms": 352.18,
"std_time_ms": 18.67
},
"comparison": {
"speedup_percent": 30.35,
"memory_saving_percent": 21.14,
"fpn_faster": true,
"meets_speedup_target": true,
"meets_memory_target": true
}
}
PYTHONPATH=. uv run python tests/benchmark_attention.py \
--device cpu --image-size 512 --runs 10 \
--backbone resnet34 --places backbone_high desc_head
PYTHONPATH=. uv run python tests/benchmark_grid.py \
--device cpu --image-size 512 --runs 3 \
--backbones vgg16 resnet34 efficientnet_b0 \
--attentions none se cbam \
--places backbone_high desc_head
PYTHONPATH=. uv run python tests/benchmark_grid.py \
--device cuda --image-size 512 --runs 5 \
--backbones vgg16 resnet34 efficientnet_b0 \
--attentions none se cbam \
--places backbone_high
| 增益 | 说明 |
|---|---|
| 训练收敛更稳 | Elastic + 程序合成让模型对非刚性扰动更鲁棒。 |
| 泛化能力增强 | 风格域与结构多样性扩大,减少过拟合风险。 |
| 工程复现性提升 | 一键管线、配置写回、TensorBoard 导出使流程更标准化。 |
| 推理经济性提升 | FPN 相对滑窗至少 30% 提速,并节省至少 20% 显存。 |
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
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
本阶段的主要价值在于把“能跑”的 RoRD 进一步推向“可训练、可复现、可扩展、可评估”的工程状态。数据侧引入 Elastic、程序化合成和扩散接口,训练侧打通三源混采,推理侧确认 ResNet34 + FPN 的高效组合,为后续真实数据训练和论文实验打下基础。
正在加载评论...