GPT-4全新升级!以前的GPT-4 是这样的:

需要用户根据需要自己切换模式:
-
Default(默认):文字聊天
-
Browse with Bing(用 Bing 浏览网络):搜索最新信息
-
Advanced Data Analysis(高级数据分析):按照需求,生成 Python 代码,并运行,主要用来做数据分析
-
Plugins(插件):最多选择三个插件,在使用过程中按需调用
-
DALL·E 3:图片生成
当今天打开 ChatGPT 网站,看到这个弹出的对话框,我是兴奋的:

升级之后的 GP4-4 不再是分裂的 5 重人格,而是十项全能、All-in-one的超级选手:

那么,升级之后的 GPT-4 到底有多好用?能给工作带来怎么样的赋能和效率提升呢?
工作流
**
**
作为一个在自动驾驶行业工作的研发同学,我之前写过一篇文章
GPT-4V在自动驾驶corner case识别考试的答卷:你打几分?
来测试 GPT-4对自动驾驶 corner case 场景的识别能力,当时得到一些定性的结论。那能否更进一步,得到定性的结论呢?于是我设计了新的工作流,并借助GPT-4 整合的全新能力,做了全新的测试。
这是测试的工作流:

包含下面的步骤:
- 数据处理:将 CODA 测试数据集中的标注数据从 JSON 这种半结构化、以BBox为基本单元的数据处理成每张图片的标注真值数据。这需要借助 GPT-4 的数据处理能力。
- 场景识别:使用 GPT-4 来识别数据集中场景图片中的道路情况、交通标识、周边交通参与者等目标对象。
- 对比打分:让 GPT-4 对比自己的识别结果和标注真值,对结果进行打分,从而获得对自身能力在自动驾驶场景的评估。
在这个过程中,还会探索 GPT-4 以文生图、以图生图等能力在自动驾驶研发中的可能应用。下面就让我们一起进入这段奇妙的旅程吧。
人工数据探索
在使用 GPT-4 分析数据之前,我先对CODA 数据集做人为探索,熟悉一下。下载的 CODA 测试数据集中,其文件结构如下所示:

包含:说明标注数据的JSON元数据和100张原始图片。其中 JSON 文件的结构如下所示,包含了目标类型信息、数据集的图片信息和人工标注框的信息。

数据集中的图片就是包含 corner case 的交通场景图,一张典型的图片(image_id=10)是这样的:

GPT-4:数据理解
那 GPT-4 对这个数据的理解如何呢?下面是它对 JSON 元数据的解读。
这是解读过程,会生成并运行Python代码:

这是其分析结果:

挺靠谱!图上红色箭头指向的代码图标,点击可以查看对应的代码

更进一步,能否给一张图片,让GPT-4 将标注信息展示出来?

它找到了该图所有的标注信息,并在图中标识了出来:

好像忘了类别信息,那可不行:

补上之后的图片如下,完美😍!

GPT-4:处理数据
上面只是在单张图片上的数据探索,为了得到所有图片上的标注信息,我希望将JSON 数据处理成下面这样的表:

得到每张图片包含的标注corner case 总数以及不同类型的目标的数量详情,这个数据会作为 GPT-4 识别结果的真值基准。这是我给 GPT-4 下的任务需求,以及它的回应:

GPT-4 先讲了它对需求的理解和解题步骤,我确认之后,它开始工作:

从结果看,有一些目标的分类并没有像预期那样反应成中文:

于是,我要求它改进:

经历了很多轮这样的迭代(通过它的结果,我甚至发现了CODA 数据集中的一个单词错误:suitcase 被打成了 suitcace),迭代的轮次可以从它生成的结果文件的命名上可见一斑:

GPT-4终于得到给我一个正确的、结构化后的excel 表,包括:目标类别的中英对照表、每张图片的标注信息表、标注类别统计分布表。如下:

在这个过程中,GPT-4 展现了它超强的语言理解能力、推理能力、代码生成能力、代码执行能力等,每一步都能看到它分析代码和执行结果:


GPT-4:以文生图
在上面分析过程,一开始GPT-4 将bollard翻译成了"碉堡",我一看不对劲,公路上不可能突然冒出个"碉堡",要真是那样就"碉堡"了。但bollard到底是啥,我之前也没有接触过,于是,何不让 GPT-4 图文并茂地给我解释一下呢?

这就一下子明白了!GPT-4 就像它生成的"防撞柱"一样顶啊!
GPT-4:图像理解
再次请出在GPT-4V在自动驾驶corner case识别考试的答卷:你打几分?中 GPT-4 已经展现过的、在自动驾驶场景的图像理解能力:

GPT-4:定量打分
GPT-4 这段对场景的描述到底准不准确?有多准确呢?这时候就要请出上面 GPT-4 处理得到的每张图像的标注信息表:

以这张表中的数据作为真值,让 GPT-4 对自己的结果做一个阅卷,打出评定的分数:

满分 10 分,真值中一共 N 个类别("杂项"除外,因为太宽泛),每 miss 掉真值中的一个类别,就给 GPT-4 扣掉10/N分(向下取整)。按照这个规则,GPT-4 有理有据地给自己的表现打了 8 分,原因是没有识别出"障碍物 - 碎片"。
这样就完成了一个对数据集中单张图片做场景理解和对比打分的完整工作流,在整个数据集上遍历一遍,就能得到 GPT-4 在整个数据集上 corner case 理解的打分。现在因为 GPT-4 的 API 还没有完全开放,只能手动完成这个遍历过程,是非常费时费力的。当API 完全开放之后,可以将整个过程自动化。

在这个过程中,为了对GPT-4识别的物体类别和标注真值的类别对其,我尝试了在 Prompt中加入识别目标类别列表限制,并让它输出的结果也是 JSON 格式:

从上面的结果看,它的表现似乎没有不加限制的好,明显漏掉了"障碍物 - 机械"这个类别的目标,使得得分从 8 分退化到 6 分。可能原因是这个 Prompt 没有设计好,需要进一步调优。
GPT-4:以图生图
在图像生成方面,GPT-4 能否以图生图呢?如果能实现根据用户提供的图片生成类似的交通场景图,那对仿真就太有助力了。

先用最简单的方式

还挺像的。再加一点自动驾驶的场景感呢?

好吧,只能说太不像了。
GPT-4:图 -> 文 -> 图
能否换一个思路呢?让 GPT-4 先根据图片生成描述的文字,然后再根据这些文字生成相似图片。试一试:

这下明显更相似了!但 GPT-4 生成的图片都太高清,太干净,太整洁了,有种明显的不真实感。能更贴近现实吗?问问它:

看来它背后的 DALL·E自带高清体质,天生丽质难自弃,不肯堕入凡尘。那就以它生成的另一张图片结尾吧。

小结
本文以定量评估GPT-4在自动驾驶corner case场景的理解能力为例,展现了全新的GPT-4 在意图理解、代码生成、数据处理、图像理解、文本打分、文生图、图生图等多方面的超强能力,我相信它正在或者已经成为自动驾驶技术研发工作者的必备武器。对它在仿真场景生成、数据集多模态检索等方面的更多应用,将会不断探索,希望不久将会有更多实践与大家分享。