关于计算机视觉(随谈)

关于计算机视觉(随谈)

zouxy09@qq.com

http://blog.csdn.net/zouxy09

 

       之前看了这么一本说自然图像统计学的书,本来是想着要好好看,然后每天翻译几页的。但实习的时候太忙了。没有什么时间。所以仅仅把文件夹给翻译了,哈哈。

这本书叫:Natural Image Statistics: A Probabilistic Approach to Early Computational Vision大家能够瞧瞧。只是。看到里面视觉概述的时候。自己也想扯扯点东西,按捺不住,就吐了不少文字。

假设有什么不正确的地方。也还希望大家不吝指正。谢谢。

 

一、什么叫视觉Vision?

       什么叫视觉?可能这个问题的第一反应就是:不就是看东西么。好吧,那么高大上的问题就被这么轻描淡写了。看东西不是目的。目的是看到后知道是个什么东西。然后基于这样的物体与事件的联系服务于高层意识理解。

哈哈,瞬间档次又拉上去了。

个人浅见,眼下大体视觉能够分为生物视觉和机器视觉。

生物视觉就是有眼睛的动物能什么看东西的。比如喵星人、汪星人还有地球人啥的。每种动物的视觉感官不同。能感受的光波长也不同。

我们假设能够知道它们是怎么工作了,就能够借鉴着做出具有相似强大功能的设备了。这当中涉及到的东西有非常多,它们的视觉流是怎样的?包括怎么接受光信号的输入,到怎样逐级的提取信息。再到高层的推理,还有高层究竟层的反馈等等。有的已经被解密了。有的还犹抱琵琶半遮面,也的神奇依然。

遗憾的是,后者的比重更大。

      眼下来说,大家最感兴趣的还是人的视觉系统。它实在是太强大了,但却又太神奇,使得众多探秘者倾注心血也仅仅能窥知一二。只是也还是有令人欣慰的消息能够传出,然后对某些成果,也有种能用之中的一个二,受用一生的感觉。哈哈。

       人脑中大约70%的信息是来自于眼睛。大概20-30%的皮层区域是拿来做视觉处理的。生物视觉的最终目标还是想把人的视觉系统彻底告破于天下。嗯。理想是应该丰满点。那机器视觉又是啥呢?就是机器看东西嘛。

由于内在的平台还是计算机,所以叫计算机视觉。Computer Vision。它属于人工智能里面非常核心的一部分。

机器要像人一样,会看。会听,会说,会学习,会思考等等。当中。像人一样。视觉的信息的比重依然是最大的。所以计算机视觉的重要性毋庸置疑。计算机视觉研究的终极目标也是怎样让机器具有人一样的视觉!这听起来就挺难的是吗?嗯,之前人工智能的发展实在太缓慢了,近几年Deep Learning的出现、大数据和大机器的支撑才给人工智能的发展略微推进了一段距离,但还有非常远的路要走。

非常远。

       好了,视觉是啥?视觉就是看东西,呃,不是非常专业。

视觉是为了获取关于环境中物体和事件的信息。从物体发射或者反射出来的光中提取信息的过程。

所以我们第一件须要考虑的事情是,这些信息在什么形式的时候才是有效的?

       物体发出或者反射的光会被收集和度量,当然了,这里没有特定任务的信息提取的处理。生物视觉系统和人工视觉系统都通过同一种方式来完毕这第一个步骤。也就是将这些光投影到一个二维的图像中。对于人眼和摄像头,虽然存在不少区别,但图像信息的处理基本是相同的。

通过非常多的感光的细胞或者感光的原件接受光,然后将这些光的强度变成一个二维图像。然后图像的每一个点的光强度就保存了某种信息。

       一般来说,投影图像还具有时间和彩色的维度。但我们大部分关注静态和灰度的图像。这个图像能够表示为二维的标量函数I(x,y),也就是给定每一个位置(x,y)。会得到一个相应的灰度值I(x,y)。虽然位置和灰度值都应该是连续的,但典型的情况是离散採样。也就是说x和y是整数,而灰度值在每一个点採样。在数字系统中,採样一般也是矩形。但实际上,生物系统中的空间採集採样并非矩形的。甚至是无规律的。

       视觉就是从这样的图像数据中提取信息的。物理环境的信息包括在这个图像中的,但非常遗憾,是隐含着的。视觉系统必须将这样的隐含的信息变换成明白的形式。比如识别环境中的物体。

但这不是一件easy的事情。

 

二、人类视觉系统的魔法

       视觉是个非常棘手的任务。

虽然这对搞视觉的人来说没什么能够吃惊的。但对其它人来说,他们可能会认为非常吃惊,他似乎没有意识到自己与生俱来的双眼是如此的强大和不可复制。由于他差点儿毫不费力的无时无刻的既有效又高速运行这个任务。但实际上在你看我的文字的时候,你大脑的整个计算过程是非常复杂的,但可惜呀。我们一般仅仅在乎这个结果。大脑直接给我们它的计算结果,而没有告诉我们它完毕这个是多么的辛苦。默默无闻。以使得被忽略和遗忘。

       为了说明视觉的难度,我们看下图。事实上一个度量后的图像就是这样子的,每一个空间位置有个光的强度值。那请你告诉我,以下这幅图像是个啥?你能够破解吗?

       OK,我知道这个对大家非常难,那我们看看他究竟是啥。我们把每一个方块的数字换成同等幅度的灰度。

瞬间清晰了。有木有,这是一张男人的脸!

虽然眼睛接收到的就是上面的那些相似数字之类的东西,但我们的视觉系统把这些数字都变得有意义了,然后发现了真实世界的物体。

       到眼下为止。我们做了大量慘绝人寰的简化。

实际上人的视网膜的光接收器是能够接收不同波长的光的。同一时候我们通常是双眼看世界,而不是仅仅用一个。

另一个最大的区别是,我们是看动态的图像,而不是静态的。相机是一次成像,而人眼则是眼睛和大脑的组合。眼睛持续不断把图像信息传递给大脑。并且眼睛在不挺的转动,让高分辨率的感应区域扫过对象的各个细节。

大脑把所获得的信息进行动态累加。就得到了我们所感觉到的图像了。

你惊呼,差点被忽悠了。但这些区别并没有改变一个事实,就是光信息的确是通过上图那么的数据展示的。

所以视觉系统的使命就是读懂这些数据。

       大部分凡人都会允许说。这些任务刚看起来会非常难,但经过一定的思考后,就会认为应该没那么难吧?图像灰度的边缘不是能够检測出来吗?仅仅要找到小数字和大数字相邻的地方就是边缘了呀。

嗯,是的。边缘特征检測的方法眼下已经能够公式计算和实现了。

那边缘得到了,将这些边缘片段连接到一起。那物体的轮廓或者说某种直观的物体表达形式是不是就出来了呢?嗯。你是聪明的,这样的直观的想法造就了眼下非常多计算机视觉的算法。非常遗憾的是,这些算法在一些合成图像或者一些在高度限制环境中的图像才有好的表现,但对于无约束的自然图像来说,他们的表现就非常一般。经过多年的研究,有一个结论:real-world images is extremely difficult!

就算是找到物体轮廓这样一个任务也变得非常困难,由于一般物体的轮廓在物理世界中是不够清晰的。例如以下图:

       这不就是一个杯子吗?你看,你看,你就仅仅在乎结果!

。!

我们慢慢分析下嘛。图中放大了两个地方,一个是本来杯子有边缘的地方,在图像中却没有了边缘,由于背景和杯子非常像,边缘不清晰了。

另一个是本来杯子没有边缘的地方,在图像中由于光照的关系,却变得有边缘了。

这无中生有。有中化无,大自然的招数。怎么破!

       或许这还不能说服你。

我们看看下图。我们教小孩子识图的时候,是不会拿个这么变态的图来吓他的。但不拿这个给你看。是说服不了你的。说服什么?就一点:视觉有多难,你的视觉系统有多牛掰!

        我们再看看以下的人脸:

        不要吃惊。实际上一个小孩在六岁之前,就已经认识一万到三万类的物体了。

而这个物理世界。大约也就是三万种物体。你说。眼下的算法怎样才干够强大到囊括这三万种物体(包括能识别它们在全部环境下的全部形态)。

那你会想,那人为什么能够呢?你最终问出这个问题了,累觉不爱。由于人有种能从少量样本学习的能力!一类物体,变化万千。但人仅仅要认识当中一两个。剩下的就不攻自破了。

融会贯通,举一反三。乃人类与生俱来的才干!

说这个好像又没什么实际意义,是吧。要怎么利用这个来指导眼下的视觉才是王道。但鄙人才疏学浅,往下就讲不了了。

这也是生物视觉和机器视觉研究者穷尽一生想要共同探索的神奇世界。希望有生之年,能瞥见这漂亮的星空吧。

       我有时候会想。人从呱呱坠地開始,花了六年的时间。来建立自己强大的大脑,也就是硬件设施。在这里,我还是要对人脑的硬件设备惊叹一番。

据了解(这三个字就表示了不知道对不正确,呵呵),人脑的CPU主频是320GHZ,眼下电脑由于半导体工艺的限制,能做到3GHZ左右每一个CPU核。

所以咱们搞个300个CPU就能够了么?NO。NO。要运算,每一个CPU之间还得通信,訪问内存数据等,这些通信带宽的限制才是这样的大集群的最大瓶颈。但人脑呢?它的存储体您得按斤算,哈哈。据推測(哈哈。这算严谨么)。人脑存储大概10^15GB。这还不是牛的。最牛的来了,这些空间能够作为内存和缓存使用。不要问我这代表什么了!怀疑怀疑为什么自己老忘记前天老师上课讲的东西。我昨天还记得的啊,怎么就忘了呢,这海马体废了么!哈哈,可能是忘了保存到硬盘了!然后大脑一死机。就没有了!所以记得每天要记得好好吃饭。补充能量。再来膜拜下人眼。

人眼是非常不可思议的精密系统。它能自己主动对焦,曝光自己主动补偿,自己主动运动模糊处理,眼下全部让凡人穷三代的单反都望尘莫及的!还包括免费赠送的夜视功能……最奇妙的是。实现这些功能。不须要升级windows和安装不论什么驱动。不须要耗电!每一个人出生的时候就被装配了全部这些功能。所以在这里也呼吁大家好好珍爱如此高档的设备吧,追剧不要太晚,打游戏不要太晚。上班看电脑多用眼药水。哈哈。

       扯远了。

回来说说大脑的系统和软件吧。我们除了睡觉的时间。每时每刻都在接收输入。然后通过自己强大的硬件设施来处理输入。非常关键的一点是,大脑里面会慢慢的建立历史学习到的东西的知识关联库。随着知识的扩充与完好,大脑的网络越来越复杂。神经元个数,神经元连接的个数,千丝万缕却又理不清。但对于计算机呢?我们的硬件设施呢?最牛掰的就是超算了。我们也建立了一个非常大的网络,与人的大脑相当的网络,然后期待着几天、几个月的时间就能够让我们的计算机能达到人脑的水平,这会不会太苛刻了呢?当然了,这当中有几点不公平对照的区别。一是大脑的高层结构和运作机制实际上是不清晰的,所以眼下计算机所做的高层模拟是否与大脑高层相似,这个也没有答案。二是究竟是计算机快还是人脑快?做相同的事情。超算运作须要消耗一个城市一个月的电量,但人脑仅仅须要你吃个鸡腿补充下就好了。OK。what is your point?

! I am Sorry!

       生物上的启示对计算机视觉的研究者是非常重要的。非常多视觉的处理过程和算法就是模拟生物视觉系统来进行设计的。并且也显示出了有效性。但到眼下为止。人类对自身大脑所知还是九牛一毛。更谈不上对视觉更有力的指导了。但实际上。视觉计算理论和生物界实验没有什么谁靠谁,谁欠谁的说法。

这里面官方点算就是相辅相成:视觉计算理论能够指导生物实验性研究,实验性研究结果又能够指导计算理论的研究。

       好了,不说了。

 

posted @ 2015-12-18 15:46  hrhguanli  阅读(368)  评论(0编辑  收藏  举报