模仿学习2.7:diffusion
概念
以专家示范轨迹为训练数据,通过扩散模型的「逐步加噪 - 条件去噪」生成范式,学习并输出符合专家行为分布的连续动作序列的模仿学习方法
核心目标:从专家示范的(状态 - 动作)轨迹中,学习一个从环境状态到执行动作的映射策略,让智能体复现专家的行为
核心能力:通过「前向逐步给数据加高斯噪声,反向训练去噪网络还原数据」的流程,精准拟合高维、复杂、多模态的数据分布,训练稳定性远优于 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/并配置环境变量
-
访问 MuJoCo 下载页面
-
选择MuJoCo 210
-
下载对应 Linux 版本的压缩包
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 #改成自己的路径
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)