Computer Vision 的由来

本节课为「计算机视觉 CV 核心知识」第 3 节课;

「AI秘籍」系列课程:

Hi, 大家好。我是茶桁。

咱们这节课来讨论一下计算机视觉的发展过程。

我们想看它的由来,首先看一下计算机视觉这个名字。计算机视觉,computer vision,把这两个单词拆解来看:computer 就是计算机的意思,vision 就是视觉的意思,所以我们下面就计算机和视觉两个角度去看一下计算机视觉。

那么从计算机出发,最早的计算机是什么?最早的计算机就是算盘,再到后面是计算器,再到后面有了专门进行大量、高速计算的机器,也就是计算机出现了。那么再到后面是专门提供计算服务的服务器,CPU 服务器,甚至于是 GPU 服务器、TPU 服务器。

OK,那这个计算机和 CPU 服务器有什么区别呢?计算机通常我们指的是个人电脑,个人的PC。服务器呢?专门计算的,它不需要显示器。个人的PC是要交互的,有个显示器。

那么这是从计算机方面去认识,计算机视觉就是从计算机出现之后才开始出现的一个议题,用计算机去代替我们人的视觉去做一些事情,类似于这样的一个意思。所以说你看那个计算机、再到专门提供计算服务的服务器等等,我们看到算力是提升了,从这个角度来看,是我们计算机视觉能够代替人视觉的方面也是越来越多了。抖音的计算能力越来越强了吧?从这方面我们可以大概的去估计一个状况。

然后我们从视觉出发来认识一下计算机视觉。

由视觉出发,最早的人类的视觉的延伸就是用绘画。我们想告诉别人一个事情,通过声音是吧?其实通过声音是需要大量的积累和学习,才能通过声音去传递一个事情。想象一下遥远的远古时期,我看到一只老虎,要告诉另外一个人这边有个老虎,我要通过声音,就学老虎叫一下,他可能知道这边有个老虎。或者说我描绘一下老虎在做什么事情,老虎朝哪个方向走了,通过声音描述没办法了,我只有通过指向,通过动作。那通过动作其实在别人看来它就是一幅画了,就是一个图像了。

当然我要告诉第三人,或者说这个人没有出现在我面前,我要告诉我的后代,几百年之后的人,我需要把它刻画下来,画到岩石上,比如说现在一些岩壁上的岩画。你会发现它都是几千年前画的。

这就是我们视觉的延伸,他看到什么,把它记录下来,然后告诉我们了。这是最早的视觉的延伸。

到后面,就有了照相机,它可以把现实世界原原本本的copy下来,我们再看到的就非常真实了。比如说我们通过留存的照片能看到晚清,能看到世界各个地方的一些事情。

至于 17 世纪的那些事我们无法通过相机看到,就只能通过绘画了。所以说古代历史故事要是能copy,有像照相机这样的功能多好。所以说,到照相机这里,我们就认为机器是有了视觉了。照相机也是一种机器,它可以看到世界并且记住,记在胶片上,这是我们人视觉功能的一个基础。所以说什么叫计算机视觉,可以理解为照相机就是计算机视觉,它是一个最基础的计算机视觉。

那么计算机视觉主要的内容是不是指的照相机这个功能?不是的对吧?主要的功能不是,但是它也属于。那么我们讨论一下视觉能力到底是什么。其实视觉能力就是会看,会展示,还要会处理,会思考。不过当前我们照相机这个计算机视觉它是会看会展示,但是不会处理,不会思考。那视觉的主要功能,我们希望它会处理,会思考。看到什么,比如是个 100 元纸币,不要把它当成是 1 元纸币花了,那就行了。

我们来看一些照片

可以看到,这些照片都是老照片,像这些照片呢,就是我们这个计算机视觉的内容,就是我们照相机拍的内容。我为什么选了一些老照片,我们看下老照片的特点,可以看到这些照片上的人脸上基本都没有瑕疵,比如痘痘啊,黑头啊之类的。这是照相机拍出来的,非常的真实,但是又非常的不真实。我们人的脸上总会有一些绒毛、痘痘等等,男生可能还会有一些胡须。但这些个照片里好像没有似的。那是发生了什么作用呢?

照相机它是个视觉,它会看、会记、会展示,但是这个中间发挥了什么事情呢?这些人脸上基本上都非常的光滑,他做了一些滤波操作。我们后面要讲到这个滤波操作,滤波操作其实呢就是我们的卷积操作。卷积神经网络中的卷积,想想我们卷积做的这些操作,你看这个滤波操作或者卷积操作,它能让人皮肤上原来有的一些细节消失了,这个滤波叫平滑滤波。

我们当时照相机的平滑滤波是通过什么实现?是镜片实现的。讲到后面我们会布置个作业,让大家去通过数字计算的方式去实现滤波,实现这种老照片的效果。

那么这是照相机的视觉能力。我们通过照片分析了它的视觉能力的一个优点和缺点。优点就是会看、会记;缺点就是间接美颜了一下,或者说直接用镜头、镜片美颜一下,而不是用我们现在的现代的美颜技术,这样我们也无法恢复其本来的信息,这是老照相机。到后面计算机视觉的发展,视觉方向发展就是数码照相机了,数码照相机除了会看、会记,还会更多的处理。主要数码照相机都加了一个数码,加了一个数码是什么意思呢?等一下还可以讨论一下。那么这个数码摄像机呢,等于说它主要是多了更多的图像处理的技术的集合。就是每个数码照相机里面好像都有一个阉割版的 Photoshop,小型的PS。最后把一些图像处理的功能综合整理一下放到我们电脑的软件上,就是 Photoshop。

不过我们摄像、数码照相机里面的图像处理技术它都是手动处理的,虽然说它能够对图像做一些去红眼啊,调些色调啊等等,但它都是手动处理,需要人去按按钮的,PS也是需要人去操作的对吧?那么与手动处理对应的就是自动的处理了,自动处理就是自动的检测图片上到底有没有需要处理的地方,这个图片是不是过暗了,自动调亮这个图片上这个人。照的时候眼睛是不是有红点了,自动把红眼的红点去除。

那么自动的处理,比如说自动化的去美颜就是一张图片进来之后,我们如果说用 Photoshop 去处理的话需要找着人眼的位置加一下睫毛,把眼睛调大一点。那如果自动化的去美颜的话,首先我们要找到人脸的位置,这个算法叫人脸检测对吧?第二个我们定位五官的具体位置,这个算法叫人脸关键点检测对吧?然后再第三个就是对相应的位置进行磨皮、瘦脸、大眼、然后涂口红,然后白牙等等。就是你先定位,定完位之后,相应的区域定出来之后就对这个区域进行处理,调色调啊等等,去达到一个磨皮、瘦脸、大眼。这种功能就是自动化的去PS,自动化去美颜的一个技术。那么我们的数码相机上是没有这种功能的,那自动化来去处理,就是我们的计算机视觉自动部分的内容了。

所以计算机视觉部分它是包含两个部分的,一个是你找到定位,这是什么呀?做决策对吧?要做决策。我要对哪里进行处理,我要对应处理。后面这些磨皮、瘦脸、大眼就是 PS,就是图像处理做的事情。我们说 PS 是图像处理技术的集合,里头的各种技术都是图像处理的技术。

OK,这是自动化去美颜的一个具体的算法的解析。比如说找到人脸的位置,是用人脸检测算法,然后五官定位是人脸关键点检测算法,磨皮是用的是模糊滤波,瘦脸和大眼用的是仿射变换,瘦脸和大眼是使脸部变小、眼睛变大,这是仿射变化。之后呢我们会讲,磨皮这个我们也会讲具体的方法,就是用的 OpenCV 去做的。

口红和白牙都是色彩变化,下一个单元会去讲,「中阶计算机视觉」会去讲色彩的变化。

那么我们在做这个自动化的去美颜的过程中,我们要去做决策是吧?要做出决策,那决策找到人脸的位置,定位这个人脸位置,这是我们算法或者模型的核心内容,或者计算机视觉的核心内容。那么做计算机视觉决策的时候我们就碰到一个问题,碰到什么问题呢?我们通过这个例子来看一下。

这个例子我们是要做一个人脸检测的功能,这是个图片,我黑笔勾出来的这个大的矩形是个图片,那么这个区域我要求把这个图片上的两个人脸给检测出来,或者说这个图片有多少个人脸我的模型是不知道的,我希望把它检测出来。这时我检测的方法是什么呀?检测方法就是拿一个窗口,类似于这个橙色矩形这个窗口在这个图片上滑动,滑动到某个位置,把这个位置的图片抠出来做一个分类,做个二分类,看它是不是人脸。不是人脸就继续滑动,一直滑动,一直滑动到第二行,滑动到第三行...滑动到人脸区域了,一分类是人脸,OK,就把这个框返回过来,把这个框的位置返回回来,这就是我们对人脸进行定位了。

那这个过程中我们滑动一圈了之后,滑动到头了之后发现没有怎么办呢?我们会把框调整大小,把框变大,因为它可能存在大的人脸,可能我们刚才框太小了。可能还有更大的人脸没有检测到,所以我们就拿这个大的人脸去图片上滑动,同样滑动之后,到了大一点的那个人形的脸部,检测到一个大的人脸了。这就是人脸检测这个过程或者人脸检测的一个思路过程,这个思路叫 sliding window,也叫滑窗分类。滑窗分类的思路做目标检测,做人脸检测。

那么这个思路呢,你发现做这个思路中如果我要想这个图片上两个人脸都检测出来,我就需要这个小框滑动一遍,大框滑动一遍。那么小框滑动一遍,大框滑动一遍,我就可以保证这两个人脸都检测出来,这个算法准确率就高了。那么准确率高它会造成一个什么问题?造成我们速度下降。

我们对一张图片做目标检测的时候,这个人脸检测的速度就下降了,速度就没有那么快了,就要慢一些了。因为他做两个窗口的滑动,两个窗口都在图片上进行搜索。那甚至有些时候因为我不知道这个图片上到底有多少个人脸,这人脸的尺寸是什么,所以说这时候我这个窗口可能要从 1*1 像素的窗口一直要上升到这个图片大小的窗口了。非常小,非常大的窗口都要包含,想让这个模型检测算法的精度越来越高,所以我就需要花更多的时间去做。

如果说我由于实际的要求,比如说在自动驾驶的汽车上。汽车上搭载的电脑计算能力不强对吧?由于现实环境的因素计算能力没有那么强,只能提供少量的计算,那么这时候如果只能少量计算,搜索的框大小就少了,可能就只有一个框和两个框了,这是必然影响。我这个人脸检测的精度,有很多人脸就检测不出来对吧?所以这个例子就体现出来我们做模型,做算法的一个难点了。就是说,做算法其实我们是想它越准越好、越快越好,但实际上呢,准和快之间是要有取舍的,要有 trade off 的。要么你要求准,要么你要求快,你要求又准又快,这个要求是比较难的。

那什么情况下能达到又快又准呢?就是你的算力要足够强,算法模型本身的计算思路要足够优秀就可以了。所以说无论怎么样,你要做到又快又准,你计算的平台是最重要的。平台是最主要的,它是一个基础性的决定的作用。计算平台都不够,我们算法的一个自由度,就设计具体算法模型的计算方法的自由度就没有那么高了。

比如说我们刚才那个这种策略,滑动分类这种做人脸检测的算法模型策略,当然效率比较低。我们后续讲目标检测模型的时候,会有更加高效的一些策略。这就是我们这个策略方面,或者模型方面。

那么我们这个算法,最后我们使用产生它的准确度和速度,有决定性要求的其实还是计算平台。计算平台如果能做的很快,那我们这个算法就要求不那么高了,或者我们可选的算法就更多了。所以说,现实世界会催生我们这个计算能力方面有更大的发展,有更强的计算能力。

计算机后面就应该是采用 GPU 或者 TPU 来处理图像。GPU 来处理图像之后我们算法模型,或者我们人工智能又进一步的发展。特别是我们这一波人工智能大火,人工智能的岗位这么多,现在很多人都拿着几十万、百万的薪资,那其实都是因为 GPU 出现了。我们这个算法模型又有非常多的事情可以做,并且很多事情就可以落地了。这就是算法平台给我们带来的一些效果,带来的一些现实的一些好的影响。

那 GPU 的名字,我们要和 CPU 来讲,稍微说一下硬件的知识。CPU 是我们最早的计算机里面,个人PC里面的中央处理器,GPU 其实之前是没有的,后来是晚于 CPU 出现的。

CPU 这个名字是 center process unit,从这名字看它是中央处理单元,然后 GPU 呢,它是 Graphic process unit,就是图像处理单元。那么 CPU 呢就在我们电脑出现之时,CPU 就设计出来,就有了。那 GPU是什么时候出现?就是电脑出现之后,我们人和电脑交互,我们要知道电脑它发生了什么事情就必须有一个显示屏。

我们最早的显示屏就显示些文字,电脑有个 DOS 系统,你输入一个命令,电脑返回一个内容,我们通过文字去跟电脑沟通。但是文字沟通的效率低,图像沟通的效率高。比如我们汉字,为什么汉字优秀呢?就是因为每个汉字其实都是一幅图画,包括我们最开始要跟人说明一个问题的时候就是用图画的方式。用文字其实描述起来需要大量的学习,大家有共识了之后才能去沟通。所以说我们人和计算机沟通其实图像很重要。

那图的话,计算机它到底内部运行什么状况?你以图形的方式显出来,让我们人拿着鼠标去点,而不是只是会用键盘去输,效率要高很多。所以说计算机要和人交互,或者计算机要想发展,计算机要想卖给客户,卖给我们普通人,那必须把跟人的图形交互要做起来。做起来之后发现这个效果就很好了,人就非常容易接受了,个人PC就出现了。

那么图形交互的过程中我们发现 CPU,中心处理单元处理图形的能力相当弱。因为图形它涉及到是个矩阵,那么矩阵的计算量是非常大的,那 CPU 它主要是计算机的各种外设,各种芯片,各种外设之间术语的沟通和交流,逻辑计算。中间留的纯计算单元,纯的加乘单元是不多的,所以说为了缓解 CPU,或者帮助 CPU 去做这种大量的矩阵

计算,单有一个单元,把这个单元用于图像处理或矩阵处理。这个单元因为它的计算量太多了,在 CPU 的任务中太多,就把它专门分割出来专门做了一个单元叫 Graphic Processing unit,也就是 GPU,我们称呼它为显示卡。

显示卡做出来,电脑就可以更好、更快的显示了,就更容易处理矩阵。我们图片本来就是矩阵,所以计算机视觉这块也就发展起来了。

OK,那说到这里我们要总结一下。计算机视觉是什么?计算机视觉是自动化的完成图像的采集、决策、处理、保存、显示这个过程。像视觉一样看到并决策,我们这样去定义。别人问你做计算机视觉是什么,你也可以去告诉别人是自动化完成图像的采集、决策、处理、保存和显示过程。

它决策什么?就比如说人脸的位置在哪里,比如说这个人眼的位置在哪里,比如说你是谁等等。就像人一样利用图像去做决策。OK,这是计算机视觉的由来。并且我们也回答了我们最初提出的一个问题:「计算机视觉是什么」。

那到这里呢,这节课也就结束了,咱们下一节课来讲讲计算机到底是如何看到图像的,会涉及到代码的部分了。

那咱们下节课再见,拜拜。

相关推荐
北京搜维尔科技有限公司19 分钟前
搜维尔科技:【应用】Xsens在荷兰车辆管理局人体工程学评估中的应用
人工智能·安全
说私域22 分钟前
基于开源 AI 智能名片 S2B2C 商城小程序的视频号交易小程序优化研究
人工智能·小程序·零售
YRr YRr22 分钟前
深度学习:Transformer Decoder详解
人工智能·深度学习·transformer
知来者逆27 分钟前
研究大语言模型在心理保健智能顾问的有效性和挑战
人工智能·神经网络·机器学习·语言模型·自然语言处理
云起无垠37 分钟前
技术分享 | 大语言模型赋能软件测试:开启智能软件安全新时代
人工智能·安全·语言模型
老艾的AI世界1 小时前
新一代AI换脸更自然,DeepLiveCam下载介绍(可直播)
图像处理·人工智能·深度学习·神经网络·目标检测·机器学习·ai换脸·视频换脸·直播换脸·图片换脸
翔云API1 小时前
PHP静默活体识别API接口应用场景与集成方案
人工智能
浊酒南街1 小时前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)4.9-4.10
人工智能·深度学习·神经网络·cnn
Tony聊跨境2 小时前
独立站SEO类型及优化:来检查这些方面你有没有落下
网络·人工智能·tcp/ip·ip
懒惰才能让科技进步2 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝