GibsonEnv

GitHub
938 149 较难 2 次阅读 2天前MIT图像其他开发框架
AI 解读 由 AI 自动生成,仅供参考

GibsonEnv 是一个专为具身智能体(Embodied Agents)设计的虚拟环境模拟器,核心目标是为 AI 提供贴近真实世界的感知学习体验。它通过将真实空间数字化,让 AI 在虚拟环境中获得与物理世界高度相似的视觉和交互体验,从而解决传统仿真环境与现实差距过大、难以迁移的问题。

这个工具主要面向机器人学和人工智能领域的研究人员与开发者。如果你正在研究视觉导航、主动感知或强化学习,需要让 AI 在复杂三维空间中自主移动并理解环境,GibsonEnv 会是一个实用的选择。它也适合那些希望先在仿真环境中训练机器人策略、再部署到真实硬件的团队。

GibsonEnv 有几个值得关注的技术特点:首先,它的场景数据来自真实世界扫描,包含 572 个真实空间的 1440 层楼层,语义复杂度远高于人工设计的游戏场景;其次,内置的"Goggles"机制专门优化了从仿真到现实的迁移问题;最后,它集成了 Bullet 物理引擎,智能体的移动会受到真实物理约束,而非简单的碰撞检测。环境命名致敬了生态知觉理论家 James J. Gibson,体现了"感知与运动相互依存"的设计理念。

项目由斯坦福大学开发,2018 年入选 CVPR Spotlight Oral,支持 Docker 快速部署和 ROS 集成,降低了上手门槛。

使用场景

一家机器人初创公司正在开发一款家用服务机器人,需要训练其在真实家庭环境中完成导航和物品识别任务。

没有 GibsonEnv 时

  • 开发团队只能依赖真实场景测试,需要搭建多个模拟房间,成本高昂且调整困难
  • 真实环境中的测试速度受限,每次运行都需要人工干预,效率极低
  • 由于机器人硬件脆弱,频繁的碰撞测试导致设备损坏率居高不下
  • 缺乏对复杂语义信息(如家具类型、空间功能)的快速验证手段,算法迭代缓慢
  • 难以保证训练环境的一致性,不同房间的光照、布局差异影响实验结果

使用 GibsonEnv 后

  • 团队通过虚拟化的真实家庭场景进行训练,无需搭建实体环境,大幅降低开发成本
  • 在仿真环境中可以全天候运行测试,无需人工干预,显著提升研发效率
  • 借助内置物理引擎,机器人可以在虚拟环境中安全试错,避免硬件损耗
  • 提供丰富的语义信息支持,开发者能快速验证感知算法的效果并优化模型
  • 场景数据统一且可控,确保实验结果的可重复性和可靠性

GibsonEnv 让开发者在高度仿真的环境中高效训练机器人,真正实现了从虚拟到现实的无缝衔接。

运行环境要求

操作系统
  • Linux
GPU

需要 NVIDIA GPU,显存 >6GB,CUDA >=9.0(Docker 安装)或 CUDA >=8.0(源码安装)

内存

未说明

依赖
notes建议使用 Docker 安装方式以简化环境配置;首次运行需下载核心数据集文件(约数百MB到数GB);支持无图形界面的远程服务器部署,但需要 X server 或其他显示支持。
python3.5+(推荐使用 conda 创建 Python 3.5 环境)
torch==0.3.1
tensorflow==1.3
opencv
bulletphysics
numpy
PyYAML
scipy
matplotlib
mpi4py
zmq
GibsonEnv hero image

快速开始

GIBSON 环境:用于真实感知的具身主动智能体

你不应该整天玩游戏,你的 AI 也不应该!我们构建了一个虚拟环境模拟器 Gibson,它通过真实世界的体验来学习感知。

概述:感知与主动性(即拥有一定程度的运动自由)密切相关。在物理世界中学习主动感知和传感器运动控制非常麻烦,因为现有算法太慢,无法高效地实时学习,而且机器人既脆弱又昂贵。这促使了在模拟环境中学习的兴起,但也引发了如何迁移到现实世界的问题。我们开发了 Gibson 环境,具有以下主要特点:

I. 源自真实世界,并通过虚拟化真实空间反映其语义复杂性,
II. 内置迁移到现实世界的机制(Goggles 功能),以及
III. 智能体的具身化,并通过集成物理引擎(Bulletphysics)使其受空间和物理约束。

命名:Gibson 环境以《视觉感知的生态学方法》(1979 年)的作者 James J. Gibson 命名。“我们必须感知才能行动,但我们也必须行动才能感知”——JJ Gibson

更多技术细节请参见 网站 (http://gibsonenv.stanford.edu/)。本仓库旨在分发环境并提供安装/运行说明。

论文

"Gibson Env: Real-World Perception for Embodied Agents",发表于 CVPR 2018 [Spotlight Oral]

Gibson 总结视频

发布版本

这是 0.3.1 版本。欢迎并感谢提交错误报告、改进建议以及社区开发贡献。 更新日志文件

数据库

完整数据库包含 572 个空间和 1440 个楼层,可从 这里 下载。Gibson 中所有空间的多样化可视化效果可在此处查看 here。为了减轻用户核心资产下载包的负担,我们仅包含了一小部分(39 个)空间。用户可以下载其余空间并将它们添加到资产文件夹中。我们还集成了 Stanford 2D3DSMatterport 3D 作为单独的数据集,如果希望使用这些数据集与 Gibson 的模拟器(访问 此处)。

目录

安装

安装方法

有两种方式安装 Gibson:A. 使用我们的 Docker 镜像(推荐)和 B. 从源码构建。

系统要求

最低系统要求如下:

对于 Docker 安装(A):

  • Ubuntu 16.04
  • Nvidia GPU,显存 > 6.0GB
  • Nvidia 驱动 >= 384
  • CUDA >= 9.0,CuDNN >= v7

对于从源码构建(B):

  • Ubuntu >= 14.04
  • Nvidia GPU,显存 > 6.0GB
  • Nvidia 驱动 >= 375
  • CUDA >= 8.0,CuDNN >= v5

下载数据

首先,我们的环境核心资产数据可从 这里 获取。您可以按照以下安装指南下载并正确设置它们。gibson/assets 文件夹存储运行 Gibson 环境所需的必要数据(智能体模型、环境等)。用户可以将更多环境文件添加到 gibson/assets/dataset 中,以便在更多环境中运行 Gibson。访问 数据库 readme 下载更多空间。在使用 Gibson 数据库之前,请签署 许可协议

A. 快速安装(docker)

我们使用 Docker 分发软件,您需要先安装 dockernvidia-docker2.0

运行 docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi 验证您的安装。

您可以选择 1. 从我们的 Docker 镜像拉取(推荐)或 2. 构建自己的 Docker 镜像。

  1. 从我们的 Docker 镜像拉取(推荐)
# 从 https://storage.googleapis.com/gibson_scenes/dataset.tar.gz 下载数据集
docker pull xf1280/gibson:0.3.1
xhost +local:root
docker run --runtime=nvidia -ti --rm -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v <主机路径到数据集文件夹>:/root/mount/gibson/gibson/assets/dataset xf1280/gibson:0.3.1
  1. 构建自己的 Docker 镜像
git clone https://github.com/StanfordVL/GibsonEnv.git
cd GibsonEnv
./download.sh # 此脚本下载资产数据文件并解压缩到 gibson/assets 文件夹
docker build . -t gibson ### 在 Docker 内完成构建,默认情况下,数据集不会包含在 Docker 镜像中
xhost +local:root ## 启用 Docker 显示

如果安装成功,您应该能够运行 docker run --runtime=nvidia -ti --rm -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v <主机路径到数据集文件夹>:/root/mount/gibson/gibson/assets/dataset gibson 创建一个容器。请注意,我们未将数据集文件包含在 Docker 镜像中以保持镜像轻量化,因此在启动容器时需要将其挂载到容器中。

关于无头服务器部署的注意事项

Gibson Env 支持在无头服务器上部署并通过 x11vnc 进行远程访问。 您可以使用上述 Dockerfile 构建自己的 Docker 镜像。 在无头服务器上运行 Gibson 的说明(需要 X 服务器运行):

  1. 按照入门指南安装 nvidia-docker2 依赖项。使用 sudo apt-get install x11vnc 安装 x11vnc
  2. 在主机上运行 X server,并在 DISPLAY :0 上运行 x11vnc
  3. 运行以下命令启动 Docker 容器:
    docker run --runtime=nvidia -ti --rm -e DISPLAY -v /tmp/.X11-unix/X0:/tmp/.X11-unix/X0 -v <主机数据集文件夹路径>:/root/mount/gibson/gibson/assets/dataset <gibson 镜像名称>
    
  4. 在 Docker 内通过 python <gibson 示例或训练脚本> 运行 Gibson。
  5. 访问 主机:5900,你应该能够看到图形用户界面(GUI)。

如果你没有运行 X server,仍然可以运行 Gibson,请参阅此指南了解更多信息。

B. 从源码构建

如果你不想使用我们的 Docker 镜像,也可以在本地安装 Gibson。这需要安装一些依赖项。

首先,确保你已安装 Nvidia 驱动程序和 CUDA。如果从源码安装,CUDA 9 并不是必需的,因为这是为 nvidia-docker 2.0 准备的。然后,让我们安装一些依赖项:

apt-get update 
apt-get install libglew-dev libglm-dev libassimp-dev xorg-dev libglu1-mesa-dev libboost-dev \
		mesa-common-dev freeglut3-dev libopenmpi-dev cmake golang libjpeg-turbo8-dev wmctrl \
		xdotool libzmq3-dev zlib1g-dev
```	

安装所需的深度学习库:推荐使用 Python 3.5。你可以先创建一个 Python 3.5 环境。

```bash
conda create -n py35 python=3.5 anaconda 
source activate py35 # 后续步骤需要在 conda 环境中执行
conda install -c conda-forge opencv
pip install http://download.pytorch.org/whl/cu90/torch-0.3.1-cp35-cp35m-linux_x86_64.whl 
pip install torchvision==0.2.0
pip install tensorflow==1.3

克隆代码仓库,下载数据并构建:

git clone https://github.com/StanfordVL/GibsonEnv.git
cd GibsonEnv
./download.sh # 此脚本下载资产数据文件并解压到 gibson/assets 文件夹
./build.sh build_local ### 构建 C++ 和 CUDA 文件
pip install -e . ### 安装 Python 库

如果需要运行训练示例,请安装 OpenAI baselines。

git clone https://github.com/fxia22/baselines.git
pip install -e baselines

卸载

卸载 Gibson 很简单。如果你是通过 Docker 安装的,只需运行以下命令清理镜像:

docker images -a | grep "gibson" | awk '{print $3}' | xargs docker rmi

如果你是从源码安装的,则通过 pip uninstall gibson 卸载。

快速开始

首先在主机上运行 xhost +local:root 以启用显示。你可能需要先运行 export DISPLAY=:0。通过以下命令进入 Docker 容器:

docker run --runtime=nvidia -ti --rm -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v <主机数据集文件夹路径>:/root/mount/gibson/gibson/assets/dataset gibson

进入后,你会获得一个交互式 shell。现在可以运行一些示例。

如果你是从源码安装的,可以直接运行以下命令而无需使用 Docker。

python examples/demo/play_husky_nonviz.py ### 使用键盘上的 ASWD 键控制一辆车在 Gates 建筑周围导航

在此示例中,你可以使用键盘上的 ASWD 键控制一辆车在 Gates 建筑周围导航。此示例不会显示相机输出。

python examples/demo/play_husky_camera.py ### 使用键盘上的 ASWD 键控制一辆车在 Gates 建筑周围导航,同时显示 RGB 和深度相机输出

你可以使用键盘上的 ASWD 键控制一辆车在 Gates 建筑周围导航。你还可以看到 RGB 和深度相机的输出。

python examples/train/train_husky_navigate_ppo2.py ### 使用 PPO2 训练一辆车通过 Gates 建筑的走廊,使用相机的视觉输入
运行此命令后,你将开始训练一个 Husky 机器人在 Gates 建筑中导航并通过走廊,使用 RGBD 输入。每轮结束后,你将在终端中看到一些强化学习相关的统计数据。
python examples/train/train_ant_navigate_ppo1.py ### 使用 PPO1 训练一只蚂蚁通过 Gates 建筑的走廊,使用相机的视觉输入
运行此命令后,你将开始训练一只蚂蚁在 Gates 建筑中导航并通过走廊,使用 RGBD 输入。每轮结束后,你将在终端中看到一些强化学习相关的统计数据。

Gibson 帧率

以下是 Gibson 环境在不同平台上的帧率基准测试结果。请参考 fps 分支 获取重现结果的代码。

平台 测试环境:Intel E5-2697 v4 + NVIDIA Tesla V100
分辨率 [nxn] 128 256 512
RGBD,网络前f 109.1 58.5 26.5
RGBD,网络后f 77.7 30.6 14.5
RGBD,小型网络后f 87.4 40.5 21.2
仅深度 253.0 197.9 124.7
仅表面法线 207.7 129.7 57.2
仅语义 190.0 144.2 55.6
非视觉感官 396.1 396.1 396.1

我们还在 Intel I7 7700 + NVIDIA GeForce GTX 1070TiIntel I7 6580k + NVIDIA GTX 1080Ti 平台上进行了测试。每个任务的帧率差异在 10% 以内。

平台 (Platform) 在 Intel E5-2697 v4 + NVIDIA Tesla V100 上测试的多进程 FPS
配置 (Configuration) 512x512 episode 同步 512x512 frame 同步 256x256 episode 同步 256x256 frame 同步 128x128 episode 同步 128x128 frame 同步
1 进程 12.8 12.02 32.98 32.98 52 52
2 进程 23.4 20.9 60.89 53.63 86.1 101.8
4 进程 42.4 31.97 105.26 76.23 97.6 145.9
8 进程 72.5 48.1 138.5 97.72 113 151

Web 用户界面

运行 Gibson 时,可以通过 python gibson/utils/web_ui.py python gibson/utils/web_ui.py 5552 启动一个 Web 用户界面。这在您无法物理访问运行 Gibson 的机器或在无头云环境中运行时非常有用。您需要将配置文件中的 mode 更改为 web_ui 才能使用 Web 用户界面。

渲染语义 (Rendering Semantics)

当模型经过语义标注后,Gibson 可以提供逐像素、逐帧的语义掩码。目前我们已经整合了来自 Stanford 2D-3D-Semantics 数据集Matterport 3D 的模型用于此目的。您可以在 Gibson 中通过 这里 访问它们。有关其语义类别和标注的列表,请参考原始数据集的文档。

有关在 Gibson 中渲染语义的详细说明,请参阅 语义说明。例如,在安装时附带的入门数据集中,space7 包含 Stanford 2D-3D-Semantics 风格的标注。

机器人代理 (Robotic Agents)

Gibson 提供了一组基础的代理。这些代理及其对应的感知观察视频可以在此处查看 here

为了(可选地)抽象化低级控制和机器人动力学以便于高级任务,我们还为每个代理提供了一组实用和理想的控制器。

代理名称 (Agent Name) 自由度 (DOF) 信息 (Information) 控制器 (Controller)
Mujoco Ant 8 OpenAI 链接 力矩 (Torque)
Mujoco Humanoid 17 OpenAI 链接 力矩 (Torque)
Husky 机器人 4 ROS, 制造商 力矩、速度、位置 (Torque, Velocity, Position)
Minitaur 机器人 8 机器人页面, 制造商 正弦控制器 (Sine Controller)
JackRabbot 2 斯坦福项目链接 力矩、速度、位置 (Torque, Velocity, Position)
TurtleBot 2 ROS, 制造商 力矩、速度、位置 (Torque, Velocity, Position)
四轴飞行器 (Quadrotor) 6 论文 位置 (Position)

入门代码 (Starter Code)

更多演示示例可以在 examples/demo 文件夹中找到。

示例 (Example) 说明 (Explanation)
play_ant_camera.py 使用键盘上的 1234567890qwerty 键控制蚂蚁在 Gates 大楼周围导航,同时显示 RGB 和深度相机输出。
play_ant_nonviz.py 使用键盘上的 1234567890qwerty 键控制蚂蚁在 Gates 大楼周围导航。
play_drone_camera.py 使用键盘上的 ASWDZX 键控制无人机在 Gates 大楼周围导航,同时显示 RGB 和深度相机输出。
play_drone_nonviz.py 使用键盘上的 ASWDZX 键控制无人机在 Gates 大楼周围导航。
play_humanoid_camera.py 使用键盘上的 1234567890qwertyui 键控制人形机器人在 Gates 大楼周围导航。开个玩笑,用键盘控制人形机器人太难了,你只能看着它摔倒。按 R 重置。RGB 和深度相机输出也会显示。
play_humanoid_nonviz.py 看着人形机器人摔倒。按 R 重置。
play_husky_camera.py 使用键盘上的 ASWD 键控制一辆车在 Gates 大楼周围导航,同时显示 RGB 和深度相机输出。
play_husky_nonviz.py 使用键盘上的 ASWD 键控制一辆车在 Gates 大楼周围导航。

更多训练代码可以在 examples/train 文件夹中找到。

示例 (Example) 说明 (Explanation)
train_husky_navigate_ppo2.py 使用 PPO2 训练一辆车沿着 Gates 大楼的走廊导航,使用相机的 RGBD 输入。
train_husky_navigate_ppo1.py 使用 PPO1 训练一辆车沿着 Gates 大楼的走廊导航,使用相机的 RGBD 输入。
train_ant_navigate_ppo1.py 使用 PPO1 训练一只蚂蚁沿着 Gates 大楼的走廊导航,使用相机的视觉输入。
train_ant_climb_ppo1.py 使用 PPO1 训练一只蚂蚁沿着 Gates 大楼的楼梯下楼,使用相机的视觉输入。
train_ant_gibson_flagrun_ppo1.py 使用 PPO1 训练一只蚂蚁在 Gates 大楼内追逐目标(一个红色立方体)。每次蚂蚁到达目标(或超时),目标会改变位置。
train_husky_gibson_flagrun_ppo1.py 使用 PPO1 训练一辆车在 Gates 大楼内追逐目标(一个红色立方体)。每次车到达目标(或超时),目标会改变位置。

ROS 配置

我们在此处提供了使用 ROS 配置 Gibson 的示例。我们以 turtlebot 为例,在 Gibson 中训练策略后,只需进行极少的修改即可将其部署到 turtlebot 上。更多详细信息,请参阅 README

编码你的强化学习(RL)智能体

你可以按照我们的约定来编写你的 RL 智能体。与我们的环境交互的接口非常简单(请参见本节末尾的一些示例)。

首先,可以通过创建 gibson/core/envs 文件夹中的类实例来创建一个环境。

env = AntNavigateEnv(is_discrete=False, config = config_file)

然后通过 env.step 执行一步模拟,并通过 env.reset() 重置环境。

obs, rew, env_done, info = env.step(action)

obs 提供了机器人的观测值。它是一个字典,每个组件作为键值对存在。其键由用户在配置文件中指定。例如,obs['nonviz_sensor'] 是本体感受传感器数据,obs['rgb_filled'] 是 RGB 相机数据。

rew 是定义的奖励。env_done 标志着一个回合的结束,例如当机器人“死亡”时。info 提供了此步骤的一些附加信息;有时我们用它传递额外的非视觉传感器值。

在设计 RL 算法和环境的接口时,我们主要遵循了 OpenAI gym 的约定。为了帮助用户更快上手环境,我们在 examples/train 提供了一些示例。我们使用的 RL 算法来自 openAI baselines,并经过一些调整以适配混合视觉和非视觉感官数据。 具体来说,我们使用了 PPO 和速度优化版本的 PPO

环境配置

每个环境都通过一个 yaml 文件进行配置。yaml 文件的示例可以在 examples/configs 文件夹中找到。以下是对文件参数的解释。有关 Bullet 物理引擎的更多信息,请参阅文档 此处

参数名称 示例值 解释
envname AntClimbEnv 环境名称,确保它与环境的类名相同
model_id space1-space8 场景 ID,在测试版发布中,从 space1 到 space8 中选择
target_orn [0, 0, 3.14] 导航的目标方向(欧拉角,单位为弧度),参考系为世界坐标系。对于非导航任务,此参数将被忽略。
target_pos [-7, 2.6, -1.5] 导航的目标位置(单位为米),参考系为世界坐标系。对于非导航任务,此参数将被忽略。
initial_orn [0, 0, 3.14] 导航的初始方向(单位为弧度),参考系为世界坐标系
initial_pos [-7, 2.6, 0.5] 导航的初始位置(单位为米),参考系为世界坐标系
fov 1.57 相机的视场角(单位为弧度)
use_filler true/false 是否使用神经网络填充器。建议将此参数保持为 true。更多信息请参阅 Gibson 环境网站
display_ui true/false Gibson 有两种显示视觉输出的方式,要么在多个窗口中显示,要么将它们聚合到一个 pygame 窗口中。此参数决定是否显示 pygame UI,如果是在生产环境(训练)中,则需要将其关闭。
show_diagnostics true/false 在 RGB 图像上叠加显示诊断信息(包括帧率、机器人位置和方向、累计奖励)。
ui_num 2 要显示的 UI 组件数量,这应该是 ui_components 的长度。
ui_components [RGB_FILLED, DEPTH] UI 组件有哪些,可从 [RGB_FILLED, DEPTH, NORMAL, SEMANTICS, RGB_PREFILLED] 中选择。
output [nonviz_sensor, rgb_filled, depth] 环境向机器人提供的输出,可从 [nonviz_sensor, rgb_filled, depth] 中选择。这些值独立于 ui_components,因为 ui_components 决定要显示的内容,而 output 决定机器人接收到的内容。
resolution 512 可从 [128, 256, 512] 中选择 RGB/深度图像的分辨率。
initial_orn [0, 0, 3.14] 导航的初始方向(单位为弧度),参考系为世界坐标系。
speed : timestep 0.01 单个物理模拟步长的时间(以秒为单位,定义见 Bullet)。例如,如果 timestep=0.01 秒,frameskip=10,且环境以 100fps 运行,则模拟速度将是实时的 10 倍。注意:在当前版本的 Bullet 模拟器中,将 timestep 设置为高于 0.1 可能会导致不稳定,因为物体在一个时间步内不应移动超过其自身半径的距离。可以将 timestep 保持在较低值,但增加 frameskip 以实现更快的模拟速度。更多信息请参阅 Bullet 指南 中的“离散碰撞检测”。
speed : frameskip 10 渲染帧时跳过的时间步数。请参见上一行的示例。对于不需要高频控制的任务,可以将 frameskip 设置为更大的值以进一步加速。
mode gui/headless/web_ui gui 或 headless,如果是在生产环境(训练)中,则需要将其设置为 headless。在 gui 模式下会有视觉输出;在 headless 模式下则没有视觉输出。此外,如果将模式设置为 web_ui,它的行为类似于 headless 模式,但视觉内容会渲染到 Web UI 服务器上。(更多信息
verbose true/false 在终端中显示诊断信息
fast_lq_render true/false 如果 yaml 文件中有 fast_lq_render,Gibson 将使用较小的填充网络,这将加快渲染速度,但生成的相机输出质量会略低。此选项对于快速训练 RL 智能体很有用。

创建自定义环境

Gibson 提供了一组方法供你定义自己的环境。你可以参考 gibson/core/envs 中现有的环境。

方法名称 用途
robot.render_observation(pose) 根据姿态 (pose) 渲染新的观测结果,返回一个字典。
robot.get_observation() 获取当前姿态下的观测结果。需要在调用 robot.render_observation(pose) 后使用。此操作不会引入额外的计算。
robot.get_position() 获取机器人当前位置。
robot.get_orientation() 获取机器人当前方向。
robot.eyes.get_position() 获取机器人感知相机的当前位置。
robot.eyes.get_orientation() 获取机器人感知相机的当前方向。
robot.get_target_position() 获取机器人目标位置。
robot.apply_action(action) 对机器人应用动作 (action)。
robot.reset_new_pose(pos, orn) 将机器人重置为任意姿态 (pose)。
robot.dist_to_target() 获取机器人到目标的当前距离。

Goggles:将智能体迁移到现实世界

Gibson 包含一种内置的域适应机制,名为 Goggles(护目镜),用于将在 Gibson 中训练的智能体部署到现实世界时(即基于车载摄像头传来的图像进行操作)。该机制本质上是一个学习到的逆函数,可以将来自真实摄像头的画面调整为看起来像是通过 Gibson 渲染的效果,从而消除域差异。

更多细节: 尽管点云渲染存在各种不完美之处,但事实证明,通过神经网络修复实现完全逼真的渲染非常困难。剩余的问题导致合成图像与真实图像之间存在域差异。因此,我们将渲染问题定义为构建一个联合空间,确保渲染图像与真实图像之间的对应关系,而不是试图(徒劳地)渲染出与真实图像完全相同的图像。这提供了一种确定性的跨域路径,从而消除了域差异。我们为目标图像 (I_t) 添加了另一个网络 "u",并定义了渲染损失以最小化 f(I_s) 和 u(I_t) 之间的距离,其中 "f" 和 "I_s" 分别表示填充神经网络和点云渲染输出(见上图中的损失公式)。我们对 f 和 u 使用了相同的网络结构。函数 u(I) 被训练用于调整现实世界中的观测值 I_t,使其看起来像对应的 I_s,从而消除域差异。我们将 u 网络命名为 Goggles(护目镜),因为它类似于智能体在现实世界中部署时的矫正镜片。该机制的详细公式和讨论请参阅论文。您可以下载函数 u 并在现实世界中部署训练好的智能体时应用它。

为了使用 Goggle,您最好配备一个带深度传感器的摄像头,我们在此提供了一个 Kinect 的示例 这里。训练好的 Goggle 函数存储在 assets/unfiller_{resolution}.pth 中,每个函数都与一个填充函数配对。您需要根据所使用的填充函数选择正确的 Goggle 函数。如果您没有带深度传感器的摄像头,我们也提供了一个仅支持 RGB 的示例 这里

引用

如果您使用 Gibson 环境的软件或数据库,请引用:

@inproceedings{xiazamirhe2018gibsonenv,
  title={Gibson {Env}: real-world perception for embodied agents},
  author={Xia, Fei and R. Zamir, Amir and He, Zhi-Yang and Sax, Alexander and Malik, Jitendra and Savarese, Silvio},
  booktitle={Computer Vision and Pattern Recognition (CVPR), 2018 IEEE Conference on},
  year={2018},
  organization={IEEE}
}

版本历史

v0.3.12018/08/11
v0.1.02018/02/26

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架