用 PCA 统计形变模型 + 可微渲染从两张 X 光片重建 3D 股骨
研究者不依赖 CT 或神经网络,仅用 50 例 CT 网格构建 PCA 形变模型,通过 PyTorch3D 软光栅化拟合…
一名研究者在 Reddit r/MachineLearning 分享了一项从两张正交 X 光片(PA + 侧位)重建患者特异性 3D 远端股骨的 pipeline,整套方案不依赖 CT、不训练神经网络,也不需要大规模数据集。其核心思路是经典统计形变模型(SSM)与可微渲染的结合:用 50 例 CT 派生股骨网格(来自 MedShapeNet)训练一个 PCA 形变模型,仅保留 10 个形状系数,再用 PyTorch3D 的 soft rasterizer 与 sigma 退火策略把这些系数拟合到两张 X 光片提取的轮廓上;为避免形状离谱,引入 Mahalanobis 先验,使用 Adam 优化器约 1000 步收敛。
对应关系:最耗时也最痛苦的环节
拟合前必须先建立两片轮廓与 3D 模型之间的点对应关系,作者横向对比了多种方法:
- KD-tree 最近邻:相对于 CT 表面粗糙度 50.7x,未达标;
- CPD(Coherent Point Drift):28.2x;
- BCPD(Bayesian CPD):47.5x;
- FilterReg:未能跑通;
- ShapeWorks:3.3x,是唯一通过其预设 5x 验收门槛的方法。
验证结果与失败案例分析
在 5 例留出的股骨上做留一法验证,多数样本的表面误差落在 0.86–1.43 mm 区间,处于可用范围;但两个极端样本失败,作者诊断原因为它们超出了 49 例训练模型在第 1 主成分方向上的覆盖范围——优化器无法恢复一个模型根本不存在的系数。同时这两个样本的 Bridge ICP 对齐也较差(inlier 比例仅 0.6),对齐误差对总误差的贡献反而大于形状拟合本身。
一个易被忽略的实现细节
作者特别指出,sigma 退火终点的取值必须与参考渲染的 sigma 严格一致。在某个统计形变模型上硬编码的常数 sigma,换到另一模型时会带来约 87x 的精度劣化;将该值绑定到相机参数 camera_extent × 1e-4 后问题消失。这一经验对使用 PyTorch3D soft rasterizer 做可微拟合的其他人具有借鉴价值。
下一步计划
作者表示仍在推进真实 X 光数据的验证(需要配对 CT 数据)以及轮廓的自动分割,并欢迎社区就方法细节提问讨论。
