不知大家是否有注意到,最近几年摄像头的功能变得越来越强大。以身边最常见的手机为例,几年前手机摄像头的功能仅限于拍照与摄像,而如今的手机摄像头除了在这些基础功能上做了优化,更具备了包括面部识别、二维码扫描、拍照识别物体等一系列曾经难以想象的功能,这些强大功能背后的技术基础,就是我们今天文章的主角——计算机视觉。
作为人工智能的重要分支之一,计算机视觉与语音识别、自然语言处理等技术一同构成了人工智能的感知基础,让计算机具备了“看”的能力。斯坦福大学教授李飞飞将这种的能力称作“计算机科学领域最前沿的、具有革命性潜力的科技”。作为人类的视觉的延伸,计算机视觉技术目前已经在人脸识别、图像识别等领域有了大规模的应用,并逐步渗透到无人驾驶、智能安防以及智能家居等众多领域当中。
下面,让我们从计算机视觉的概念、新一代计算机视觉以及泛布计算的落地应用三方面出发,来简单了解一下。
计算机视觉的概念
人类视觉与计算机视觉
计算机视觉(Computer Vision, CV)是一个跨领域的交叉学科,包括了计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然语言处理、图像处理),物理学(光学 ),生物学(神经科学)和心理学(认知科学)等学科的知识。许多科学家认为,计算机视觉为人工智能的发展开拓了道路。
从本质上来看,计算机视觉主要是研究如何让计算机系统模拟与实现人类视觉系统功能。人类的视觉系统可以分为信号摄入与信号处理两部分,通过瞳孔摄入影像信息并转换为大脑可以接受与处理的电信号,然后大脑则进一步将电信号转变为感知。受到人类视觉系统的启发,通过影像设备替代人眼摄入信息,再由计算机替代大脑完成对影像设备输入信息的理解与处理,以完成对人类视觉系统的模拟,从而实现适应、理解外界环境和控制自身运动等复杂的智能功能。
和许多正在快速发展的学科一样,计算机视觉目前很难给出一个严格准确的定义,从广义上来说,计算机视觉是“赋予机器自然视觉能力”的学科。这里的自然视觉能力,指的是生物视觉系统体现的视觉能力。从狭义上来看,计算机视觉就是研究视觉感知问题。视觉感知,根据维科百基(Wikipedia)的定义, 是指对“环境表达和理解中,对视觉信息的组织、识别和解释的过程”。根据这种定义,计算机视觉的目标是对环境的表达和理解,核心问题是研究如何对输入的图像信息进行组织,对物体和场景进行识别,进而对图像内容给予解释。
目前绝大多数机器之所以能够完成一些相对“智能”的任务和特定功能,很大部分是依靠计算机视觉技术的支撑,比如视觉感知、图像识别、人脸识别、目标定位等。
计算机视觉的发展历程
如果将1963年 Larry Roberts 发表第一篇计算机视觉博士论文《Machine Perception of Three-Dimensional Solids》视为人类对计算机视觉探索的起源,计算机视觉发展至今已经有了56年的历史,在计算机视觉发展的这些年里,研究人员和学者提出了大量的理论和方法对其进行完善与优化,下图照时间顺序整理了CV领域中较为重要的技术,其中光流、图像金字塔等技术经过不断发展,仍作为研究的热点问题被广泛讨论,在各种新的应用和技术的支持下断展示其自身的优势。
从技术理论的发展变化来看,在对计算机视觉的探索过程中有若干时期值得一提。
二十世纪50年代中期,此时期的统计模式识别算得上是对计算机视觉领域的初次探索,虽然当时的工作主要集中于二维图像分析和识别上,如光学字符识别、工件表面、显微图片和航空图片的分析和解释等,尚接触计算机视觉的本质与核心,但对于人类在计算机视觉领域的研究依旧具有启发性。1963年,Larry Roberts发表的计算机视觉领域的第一篇博士论文《Machine Perception of Three-Dimensional Solids》,揭开了计算机视觉研究的序幕。在这篇文章里,Roberts将现实世界简化为由简单的三维结构所组成的“积木世界”,并且使用计算机从“积木世界”中提取出了立方体、棱柱等多种三维结构并对物体的形状和空间关系做出了描述。对“积木世界”的研究是计算机视觉早期的重要尝试,其创造性的研究也给了人们以极大的启发。1966年,著名的人工智能学者Marvin Lee Minsky要求其学生通过编程让计算机告诉使用者摄像头所拍摄的内容,这一任务触及到了计算机视觉的本质之一,也标志着计算机视觉的正式诞生。
70年代中期,麻省理工学院人工智能实验室正式开设“计算机视觉”(Machine Vision)课程,由著名学者B.K.P.Horn教授主讲,这成为了计算机视觉史上的标志性事件之一。后来人工智能实验室的David Marr教授提出了著名的计算视觉理论,该理论提出的层次化三维重建框架,至今是计算机视觉中的主流方法。随后,计算机视觉蓬勃发展,卷积神经网络、主动视觉、目的视觉、重建理论、基于学习的视觉等重要的计算机视觉理论体系也相继被提出,各类新算法和新理论百花齐放,为计算机视觉领域带来了前所未有的繁荣。
进入二十一世纪后,机器学习成为了主流,计算机视觉进入了基于深度学习的进步时期。“机器学习”一词源自IBM的一篇论文,指利用计算机实现或模仿人类的学习行为。不同于先前使用的方法,机器学习技术无需人为设计和提取特征,而是通过特定的算法从大量的样本中自动归纳学习。机器学习的应用需要大量的数据样本来支撑,而二十一世纪以来的互联网技术的飞速发展恰好为机器学习技术提供了所需的海量数据。
2006年之前,计算机视觉中所使用的模式识别方法主要是机器学习中的浅层学习技术,如支持向量机、决策树等。这些方法存在特征提取能力不足、容易出现过拟合等问题。2006年,Hinton等人提出了深度学习领域的第一个模型——深度臵信网络模型(DBN)。通过将多个受限波尔茨曼机(RBM)堆叠成为一个深度网络结构,获得了浅层模型难以比拟的高层次抽象特征提取能力,从而具备了更加优越的性能。此模型通过逐层预训练和整体微调的方式使深层次的神经网络的训练成为了可能。
在深度学习技术的推动下,计算机视觉由原先精度低、复杂性高、人为干预多的情况进入了发展的新时代。卷积神经网络(CNN)是最常用于计算机视觉的深度学习技术之一。CNN借鉴了生物视觉的有关概念。网络像生物视觉器官一样逐层从输入中提取局部特征并在高层次进行汇总,最终完成对输入的模式识别。除DBN和CNN外,递归神经网络(RNN)、堆栈自编码器(SAE)等深度学习技术也在计算机视觉等方面得到许多应用。
在之后的时间里,其他深度网络模型如雨后春笋一般涌现,各种深度学习模型被广泛运用在计算机视觉中,为计算机视觉带来了一场新的革命。
新一代计算机视觉
深度学习技术的突破给人工智能等众多领域注入了新的生命力,但在一波应用热潮之后,却出现了后继乏力的现象。在今年5月份的一次采访中,中科院院士、清华大学人工智能研究院院长张钹教授接在受记者采访时谈到,目前基于深度学习的人工智能在技术上已经触及天花板。
张钹教授认为,现在的深度学习本质是基于概率统计,是寻找那些重复出现的模式,利用没有加工处理过的数据用概率学习的“黑箱”处理方法来寻找它的规律,这个方法本身通常无法找到“有意义”的规律,它只能找到重复出现的模式,重复多了就被认为是规律(真理),因此谎言重复一千遍就被认为真理,所以为什么大数据有时会做出非常荒唐的结果,因为不管对不对,只要重复多了它就会按照这个规律走,就是谁说多了就是谁。也就是说,光靠数据是无法达到真正的智能。
而目前计算机视觉的研究算法大多是基于深度学习的,如果想在此方面继续有所突破,新的研究思路和新的算法势在必行。在这种大环境下,联动北方推出了新一代的计算机视觉研究算法——泛布计算。
泛布计算的框架和模型
联动北方多年研发的自主版权的泛布式计算系统,结合汲取了分布式计算、MR、高并发计算、互联网终端植入式异构计算等算法优势。
系计算框架采用总控+计算节点的异构模式,多个处理器协同工作,核心处理器负责处理最重要和最紧急的数据和任务,而非核心处理器则负责对数据进行预处理或处理一般性的数据和任务。
在异构模式下,总控只需要负责处理核心任务,就像在一个饭店里,大厨只要需要负责完成烹饪,而准备原料等事项则可以直接交给帮厨去完成,在泛布计算里,承担“帮厨”任务的则是总控以外的其他计算节点。主控与多节点相互配合,并行处理多项任务,从而大大降低延时,从而打造一个高效、独立、灵活、开放的系统。
模型方面,泛布计算以联动北方智慧树模型为基础,该模型以代数的群论、拓扑学以及模糊集合论、图论等数学基础作为支撑,是联动AI技术的理论基础,该模型同时支持可视化建模与并行流式处理,为后续功能的实现提供了强有力的支持。
泛布计算处理图像步骤
1、面向边界的计算
对于图像边缘处理,泛布计算采用了边界八值法,即将每个元素视为一个对象,其边界向量为周边的八个点。如果该元素湮灭时,左右有相邻元素,则左为右0,右为左0,有个边界量重置为空或为0。边界八值法的核心技巧,就是将1个点扩张切成9个点。
如果元素的边界8值都为0,则将该该元素(对象)视为一个纯“内点”,可以省略;如果元素边界8值中有非0值的,则记录坐标,该元素成为边界点。与“内点”相反,还有“孔洞”的存在,就是湮灭象荷花页上的水滴融和之后,出现一片水域之中的洞,空洞则需要根据其关键特征(比如代码中的注释//,/*),判断是否回填补满,如果边界8值的取值,除了0和1之外,还有更多值,则可以辨别颜色、灰度、梯度、势差等等。
2、面向并发的计算
对于层次丰富的图像,联动北方则采取多层并行计算的方式以提高处理效率。
并行计算时,先同时并行计算每点的边界8值,再同时并行计算2点的边界10值,3点的边界12值等等,因为有边界湮灭,中间许多可以优化的略去,其方法类似于稀疏计算。
湮灭与分层,是生物并行计算的本质。先有湮灭,获得基本形状,之后才有形状间组合的辨识,才有坐标轴旋转,取最大正交系之类的对齐方式,在此期间,同样需要“归一化”处理,即不断湮灭增长之后,做归一化正交系。而对于缩放、旋转、扭曲,则是边界点双向链表的成比例坐标变换。
3、面向矢量的计算
关于极坐标,不止是固定的多少角度做一个扇形,然后在每个扇形内看分布,而是要针对具体的标的,看它的锚点(左下角)、跨越多少个角度、以及每个射线的近值和远值。
给予矩阵地图上每个区域都作为极坐标的原点,去计算外围多个区域的极坐标分布,所以有多个极坐标系,互相印证计算。通过极坐标系,可以看到的区域对象分布,才更加接近于真实人体对于事物的感知,才好决定哪些区域可以合并,而哪些需要再次分割。
所以地图状的全局区域栅格坐标是必要的,也便于在逐层递归Turtles时,可以遗留一部分,等到下N级时在融合。就像鞭炮一样,抽象出每个细节,还需要能结构出整体,这是与深度学习不同的地方,它们是不关注细分结构与整体的,而只是关注像素硬比对或者卷积后特征比对。
4、面向结构的计算
通过以上步骤提取图形的公共结构之后,需要再进行个性化的标定,即建立具象与公共结构之间的非线性函数映射关系(参数)。
例如人脸识别,就是在个体与公共结构之间简历个性化的特征映射函数,推而广之,比如甲状腺肿瘤的良恶性诊断,也是在公共结构之上,分析个性化,及个体片子与公共结构之间的广义非线性映射函数,看此确定了参数的函数,其最大似然是哪种,从而由此函数来判定良性与恶性,比如找周边邻居算是其中一种极简函数。当然,此函数参数,可能表现为一种矩阵,或者是一种超矩阵的张量,所以不只是要发现公共结构,找到个性化映射函数;更要建立公共结构组成更大结构之间的树网,然后再做非线性函数。
如果把栅格计算退化成一种边缘检测的话,可以通过初分区域的融合,组合出各种边缘提取后的形状,然后通过图形学看最像什么,来决定应该怎么融合;并发的,每一个区域跟它周边邻居2/3/4...组合,可以按极坐标逆时针,然后更外一层、更外一层进行处理。
泛布计算的落地应用
目前,联动北方提出的泛布计算已经在医疗、运动分析与智能排版的应用上取得了不错的效果,具体技术实现与效果如下。
泛布计算之于智能医疗
传统的视觉处理方式是对图像进行栅格化计算以分析图像的结构,而联动北方的计算机视觉系统,除了对图像进行栅格化计算,同时还会进行多层并行计算以提升图像处理的速度、准度与精度。
对于医疗影像的处理,患者无需再经历传统模式下诊断前以及获取诊断结果时漫长的等待,只需要输入超声检测图像便可在短时间拿到结果。具体处理流程为:系统接受用户输入的图像,对图像进行预处理,将用户上传文件处理成系统能识别的格式;预处理之后系统会对图像进行特征分析,逐层分析拟合图像区域,在理解基础上提取重点部位;之后会将特征部位进行自学习与自堆叠、训练出知识,判断患病风险并输出诊断结果。
通过计算机处理医疗影像,大大加快了医疗影像的处理过程,为患者与医院减轻了负担,提高了患者就诊的效率。
目前,以自有核心知识图谱技术为支撑,联动北方在医疗影像领域,已经实现对目标影像进行切割、识别归类、组合与 结构分析,生理和病理知识,最终完成智能疾病诊断,并在超声与CT影像处理的实际应用方面取得了不错的成果。
泛布计算之于运动分析
当前,深度学习在静态图像识别方面已经取得了很好的效果,对于一些领域的是想识别甚至一度达到了99%的准确率,但是在运动分析领域却依旧存在很大的不足。
从摄像机、无人机或其它设备采集到的图像信息更多具有连续动态的特征,比如运动中人或物体等,在实际使用中,更多的需求是对动态视频进行分析以达到定位、跟踪和预测这些目标的行动轨迹的目的。
当前对于运动分析研究的挑战在于数据量巨大、图像噪声干扰比较大,同时,自动跟踪也涉及人工智能与模糊控制方面的难点。因此,目前的商用人工智能平台几乎没有这部分功能。与静态图像识别不同,动态目标跟踪技术的关键是要准确得到待测目标物体的空间坐标序列值,也就是要准确测得图像上标识点的位置。标识点的选择有两个原则——易于识别与中心位置易于精确定位。
如下图所示,图(d)边缘突出,中心对称,对旋转、变形有很好的适应。是比较理想的标识点,但在实际操作过程中,同一图像存在多个标识点,这四类标识点都有应用。
此外,算力、存储和带宽是运动分析中面临一个重大挑战,分布式计算是目前缓解存储与带宽压力的一个策略,另外一个更有效的手段是数据压缩。
以图像压缩为例。目前的分形图像压缩算法,能够在保证重构图像的清晰度与分辨率的同时,提高图像的压缩比。但该方法依然存在两类问题,其一是在编码过程中过度追求最佳匹配块,需要在码本空间中逐一搜索而导致的编码速度慢。其二是图像块分割方式固定和图像块变换方式过少而影响解码图像质量。
联动北方通过引入非线性迭代函数系统,增强了图像构建能力,提高了图像处理的质量与速度,同时利用改进的即遗传算法在匹配搜索过程中获取最佳的压缩仿射变换参数,并参考压缩迭代定理确定迭代次数,进一步提高参数的全局搜索能力和匹配的准确度,大大缩短搜索时间。
此外,联动北方还将双目视觉与多摄像头视觉等技术引入到运动分析中。双目视觉是当前机器视觉的一种重要形式,一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,再基于视差原理恢复出物体的三维几何信息,重建物体三维轮廓及位置。多摄像头视觉则是在双目视觉上的进一步拓展,在机器视觉领域有着广泛的应用前景。
通过将泛布计算应用于运动分析,能够在较复杂的环境中分辨与追踪主要运动物体,同时能够识别出物体的运动状态与运动规律,以达到监测运动状态和预测运动轨迹的目的。
泛布计算之于格式排版
智能排版主要应用于对多种格式的文字排版,当一篇文章中包含中文文字、代码、英文片段以及图像时,如何做到准确美观的排版对于处理者来说是一个不小的挑战,是当数据量较小时可以通过人工操作来完成,但是数据量太大时,则需要借助计算机视觉来辅助完成。联动北方基于泛布计算的计算机视觉在智能排版方面效果显著,主要处理过程如下:
对于原始数据,先将其进行湮灭处理,具体做法为——如果元素A与元素B在绝对坐标上相邻(2维空间中的左右位置&上下位置)或元素A的右邻(标记为Va(1,0))与元素B的左邻(标记为Vb(-1,0))为同类型,以及元素A的上邻(标记为Va(0,1))与元素B的下邻(标记为Vb(0,-1))为同类型,则可进行湮灭处理。
如有湮灭,则将其合并(标记为Vab),同时继续将Vab的右邻(标记为Vab(1,0))与元素C的左邻(标记为Vc(-1,0))进行湮灭处理,并不断扩散处理。对于任何一组连续元素,其周围边界元素个数为(2n+6),则湮灭合并后则取(2n+6)个数量的边界向量。
完成原始数据的预处理后,将中英文的每个元素视作一个对象,通过将每个对象扩张切成9个点(周围8个边界向量)——逐点计算|两点计算|多点计算——不断湮灭增长后,做归一化正交集——对于缩放、旋转、扭曲,则是边界上双向链表的成比例坐标变换——最终获取同元素的区块边界。
智能排版的具体效果如下:
通过联动北方基于泛布计算的计算机视觉处理后,文字部分进行了自动换行等操作,文中的代码部分被有效识别并加上合适的代码格式底色以示区分,与人工操作效果相媲美甚至更好,同时因为计算机不会因为疏漏而产生错误,从而保证了排版结果的精准性。
计算机视觉的终极目标是让机器具备一双“慧眼”,从而真正理解现实世界中的一切事物并进行分析,虽然就目前来看,在技术和算法上还有提升的空间,但是这并不妨碍计算机视觉的光明前景。
“你看不见你自己,你能看见的只是自己的影子。”
你看不见你自己,你能看见的只是自己的影子。——泰戈尔
该贴被huang.wang编辑于2019-11-3 18:45:11