Computer Vision 的由来
本节课涵盖上述「计算机视觉 CV 核心知识」的内容;
「AI秘籍」系列课程:

Hi, 大家好。我是茶桁。
咱们这节课来讨论一下计算机视觉的发展过程。
我们想要了解其起源。首先考虑一下'computer vision'这一术语的具体含义。其中'computer'意为计算装置或电子设备的运算能力;而'vision'则指与感知、识别有关的各种技术。因此,在深入探讨'computer vision'的过程中,默认我们会从计算能力和感知能力两个维度展开分析。
那么从计算工具的发展角度来看 earliest computer was an abacus later came with the development of mechanical calculators and then progressed to electronic computers. The earliest computing devices date back to ancient civilizations where counting tools like the abacus were used for basic arithmetic operations. Over time these early calculating machines evolved into more sophisticated forms enabling complex calculations. With the advent of electronic technology computers became more powerful and accessible leading to the development of dedicated computing hardware such as servers which are specifically designed to handle intensive computational tasks. These specialized computing platforms include CPU servers GPU servers and even Tensor Processing Units TPU servers which have become integral to modern computing architectures.

那么,请问计算机与CPU服务器之间有什么区别吗?一般而言,我们所指的计算机即为个人电脑(PC)。这种设备通常具备人机交互功能。至于服务器,则是专注于大规模数据处理与高性能计算的任务,并不配备显示屏。而普通的个人电脑则配备有显示器等周边设备。
那么这是从计算机相关领域进行探讨的问题。
然后我们从视觉出发来认识一下计算机视觉。
从视觉角度出发,在人类视觉能力的发展过程中衍生出绘画作为一种表现形式。我们想要向他人传达某个信息或许?其实想要传递信息则需要经过长期的学习和积累才能成功实现。回想远古时代的一个场景:观察到一只老虎后想要告知另一个人这里有一只老虎。于是我会模仿虎吼一声让他明白这里有虎的存在;或者我可以描绘出虎的行为姿态以及移动的方向但仅凭声音难以传达细节这时就需要借助肢体语言来进行补充说明:而当人们以动作传递信息时在他们的脑海中这则形成了类似图像的记忆模式。
我想向旁人、未曾遇见于眼前之第三人告知此事,并期望将其这一记忆传承给后人。我也希望将这一记忆刻划留存于岩壁之上——Thousands of years ago, these rock carvings stand as a testament to humanity's earliest expressions of thought and creativity.
这正是我们视觉系统对外界信息进行扩展和适应的表现。当人类观察外界时,他们将所见之物通过感官转化为可传递的信息,并以此向他人传达认知内容。这一现象体现了人类早期认知模式的发展与延续。
到后面,就有了摄像设备(即照相机),它能够忠实记录现实细节并将其完整呈现出来。比如我们可以从留存下来的照片中观察到晚清时期的景象以及世界各地的独特事件。

关于17世纪发生的事件我们无法通过相机捕捉到;因此设想古代的历史故事具备复制功能(就像照相机一样)确实很有意义;因此我们把这一概念归结为机器具备视觉能力;我们可以将这一过程理解为一种机器能够感知外界并将其信息存储下来;进而得出结论:计算机视觉即指具备类似照相机制的技术或系统
现有这种计算机视觉技术虽然具备观察和呈现的能力,
但它目前还无法完成自动分析与推理的任务。
我们的目标是让这种技术不仅能够识别物体的存在,
还能理解其含义并作出合理的判断。
比如说,
当摄像头捕捉到一张100元纸币时,
系统不应该仅仅停留在表面判断,
而是要通过深入分析识别出其真实的经济价值。”
我们来看一些照片

可以看出,
这些都是老照片,
而像这样的的照片呢,
也属于我们这一类计算机视觉的内容,
也是照相机拍摄的内容。
为什么选择这些老照片?
观察老照片的特点,
可以看到,
这些人脸上基本都没有瑕疵,
比如痘痘、黑头之类。
这是照相机拍出来的,
非常的真实,
但是又非常不真实。
我们的脸总是有一些绒毛、痘痘等特征,
男生还有胡须这类特征。
然而,在这些图片中却看不到类似的痕迹。
那么这背后的原因又是什么呢?
照相机本质上是一种视觉装置,在接收外界信息时能够进行感知与记录;通过执行特定的滤波处理以增强细节观察能力;在后续讨论中将重点阐述这一类型的处理方法;这种处理方式能够有效地去除皮肤表面原有的细节信息;在卷积神经网络中运用这一技术原理被称为平滑滤波。
我们当时使用的照相机平滑滤波的技术是什么?是基于镜片技术实现的,在后续的内容中我们会布置一个作业,请大家具体而言就是让大家利用数字计算的方法来完成滤波操作,并最终模仿老照片的效果
这种设备具备的视觉感知能力是其核心功能之一。研究团队通过对照片对其视觉感知能力进行了优势与劣势的分析发现:主要表现为能够识别和存储图像;主要缺陷在于采用简单粗暴的方式进行美颜处理而不采用现代技术手段使得原始信息无法恢复这属于传统老式照相机的特点随着计算机视觉技术的进步数码照相机的发展逐渐完善数码摄像机本质上整合了多种先进的图像处理技术每个设备都配备了独特的算法系统能够实现复杂的画面解析与合成最终将处理后的数据输入至高性能电脑中形成专业的图像编辑软件系统如PS等这一过程不仅提升了工作效率还显著提高了图像质量
然而,在摄像和数码照相机内部所采用的图像处理技术主要依赖于人工操作。尽管这些设备能够执行一些基本的图像调整操作如去红眼和调节色调等,并且也需要人工按动按钮来进行设置和参数调节。相比之下,则是依靠计算机软件进行辅助完成的任务。而自动化的图像处理则是通过智能算法实现的功能:它能够自主检测图片中是否存在需要调整的地方,并根据具体情况判断此图片是否过暗而进行亮度补偿;同时还能识别并去除照片中出现的眼睛红点等瑕疵问题。
那么自动化处理就显得尤为重要了。举个例子就是自动化的去美颜功能,在输入一张图片后(输入一张图片后),系统会识别出人脸位置(随后会确定五官的具体位置)。然后系统会根据这些信息执行相应的修面工作(最后会对这些区域进行修面、瘦脸、放大双眼以及打唇色等)。具体来说就是先定位(接着定位),完成定位后(定完位之后),系统会识别出各个需要处理的区域(随后会确定五官的具体位置)。最后会对这些区域进行修面、瘦脸、放大双眼以及打唇色等操作(完成这些步骤后),从而达到修面、瘦脸和放大双眼的效果。
值得注意的是传统数码相机不具备这一功能(传统数码相机不具备这一功能),而计算机视觉系统负责这一自动化处理过程。
所以计算机视觉领域主要包含两大核心环节:首先是定位阶段(即确定目标位置),其次是决策阶段(即确定如何调整)。在此基础上我们需要针对具体区域实施相应的处理措施。其中一些如磨皮、瘦脸等技术属于图像编辑领域的范畴,并且这些方法都涉及图像处理的关键步骤。
下面是对这一特定算法进行详细解析:首先,在识别面部位置时会运用人脸识别算法;随后进行五官定位时采用 facial keypoint detection技术;为了实现皮肤美白效果将使用模糊滤波方法;而通过 affine transformation技术达到瘦脸与放大双眼的效果;具体来说,“使脸部变小、眼睛变大”这一描述应修改为"通过仿射变换实现脸部缩小与双眼放大";最后我们将深入探讨磨皮的具体实施细节,并演示如何利用OpenCV框架完成这一过程
唇色和牙齿颜色都是色彩变化的表现形式,在后续章节中,「中阶计算机视觉」课程将详细探讨这些内容。
在处理这一自动化去美颜的过程中,在完成这一任务时是否需要进行决策呢?进行决策时需要考虑的是识别出人脸位置并确定该人脸的位置这一操作。这也是我们算法或模型的关键部分,并且同样属于计算机视觉领域的重要组成部分。在进行计算机视觉相关的决策时会遇到一个挑战:遇到一个挑战是什么呢?我们可以利用这个实例来深入探讨这个问题。

为了实现这一功能(即进行人脸识别),我们从一张图片开始操作。用黑色笔勾勒出的这个大矩形区域是一个待处理的图像区域。我的目标是识别并定位其中的所有人脸。由于目前模型尚无法自动识别人数及位置(即模型尚未训练完成),我需要通过手动检测来确定这些位置并提取人脸信息)。我的检测流程如下:首先设置一个窗口(类似于橙色标注的矩形框),然后将此窗口在目标图像上进行滑动遍历(即逐步移动窗口的位置)。每次窗口停留在特定位置时(即滑动到某个位置),会截取当前窗口内的子图像(即将该区域作为一个独立的候选区域)并对其进行单个分类结果为"人脸"的判断(即判断此子图像是否为一个人脸)。如果判断结果不是"人脸"则继续滑动;若判断结果是"人脸"则记录该坐标点并将识别结果返回(即将定位框生成并输出)。这就是整个人脸识别的过程
在这个过程中,在完成一次滑动后发现无法检测到目标。这时我们会将框进行相应的调整,并将其大小进行相应的扩大尺寸。由于可能检测到较大的对象(可能是由于之前框太小),因此我们会将当前较大区域重新放置于图像中,并在完成一次滑动后移动至稍大的区域继续搜索。这种方法的核心思想就是通过不断调整窗口大小并逐步细化搜索范围来实现较准确的目标定位或人脸识别功能。这种方法被称为滑动窗口法(sliding window)或者叫作滑窗分类器(windowing)。其基本工作原理就是利用此方法来进行目标检测任务或用于人脸识别的过程中所采用的一种思路过程或者思路框架。
那么这一思路又如何呢?通过实践你会发现:要想在同一个图像中检测出两个人脸,则必须依次移动一个小方框以及一个大方框。经过这样的操作后——即交替使用小方框和大方框——就能确保识别出所有人的脸庞;这样一来算法的整体准确率就会得到显著提升。然而这种提升带来的问题是——计算效率会有所下降
当我们进行目标检测时,在这一过程中会导致速度减缓。这一过程使得速度变得较为缓慢。由于该算法每次移动两个相邻的小区域(即窗口),这两个小区域在整个图像中不断滑动搜索潜在的人脸位置。有时候难以准确预估该图像中的人脸数量及其具体尺寸。因此,在这种情况下,我们需要从最小(1x1像素)到最大(与图像大小相当)的多个尺度来遍历整个图像。为了提高模型检测算法的整体精度,在这种复杂情况下就需要投入更多的时间来进行计算和分析工作。
考虑到实际需求,在自动驾驶汽车上安装了一台搭载有限算力的设备吗?但受限于现实环境的影响,在车上的电脑计算能力有限,在这种情况下也只能提供较少程度上的算力支持。因此搜索窗口的数量就会减少到仅一个或者两个窗口左右的情况。通过这种方式我发现,在实际应用中发现的人脸数量也会随之减少很多——这表明我们在模型设计与算法优化方面仍然面临许多挑战:希望我们的系统既准确又快速;但实际上这两者往往难以兼得;必须做出权衡:要么追求更高的准确性;要么追求更快捷的速度;而两者兼具的理想状态,则是一个相当困难的目标
那什么情况下能够实现既快速又准确的情况呢?当你的计算能力足够强大时,并且算法模型自身的计算思路如果足够优秀,则可以达到这一目标。不管怎样都要设定明确的目标作为追求方向,在所有因素中占据首要地位的就是计算平台这一基础要素。只有当各个关键因素都得到了充分满足的情况下才能真正实现既快速又准确的目标
例如前面提到的那个方法,在用于人脸识别的人脸检测算法模型中属于这一种方法。然而其效率相对较低,在讲解目标检测模型时会介绍更为高效的一些方法。这也是我们在这一领域或模型设计方面的重点内容。
那么对于我们的这个算法来说,在生成时需要兼顾准确度和速度这两个重要指标。其中起关键作用的主要因素仍然是计算平台。如果能够运行得非常快的话,则意味着我们的算法所需的基本标准不会太高,并且可供选择的算法也会更加丰富。所以说,在现实中我们会看到这种平衡逐渐优化完善
在处理图像时应该采用 GPU 或 TPU。“我们的”算法模型或人工智能系统因此取得了进一步的发展。尤其是在当前火爆的人工智能时代,“许多”人都拿到了可观的薪资待遇——这都得益于 GPU 的出现。“我们的”这个算法模型还有许多潜在的应用,“许多”事情都可以实现落地。“这正是算法平台为我们带来的实际好处。
让我们就从CPU谈起 GPU 的名称。简要介绍一些硬件知识。属于我们最早期开发的计算机组件之一的是CPU,在个人台式电脑中占据核心地位的是中央处理器。在历史上较晚出现的是GPU,在现代计算架构中扮演着重要角色。
我们通常称中央处理器为 CPU(Central Processing Unit),从其命名中可以看出其功能定位是核心处理设备;而图形处理器则被称为 GPU(Graphic Processing Unit),主要用于执行图形相关的计算任务。因此,在计算机硬件发展初期就被设计出来的就是 CPU;而 GPU 的发展则与计算机系统的成熟有关,在人机交互的过程中自然就有了这样一个显示界面才能进行有效的交互。
最初的显示器仅能显示简单的文字信息。计算机运行基于DOS的操作系统,在输入一条指令后会执行程序并返回相应的结果。为了实现与计算机的交流与互动,则必须依赖于文本交互的方式进行交流。然而,在目前的文字交流中存在明显的缺陷:虽然它是人类最早的文字交流方式之一(就像我们在最初建立问题时采用图画形式一样),但其描述复杂度远高于图形化的交流方式(即用纯文本描述事物要比绘图复杂得多)。事实上,在最初建立问题时采用图画形式更容易被理解和接受(因为用纯文本描述事物需要较多学习成本)。因此,在人与计算机之间的交流中,默认情况下使用图形化界面更为重要
那图的话, 计算机内部运行状态如何?通过图形化界面展示, 而不是仅仅依赖键盘输入, 这样能明显提升效率。因此为了实现与人类的有效交互, 计算机必须开发与人类图形交互技术, 只有这样才能销售给普通消费者。实际应用后效果显著提升, 人们也更容易接受这一技术, 最终导致个人电脑技术应运而生并广泛普及。
那么在图形交互的过程中我们注意到中央处理器CPU在处理图形方面的能力显得相对薄弱。这是因为图形运算涉及大量复杂的矩阵计算而矩阵计算的规模非常庞大。而CPU的主要职能是负责计算机的各种外设芯片之间的信息传递与协调工作其中纯粹的算术运算单元数量相对有限。因此为了减轻CPU的工作负担或提升其在复杂矩阵运算方面的性能我们设想单独设立一个专门负责图像处理或矩阵运算的加速器这个加速器由于具有极强的数据处理能力因此被命名为Graphic Processing unit即GPU我们将其统称为显示卡
装好显卡后
我们可以将它定义为:计算机视觉是指自动执行图像获取、分析与处理的技术体系。它模仿人类通过视觉感知环境并做出反应的方式,在这一过程中实现对图像数据的智能理解和应用。当被询问该领域的核心内容时,默认会解释为自动完成图像获取、分析与处理的一整套流程
它如何进行判断或决策?例如通过观察面部特征、人体眼部位置以及身份识别等信息来推断目标对象的行为模式。类似于人类通过视觉信息进行判断的过程。这正是计算机视觉的由来。并且我们也回答了我们最初提出的一个问题:「计算机视觉是什么」。
到这里为止本次课程就圆满结束
那咱们下节课再见,拜拜。
