概念

专家示范轨迹为训练数据,通过扩散模型的「逐步加噪 - 条件去噪」生成范式,学习并输出符合专家行为分布的连续动作序列的模仿学习方法

核心目标:从专家示范的(状态 - 动作)轨迹中,学习一个从环境状态到执行动作的映射策略,让智能体复现专家的行为

核心能力:通过「前向逐步给数据加高斯噪声,反向训练去噪网络还原数据」的流程,精准拟合高维、复杂、多模态的数据分布,训练稳定性远优于 GAN 等生成模型

工作流程

1. 训练阶段(学习专家行为分布)

  • 数据预处理:收集专家示范轨迹,整理为「环境状态序列(含当前 / 历史状态)+ 对应未来多步动作序列」的配对数据,动作序列是扩散模型的生成目标。

  • 前向加噪过程:对专家的真实动作序列,逐步添加高斯噪声,经过 T 步后,纯动作序列被完全破坏为随机高斯噪声。

  • 条件去噪训练:训练一个条件去噪神经网络,输入为「加噪后的动作序列、当前加噪步数、环境状态条件」,训练目标是精准预测当前步添加的高斯噪声。通过迭代训练,模型学会在给定状态下,从噪声中还原出专家的动作分布。

2. 推理阶段(策略执行)

  • 从随机高斯噪声出发,作为初始的动作序列;

  • 基于当前实时的环境状态,通过训练好的去噪网络,执行 T 步逐步去噪,最终还原出符合专家行为的完整动作序列;

  • 一般取序列的第一个动作在环境中执行,之后进入新的环境状态,重复上述去噪生成流程,实现闭环的连续决策。

pushT代码实现

1.环境准备

# 克隆官方仓库
git clone https://github.com/real-stanford/diffusion_policy.git
cd diffusion_policy

#创建 conda 环境
conda create -n diffusion_policy python=3.9
conda activate diffusion_policy

#安装依赖
cd diffusion_policy
pip install -e .
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install matplotlib tensorboard opencv-python

2.准备数据集

cd diffusion_policy/data
#下载数据集
wget https://diffusion-policy.cs.columbia.edu/data/training/pusht.zip
#解压
unzip pusht.zip && rm -f pusht.zip

若想自己准备数据集,可运行demo.pusht.py 可以自己动手推T块

python demo_pusht.py -o ./data/pusht_demo.zarr 
#需要用-o ./data/pusht_demo.zarr收集数据集 格式为zarr

3.运行

python train.py \
--config-dir=diffusion_policy/config \
--config-name=train_diffusion_transformer_lowdim_pusht_workspace \
task.dataset.zarr_path=/home/hql/il/diffusion/diffusion_policy/data/pusht/pusht_cchi_v7_replay.zarr #改为自己的路径

机械臂代码实现(未完待续)

1.配置环境

创建并激活虚拟环境

conda create -n diffusion_policy python=3.9
conda activate diffusion_policy

安装 PyTorch

pip install torch torchvision torchaudio

克隆仓库并安装项目依赖

git clone https://github.com/real-stanford/diffusion_policy.git
cd diffusion_policy
pip install -e .

安装 MuJoCo

下载 MuJoCo 210到 ~/.mujoco/并配置环境变量

nano ~/.bashrc
export MUJOCO_PY_MJPRO_PATH=~/.mujoco/mujoco210
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MUJOCO_PY_MJPRO_PATH/bin
export MUJOCO_PY_MJKEY_PATH=~/.mujoco/mjkey.txt
source ~/.bashrc使配置生效或者重新打开终端

安装mujoco_py

pip install mujoco-py
#验证安装
python -c "import mujoco_py; print(mujoco_py.__version__)"

sudo apt update
sudo apt install libglfw3 libglfw3-dev libglew-dev libosmesa6-dev

安装Robosuite

cd ~/il/diffusion/diffusion_policy
git clone https://github.com/ARISE-Initiative/robosuite.git
cd robosuite
git checkout v1.4.0
sed -i 's/.*mujoco_py.*/# &/' setup.py
pip install -r requirements.txt
python setup.py install

#验证安装
cd ~/il/diffusion/diffusion_policy
python -c "import robosuite; print(robosuite.__version__)"

克隆Robomimic 仓库(与diffusion_policy同个目录)

# 当前目录: il/diffusion
git clone https://github.com/ARISE-Initiative/robomimic.git
cd robomimic

安装 Robomimic 及其依赖

# 当前目录: il/diffusion/robomimic
pip install -e .
pip install -r requirements-docs.txt

1.数据集准备

cd diffusion_policy/data
wget https://diffusion-policy.cs.columbia.edu/data/training/robomimic_lowdim.zip
unzip robomimic_lowdim.zip && rm -f robomimic_lowdim.zip
cd ..

2.修改配置文件

diffusion_policy/config/train_robomimic_lowdim_workspace.yaml

task: pusht_lowdim # <-- 这里是罪魁祸首!

将pusht_lowdim改成lift_lowdim

3.训练

python train.py \
--config-dir=diffusion_policy/config \
--config-name=train_robomimic_lowdim_workspace \
task.dataset_type=mh \
task.dataset.dataset_path=/home/hql/il/diffusion/diffusion_policy/data/robomimic/lift/mh/low_dim.hdf5 #改成自己的路径

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐