深入理解Xiaomi-Robotics-0-LIBERO的动作生成机制:从输入编码到控制命令的全流程 深入理解Xiaomi-Robotics-0-LIBERO的动作生成机制从输入编码到控制命令的全流程【免费下载链接】Xiaomi-Robotics-0-LIBERO项目地址: https://ai.gitcode.com/hf_mirrors/XiaomiRobotics/Xiaomi-Robotics-0-LIBEROXiaomi-Robotics-0-LIBERO是小米机器人技术团队开发的开源项目专注于机器人动作生成与控制。本文将详细解析其核心动作生成机制从输入编码到控制命令输出的完整流程帮助新手开发者快速掌握项目核心技术。动作生成系统架构概览Xiaomi-Robotics-0-LIBERO采用模块化设计主要由视觉语言模型VLM和动作生成模块DiT两部分组成。系统架构如图所示输入数据 → 视觉语言编码器 → 状态与动作投影 → DiT解码器 → 动作输出核心实现位于modeling_mibot.py文件中其中MiBoTForActionGeneration类整合了完整的动作生成流程。关键组件介绍Qwen3VL视觉语言模型负责处理多模态输入图像/视频文本指令DiT解码器基于扩散模型的动作生成核心状态/动作投影器实现状态与动作空间的维度转换时间嵌入模块为扩散过程提供时间步信息输入编码多模态信息处理系统支持图像、视频和文本指令等多种输入形式通过统一的编码流程转换为模型可处理的特征向量。视觉输入处理图像和视频输入通过Qwen3VLVisionModel类进行处理图像分块嵌入使用Qwen3VLVisionPatchEmbed将图像分割为固定大小的块并投影到特征空间位置编码通过fast_pos_embed_interpolate方法生成空间位置信息视觉注意力Qwen3VLVisionAttention模块提取图像特征关键代码实现# 图像特征提取流程 hidden_states self.patch_embed(hidden_states) # 分块嵌入 pos_embeds self.fast_pos_embed_interpolate(grid_thw) # 位置编码 hidden_states hidden_states pos_embeds # 添加位置信息文本指令编码文本指令通过Qwen3VLTextModel处理采用Transformer架构词嵌入embed_tokens将文本转换为向量表示** Rotary位置编码**Qwen3VLTextRotaryEmbedding处理序列位置信息自注意力机制Qwen3VLTextAttention捕获文本上下文关系状态与动作空间转换机器人状态和动作需要经过投影处理以适应模型输入输出要求。状态投影环境状态通过MLPProjector转换为与模型隐藏层维度匹配的特征self.state_projector MLPProjector( input_dimconfig.state_dim, output_dimconfig.dit_config.hidden_size, num_layers2 )动作投影与输出动作空间转换包括编码输入到模型和解码模型输出到动作两个过程# 动作输入投影 self.action_projector MLPProjector( input_dimconfig.action_dim, output_dimconfig.dit_config.hidden_size, num_layers2 ) # 动作输出解码 self.action_output_layer MLPProjector( input_dimconfig.dit_config.hidden_size, output_dimconfig.action_dim, num_layers2 )DiT动作生成核心扩散模型DiT是动作生成的核心通过逐步去噪过程生成平滑的机器人动作序列。时间嵌入扩散过程的时间步信息通过TimestepEmbedder编码class TimestepEmbedder(nn.Module): def forward(self, t): t_freq self.timestep_embedding(t, self.frequency_embedding_size) t_emb self.mlp(t_freq) return t_emb[:, None]解码器层结构DecoderLayer整合了注意力和MLP模块支持动作序列生成class DecoderLayer(nn.Module): def forward(self, hidden_states, past_key_values, position_embeds, t_embeds, attn_maskNone): # 注意力子层 residual hidden_states hidden_states self.input_layernorm(hidden_states) hidden_states modulate(hidden_states, shift_msa, scale_msa) hidden_states self.attn(hidden_states, past_key_values, position_embeds, attn_mask) hidden_states residual gate_msa * hidden_states # MLP子层 residual hidden_states hidden_states self.post_layernorm(hidden_states) hidden_states modulate(hidden_states, shift_mlp, scale_mlp) hidden_states self.mlp(hidden_states) hidden_states residual gate_mlp * hidden_states return hidden_states扩散过程实现动作生成采用逐步去噪的扩散过程从随机噪声开始迭代优化x torch.randn_like(action_mask) # 初始随机噪声 dt 1.0 / num_steps for step in range(num_steps): t torch.ones((x.shape[0], 1, 1), devicex.device, dtypex.dtype) * step / num_steps v dit_forward_fn(x, t) # 预测噪声 x x v * dt # 更新动作完整动作生成流程综合上述模块完整的动作生成流程如下输入处理多模态输入图像/视频文本通过VLM编码状态编码机器人当前状态通过状态投影器转换初始噪声生成随机动作噪声作为扩散起点迭代去噪DiT模型逐步优化动作序列动作输出生成最终机器人控制命令核心代码入口在MiBoTForActionGeneration类的forward方法torch.no_grad() def forward(self, state, action_mask, num_steps5,** kwargs): vlm_outputs self.vlm(**kwargs, use_cacheTrue) # VLM编码 state_embed self.state_projector(state) # 状态投影 # 扩散过程 x torch.randn_like(action_mask) # 初始噪声 for step in range(num_steps): t torch.ones((x.shape[0], 1, 1), devicex.device) * step / num_steps v self.dit_forward(x, t, ...) # 噪声预测 x x v * (1.0/num_steps) # 迭代更新 return ActionGenerationOutput(actionsx)快速上手与实践环境准备首先克隆项目仓库git clone https://gitcode.com/hf_mirrors/XiaomiRobotics/Xiaomi-Robotics-0-LIBERO基本使用示例动作生成的基本调用方式from modeling_mibot import MiBoTForActionGeneration import torch # 加载模型 model MiBoTForActionGeneration.from_pretrained(./) # 准备输入 state torch.randn(1, 10, 64) # 示例状态 action_mask torch.ones(1, 20, 7) # 动作掩码 # 生成动作 outputs model(statestate, action_maskaction_mask, num_steps5) print(生成的动作序列:, outputs.actions.shape)总结与扩展Xiaomi-Robotics-0-LIBERO通过视觉语言模型与扩散模型的结合实现了从多模态指令到机器人动作的端到端生成。核心优势包括多模态理解同时处理视觉和文本输入平滑动作生成扩散模型确保动作序列的连续性灵活扩展模块化设计支持不同机器人平台适配未来可以通过以下方向进一步优化增加动作约束条件提高安全性优化扩散过程减少计算量增强环境交互反馈机制通过本文的解析相信您已经对Xiaomi-Robotics-0-LIBERO的动作生成机制有了全面了解。更多细节请参考项目源代码和技术文档。【免费下载链接】Xiaomi-Robotics-0-LIBERO项目地址: https://ai.gitcode.com/hf_mirrors/XiaomiRobotics/Xiaomi-Robotics-0-LIBERO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考