首页 > 其他分享 >Open-World Object Manipulation using Pre-trained Vision-Language Models

Open-World Object Manipulation using Pre-trained Vision-Language Models

时间:2023-12-17 17:26:40浏览次数:32  
标签:Pre instruction obj 泛化 Language Models image object policy

概述

提出MOO: Manipulation of Open-World Objects

用预训练的VLM在图像中标记instruction的object的坐标,传入policy进行控制,可以zero-shot泛化到novel object,还支持手指、点击输入指令。

问题

机器人泛化到训练中没有见过或者操作过的object。

  • perception-planning-control的pipline支持robots处理很多object
    • 这样的pipline太脆弱,因为物体操作依赖精准的物体定位
  • 预训练的图像和语言embedding构造policy,对novel semantic concept没有grounding能力

总之,一些方法可以泛化到很多object但是流程太脆弱,另一些方法没那么脆弱但是泛化能力不足

动机

为了提高对新语义概念的泛化能力,采用open-vocabulary预训练VLM,而不是单modality的模型。

方法

instruction的5种固定模板:pick X, move X near Y, knock X over, place X upright, place X into Y

  • 用Owl-ViT来提取object位置信息,将得到的bounding box的中点pixel置1.0(另一个obj置0.5),作为image的一个channel
    • 采用pixel而不是bounding的好处:对任何大小的可见物体都work,且和各种视觉的方法都适配(都能改成pixel形式)
    • (为了提高及时性)只对第一帧图片进行提取,对位置变化的处理由policy进行
    • 用颜色、大小、形状等信息进行标定,例如:An image of a small blue elephant toy
    • 设置一个统一的threshold对bounding box的score进行筛选
  • 将image序列输入RT-1的policy结构中
    • image序列用EfficientNet处理,结合FiLM对动作embedding的处理
    • 接入Token Learner,再接入一个Transformer

注意instruction的encode只包含verb信息

image

实验

训练数据

对RT-1的数据进行了增广,主要是增加了“pick”技能的object。作者表示只选择pick是因为这个简单,数据收集效率高,方便展现出对各种object的泛化(真会说)。

image

演示数据的分布:

image

泛化能力

49种见过的obj,47种没见过的

作者专门强调了是完全没见过的obj,而不是没见过的instruction组合

image

多种模态输入

image

模型扩展性

image

image

总结和不足

利用了VLM的语义理解能力,实现novel object的泛化。

不足:

  • object的表示在图像出现歧义(例如物体覆盖或者阻挡等)时不再好用
  • skill的泛化仍然需要局限在training data中(对于完全不同的形状和大小的obj无能为力)
  • instruction的格式需要简单清晰且固定化,尤其是对verb的定义。这个问题可能可以通过LLM解决
  • 无法解决instruction中利用空间来定义的object,例如"the small object to the left of the plate"

标签:Pre,instruction,obj,泛化,Language,Models,image,object,policy
From: https://www.cnblogs.com/eirrac-rain/p/17909363.html

相关文章

  • 无涯教程-Java - boolean startsWith(String prefix, int toffset)函数
    判断字符串是否以prefix开头。booleanstartsWith-语法这是此方法的语法-publicbooleanstartsWith(Stringprefix,inttoffset)这是参数的详细信息-prefix   -要匹配的前缀。toffset  -从何处开始查找字符串。booleanstartsWith-返回值如果参数表示......
  • 无涯教程-Java - boolean startsWith(String prefix)函数
    判断字符串是否以prefix开头。booleanstartsWith-语法publicbooleanstartsWith(Stringprefix)这是参数的详细信息-prefix  - 要匹配的前缀。booleanstartsWith-返回值如果是以prefix开头,则返回true,否则为false。booleanstartsWith-示例importjava.io.*......
  • Segmentation Transformer: Object-Contextual Representations for Semantic Segment
    SegmentationTransformer:Object-ContextualRepresentationsforSemanticSegmentation*Authors:[[YuhuiYuan]],[[XiaokangChen]],[[XilinChen]],[[JingdongWang]]Locallibrary初读印象comment::(OCRnet)聚焦于语义分割中的上下文聚合问题,利用物体类别的表......
  • Wordpress modown8.8.1主题学习版开心版
    Modown是模板兔基于Erphpdownwordpress下载插件开发的付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容、团购下载的WordPress主题,本站提供Modown主题开心版,免授权使用,仅用于个人学习,禁止用于商业用途!!!下载地址:https://www.itwk.cc/circle/921.html......
  • Flutter使用SharedPreferences示例
    SharedPreferencesAndroid原生开发经常会用SharedPreferences来保存一些设置,Flutter用什么来保存这些设置呢?在Flutter中,你可以使用shared_preferences插件来实现类似Android原生开发中的SharedPreferences功能,用于在应用程序中保存和检索持久化的键值对。具体使用首先,在你的Fl......
  • string.replace()与removeprefix() 和 removesuffix()的区别 字符串技巧
    string.replace(),removeprefix()和removesuffix()是Python中的字符串方法,它们都用于修改字符串,但是它们的功能和使用方式有所不同:string.replace(old,new[,count]):这个方法会将字符串中的old子串替换为new子串。如果提供了可选参数count,则只替换前count个old子串¹......
  • WordPress替代品:国产工具一样好用
    随着互联网的发展,网站建设变得越来越简单和普及化。WordPress作为一个广泛使用的开源内容管理系统(CMS),被大量的网站使用。然而,随着国内互联网产业的崛起,国产的网站建设工具也逐渐走向成熟。本文将介绍三款国产工具,它们可以完美替代WordPress,且同样好用。HelpLookHelpLook是一款功能......
  • 界面组件DevExpress VCL v23.2新功能预览 - 支持RAD Studio 12.0
    本文即将发布DevExpressVCL 下一个主要更新(v23.2),在之前的文章中(点击这里回顾>>)我们为大家介绍了新的工具提示、图表空间中的标签重叠等,本文将主要介绍DevExpressVCLv23.2中将支持的RADStudio12.0、增强的图像选择器、字体和自定义图标包等。新版即将发布,敬请期待哦~获取De......
  • Django添加models.py的ForeignKey数据迁移后找不到,各种报错
    Django添加models.py的ForeignKey数据迁移后找不到,各种报错在创建DJango项目时候,已经实现文件列表功能,在添加用户绑定文件列表功能时候,添加user作为外键关联,添加后执行数据库迁移,一直报错找不到userid报错信息django.db.utils.OperationalError:nosuchcolumn:student_chec......
  • Postman/apifox pre-request script
    Postman/apifoxpre-requestscriptconstUUID=require('uuid');//HelperfunctiontogeneratethesignaturefunctionmakeSign(md5Key,params){constpreStr=buildSignString(params);consttext=preStr+md5Key;console.log("signS......