AI发展方向——从pipeline到end2end
最近一直在折腾图像目标检测和跟踪方面的活儿。做着做着就发现,这里面有不少值得琢磨的地方——尤其是当前AI任务在建模和处理方式上,其实藏着不少问题。

先分开聊聊目标检测和目标跟踪这两块技术目前的状况。
目标检测——yolo
现在大家聊目标检测,基本离不开YOLO。这个模型已经迭代到YOLOv8了,修修补补更新了这么多版本,这本身就暴露了一个问题:目标检测领域已经很久没有人做出真正的突破了,瓶颈和局限性都已经摆在了台面上。
回想一下,YOLO系列模型当年是怎么起家的?就是直接把R-CNN那套东西按在地上摩擦。这里头其实藏着一个AI发展的典型思路。
R-CNN这类模型,背后有很强的人类先验假设:先标定不同大小的框,然后对框住的图像做分类。目标检测任务就这样被硬生生拆成了两个阶段——先选框,再分类。这是典型的pipeline式处理方式。
而YOLO则不一样,它直接用end2end端到端的方式掀了桌子。目标检测的目标不就是框的坐标和类别吗?那就让神经网络直接预测输出坐标和类别好了。坐标这个概念对图像来说确实很抽象,但只要还在香农信息论的管辖范围内,交给神经网络去拟合就完事了。
这是一次非常经典的end2end打败pipeline的技术迭代。类似的故事在机器翻译、对话系统上都已经反复上演过。
pipeline最大的问题在哪?
打个通俗的比方:
pipeline就像女生选老公,规定了一大堆假设条件——要品行好、长得高、长得帅、学历高、家境好。可问题在于,不具备这些条件就一定不是好老公吗?现实显然不是这样,现实情况远比想象中复杂。
再看end2end,本质上就是尊重现实世界数据分布的多样性和不确定性,让整个AI模型交由数据来估计和拟合,而神经网络就是目前最佳的估计工具。
再通俗点说:
end2end的逻辑就是别管黑猫白猫,能抓老鼠就行。别管长得帅不帅,能赚钱给你花、让你感觉幸福就足够了。
对话系统
转过头来看NLP领域的对话系统。过去的对话系统搞得特别复杂:先分析文本分词,再做意图识别、语义槽识别,然后各种纠错检验。
这就是最典型的pipeline式AI架构。
在算法工作中,从来没开发过这种老式pipeline对话系统,简单了解过一些。从语义槽填充开始,就发现这套东西简直是老太太的裹脚布——又臭又长,很难学,也提不起兴趣。
一个老式对话系统的AI模型里,到处都是飞线。系统假设太多,设计过于复杂,难以处理的异常情况也数不胜数,导致还需要做各种异常判断。总之,pipeline式的对话系统已经逼近人类能够总结归纳的能力极限,工程师们看了架构图都会崩溃。
直到ChatGPT出来,模型架构简单得让人意外——就是end2end,输入是文字,输出也是文字,中间的神经网络全都由Transformer来填充。大道至简。
你不用管问句意图是什么,也不用管语义实体该怎么抽取,这些全交由神经网络来拟合。抛弃了对话系统的复杂人为假设和设计,模型简单了,世界也清净了。
目标跟踪-kalman 滤波
再回到前面提到的目标检测,它还有个下游任务——目标跟踪。说白了,就是在一个连续视频里,为检测到的目标框确定身份ID。
当前产业界最广泛流行的做法,还是卡尔曼滤波器。
先声明一下,卡尔曼滤波器本身的设计是非常经典优雅的,这一点值得钦佩。但把它用在目标跟踪上,而且一用就是很多年、没什么进步,这就有点说不过去了。
问题在于,图像中检测到的框只有四个坐标值,信息量极度有限且狭窄。
你以为你看到的目标检测数据是这样的:
而实际上你看到的只是:
图像中真实的车辆、道路、树丛等信息全都丢失了,传递到Kalman滤波器的数据,只有孤零零的框而已。
从信息论的角度看,绝大部分有用的信息都丢失了,保留下来的仅仅是极少量的抽象坐标信息。信息量充分的时候,我们可以做出综合准确的判断;但信息极度缺乏的时候,目标跟踪基本就只能靠猜了。
靠猜,就意味着效果差。
打个比方:炒股的时候,如果你熟悉一家公司的经营状况、和老板有交情、了解内部情况和经营策略,那当然容易买卖股票赚钱。但如果你只能看着K线图获取信息,那能做的就只剩猜测了——不被割韭菜才怪。
卡尔曼滤波器会做出非常强的假设:数据噪声符合高斯分布,使用线性滤波器来操作。在信息极度有限的情况下,它尽可能消除噪声,做出尽可能准确的预测。说白了,对数据的强假设和信息极度缺乏是分不开的。
但最根本的问题在于:
你都没把整幅图像传递给目标跟踪器,信息入口的问题都没解决,怎么能做好目标跟踪呢?
所以搞笑的事情来了——从Kalman滤波器往后发展,又出现了ByteTrack、NetTrack等一系列滤波器。这些模型在干嘛?
本质上就是在卡尔曼滤波器基础上增加信息量
但让人哭笑不得的是,这些基于Kalman改进的模型,各种飞线依旧满天飞。ByteTrack这类论文像是死活想不明白一件事——想增加信息量,直接增加图像信息不就行了吗?老盯着那些框干什么呢?
所以,从目标检测到目标跟踪,依然是一个非常典型的pipeline式架构。其中做出了很强的数据假设,模型只能在一个非常窄小的范围内应用。
批判 YOLO
YOLO击败R-CNN这种两段式模型,是一次巨大的成功,也是end2end对pipeline的一次胜利。好的方面就不多夸了。
要说的是YOLO的局限。这个模型不断迭代,很多人做开发优化,GitHub上的工具也很成熟。但它只处理单张图像,与目标跟踪完全割裂——这种pipeline式的不足,注定了它的上限不会太高。
很多人、很多公司拿着成熟的YOLO代码,做demo系统出来吹牛演示:什么打架斗殴检测、吸烟检测、垃圾堆检测,还有检测老人摔倒、跟踪可疑犯罪分子或无人机等等。
表面上看,YOLO似乎能做这些事,在数据分布十分受限的场景下演示也没问题。但这些系统都不能真正在实际中应用。因为实际中的图像和视频数据分布太广了。
说白了,这些基于YOLO套用的AI应用,做个花架子、演示一下可以,但要真正落地?差距太大了。
根本思路还是要从pipeline向end2end发展:融合视频中连续帧的数据,从数据出发,打通模型结构中的信息通道。不要让Kalman滤波器拿着极小的抽象信息,勉强去做噪声滤波估计。
总体来看,
AI的发展,就是一种从pipeline向end2end演进的大趋势
这就像培养一个孩子:作为培养者,不能手把手去教,而是需要规定好引导方向,让孩子自由探索、发挥自主性。训练和研发AI模型也是同样的道理——想要做好一个AI模型,首先得把它当作一个人来看待。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名