研究者发布 PINN-JEPA 预训练第一阶段代码与权重,用物理信息神经网络与解析微分保持运动学一致性,用于三维人体动作…
PINN-JEPA 是一个面向三维人体骨骼运动的自监督编码器,由物理信息神经网络(PINN)思路驱动。研究者近日在代码托管平台公开了 Step 1 预训练阶段的代码与一份较早版本的检查点,明确说明这份权重并非其内部最新版本,主要面向学术复现与实验,而非生产部署。整体许可采用学术自由许可证 v3.0(AFL-3.0),代码与权重均在同一许可证下分发。
编码器以 PyTorch 实现,不依赖 Transformer 库,骨干由状态嵌入层、GraphMix 空间模块与 TemporalBlock 时序模块堆叠而成,并在末端接入 LayerNorm。默认配置为 d_model = 256、深度 depth = 6、状态维度 d_state = 64。
输入约定为 (B, T, J, 12),其中 J = 17,对应 H36M 的 17 关节骨架,每个关节状态由位置、速度、加速度、急动度(jerk)各 3 维拼接而成。输出包含两路:
(B, T, J, D),即下游任务可用的运动表征;s_hat (B, T, J, 12),用于自监督重建损失。值得注意的是,网络只对位置通道预测残差,速度、加速度与急动度由中心差分在网络中以解析方式推导,这种设计被作者视为让表征保持运动学一致性的关键,而不是让各通道各自漂移。
Step 1 预训练采用自监督状态重建与多项物理感知正则项结合的方式,损失函数集中在 PINN_Lossfunction.py 中:
各项权重与具体形式可在源码中直接查阅。
仓库采用扁平导入方式,文件应保持同级或把仓库根目录加入 PYTHONPATH,主要模块包括:
PINN_EncoderBody.py:骨干网络,包含 StateEmbedding、GraphMix、TemporalBlock 与 EncoderBody;PINN_PretrainModel.py:Step 1 模型,由编码器加残差位置预测头组成;PINN_Lossfunction.py:物理感知预训练损失;PINN_Training.py:训练步骤与检查点存取;PINN_ModelEvaluation_downstream.py:基于聚类的表征质量评估;PINN_visualization_for_model3.py:三维骨架可视化与输入输出对比;export_weights.py、inference_example.py、Utils.py、config.json:权重瘦身、最小推理示例与工具函数。最小推理流程为:加载 config.json,实例化 EncoderBody 与 PINNPretrainModel,载入 pytorch_model.bin 后切换到 eval 模式即可前向。若发布的检查点使用了与默认 config.json 不同的超参数,需要先编辑配置文件使张量形状对齐再加载。
作者将预期用途限定为:自监督运动表征学习研究、作为下游姿态/动作任务的特征提取器、以及用于研究骨骼运动中的物理信息正则化方法。明确不适用场景包括临床、诊断、生物识别或安全关键用途,也未针对人物识别或监控进行训练或验证。
已知限制方面:
本仓库源码(.py 文件)与发布的模型权重均以 AFL-3.0 分发,权重按「按原样」提供,仅用于研究复现,不对任何特定用途作适用性担保。引用格式已附在仓库 README 中,注明为 2026 年的研究代码与权重发布。