我们现在知道:将物体的32x32照片分成10类(CIFAR-10),在机器学习领域属于EASY。人类大脑的视觉处理系统对物体的轮廓和细节敏感,并能够将这些轮廓和细节组成更高级的抽象概念,最终判定物体的类别。于是科学家用CNN函数拟合了大脑的这种视觉处理的过程,所以我们现在获得了非常好的分类器。
但这并不等于我们解决了机器视觉的问题。很多人眼拥有的能力,目前大家手中的神经网络还不具备。
首先,人眼的分辨率是很高的,按照这个分辨率,45度视野下接近于8k视频。那么,假如我们要用CNN方法找到8k视频图像中的一架无人机,我们就必须用卷积核对整张图片进行卷积,而我上面展示的最简单的神经网络,也差不多要对整张图卷积100次。这对计算机来说已经很辛苦了,换成人类的大脑则更是不可能的。
那人眼是怎么做到的呢?人眼虽然分辨率很高,但这个高分辨率仅限于中心非常小的一部分,而四周的分辨率是很低的。
下面是人眼视锥细胞(色觉,高分辨率)和视杆细胞(光感,低分辨率)的密度分布图。
视网膜中心的视锥细胞分布是这样的(左为正常人,右为红绿色盲):
所以当有一架无人机在飞的时候,人眼先利用四周低分辨率的视杆细胞感应到无人机的存在,然后控制眼球四周的肌肉,旋转眼球将光轴指向目标,从而获得目标的高分辨率图像,然后接着对目标再进行分类判定。
(图片都来自维基百科)
这样一来,人脑就可以用非常低的带宽,获得极高分辨率的视觉。所以未来实用的机器视觉应用,根据我的设想应该是这样的:
其次,并不是所有的视觉能力都可以后天学习。
以CIFAR-10为例,里面的很多类别是人造的物体,这些物体回到100年前是没有的,但是今天的人类可以毫无压力地学习他们的外观特征,说明对物体的外观特征的分类能力,是可以通过学习获得的,而不是天生的。但是,人类还有很多视觉能力不是通过后天学习获得的,而是天生就有的。
比如我上面一楼提到的动态视觉能力,就属于天生的。看下面这张图,你能找到两架无人机分别在哪里吗?
很困难,因为我们看的是一张静态图片。假如图像是动态的,我们就可以利用上面一楼提到的动态视觉能力。只要无人机稍微有点晃动,即使我们的视线没有盯着它看,敏感的视杆细胞也能马上感受到亮度的微小变化,从而发现无人机。等到我们把视线中心转过去,就可以利用视觉残留滤波的方法,判断那到底是不是无人机。所以要实现robust的追踪,这些问题都是要解决的。
不过这样一来,我们就得把像CNN这样的开环系统,改成多级反馈系统(类似RNN)。每一级之间如何连接,整个架构怎么训练,仍然需要继续刷论文。而且由于动态视觉能力并不是后天习得的,而是通过无数代自然选择进化留下的,因此直接套用现成的机器学习算法是浪费时间,必须先把Human Vision吃透。
本楼是给对这个问题有兴趣的读者做的一个简单介绍,也欢迎大家提出不同意见。
两架无人机分别在这里:
人眼的分辨率分布:
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |