前言
计算机视觉(Computer Vision),通常简称CV,是一个通过技术帮助计算机“看到”并“看懂”图像的研究领域,例如使计算机理解照片或视频的内容。
计算机视觉为什么重要
在生理学上,视觉(Vision)的产生都始于视觉器官感受细胞的兴奋,并于视觉神经系统对收集到的信息进行加工之后形成。我们人类通过视觉来直观地了解眼前事物的形体和状态,大部分人依靠视觉来完成做饭、越过障碍、读路牌、看视频以及无数其他任务。事实上,如果不是盲人这类特殊群体,绝大多数人对外界信息的获取都是通过视觉完成的,而这个占比高达80%以上——这个比例并不是没有根据的,著名实验心理学家赤瑞特拉(Treicher)曾通过大量的实验证实:人类获取的信息的83%来自视觉,11%来自听觉,剩下的6%来自嗅觉、触觉、味觉。所以,对于人类来说,视觉无疑是最重要的一种感觉。
不仅人类是“视觉动物”,对于大多数动物来说,视觉也都起到十分重要的作用。通过视觉,人和动物感知外界物体的大小、明暗、颜色、动静,获得对机体生存具有重要意义的各种信息,通过这些信息能够得知,周围的世界是怎样的,以及如何和世界交互。
而在计算机视觉出现之前,图像对于计算机来说是黑盒的状态。 一张图像对于计算机来说只是一个文件、一串数据。计算机并不知道图片里的内容到底是什么,只知道这张图片是什么尺寸,占多少内存大小,什么格式的等等。
如果计算机、人工智能想要在现实世界发挥重要作用,就必须看懂图片! 因此,半个世纪以来,计算机科学家一直在想办法让计算机也拥有视觉,从而产生了“计算机视觉”这个领域。
网络的迅速发展也令计算机视觉变得尤为重要。下图是2020年以来网络上新增数据量的走势图。灰色图形是结构化数据,蓝色图形是非结构化数据(大部分都是图片和视频)。可以很明显的发现,图片和视频的数量正在以指数级的速度疯狂增长。
互联网由文本和图像组成。搜索文本相对简单,但为了搜索图像,算法需要知道图像包含的内容。在很长的一段时间内,人类没有足够的技术来理解图像和视频的内容,只能依靠人工标注来获取图像或视频的描述。如何能让计算机更好地理解这些图像信息,便是当今计算机技术面临的一大挑战。为了充分利用图像或视频数据,需要让计算机“查看”图像或视频,并理解内容。
什么是计算机视觉
计算机视觉是人工智能领域的一个重要分支,简单来说,它要解决的问题就是:让计算机看懂图像或者视频里的内容。 比如: 图片里的宠物是猫还是狗? 图片里的人是老张还是老王? 视频里的人在做什么事情? 更进一步的说,计算机视觉就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等,并进一步做图形处理,得到更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取高层次信息的人工智能系统。从工程的角度来看,它寻求利用自动化系统模仿人类视觉系统来完成任务。 计算机视觉的最终目标是使计算机能像人那样通过视觉观察和理解世界,具有自主适应环境的能力。但能真正实现计算机能够通过摄像机感知这个世界却是非常之难,因为虽然摄像机拍摄的图像和我们平时所见是一样的,但对于计算机来说,任何图像都只是像素值的排列组合,是一堆死板的数字。如何让计算机从这些死板的数字里面读取到有意义的视觉线索,是计算机视觉应该解决的问题。
计算机视觉的基本原理
用过相机或手机的都知道,计算机擅长拍出有惊人保真度和细节的照片,从某种程度上来说,计算机的人工“视觉”比人类与生自来的视觉能力强多了。但正像我们平日所说的“听见不等于听懂”一样,“看见”也不等于“看懂”,要想让计算机真正地“看懂”图像,那就不是一件简单的事情了。 图像是一个大像素网格,每个像素有颜色,颜色是三种基色的组合:红,绿,蓝。通过组合三种颜色的强度——即叫做RGB值,我们可以得到任何颜色。 最简单的、最适合拿来入门的计算机视觉算法是:跟踪一个有颜色的物体,比如一个粉色的球,我们首先记下球的颜色,保存最中心像素的RGB值,然后给程序喂入图像,让程序找最接近这个颜色的像素。算法可以从左上角开始,检查每个像素,计算和目标颜色的差异。检查了每个像素后,最贴近的一部分像素,很可能就是球所在的像素。这个算法并不限制于在这单张图片上运行,我们可以把算法运行在视频的每一帧图像上,跟踪球的位置。当然,因为光线、阴影和其他因素的影响,球的颜色会有变化,不会和我们存的RGB值完全一样,但会很接近。不过在一些极端的情况下,比如晚上进行足球比赛,追踪效果就可能会非常差;而且如果其中一队的球衣颜色和球的颜色一样,算法就完全“晕了”。因此,除非环境可以严格控制,这类颜色跟踪算法很少会被真正投入使用。 而如今更多使用的计算机视觉算法一般都会涉及“深度学习”(Deep Learning)的方法和技术,其中,卷积神经网络(CNN)因为其优越的性能,使用最为广泛。由于“深度学习”所涉及的知识过于广泛,本篇就不对其进行更详细的叙述了。如想了解更多关于“深度学习”的相关知识,不妨看下AI入门课程——《英特尔 OpenVINO工具套件初级课程》。它从AI的基本概念开始,介绍人工智能与视觉应用的相关知识,帮助用户快速理解英特尔OpenVINO工具套件的基本概念及应用场景。整个课程包含了视频的处理,深度学习的相关知识,人工智能应用的推理加速,以及英特尔OpenVINO工具套件的Demo演示,由浅入深,一步一步带你掌握深度学习。
计算机视觉的典型任务
图像分类
图像分类是根据图像的语义信息对不同类别图像进行区分,是计算机视觉的核心,是物体检测、图像分割、物体跟踪、行为分析、人脸识别等其他高层次视觉任务的基础。 例如下图,通过图像分类,计算机识别到图像中有人(person)、树(tree)、草地(grass)、天空(sky)。
图像分类在许多领域都有着广泛的应用,如:安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别,互联网领域基于内容的图像检索和相册自动归类,医学领域的图像识别等。
目标检测
目标检测任务的目标是给定一张图像或是一个视频帧,让计算机找出其中所有目标的位置,并给出每个目标的具体类别。 如下图,以识别和检测人为例,用边框标记图像中所有人的位置。
而在多类别目标检测中,一般使用不同颜色的边框对检测到的不同物体的位置进行标记,如下图所示。
语义分割
语义分割是计算机视觉中的基本任务,在语义分割中我们需要将视觉输入分为不同的语义可解释类别。它将整个图像分成像素组,然后对像素组进行标记和分类。例如,我们可能需要区分图像中属于汽车的所有像素,并把这些像素涂成蓝色。如下图,把图像分为人(红色)、树木(深绿)、草地(浅绿)、天空(蓝色)标签。
·实例分割 实例分割是目标检测和语义分割的结合,在图像中将目标检测出来(目标检测),然后对每个像素打上标签(语义分割)。对比上图、下图可见,如以人为目标,语义分割不区分属于相同类别的不同实例(所有人都标为红色),实例分割区分同类的不同实例(使用不同颜色区分不同的人)。
·目标追踪 目标跟踪是指对图像序列中的运动目标进行检测、提取、识别和跟踪,获得运动目标的运动参数,进行处理与分析,实现对运动目标的行为理解,以完成更高一级的检测任务。
计算机视觉在日常生活中的应用场景
计算机视觉的应用场景非常广泛,下面列举几个生活中常见的应用场景。
门禁、支付宝上的人脸识别
· 停车场、收费站的车牌识别
· 上传视频到网站或APP时的风险识别
· 抖音等APP上的各种自拍道具(需要先识别出人脸的位置)
计算机视觉面临的挑战
目前,计算机视觉技术发展迅速,已具备初步的产业规模。未来计算机视觉技术的发展主要面临以下挑战: 一是如何在不同的应用领域和其他技术更好的结合,计算机视觉在解决某些问题时可以广泛利用大数据,已经逐渐成熟并且可以超过人类,而在某些问题上却无法达到很高的精度; 二是如何降低计算机视觉算法的开发时间和人力成本,目前计算机视觉算法需要大量的数据与人工标注,需要较长的研发周期以达到应用领域所要求的精度与耗时; 三是如何加快新型算法的设计开发,随着新的成像硬件与人工智能芯片的出现,针对不同芯片与数据采集设备的计算机视觉算法的设计与开发也是挑战之一。
结语
计算机视觉作为人工智能细分领域中发展最快、应用最为广泛的技术之一,它如同人工智能的“眼睛”,为各行各业捕捉和分析更多信息。随着算法的更迭、硬件算力的升级、数据的大爆发,以及未来5G技术发展带来的高速网络,计算机视觉在应用方面也将会有更加广阔的发展空间,让我们拭目以待吧!
编辑:黄飞
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)