一直以来,让 AI 成为手机操作助手都是一项颇具挑战性的任务。在该场景下,AI 需要根据用户的要求自动操作手机,逐步完成任务。

随着多模态大语言模型(Multimodal Large Language Model,MLLM)的快速发展,以 MLLM 为基础的多模态 agent 逐渐应用于各种实际应用场景中,这使得借助多模态 agent 实现手机操作助手成为了可能。

最新的利用多模态 agent 实现 AI 操作手机的研究《Mobile-Agent: Autonomous Multi-Modal Mobile Device Agent with Visual Perception》。

  • 项目:https://github.com/X-PLUG/MobileAgent
  • 论文:https://arxiv.org/abs/2401.16158v1

多模态agent时代已经到来,目前已有不少有趣的应用,今天来介绍一个用多模态agent实现手机操作助手的工作Mobile-Agent: Autonomous Multi-Modal Mobile Device Agent with Visual Perception,通过纯视觉方案实现AI操作手机。

所谓手机操作助手,即用户输入指令,agent自动完成一系列手机上的操作,例如下面的这几个例子:

用浏览器查询比赛结果并写一个新闻

下面是一个在 YouTube 里找相关视频并发表评论的例子,用户的要求是在 YouTube 里搜索视频,找到一个和某个明星相关的视频,然后发表评论。在整个过程中,Mobile-Agent 没有出现任何错误、不必要或无效的操作,完美地完成了任务。

MobileAgent_迭代

在TikTok刷短视频并且评论

接下来是一个操作多 App 的例子,用户的要求是先去查询今天的比赛结果,然后根据结果写一个新闻。这个任务的挑战性在于,前后要使用两个 App 完成两个子任务,并且需要将第一个子任务的结果作为第二个子任务的输入。Mobile-Agent 首先完成了查询比赛结果,随后退出浏览器并打开笔记,最后将比赛结果精准地写出,并以新闻的方式呈现。

MobileAgent_应用程序_02

在YouTube搜索视频并且评论

最后展示一个短视频平台评论的例子,用户的需求是在短视频平台中刷视频,如果刷到了宠物猫相关的视频,就点一个喜欢。在该例子中,Mobile-Agent 出现了两次错误的操作(红色字体指示),然而 Mobile-Agent 及时感知到了错误并且采取了补救措施,最终也完成了任务。

MobileAgent_应用程序_03

Mobile-Agent是如何完成这些任务的?下面将详细介绍方法。

从上述的例子中可以看出,Mobile-Agent 有以下三个能力:

(1)操作定位。对于需要点击特定图标和文本的操作,Mobile-Agent 能够准确点击到对应的位置。

(2)自我规划。根据用户指令和当前屏幕截图,Mobile-Agent 能够自动规划每一步的任务,直到任务完成。

(3)自我反思。如果出现了错误操作或者无效操作,Mobile-Agent 能够及时发现问题并进行补救。

操作空间

我们首先介绍Mobile-Agent的操作空间。为了便于将文本描述的操作转化为屏幕上的操作,Mobile-Agent生成的操作必须在一个定义好的操作空间内。这个空间共有8个操作,分别是:

  1. 打开App(App名字)
  2. 点击文本(文本内容)
  3. 点击图标(图标描述)
  4. 打字(文本内容)
  5. 上翻、下翻
  6. 返回上一页
  7. 退出App
  8. 停止

为了能够实现将操作输出到手机屏幕,我们针对需要定位的两个操作:点击文本和点击图标设计了输入参数。Mobile-Agent在使用这两个操作时,必须输出括号内的参数。这个参数将用于下面介绍的操作定位。

操作定位

在大多数情况下,MLLM已经具备输出正确操作的能力,这体现在提供手机截图和用户指令后,这些模型往往能够生成正确的操作。然而,虽然MLLM可以产生正确的操作,但当要求MLLM输出这些操作将要在屏幕上发生的位置时,MLLM往往无法提供准确的坐标。即使是GPT-4V,也无法将某个图标或文字在屏幕上的坐标准确输出。

MobileAgent_人工智能_04

为了实现定位,如上图所示,我们针对文本和图标设计了两个模块。首先是文本识别模块,Mobile-Agent借助OCR工具来定位出指定文本。如果指定文本在屏幕中多次出现,则会将这些区域裁剪出来并绘制检测框,OCR工具返回的多个区域将会以多图输入的方式重新做一次选择。

随后我们介绍图标识别模块。Mobile-Agent首先借助检测模型,使用检测词“图标”将屏幕中所有图标区域裁剪出来,随后根据Mobile-Agent提供的图标描述,利用CLIP计算这些裁剪区域于描述的相似度,并选择最高的区域作为点击的坐标。

自我规划

Mobile-Agent以迭代方式完成每一步操作。在迭代开始之前,用户需要输入一个指令。我们根据指令生成整个流程的系统提示。在每次迭代开始时,Mobile-Agent会获取手机屏幕的截图,通过观察系统提示、操作历史和当前屏幕截图,输出下一步操作。

如果Mobile-Agent输出的是结束,则停止迭代;否则,继续新的迭代。Mobile-Agent利用操作历史记录了解当前任务的进度,并根据系统提示对当前屏幕截图进行操作,从而实现迭代式自我规划流程。

自我反思

在迭代过程中,Mobile-Agent可能会遇到错误,导致无法完成指令。为了提高指令的成功率,我们引入了一种自我反思方法。这种方法将在两种情况下生效。

第一种情况是生成了错误或无效的操作,导致进程卡住。当Mobile-Agent注意到某个操作后截图没有变化,或者截图显示了错误的页面时,它会尝试其他操作或修改当前操作的参数。

第二种情况是忽略某些复杂指令的要求。当通过自我规划完成所有操作后,Mobile-Agent会分析操作、历史记录、当前截图和用户指令,以确定指令是否已完成。如果没有,它需要继续通过自我规划生成操作。     

Mobile-Eval

为了全面评估 Mobile-Agent 的能力,作者引入了 Mobile-Eval,这是一个基于当前主流应用程序的 benchmark。Mobile-Eval 共包含 10 个移动设备上常用的应用程序。为了评估多应用程序使用能力,作者还引入了需要同时使用两个应用程序的指令。作者为每个应用程序设计了三种指令。第一条指令相对简单,只要求完成基本的应用程序操作。第二条指令在第一条指令的基础上增加了一些额外要求,使其更具挑战性。第三条指令涉及抽象的用户指令,即用户不明确指定使用哪个应用程序或执行什么操作,让 agent 自己做出判断。下面的表中介绍了 Mobile-Eval 中使用的应用程序和指令。

MobileAgent_人工智能_05

 

实验结果

下表中展示了Mobile-Agent的评测结果。其中SU代表指令是否完成,PS代表正确操作占所有操作的比例,RE代表Mobile-Agent和人类完成指令时分别用了多少步,CR是Mobile-Agent能够完成的操作占人类操作的百分比。

在3种指令上,分别达到了91%、82%和82%的成功率,在完成度上,3种指令都达到了90%以上,并且Mobile-Agent可以达到90%人类的效果。

值得注意的是,虽然PS平均只有85%左右,但是在总共的33个任务上,Mobile-Agent能够完成28个,这也说明了自我反思的重要性,即使会出现错误操作,也能够及时发现并纠正,最终完成任务。

MobileAgent_人工智能_06

中文能力

下面两个例子展示了中文场景下的表现。虽然GPT-4V在中文识别上还有待加强,但是在文字不多的简单场景下Mobile-Agent也可以完成任务。

MobileAgent_应用程序_07

MobileAgent_应用程序_08