PotterWhite commited on
Commit
8aec406
·
1 Parent(s): 9726c4e

docs(rvm): add §7.5 graph-surgery op-count delta (353→317, −36 nodes)

Browse files
Files changed (1) hide show
  1. README.md +48 -1
README.md CHANGED
@@ -36,6 +36,7 @@ pipeline_tag: image-segmentation
36
  5. [生成与部署指南(Generation & Deployment Guide)](#5-生成与部署指南generation--deployment-guide)
37
  6. [速查表(Quick Reference)](#6-速查表quick-reference)
38
  7. [RobustVideoMatting(RVM)模型](#7-robustvideoMattingrvm模型)
 
39
  8. [相关文档(Related Documentation)](#8-相关文档related-documentation)
40
 
41
  ---
@@ -445,6 +446,52 @@ python3 tools/MODNet/verify_golden_tensor.py
445
  | **速度优先** | `rvm_mobilenetv3_fp16_1080x1920_rk3588_fp16.rknn` | 比 dsr=0.5 快 1.43 倍 |
446
  | **低内存** | `rvm_mobilenetv3_fp16_288x512_rk3588_fp16_v20260416.rknn` | 最小 r-state 占用 |
447
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
  ---
449
 
450
  ## 8. 相关文档(Related Documentation)
@@ -481,6 +528,6 @@ Overfitting: ✓ No significant degradation, clean convergence
481
 
482
  ---
483
 
484
- **文档版本**:1.1
485
  **最后更新**:2026-07-03 by PotterWhite
486
  **提交历史**:通过 Git commit message 追踪
 
36
  5. [生成与部署指南(Generation & Deployment Guide)](#5-生成与部署指南generation--deployment-guide)
37
  6. [速查表(Quick Reference)](#6-速查表quick-reference)
38
  7. [RobustVideoMatting(RVM)模型](#7-robustvideoMattingrvm模型)
39
+ - [7.5 Graph Surgery:移除最终的 Resize 及以后的算子](#75-graph-surgery移除最终的-resize-及以后的算子)
40
  8. [相关文档(Related Documentation)](#8-相关文档related-documentation)
41
 
42
  ---
 
446
  | **速度优先** | `rvm_mobilenetv3_fp16_1080x1920_rk3588_fp16.rknn` | 比 dsr=0.5 快 1.43 倍 |
447
  | **低内存** | `rvm_mobilenetv3_fp16_288x512_rk3588_fp16_v20260416.rknn` | 最小 r-state 占用 |
448
 
449
+ ### 7.5 Graph Surgery:移除最终的 Resize 及以后的算子
450
+
451
+ > 最终调试版 RKNN 模型(文件名包含 `no-resize`)通过 ArcFoundry `graph_surgery`
452
+ > 把原始 RVM ONNX 中 refiner 末尾的 2 个 Resize + 后续 element-wise 链裁掉,
453
+ > 由 C++ 后处理端自行完成 guided-filter 组合 + 上采样。
454
+ >
455
+ > 详情见仓库内 `log-MR2-P5-s5_8_22-bottleneck-investigation.md`
456
+ > 的 §s5_8_22_12(独立脚本版)和 §s5_8_22_14(ArcFoundry 集成版)。
457
+
458
+ #### 裁剪点
459
+
460
+ | 项目 | 数值 |
461
+ |------|-----|
462
+ | 原始 ONNX 总节点数 | 353 |
463
+ | 被删除的"尾部"命名算子 | 2× Resize + Mul + Add + Split + Add + 2× Clip(共 8 个) |
464
+ | `graph.cleanup()` 级联删除的死节点 | 28 个 |
465
+ | **图清理后净减少的节点(实测)** | **36 个**(353 → 317) |
466
+ | 裁剪版图输出 tensor | `777`(Conv_316 输出,refiner A,4ch,272×480)、`779`(Sub_318 输出,refiner b,4ch,272×480),外加 `r1o~r4o` |
467
+
468
+ #### 实测算子分类对比(脚本:`scripts/compare_rvm_op_counts.py`)
469
+
470
+ | op_type | 原版 | 裁剪版 | Δ(原版 − 裁剪版) |
471
+ |---------|----:|-----:|------------------:|
472
+ | Constant | 48 | 32 | +16 |
473
+ | Shape | 12 | 8 | +4 |
474
+ | Slice | 12 | 8 | +4 |
475
+ | Concat | 23 | 20 | +3 |
476
+ | Add | 16 | 14 | +2 |
477
+ | Clip | 2 | 0 | +2 |
478
+ | Resize | 7 | 5 | +2 |
479
+ | Mul | 47 | 46 | +1 |
480
+ | ReduceMean | 2 | 1 | +1 |
481
+ | Split | 10 | 9 | +1 |
482
+ | **合计** | | | **+36** |
483
+
484
+ > 上表只列出发生变化的 `op_type`(未变的不列出)。所有数值均由
485
+ > `scripts/compare_rvm_op_counts.py` 在 2026-07-03 实测得出,无估算。
486
+
487
+ **为什么 `Constant` 减少了 16 个?** 因为 `graph.cleanup()` 会同时清理那些原本只为
488
+ 被删节点提供常量输入的 Constant 节点;而 `Shape`/`Slice`/`Concat` 的减少则来自
489
+ refiner 内 Concat_311 上游、只为已删除 Resize 准备 shape/slice 信息的辅助节点。
490
+
491
+ **为什么 `Conv` 一颗没少?** 裁剪只动 refiner 尾巴(ID 195-202 对应的算子),
492
+ refiner 内部产生 A/b 的 Conv 网络(Conv_312/314/316)被保留——它输出的
493
+ A(4ch,272×480) + b(4ch,272×480) 是 C++ 后处理 guided-filter 组合的输入。
494
+
495
  ---
496
 
497
  ## 8. 相关文档(Related Documentation)
 
528
 
529
  ---
530
 
531
+ **文档版本**:1.2
532
  **最后更新**:2026-07-03 by PotterWhite
533
  **提交历史**:通过 Git commit message 追踪