昨天讨论了自己对于人脑视觉识别过程的一些猜测,后来又仔细思考,发现过于夸大了视觉注意的作用,还忽略了另一个很重要的模块——分割。 视觉注意固然可以让人更快的注意到重要目标,但单独依靠它,是不可能快速进行环境判定的。人脑的一大特点就是并行性很高,这种特性跟分割机制进行结合,保证了即便是一眨眼之间,人也能对环境有一个大致的判断。
现将自己对于分割的一些感悟记录如下:
1、分割这个过程处于整个识别过程的前段,几乎在人眼完成图像数据的接受之后,立刻就已经完成了对视野图像的大致的分割。由于人眼和人脑的特殊构造,这个分割过程完成的如此之快,以及如此完美,让人感觉似乎进入视野的图像,实现就已经分割好了一般。然后,在此基础上,人脑根据分割得到的几个大致区域进行识别。从而判断出每一个区域大致是什么物体,进而得到人眼对于环境个最初理解。
2、人脑中分割是一个并行过程。在分析人类的视觉机理时,一定要时刻牢记并行这个特性。由于我们平时所从事的工作,绝大多数都是串行的,所以很难培养并行这种观点和思维方式。人脑在接受到图像的第一时刻,就已经从图像的各个不同的区域开始,着手进行分割工作。人脑内部应该有一系列特殊的结构,专门用于分割,这种分割的机制要优于目前所有已有的分割算法。
3、为什么要分割?关于为什么要分割,一个很浅显的道理是,不同的物体之间,呈现不同的亮度、纹理、颜色的概率是很高的。将分割的结果当作的目标物体的大致位置,从经验上来讲,是比较靠谱的。可能有人要问,那万一分割错了怎么办?将一个物体分割成好几个部分了怎么办?或者是将两个物体分割成一个物体了怎么办?我的答案是,错误是允许存在的,但是错误的影响,却是可以弥补的。首先,一个物体分割成了多个物体,这并不会造成多大损失,因为人脑本身就具备局部识别的功能。其次,两个物体被分割成了一个物体,进而造成误识别,这种错误也是允许的,我们每天就在频繁的发生这种错误啊。人脑的反应速度很快,即便第一次分割识别错误了,但是很快人眼就会进行更精细的观察,这个错误很快就能得到纠正。人脑通过多次识别,通过时间上的优势,来尽量弥补了最初的错误,将总体的感知错误率降到了最低。而现在的机器视觉,明显就欠缺了这种层次性的识别过程,一次识别,也就是最终的结果,其性能当然没法跟人眼相比了。
4、对深度学习的启示。Google在训练那只猫时,所有的图像都是归一化到了统一的尺寸,然后不管三七二十一,一股脑的让它自学。当然,人家是世界上科研实力最强的地方,我这样的黄毛小儿当然不敢指手画脚。但是关于具体的训练过程,我有自己的想法。我不赞成对数据丝毫不加以处理,就送进去训练。我会在此之前,先对图像进行分割。(这里的讨论开始有点偏向监督学习了。)将一幅图像中,不同的物体进行分割,每一幅图像分割成大致几个区域,然后将分割之后的子图像重新进行归一化,再送进去训练。这样的好处是,每一个被用于训练的样例都是单一的,更利于神经网络找到同一类物体之间的共性。有机会要将这个想法付诸行动。
5、分割对检测过程的影响。google目前的具体的检测或者识别过程,估计是将一幅整的图像送进去,然后进行识别。我的观点是,一幅图像往往都是由多个区域组成的,每个区域都是一个单独的物体,或者是一个物体的一部分,干嘛不单独将某个区域送进去进行识别呢?这样是不是可以尽量降低周边其他物体,或者背景所带来的干扰?
6、分割对目标跟踪的影响。之前在做路口监控的时候,多次跟目标跟踪打交道,所用过的算法,有好有坏,经常看到的一个问题,就是漂移现象。现在再结合分割的观点一看,这种漂移现象实在是大可不必。因为车辆跟路面之间,本来就是很容易分割的。而我们的算法居然出现了漂移到路面上的情形,实在是很弱智啊。(这也跟跟踪算法没有好好设计有关,如果能够多注意历史信息,漂移应该是能够得到部分抑制的,现在有很多基于learning的跟踪方法,就注意了这个问题。)
7、人脑对图像进行分割时,默认尺寸的选择。人脑所选择的默认尺寸,估计有一个最小阈值,低于这个阈值的子块,就不再进行分割了。这个具体的尺寸,是人在长期的成长过程中,以及生物长期的进化历史中,确定下来的。因此在我们用机器视觉进行模拟的时候,也可以设定这样一个经验值,对图像的初始划分,可以依照这个经验值进行。