
我们做视觉的都知道ImageNet竞赛在2017年就宣布终结了。那时候top-5错误率已经降到2.25%比人类标注员的错误率还低。外行人欢呼雀跃觉得图像识别问题解决了。我们圈内人却陷入了更深的焦虑。因为这个2.25%是在干干净净的1000类ImageNet测试集上跑出来的。现实世界里没人给你把物体端端正正摆在画面中央打上柔和均匀的灯光再配上纯净的背景。真实的图像识别场景是什么是监控摄像头里被雨水模糊的车牌是医学影像中边界模糊的早期病灶是自动驾驶视野里被遮挡大半的行人。我去年参与了一个工业质检项目钢板表面缺陷检测。训练集上准确率99.2%部署到产线第一天就掉到83%。因为实际生产线的光照每时每刻都在变传送带震动导致相机轻微失焦油污和水渍随机出现在视野里。这些问题在干净的实验环境中根本不存在。这暴露了深度学习在视觉任务上的根本缺陷模型学到的是数据集里的统计相关性而非真正的视觉理解。你看CNN的卷积核在浅层学到的都是些Gabor滤波器似的东西——边缘、纹理、颜色梯度。到了中层开始出现一些部件级别的模式比如车轮、眼睛、窗户。深层才是语义级别的表征。这种层级结构很优雅但它本质上是在做模板匹配的升级版。当测试分布和训练分布一致时它表现得惊艳一旦出现分布偏移整个系统就可能崩溃。我们实验室做过一个很讽刺的实验。在ImageNet上训练的标准ResNet-50给它看一张把大象PS到客厅里的图片模型会非常自信地告诉你这是客厅或者这是非洲象但它完全意识不到这个组合有多荒谬。这说明它并没有建立起真正的场景理解只是在统计模式上找到了匹配。现在的解决方案主要是三条路径。一是数据增强做到极致各种域随机化、对抗训练、合成数据让模型见过足够多的变异。二是自监督预训练让模型先学会图像本身的结构规律再去做下游任务。三是引入因果推断的框架试图把统计相关性和因果机制剥离开。但说实话这三条路都有点治标不治本。数据增强永远无法穷尽真实世界的变化。自监督学习目前还是靠在ImageNet上微调来证明自己本质上没跳出原有框架。因果推断在视觉领域更多还停留在理论层面真正落地的算法少得可怜。我倒觉得真正的问题可能出在我们对视觉智能的定义上。人类的视觉系统从视网膜开始就在做大量的处理和筛选注意力机制从硬件层面就嵌入了。我们看东西从来不是像素级别的被动记录而是带着预期、带着任务、带着上下文的主动感知。你走进一个房间不会去识别每一件物品你的视觉系统只在需要的时候提取必要的信息。现在的视觉模型却试图对所有像素平等对待然后在计算层面用注意力机制去弥补。这就像用一个无比复杂的软件去模拟人类视网膜上亿年进化出来的基础能力效率注定低下。更值得深思的是人类婴儿只需要很少的样本就能建立起物体概念。一个18个月大的孩子看过两三次猫就能认出各种角度、各种姿态、各种品种的猫甚至卡通画里的猫。这种小样本泛化能力是目前任何视觉模型都望尘莫及的。我们可能需要重新思考视觉表征的本质。现在的端到端黑箱学习是否真的是最优解符号主义和连接主义的融合也许才是出路。让模型不仅能提取特征还能对视觉世界建立起结构化的认知模型——物体之间的关系、物理规律的约束、因果链条的推理。这条路很难但绕不过去。