LRM 如何重塑人-物交互(HOI)三维重建:从单图到统一表示
单张 2D 图像里一个人举起一把椅子旁边还有一个伸手够到杯子的小朋友。如果让算法把这张图变成 3D 模型它不仅要重建出人体、重建出物体还要回答一个更难的问题人和物体是以什么方式接触的接触点在哪里谁支撑谁遮挡区域又该怎么补全这正是 Human-Object InteractionHOI重建长期以来的痛点。过去处理这个事情常规流程是“人-物分离逐个重建再拼装”先用人体姿态估计拟合出一个 SMPL 人体网格再单独用单图物体重建方法估计椅子的形状和位姿最后靠后处理修正穿透和接触。流程长、依赖手工先验多而且每个环节的误差会层层累积。一旦人体姿态估计偏了物体再怎么建都对不齐。Large Reconstruction ModelsLRM在 2023 年底到 2024 年迅速成为 3D 视觉领域的热词。它把“单图 → 3D 表示”变成了一种可规模化学习的大模型任务输入图像提取视觉特征然后直接回归一个三平面或 NeRF 表示。那么一个很自然的问题是能不能把这套大重建模型的思路用到“人-物交互重建”上这篇博客就围绕这个问题展开。我会先讲清楚 HOI 重建为什么难LRM 的核心设计是什么然后拆解一套基于 LRM 的交互重建通用流程给出可运行的教学级代码示例最后补充常见的训练、评估和部署坑位。读完你至少能回答三件事这类模型和传统方法差在哪里、如果自己要跑一个最小实现该从哪入手、以及真实项目里哪些环节最容易被低估。1. 为什么“人-物交互重建”值得重新关注先给术语一个明确的边界。Human-Object InteractionHOI重建任务定义是从单张或多张 RGB 图像中恢复人体网格、物体网格以及二者之间的交互关系。这里的“交互”不只是一个空间关系还包含接触关系手和杯子的把手是否贴合身体和座椅面是否有支撑相对位姿物体是在人手里还是在地面上还是在桌子上遮挡关系人被物体挡住的部分、物体被人挡住的部分都要靠模型推断物理合理性人不能穿透椅子、杯子不能悬空、受力关系不能违背常识。这个任务在 AR/VR、具身智能、数字人、视频内容编辑等领域都有直接需求。举个例子在 AR 试穿或虚拟家具摆放场景里系统不仅要理解“房间里有一张椅子”还要知道“这个人正坐在椅子上”否则虚拟物体和真实人体的遮挡、碰撞、光影关系全都会出错。那么它为什么难第一人和物体的几何类别差异很大。人体相对规则可以用 SMPL、SMPL-X 这类参数化模型描述物体则千奇百怪从椅子、杯子到书本、工具很难用统一模板覆盖。让一个模型同时处理这两类完全不同形态的几何本身就不容易。第二交互本身就是强先验。人会坐在椅子上不太可能站在一把比手指还小的椅子上杯子通常被手握住且手的位置会适应杯柄。这些交互先验很难用简单的几何约束表达传统方法往往需要手工定义接触目标和穿透惩罚项。第三数据极难获取。单张人体重建可以使用大量人体扫描数据单图物体重建可以使用大量物体数据集。但“人和物体同时出现且带高质量的 3D 网格和接触标注”的数据采集成本高很多。真实场景中人体和物体的相互遮挡让传感器扫描质量明显下降。第四评估指标不统一。有的工作侧重人体姿态精度有的侧重物体重建质量有的侧重接触精度。指标混在一起很难横向对比。这也是为什么 LRM 这类大重建模型出现后HOI 社区会兴奋。因为 LRM 的思路是“让网络直接学会从图像到 3D 表示的映射”它理论上可以把人和物体放到同一个表示空间里学习不再需要人工拆分流程和手写一堆先验约束。2. Large Reconstruction Models 的核心概念与适用场景Large Reconstruction Model简称 LRM直译就是“大重建模型”。它并不是某一个具体项目而是一类方法的统称。核心思想很简单用大规模数据和模型参数学习一个从图像到 3D 表示的通用映射。在传统三维重建中比如多视图立体MVS或单图重建方法通常是在推理时对每个新场景做一次优化。流程大致是提取特征、计算匹配代价、优化几何。它的问题是每个场景都要从头开始泛化性依赖手工设计的几何约束且对输入图像质量非常敏感。LRM 类方法的思路完全反转。它把重建过程变成一个前向推理过程输入一张或几张 RGB 图像中间表示通常是一个三平面triplane或者体积特征volume feature输出通过神经渲染或等值面提取得到几何。具体到常见实现LRM 通常包含三个关键组件组件作用常见实现思路视觉编码器从输入图像提取 2D 特征使用预训练视觉模型如 CLIP、DINO 等序列建模模块把 2D 特征映射到 3D 表示使用 Transformer 实现跨视图或跨 token 的信息交互3D 解码器从 3D 表示重建几何使用 NeRF 采样、SDF 解码或者三平面查询等值面提取这里需要解释一下三平面triplane。它由三个正交的 2D 特征平面组成分别对应 XY、YZ、ZX 平面。当我们想查询某个 3D 点时就把这个点分别投影到三个平面上采样对应位置的特征再把特征拼接起来输入一个解码 MLP得到该点的密度值或 SDF 值。三平面的好处是既保留了体积表示的能力又比完整的 3D 体素表示显存友好得多。LRM 方法的适用场景和传统方法有明显区别。单图像重建这是 LRM 最有优势的场景传统方法往往因为单视图信息不足而失效。多视图重建LRM 也能吃多视图输入通过 Transformer 融合多个视角的信息。类别泛化因为是大规模数据训练它倾向于处理“没见过但相似的物体”而不是依赖精确的类别模板。实时或近实时应用前向推理比逐场景优化快很多便于工程化落地。不过 LRM 也有明显的边界。它对输入图像的分辨率、相机参数、场景复杂度都比较敏感如果输入中存在严重遮挡或物体高度形变重建质量也会退化。把它用在 HOI 重建上并不是“直接套一个模型就行”而是需要针对交互任务做专门设计。3. 当 LRM 遇上 Human-Object Interaction 重建既然 LRM 能直接从单图重建 3D那是不是直接把“人和物体”当作一个整体输入 LRM 就行这是一个常见的误区。如果只是把人和物体当作一个不分彼此的“大物体”重建模型很可能会重建出一团模糊的几何无法区分哪部分是人体、哪部分是椅子也完全不会理解接触关系。HOI 重建真正需要的是联合表示而不是简单合并。它在 LRM 的基础上需要额外回答三个问题第一人体和物体如何共享同一个空间表示人和物可以放在同一个三平面或 NeRF 空间中但解码时最好有语义分离。一个常见思路是让模型输出两组 SDF 或 occupancy 值一组属于人体一组属于物体然后对每个空间点判断它属于哪一方。第二交互约束如何引入因为人和物体存在物理接触模型在训练时不能只优化“人体重建误差”和“物体重建误差”还要加上接触项、穿透项和物理合理性项。否则模型很容易在视觉上合理、但在物理上穿模。第三输入图像中人和物体相互遮挡怎么办比如人手握住杯身杯身的大部分被手挡住人坐在椅子上腿和椅子的接触区域完全不可见。这类区域需要模型利用训练阶段学到的交互先验来补全。所以LRM 式 HOI 重建的典型工作流程应该是这个节奏从输入图像中提取视觉特征通过 Transformer 或类似模块将 2D 特征映射到统一的三平面表示在三平面特征上分别解码人体和物体的几何在解码时或后处理阶段施加接触约束和穿透约束最终同时输出人体网格、物体网格和交互关系。对比传统流程这套方案最大的变化是把“人体先验 物体先验 交互约束”三个问题从分离的多个模块压进了同一个可学习的重建表示里。流程更短、更整体但对数据、内存和训练技巧的要求也更高。4. HOI 重建环境准备与基础配置官方项目如果需要从零训练通常会要求一定的 GPU 资源集群但如果只是跑推理普通开发机上单张 24GB 显存的 GPU 是比较合理的起点。由于本主题更偏向算法研究没有统一的官方代码仓库可以一键安装下面的环境准备给出的是通用配置具体版本以你实际使用的开源项目说明为准。建议的基础环境组件建议操作系统Ubuntu 20.04 或更高版本Python3.8 或更高GPUNVIDIA 显卡建议 24GB 显存以上深度学习框架PyTorch 2.x三维几何处理trimesh、open3d图像处理opencv-python、Pillow渲染/可视化pyrender、matplotlib3D 算子扩展pytorch3d视项目需要安装基础依赖的参考命令python -m venv .venv source .venv/bin/activate pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 pip install opencv-python pillow numpy pip install trimesh open3d pyrender matplotlib如果项目依赖 pytorch3d安装方式会根据 PyTorch 版本变化。一个比较稳妥的做法是先安装好 PyTorch再按照 pytorch3d 官方文档的说明选择对应版本编译或安装。这里要特别提醒HOI 重建项目的依赖版本经常互相冲突。特别是pytorch3d、open3d和trimesh中的 3D 算子它们对 CUDA 版本和 PyTorch 版本有很强要求。建议在项目根目录维护一份requirements.txt或environment.yml并且尽量使用 Docker 固定环境。5. LRM 式 HOI 重建核心流程拆解下面把完整流程拆成六个步骤。这一节不绑定某个具体实现而是把所有 LRM 式 HOI 重建方法共有的关键环节讲清楚。你会发现最难的不是“网络结构”而是数据组织和约束设计。5.1 输入预处理输入通常是一张 RGB 图像但只有图像还不够。模型需要知道相机的内参和外参。在常见数据集中输入可能是“图像 相机参数”也可能是“多视角图像 相机参数”。预处理的关键操作包括图像缩放、归一化、相机坐标系对齐。很多人在这里忽略了一个问题HOI 重建的物体尺度很难仅从单张图像恢复。如果没有深度信息或者已知物体尺寸模型需要从场景先验中推断尺度。这也是为什么很多方法会限定场景比如“假设地面是水平面”或者“假设人是站立/坐姿”。5.2 视觉特征提取把预处理后的图像输入一个预训练视觉编码器。常见的做法是使用 CLIP 或 DINO 这类模型。这里有个值得注意的细节直接用 CLIP 的最后一层特征往往不如使用多层特征。因为底层特征保留更多几何细节高层特征保留更多语义信息。对于 HOI 重建我们既需要知道“这是一个杯子”的语义也需要知道“杯柄在这里”的几何位置所以特征金字塔式的提取方式更合理。5.3 从 2D 特征到 3D 表示这是一个核心跳跃。Transformer 模块接收视觉特征 token输出一组三平面特征。这个三平面就是整个场景的“压缩 3D 表示”。三平面尺寸是影响内存和效果的关键参数。比如grid_size128意味着每个平面是 128×128。更大的分辨率表示更强的几何细节能力但也意味着更高的显存消耗。在 24GB 显存上一般建议从 128 或 256 开始尝试不要一上来就追求 512。5.4 人体与物体联合解码拿到三平面后需要查询空间中的点。对每个 3D 点投影到三个平面拿到拼接特征输入一个 MLP输出该点的占用值或 SDF 值。联合解码的关键是通道设计。一个常见设计是MLP 输出多个通道比如第一通道是总 SDF第二通道是人体语义概率第三通道是物体语义概率。训练时用交叉熵监督语义分类用 SDF 监督几何。这样模型在处理某个空间点时能同时判断“这是一个表面”和“这个表面属于人还是物体”。5.5 接触约束与穿透约束直接训练出来的几何可能会出现两种病态情况人体网格和物体网格互相穿透接触区域分离视觉上人像是悬空的。解决思路是在训练损失中加入接触损失和穿透损失。接触损失通常鼓励人体表面上的某些点在物体表面附近穿透损失则惩罚人-物交叉体积。这两种损失的设计非常考验经验需要在代码里做大量的查询和判断。5.6 网格提取与后处理最后用 Marching Cubes 类算法从 SDF 或 occupancy 场中提取等值面得到三角网格。后处理通常包括去除漂浮的碎片、平滑网格、按语义标签分离人体和物体。6. 完整示例最小 LRM 式 HOI 重建思路实现由于目前没有统一的官方开源仓库下面代码是教学级示意代码用于展示核心计算流程并不能直接放到某个项目里运行。重点看思路不要照搬。这个示例帮助你理解如果让我自己实现一个最小的 LRM 式 HOI 重建我会怎么组织代码。6.1 图像预处理与视觉特征提取# 文件路径preprocess.py # 功能说明读取图像并提取视觉特征 # 注意这是教学示意代码不是完整可运行项目 import torch import torch.nn as nn import torchvision.transforms as T from PIL import Image class VisualEncoder(nn.Module): 用预训练视觉模型提取图像特征。实际项目中可用 CLIP / DINO 替换。 def __init__(self, backbone: nn.Module, out_dim: int 768): super().__init__() self.backbone backbone self.proj nn.Linear(out_dim, out_dim) def forward(self, image: torch.Tensor): # image: [B, 3, H, W] features self.backbone(image) # [B, N, C]N 是 patch token 数 features self.proj(features) return features def load_image(path: str, image_size: int 256): img Image.open(path).convert(RGB) transform T.Compose([ T.Resize((image_size, image_size)), T.ToTensor(), T.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]), ]) return transform(img).unsqueeze(0)这段代码里的VisualEncoder是一个抽象封装。实际项目中backbone 可以是 DINO ViT也可以直接使用预训练好的分类网络。输出特征维度要跟你后面的 Transformer 输入维度对齐。6.2 三平面解码与 SDF 查询# 文件路径triplane_decoder.py # 功能说明从图像特征生成三平面并查询任意 3D 点的 SDF 和语义 # 注意这是简化示意图实际实现会包含位置编码、多分辨率特征等细节 import torch import torch.nn as nn class TriplaneDecoder(nn.Module): def __init__(self, feat_dim: int 768, grid_size: int 128): super().__init__() self.grid_size grid_size # 三个平面XY, YZ, ZX self.plane_xy nn.Parameter(torch.randn(1, feat_dim, grid_size, grid_size) * 0.02) self.plane_yz nn.Parameter(torch.randn(1, feat_dim, grid_size, grid_size) * 0.02) self.plane_zx nn.Parameter(torch.randn(1, feat_dim, grid_size, grid_size) * 0.02) self.mlp nn.Sequential( nn.Linear(feat_dim * 3, 512), nn.ReLU(), nn.Linear(512, 256), nn.ReLU(), nn.Linear(256, 2), ) def query_points(self, points: torch.Tensor): points: [num_points, 3]坐标范围在 [-1, 1] 返回 sdf: [num_points]human_semantics: [num_points] # 采样三平面特征 xy self.sample_plane(self.plane_xy, points[:, 0], points[:, 1]) yz self.sample_plane(self.plane_yz, points[:, 1], points[:, 2]) zx self.sample_plane(self.plane_zx, points[:, 0], points[:, 2]) # 拼接特征 tri_features torch.cat([xy, yz, zx], dim-1) # [num_points, feat_dim * 3] out self.mlp(tri_features) # 假设输出第一通道为 SDF第二通道为“属于人体”的 logits sdf out[:, 0] human_logits out[:, 1] return sdf, human_logits def sample_plane(self, plane: torch.Tensor, x_coord: torch.Tensor, y_coord: torch.Tensor): # 将 [-1, 1] 映射到像素坐标 px (x_coord 1.0) / 2.0 * (self.grid_size - 1) py (y_coord 1.0) / 2.0 * (self.grid_size - 1) # 使用 grid_sample 做双线性采样 # 这里省略具体实现实际项目用 torch.nn.functional.grid_sample return torch.zeros(x_coord.shape[0], plane.shape[1], deviceplane.device)这段代码的核心是query_points。模型不是直接输出一个完整网格而是允许你在任意空间位置查询它属于人体还是物体、距离表面有多远。这种“隐式表示”是 LRM 类方法能够处理复杂几何的基础。6.3 训练损失接触损失与穿透约束实际训练阶段损失函数非常关键。下面给出一个简化的损失设计思路# 文件路径losses.py # 功能说明HOI 重建任务的典型损失项示意 def contact_loss(contact_points, object_sdf_values, contact_target_dist0.01): contact_points: 人体表面上被标注为接触点的采样点 object_sdf_values: 这些点到物体表面的有符号距离 # 接触点应该尽量靠近物体表面所以 SDF 绝对值应接近 0 loss torch.abs(object_sdf_values - contact_target_dist).mean() return loss def penetration_loss(human_sdf_values, object_sdf_values): 当人体点位于物体内部时human_sdf 0object_sdf 0 真实场景中人体点不应过度穿透物体内部 # 只惩罚两者都为负的点即人体点落入物体内部 inside_mask (human_sdf_values 0) (object_sdf_values 0) if inside_mask.sum() 0: return torch.tensor(0.0, devicehuman_sdf_values.device) # 穿透深度越大惩罚越大 penetration_depth -object_sdf_values[inside_mask] return (penetration_depth ** 2).mean()这两个损失在很多 HOI 论文里都是标配。注意接触损失需要的“接触点标注”很难获得所以有些工作会在训练阶段使用 “靠近人体手部表面的物体点” 作为弱接触标签而不是依赖人工标注。6.4 从隐式场提取网格# 文件路径extract_mesh.py # 功能说明从 SDF 场中提取三角网格 # 实际项目使用 skimage.measure.marching_cubes 或 pytorch3d 的实现 import numpy as np from skimage.measure import marching_cubes def extract_mesh_from_sdf(sdf_grid: np.ndarray, level: float 0.0, semantic_gridNone): sdf_grid: [N, N, N] 的 SDF 值 semantic_grid: 可选每个 voxel 的语义标签用于分离人体和物体 verts, faces, normals, values marching_cubes(sdf_grid, levellevel) if semantic_grid is not None: # 根据顶点所在 voxel 的语义分类决定顶点属于人还是物体 # 这一步是工程细节可根据实际需求实现 vertex_semantics sample_semantic_at_vertices(verts, semantic_grid) return verts, faces, vertex_semantics return verts, faces, normalsMarching Cubes 是三维重建常用的等值面提取算法它会把 SDF 值等于 0 的点连接成三角面片。提取出来的网格可能不干净后续通常还要做滤波和简化。7. 运行结果与效果验证在不能跑通官方模型的情况下如何判断自己的实现或某个开源模型的效果是否合格建议从两个维度验证定量指标和定性可视化。7.1 定量指标HOI 重建通常看三类指标人体精度PA-MPJPEProcrustes aligned Mean Per Joint Position Error是衡量人体关节点误差的常用指标单位是毫米。数值越小越好。物体重建精度Chamfer Distance倒角距离衡量预测网格和真值网格之间的平均最近点距离F-score 衡量指定阈值下的精确率和召回率。交互质量接触点精度预测的接触区域和真值接触区域的重合度、穿透深度或穿透体积。下面是倒角距离的示意实现# 文件路径metrics.py # 功能说明评估网格重建质量的倒角距离 from scipy.spatial import cKDTree import numpy as np def chamfer_distance(pred_points: np.ndarray, gt_points: np.ndarray) - float: pred_points: [N, 3]预测网格顶点 gt_points: [M, 3]真值网格顶点 pred_tree cKDTree(pred_points) gt_tree cKDTree(gt_points) pred_to_gt, _ gt_tree.query(pred_points, k1) gt_to_pred, _ pred_tree.query(gt_points, k1) cd np.mean(pred_to_gt) np.mean(gt_to_pred) return float(cd)7.2 定性可视化定量指标再好看也要做定性检查。建议从四个角度渲染结果俯视图检查人和物体的空间位置是否合理侧视图检查是否存在明显的穿透接触区域特写检查手部、臀部等接触位置是否贴合语义分离图把人体和物体用不同颜色渲染检查是否出现“物体的一部分被分类成人体”的错乱。如果发现渲染结果表面有大量空洞优先检查三平面分辨率是否太低、SDF 提取的阈值是否合理。如果发现接触区域大面积分离优先检查接触损失权重是否过小。8. 常见问题与排查思路下面这些问题是 HOI 重建项目里出现频率最高的按排查优先级排序问题现象可能原因排查方式解决方向重建人体姿态严重失真输入图像视角过偏或遮挡严重检查输入图像中人体关键点是否可见增加输入视角调整相机参数降低姿态先验丢失时的损失权重物体网格含大量漂浮碎片三平面分辨率不足或 SDF 等值面提取噪声大可视化 SDF 场切片观察离散步长提高网格分辨率增加表面平滑正则人体和物体发生穿透接触损失没有覆盖接触区域检查接触点采样密度增加接触点采样加入穿透惩罚项接触区域分离、人悬空接触损失权重过小或接触标签不准确可视化预测接触掩码增大接触损失权重改进接触标签生成方式显存不足三平面分辨率过高或 batch size 过大观察训练时显存曲线降低 grid_size减少 batch size使用梯度累积物体类别不在训练分布内数据集中该类物体样本太少检查训练集类别分布补充数据使用类别条件输入引入预训练物体先验人体和物体无法语义分离语义分类分支没有收敛查看语义 logits 分布增加语义分割辅助监督调整交叉熵损失权重相机坐标系不一致导致结果混乱训练和推理时相机参数定义不同对齐相机坐标系统一世界坐标方向、尺度缩放规则以上问题的核心共性多数 HOI 重建失败发生在数据阶段而不是网络结构阶段。如果输入图像分辨率低、遮挡多、相机参数不一致再强的模型也救不回来。9. 这套技术适合谁不适合谁任何一个技术话题都要回到“实际项目中该不该用”。把这个判断讲清楚比堆砌概念更有价值。比较适合引入 LRM 式 HOI 重建的场景有你已经有一个 3D 重建或人体重建的基础管线希望增加物体重建能力你的场景是可控的比如机器人操作、虚拟试穿、AR 摆放场景类别有限不需要对全类别物体泛化你的产品愿意接受“近实时但偶尔有瑕疵”的 3D 结果而不是要求逐像素级精度你手上能拿到一定量的多视角图片或合成数据可以用于微调。不太适合的场景包括只需要人体重建不需要同时恢复物体。这时候引入 HOI 模型只会增加复杂度要求高精度的工业测量级结果。LRM 类方法目前的几何精度还没有达到传统多视角重建在受控场景下的水平完全没有 GPU 资源的场景。这套方法对推理算力要求不低。需要特别说明的是LRM 式 HOI 重建并不是“训练一次所有场景通吃”。它的优势在于可以针对特定交互场景做微调。比如你的产品只需要“人坐在椅子上”这一类交互那么用少量椅子场景数据微调效果会显著好于一个试图覆盖所有物体类别的大模型。10. 最佳实践与工程建议10.1 数据层面数据质量比数量更重要。HOI 重建对标注质量极其敏感尤其是接触区域。宁可要 1 万张高质量多视角数据也不要 10 万张只有单视图像和粗略包围盒的数据。合成数据是实用的起点。真实场景的数据获取成本高先用合成数据验证流程是合理策略。渲染工具可以使用 Blender 或 Unity按“目标类别 随机场景材质 随机光照”的方式生成训练集。关注相机参数随机化。模型过拟合相机角度是常见问题。在生成数据时随机化相机位置、朝向和焦距能够提升泛化能力。10.2 训练层面不要一上来就训练整个模型。建议先冻结视觉编码器只训练三平面解码器和语义分支。等损失稳定后再决定是否解冻视觉编码器进行端到端微调。损失权重需要逐步调整。接触损失和穿透损失的权重不是固定不变的。训练初期几何还没稳定时过大的接触损失会让模型训练震荡后期如果穿透严重再适当增加穿透惩罚。使用梯度累积控制显存。三平面查询会占用大量显存单卡往往放不下大的 batch。用梯度累积模拟更大的 batch是这类任务最常见的调优手段。10.3 评估层面在论文或项目中给出结果时建议同时报告人体指标、物体指标、交互指标三类缺一不可同类别的平均结果和不同类别分别的结果可视化对比图尤其是接触区域的放大图。只报一个总体的 Chamfer Distance不能说明模型真的学到了交互。10.4 安全和合规层面再补充一点容易被忽略的部分。HOI 重建涉及人体数据尤其是真实人物图片存在明确的隐私和合规问题。使用真实人体数据时必须确认数据来源合法、已获得必要授权涉及人脸、可识别身份信息时建议脱敏或使用合成的虚拟人发布模型或 demo 时不要包含未授权个体的人体扫描或重建结果如果是医疗、安防等敏感场景要严格限制用途和访问权限。11. 总结与后续学习方向回到文章开头的问题Large Reconstruction Models 到底给 Human-Object Interaction 重建带来了什么我的判断是它不是简单的“换一个更厉害的重建骨干”而是把 HOI 重建从“多模块拼接 手工约束”的范式带向“统一表示 可学习约束”的范式。整个流程变得更短但同时把复杂度转移到了数据、损失设计和分布式训练上。如果你接下来想深入研究建议按这个路径走先跑通用 LRM 重建理解三平面和隐式场的原理再找一个 HOI 重建开源项目把它的数据处理、接触损失实现读透选择一个窄交互场景比如“人在椅子上”或“手拿杯子”用合成数据做端到端实验再逐步扩展交互类别观察模型的泛化边界。不要一开始就追求“全类别、全场景、全交互”的大而全模型。HOI 重建最大的坑就是数据先把一个小场景做到可控、可评估、可复现再谈规模化。到那时候LRM 一类方法真正的优势才会体现出来。