ALFRED
日常任务中解释基于场景指令的基准测试
Mohit Shridhar, Jesse Thomason, Daniel Gordon, Yonatan Bisk,
Winson Han, Roozbeh Mottaghi, Luke Zettlemoyer, Dieter Fox
CVPR 2020
ALFRED(Action Learning From Realistic Environments and Directives,从真实环境和指令中学习行动)是一个新的基准测试,用于学习从自然语言指令和自我中心视觉到家庭任务的动作序列的映射。我们包含了具有不可逆状态变化的长期组合推演,以缩小研究基准与真实世界应用之间的差距。
获取最新更新,请访问:askforalfred.com
**还有什么?**查看ALFWorld – ALFRED场景的交互式TextWorld环境!
快速开始
克隆仓库:
$ git clone https://github.com/askforalfred/alfred.git alfred
$ export ALFRED_ROOT=$(pwd)/alfred
安装依赖:
$ virtualenv -p $(which python3) --system-site-packages alfred_env # 或使用您喜欢的其他包管理器
$ source alfred_env/bin/activate
$ cd $ALFRED_ROOT
$ pip install --upgrade pip
$ pip install -r requirements.txt
下载轨迹JSON和Resnet特征(约17GB):
$ cd $ALFRED_ROOT/data
$ sh download_data.sh json_feat
训练模型:
$ cd $ALFRED_ROOT
$ python models/train/train_seq2seq.py --data data/json_feat_2.1.0 --model seq2seq_im_mask --dout exp/model:{model},name:pm_and_subgoals_01 --splits data/splits/oct21.json --gpu --batch 8 --pm_aux_loss_wt 0.1 --subgoal_aux_loss_wt 0.1
更多信息
- 数据集:下载完整数据集、文件夹结构、JSON结构。
- 模型:训练和评估、文件结构、预训练模型。
- 数据生成:生成、回放检查、数据增强(高分辨率、深度、分割掩码等)。
- 勘误表:Goto子目标评估的更新数据。
- THOR 2.1.0 文档:Ai2-THOR 2.1.0版本的弃用文档。
- 常见问题:常见问题解答。
最先进的模型
优于ALFRED中Seq2Seq基线的开源模型:
面向指令跟随智能体的上下文感知规划和环境感知记忆
Byeonghwi Kim, Jinyeon Kim, Yuyeong Kim, Cheolhong Min, Jonghyun Choi
论文, 代码
用于交互式指令跟随的多级组合推理
Suvaansh Bhambri*, Byeonghwi Kim*, Jonghyun Choi
论文, 代码
具有全局视野的智能体:感知周围环境以进行交互式指令跟随
Byeonghwi Kim, Suvaansh Bhambri, Kunal Pratap Singh, Roozbeh Mottaghi, Jonghyun Choi
论文, 代码
FILM:使用模块化方法跟随语言指令
So Yeon Min, Devendra Singh Chaplot, Pradeep Ravikumar, Yonatan Bisk, Ruslan Salakhutdinov
论文, 代码
用于高级自然语言指令执行的持久空间语义表示
Valts Blukis, Chris Paxton, Dieter Fox, Animesh Garg, Yoav Artzi
论文, 代码
使用统一Transformer和自我监控从语言指令中进行分层任务学习
Yichi Zhang, Joyce Chai
论文, 代码
用于视觉和语言导航的情景Transformer
Alexander Pashevich, Cordelia Schmid, Chen Sun
论文, 代码
MOCA:用于交互式指令跟随的模块化以物体为中心的方法
Kunal Pratap Singh*, Suvaansh Bhambri*, Byeonghwi Kim*, Roozbeh Mottaghi, Jonghyun Choi
论文, 代码
Embodied BERT:用于具身、语言引导的视觉任务完成的Transformer模型
Alessandro Suglia, Qiaozi Gao, Jesse Thomason, Govind Thattai, Gaurav Sukhatme
论文, 代码
联系Mohit以在此处添加您的模型。
先决条件
- Python 3
- PyTorch 1.1.0
- Torchvision 0.3.0
- AI2THOR 2.1.0
查看requirements.txt获取所有先决条件
硬件
测试环境:
- GPU - GTX 1080 Ti (12GB)
- CPU - Intel Xeon(四核)
- 内存 - 16GB
- 操作系统 - Ubuntu 16.04
排行榜
在测试集(见过和未见过的场景)上运行您的模型,并创建智能体的动作序列转储:
$ cd $ALFRED_ROOT
$ python models/eval/leaderboard.py --model_path <model_path>/model.pth --model models.model.seq2seq_im_mask --data data/json_feat_2.1.0 --gpu --num_threads 5
这将在<model_path>
文件夹内创建一个JSON文件,例如task_results_20191218_081448_662435.json
。在此处提交此JSON文件:AI2 ALFRED 排行榜。有关规则和限制,请参阅入门页面。
规则:
- 你只能使用 RGB 和语言指令(目标和步骤说明)作为代理的输入。在测试已见和未见场景时,你不能使用模拟器中的额外深度、掩码、元数据等信息。但在训练过程中,你可以使用额外信息来计算辅助损失等。
- 在评估过程中,代理被限制为
max_steps=1000
和max_fails=10
。不要在排行榜脚本中更改这些设置;这些修改不会在评估服务器中生效。 - :exclamation:不要通过反复提交(使用不同的电子邮件账户)来在测试集上进行优化,从而滥用排行榜。微调应该只在验证集上进行,而不是在排行榜测试集上。
- 为提交选择一个易读的模型名称。仅仅"baseline"不够描述性。
- 所有提交必须是尝试解决ALFRED数据集的方案。
- 在描述中回答以下问题:a. 在测试时你是否使用了来自THOR的额外感知信息作为输入,例如:深度、分割掩码、类别掩码、全景图像等?如果是,请报告它们。b. 你是否在训练或测试中使用了步骤说明与专家动作序列之间的对齐?(默认为否;说明被序列化为单个句子)
- 分享你是谁:提供一个团队名称和所属机构。
- (可选) 分享你是如何解决的:如果可能,分享关于如何解决任务的信息。如果是公开的,请链接学术论文或代码仓库。
- 只提交你自己的工作:你可以在验证集上评估任何模型,但对测试集的评估必须只提交你自己的工作。
Docker 设置
安装 Docker 和 NVIDIA Docker。
根据需要修改 docker_build.py 和 docker_run.py。
构建
构建镜像:
$ python scripts/docker_build.py
运行(本地)
对于本地机器:
$ python scripts/docker_run.py
source ~/alfred_env/bin/activate
cd $ALFRED_ROOT
运行(无头)
对于无头虚拟机和云实例:
$ python scripts/docker_run.py --headless
# 在 docker 内
tmux new -s startx # 启动新的 tmux 会话
# 启动 nvidia-xconfig
sudo nvidia-xconfig -a --use-display-device=None --virtual=1280x1024
# 在 DISPLAY 0 上启动 X 服务器
# 单个 X 服务器应足以支持多个 THOR 实例
sudo python ~/alfred/scripts/startx.py 0 # 如果出现错误,例如 "(EE) Server terminated with error (1)" 或 "(EE) already running ...",请尝试大于 0 的显示器
# 从 tmux shell 中分离
# Ctrl+b 然后 d
# 激活环境
source ~/alfred_env/bin/activate
# 设置 DISPLAY 变量以匹配 X 服务器
export DISPLAY=:0
# 检查 THOR
cd $ALFRED_ROOT
python scripts/check_thor.py
###############
## (300, 300, 3)
## 一切正常!!!
你可能需要根据使用的显示器修改 gen/constants.py 中的 X_DISPLAY
。
云实例
ALFRED 可以在无头机器上设置,如 AWS 或 Google Cloud 实例。 主要要求是你能访问支持 OpenGL 渲染的 GPU 机器。在 tmux shell 中运行 startx.py:
# 启动 tmux 会话
$ tmux new -s startx
# 在 DISPLAY 0 上启动 X 服务器
# 单个 X 服务器应足以支持多个 THOR 实例
$ sudo python $ALFRED_ROOT/scripts/startx.py 0 # 如果出现错误,例如 "(EE) Server terminated with error (1)" 或 "(EE) already running ...",请尝试大于 0 的显示器
# 从 tmux shell 中分离
# Ctrl+b 然后 d
# 设置 DISPLAY 变量以匹配 X 服务器
$ export DISPLAY=:0
# 检查 THOR
$ cd $ALFRED_ROOT
$ python scripts/check_thor.py
###############
## (300, 300, 3)
## 一切正常!!!
你可能需要根据使用的显示器修改 gen/constants.py 中的 X_DISPLAY
。
另外,请查看这个指南: 在 Google Cloud 上设置 THOR
引用
如果你发现数据集或代码有用,请引用:
@inproceedings{ALFRED20,
title ={{ALFRED: A Benchmark for Interpreting Grounded
Instructions for Everyday Tasks}},
author={Mohit Shridhar and Jesse Thomason and Daniel Gordon and Yonatan Bisk and
Winson Han and Roozbeh Mottaghi and Luke Zettlemoyer and Dieter Fox},
booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year = {2020},
url = {https://arxiv.org/abs/1912.01734}
}
许可证
MIT 许可证
更新日志
2020年10月14日:
- 为
Goto
子目标评估添加了勘误表。
2020年10月28日:
- 添加了
--use_templated_goals
选项,用于使用模板化目标而不是人工标注的目标描述进行训练。
2020年10月26日:
- 修复了 Modeling Quickstart 数据集(
json_feat_2.1.0.zip
)中缺失的停止帧。
2020年4月7日:
- 更新了下载链接。从 Google Cloud 切换到 AWS。旧的下载链接将被停用。
2020年3月28日:
- 更新了掩码交互 API,使用 IoU 分数而不是最大像素计数来选择对象。
- 论文中的结果表将用新数据更新。
联系方式
有问题或疑问?请联系 askforalfred@googlegroups.com