Learning to Infer Parameterized Representations of Plants from 3D Scans¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://gitlab.inria.fr/sghrer/3d-L-plants
领域: 3D视觉 / 植物表型 / 结构化重建
关键词: 植物表型, L-System, 递归神经网络, 参数化重建, 点云
一句话总结¶
本文用递归神经网络学一个植物的"形状空间",把无序 3D 点云直接推断成一棵参数化的 L-String(二叉轴树),从而一次性输出植物的分枝拓扑 + 每个器官的几何参数,且纯靠程序化模型生成的合成数据训练就能泛化到真实扫描,统一支撑 3D 重建、骨架提取、器官分割三大表型任务。
研究背景与动机¶
领域现状:植物表型(量化基因型在环境中如何生长)要从观测里抽高层信息——3D 几何重建、器官分割、骨架提取。观测多为 2D 图像或 3D 扫描。现有工作要么做"逆向建模"(找能生成给定植物的生长规则),要么是"任务专用"方法(只解三个任务之一)。
现有痛点:逆向建模很难,现有方法只适用于无叶的分枝结构(如树枝),碰到带叶的一年生植物就失效。任务专用方法各管一摊、互不通用,且都不输出结构化的参数表示。与本文最接近的 Demeter 虽能学参数化植物模型,但需要人工标注的 3D 扫描训练、推理还要预先分割好的输入、重建走繁琐三步法——标注与预处理都昂贵且易错。
核心矛盾:植物器官多、是 3D 分枝系统,器官又细又彼此贴近,造成强烈自遮挡与歧义;想从一团无序点云里既恢复"结构(拓扑)"又恢复"几何(每个器官参数)",而点云点数不定、L-String 又在离散(模块数量/类型)和连续(角度/长度参数)两个维度同时变化,直接回归极难。
本文目标:从一张 3D 扫描点云推断出一个参数化表示,同时编码分枝结构与各器官几何,并能直接复用到多个表型任务。
切入角度:作者借力生物启发的程序化模型(L-System)——它用递归规则描述植物发育,既能指导网络设计(递归性),又能批量生成带真值的合成训练数据,从而绕开昂贵标注。
核心 idea:用递归自编码器在 L-String(二叉轴树)上学一个潜形状空间 S,再训一个点云编码器把扫描钉到 S,推理时"点云→S→递归解码→L-String",把"无序点云"翻译成"结构化参数树"。
方法详解¶
整体框架¶
方法目标是从输入点云 \(P\) 推断一棵 L-String \(l\)。因为点云无序、点数不定,而 L-String 在离散与连续维度同时变化,直接回归不可行,作者把它拆成"先学一个能编码 L-String 的潜空间 S,再学一个把点云映到 S 的编码器"。训练分两步:先用递归自编码器在合成 L-String 上学 S(含节点自编码、兄弟/父子递归编解码器与两个辅助分类器);再训一个 PointNet 点云编码器,把点云对齐到其对应 L-String 在 S 中的潜点。推理时点云经编码器得潜点、再经递归解码器还原成 L-String,最后用测试时优化对齐输入、并通过几何解释规则一网打尽重建/骨架/分割三任务。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["L-String 参数化表示<br/>二叉轴树编码结构+器官几何"] --> B["递归自编码器学潜空间 S<br/>节点AE + 兄弟/父子编解码器 + 双分类器"]
B --> C["点云编码器<br/>PointNet 把点云钉到 S(纯合成训练)"]
C --> D["测试时优化对齐<br/>自下而上 Chamfer 微调参数"]
D --> E["几何解释规则<br/>重建 / 骨架 / 分割 一网打尽"]
关键设计¶
1. L-String 参数化表示:用二叉轴树同时编码拓扑与几何
针对"任务专用方法不输出结构、逆向建模又只能处理无叶枝"的痛点,作者用 L-System 把植物表示成带括号的参数化模块串(L-String):模块对应器官(茎 stem、子叶 cotyledon、叶柄 petiole、叶 leaf、分枝 branch),每个模块带一组参数(如茎的直径/长度/生长角/弯曲角/叶序角),括号标记分枝起止,相邻模块有父子关系、开括号允许多子与兄弟关系,从而编码植物的轴树(axial tree)架构。为了能用二叉树递归网络,作者把"在该物种里总同时出现的模块"合并成 node(每物种手工定义一次合并规则,保证合并后是二叉树)。这样一来,L-String 既给出拓扑(哪个器官连哪个),又给出几何(每个器官的连续参数),是输入扫描所缺失而下游任务所需的结构化信息。方法适用于任何可表示为二叉轴树的植物。
2. 递归自编码器与潜空间 S:用 RvNN + 双分类器自下而上压成一个潜点
要让变长、变结构的 L-String 落到固定维潜空间 \(S\),作者学一对编码/解码 \(E: L \to S\)、\(D: S \to L\) 使 \(l \approx D(E(l))\)。因为不同类型 node 参数维度不同、不可直接比较,先给每类 node 学一对节点编解码器 \((E_{node,i}, D_{node,i})\)(单层全连接 + tanh)把它映进 \(S\);然后按两 node 在树中的关系(兄弟 sibling 或父子 parent-child)各学一对递归编解码器 \((E_{sib},D_{sib})\)、\((E_{pc},D_{pc})\),自叶向根递归地两两合并,直到整棵树压成 \(S\) 中一个潜点。解码时反着来,但需要知道每个潜点该用哪个解码器:故联训两个辅助分类器——\(C_{split}\) 判断一个潜点该按父子分裂、兄弟分裂还是停止(叶节点),\(C_{node}\) 判断叶潜点属于哪类 node。训练用节点级重建损失 \(L_{rec} = \sum_n L_{rec}(n)\)(各器官参数的加权 MSE)加两个分类交叉熵,总损失 \(L_{total} = L_{rec} + L_{split} + L_{node}\)。这套递归结构天然契合植物"自相似分枝"的本性,是它能处理变结构 L-String 的关键。
3. 点云编码器:PointNet 把无序点云钉到潜点,纯合成数据训练
学好 \(S\) 后还差"扫描→S"这一跳。作者用 PointNet 学映射 \(E_{points}: P \to S\)。训练利用配对数据(点云 \(P\) 及其对应 L-String \(l\)):把 \(l\) 过递归编码器得真值潜点 \(s\),把 \(P\) 过 \(E_{points}\) 得预测 \(\hat{s}\),最小化 \(L_{points} = \sum_j (\hat{s}_j - s_j)^2\),逼编码器把点云落到其对应 L-String 的潜点位置。整套训练只用 L-Py 程序化生成的合成点云(还模拟采集噪声以增鲁棒),从而彻底绕开真实扫描的人工标注;实验显示这样训出的模型能直接泛化到无标注的真实扫描。
4. 测试时优化对齐 + 几何解释:先抑误差累积,再一网打尽三任务
递归解码出的模块参数若有误差会沿生长轴累积——比如底部茎的角度估偏,会让整株主轴生长方向跑偏。作者用测试时优化对齐输入:自下而上、先优化主茎模块的 3D 角度与长度参数,再优化叶柄(长度/弹性)、再优化叶(尺寸/曲率),全部以重建植株与输入点云的双向 Chamfer 距离为目标,自底向上迭代两轮。得到对齐后的 L-String 后,三个下游任务都靠对它施加几何解释规则直接读出:重建=对 \(l\) 跑几何解释还原 3D 植株;骨架=只重建最小宽度的茎(可选叶主脉),支持带叶/无叶两种尺度;分割=保留器官类型标签,再按 k 近邻把标签从带注释点云传播到输入 \(P\)。一个表示、一次推断,三任务同出。
损失函数 / 训练策略¶
潜空间训练用 \(L_{total} = L_{rec} + L_{split} + L_{node}\);点云编码器用 \(L_{points}\) 的潜点回归 MSE。数据集为合成 Chenopodium Album:用 L-Py 生成 10 种结构 × 100 株 = 1000 对 (L-String, 点云),按 8/1/1 划分训练/验证/测试,硬件 Quadro RTX 5000。⚠️ 节点合并规则需每物种手工定义一次。
实验关键数据¶
自定义指标说明:Accuracy↓ 重建面到真值的单向 Chamfer 距离;Completeness↓ 真值到重建面的单向 Chamfer;Size 输出表示大小(越小越紧凑);# Comp. 输出网格连通分量数(越接近 1 越完整);LN Accuracy↑ 叶片数匹配百分比;LAI Accuracy↑ 叶面积指数(单位地表的单面叶面积)精度;Topology↑ 用树编辑距离判定拓扑正确的植株百分比;骨架与分割均用双向 Chamfer 距离评估。
主实验(3D 重建 vs SIREN)¶
在干净点云、加高斯噪声、单目深度图三种输入下对比 SIREN(Prasad et al. 验证的最佳植物点云重建法):
| 输入 | 方法 | Accuracy↓ | Completeness↓ | Size | Time | # Comp. | LN↑ | LAI↑ | Topo↑ |
|---|---|---|---|---|---|---|---|---|---|
| 干净 | SIREN | 0.0012 | 0.0006 | 780.88 KB | 7m14s | 33 | ✗ | ✗ | ✗ |
| 干净 | Ours | 0.0059 | 0.0090 | 17.56 KB | 4m01s | 1 | 98% | 93% | 75% |
| 噪声 | SIREN | 0.0121 | 0.0008 | 780.88 KB | 7m27s | 268 | ✗ | ✗ | ✗ |
| 噪声 | Ours | 0.0054 | 0.0074 | 17.56 KB | 3m56s | 1 | 98% | 93% | 78% |
| 深度图 | SIREN | 0.0013 | 0.0022 | 780.88 KB | 6m44s | 49 | ✗ | ✗ | ✗ |
| 深度图 | Ours | 0.0060 | 0.0089 | 17.57 KB | 3m47s | 1 | 98% | 94% | 78% |
干净数据下 SIREN 的距离误差更小,但其在噪声下急剧退化(Accuracy 0.0012→0.0121、连通分量 33→268,碎成一堆片);本文方法对噪声/缺失鲁棒、噪声下反超 SIREN,表示比 SIREN 紧凑一到两个数量级、推理快近一倍,且额外给出 SIREN 给不了的叶数/LAI/拓扑(✗ 表示该法无法输出)。
骨架提取(双向 Chamfer↓)¶
| 方法 | Clean(Full) | Noisy(Full) | Depth(Full) | Clean(Branch) |
|---|---|---|---|---|
| Xu et al. | 0.0102 | 0.0110 | 0.0145 | ✗ |
| Chaudhury et al. | 0.0139 | 0.0154 | 0.0449 | ✗ |
| Livny et al. | 0.0257 | 0.0282 | —(崩溃) | ✗ |
| Ours | 0.0178 | 0.0174 | 0.0199 | 0.0161 |
基线都只能吃无叶输入、且输出尺度不可调(✗ 无法在 branch 尺度操作,"—"为数值问题崩溃);本文在三种测试集上表现一致、对噪声鲁棒,并独家支持"带叶全骨架 / 仅分枝骨架"两种尺度。
分割与泛化¶
- 语义分割对比 PlantNet、PSegNet:本文与强基线持平,且在叶柄(petiole)分割上反超 PSegNet,对噪声与部分缺失数据鲁棒。
- 仅用合成数据训练,直接测 5 株真实 Chenopodium Album 扫描,重建/分割整体良好、骨架紧贴拓扑(原文 Figure 6),验证 sim-to-real 泛化。
关键发现¶
- 紧凑参数表示是核心红利:17.5KB vs 780KB,且天然连通(# Comp.=1),噪声下不碎,正是结构化先验在兜底。
- SIREN 这类隐式法擅长贴合干净点,但缺结构先验,遇噪声/缺失就碎裂、且给不出表型量(叶数/LAI/拓扑)。
- "一表三用":同一 L-String 经几何解释即得重建+骨架+分割,三任务与各自专用强基线持平,省去为每任务单独建模。
亮点与洞察¶
- 把"从扫描理解植物"重新表述成"推断一棵参数化 L-String",让结构先验进入重建——这是它对噪声鲁棒、能同时输出拓扑与表型量的根因,思路可迁移到任何可程序化建模的对象(血管、道路网)。
- 用程序化模型一鱼两吃:既指导网络的递归结构设计,又当合成数据工厂绕开人工标注,是"合成数据 + 归纳偏置对齐"的漂亮范例。
- 测试时自下而上的 Chamfer 优化巧妙抑制了沿生长轴的误差累积,对任何"链式/树式参数会传播误差"的回归问题都有借鉴意义。
局限与展望¶
- 每物种需重训一个模型:要有该物种的 L-System 生成训练数据,还要手工定义 node 合并规则以保证二叉树结构——可扩展性受限。
- 仅适用可表示为二叉轴树的植物,且受限于部分可观测部位,无法建模单子叶植物(如小麦、玉米)。
- 评估主要在小型一年生 Chenopodium Album 上,向大型/复杂树木或更密集冠层的泛化未充分验证。
- 可改进:探索跨物种共享潜空间、自动学习 node 合并规则、放宽二叉树假设以覆盖更广植物类型。
相关工作与启发¶
- vs Demeter(Cheng et al.):同样学参数化植物模型,但 Demeter 需人工标注 3D 扫描训练、推理要预分割输入、重建走繁琐三步;本文纯合成训练、无需预处理,直接从原始扫描推参数表示。
- vs SIREN(隐式重建):SIREN 干净数据精度高但无结构先验、噪声下碎裂且不输出表型量;本文牺牲少量干净精度换来紧凑表示、噪声鲁棒与拓扑/叶数/LAI 输出。
- vs 逆向建模(Guo/Št'ava 等):他们从 2D 图像推无叶枝的 L-System 规则;本文吃 3D 扫描、能处理带叶一年生植物,并直接重建给定真实实例而非只学生成规则。
- vs 任务专用法(PlantNet/PSegNet/Xu 等):各解一任务;本文一个参数表示同出重建+骨架+分割,且与各专用强基线持平。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 把植物理解重构成"推断 L-String",用 RvNN 学植物形状空间属首个纯合成训练的此类方案。
- 实验充分度: ⭐⭐⭐⭐ 三任务 × 三种输入 + 真实扫描泛化较系统,但仅一个物种、缺更多物种与大型植物验证。
- 写作质量: ⭐⭐⭐⭐ 结构清晰、定位表与图示到位;L-String/node 合并等概念对非领域读者门槛偏高。
- 价值: ⭐⭐⭐⭐ 对植物表型与农业 crop modeling 有直接落地价值,结构化+合成训练范式可外溢到其他树状结构重建。