计算机科学速成课 Crash Course Computer Science 第三十五集 计算机视觉 Computer Vision
该个人提供了详细的GitHub项目页面链接:个人提供的GitHub项目页面
如果你觉得不错可以 ⭐Star 和 Fork ❤
计算机科学速成课 Crash Course Computer Science
第三十五集 计算机视觉 Computer Vision
视觉是信息最丰富的感官之一,比如世界呈现怎样的样态以及如何与世界进行交互,因此在半个世纪以来,计算机科学家们一直在致力于让机器具备视觉能力,从而催生了"计算机视觉"(Computer Vision——CV)这一领域。目标在于使计算机能够理解图像与视频的内容,正如该领域的代表人物李飞飞所言:"听与看并非同一回事;拍摄照片与直接看见也非同理。
跟踪一个颜色物体
图片是由像素组成的二维矩阵,在每个像素处指定颜色时可采用红、绿、蓝三原色进行定义。具体而言,在调整这三者的亮度后即可合成所需的各种颜色,并将其统称为RGB值
最简单的计算机视觉算法非常适合初学者学习——跟踪一个目标物体(比如一个粉色球),首先记录其颜色并获取其在图像中最中心像素处对应的RGB值;然后让算法从图像左上角开始逐个检查每个像素,并计算与目标颜色之间的差异程度;经过所有检查后发现与目标颜色最为接近的那个像素很可能就是我们要寻找的目标。
不仅仅局限于这张图片,在视频的每一帧图片上执行这个算法来跟踪球的位置。由于光线、影子以及其他因素的影响,颜色会发生变化,并不会与现有的RGB值完全一致;情况会更加复杂一些。例如,在夜晚进行比赛时,追踪效果可能非常差;如果球员的衣物颜色与足球相同,则会导致算法无法正常工作;因此这类颜色 Tracking 算法的应用场景相对有限,在特定条件下才能得到有效应用。
块
该颜色跟踪算法逐个进行像素扫描操作。这是因为颜色信息通常集中在单个像素中。然而这种逐个素的方法在处理由多素组成的特征时就显得不够高效例如物体边缘往往由多个相连的素组成。为了识别这些复杂的特征区域则需要将图像分割成若干块进行分析每一块统称为"块"(patches)。
核
如需检测垂直方向上的边缘特征,则可考虑以下方法:用于帮助无人机避开障碍物,则可将图像转换为灰度图;许多边缘检测算法仍能处理彩色图像;为了准确识别杆状物体的轮廓,则需分析垂直方向上的边缘分布情况;在这一过程中,在目标物体表面出现明显色彩对比的地方往往会被识别为边沿区域;在这一过程中,在目标物体表面出现明显色彩对比的地方往往会被识别为边沿区域;为此,在实际应用中通常会根据具体的场景需求选择适合的参数设置;其数学运算可通过以下核(kernel)矩阵实现:K = \begin{bmatrix} -1 & 0 & 1 \end{bmatrix};其中的数值用于对图像像素进行乘法运算;计算结果累加后赋值给该像素位置;

卷积
首先将每个像素转换为灰度值,并将核中心对准选定的感兴趣 pixels;确定了每个 pixels所乘的具体数值;然后计算这些数值之和,并将其作为新生成的 pixels值;接着应用该核至该区域的所有 pixels;这一操作被称为卷积(convolution)。
将核应用于照片中的每一个像素后会发现,在垂直方向上的边缘区域会出现明显的高像素值变化。请注意:水平方向上的边缘通常不明显可见。若需强调特定特征,则应采用具有针对性的核设计——例如,在水平边缘检测中常用的是一种基于梯度变化的设计。其中最著名的两种被称为" Prewitt算子"(Prewitt Operators),这是图像处理领域中广泛使用的基础工具之一。
Viola-Jones Face Detection
例如,在图像处理中存在两种类型的核:一种能够增强图像细节(锐化),另一种则用于降低图像锐度(模糊)。这些类型的核特别适合识别具有特定形态特征的结构。其中一类特殊的滤波器(kernel)专门用于描述简单的几何形状——例如,在面部特征识别中发现鼻梁往往比两侧鼻尖更突出且亮度更高。因此,在这种情况下线段敏感的滤波器对于该区域的响应更为显著。另一方面,则是一个黑色圆圈被外层更亮的一层像素包围的现象——有这种模式识别能力较强的滤波器会对这种现象产生响应。当计算机扫描图片时会采用窗口法来逐一分析这些特征组合从而实现对人脸的关键部位进行检测虽然单个滤波器无法独立完成精确检测但通过组合多个不同类型的滤波器可以获得较高的检测准确率这种方法构成了早期非常有影响力的算法基础即Viola-Jones Face Detection算法的核心原理
卷积神经网络
如今热门算法"卷积神经网络"(CNN),其基本单元是人工神经元。该单元接收多个输入信号,并将每个输入信号与对应的权值相乘后累加求和结果作为输出。其计算过程与卷积操作极其相似:当向该人工神经元输入二维像素数据时,所使用的权值矩阵与预定义的滤波器具有相同的数值结构;然而与人工神经网络中常用的预定义滤波器不同,在深度学习模型中可以通过训练优化来调整这些权值矩阵,从而使其能够更好地识别图像中的复杂特征。
卷积神经网络通过大量人工神经元对图像数据进行分析,在这一过程中每个人工神经元都会生成一个新的图像其本质是通过不同的convolution kernels来进行特征提取这些输出会被后续一层的人工神经元进一步分析整个卷积过程会不断进行迭代直至某一层能够整合所有提取到的特征从而逐步构建起复杂的视觉模型每一层都能够在前一层的基础上发现更高层次的抽象特征例如在第一层中我们可以检测到edges or lines这种基础元素而到了后续层则能够识别更为复杂的结构如corners or shapes这些特定模式有助于模型识别基本物体如mouths or eyebrows这一过程会不断重复迭代直至某一层能够整合所有提取到的特征从而构建出完整的视觉理解架构
卷积神经网络不需要过多的层数;然而通常会有较多的层数用于识别复杂的物体和场景;这也是一种深度学习。
情感识别算法
当检测到一个人的脸部特征后,在随后的过程中就能够通过更为专业的计算机视觉技术精确确定面部特征点。一旦确定了这些关键点的位置,在判断双眼是否处于张开状态相对直接明了的同时也可以计算出它们之间的距离范围。这种数据可以帮助我们追踪并确定眉毛在面部中的具体位置以及它们相对于眼睛的变化情况进而完成表情分析工作。这样系统可以根据情感状态采取相应的反应措施以达到预期效果
生物识别
面部标记点也可用于捕捉脸部形态特征;例如左右眼之间的间距;以及额头的高度;采集生物数据(biometric data);通过摄像头识别设备可识别你的身份;可用于手机解锁功能;或是政府监控系统中的人脸识别技术应用。
抽象被视为构建复杂系统的基石,在硬件层面工程师正在研发更先进的摄像头设备。这些设备赋予计算机更高的分辨率能力。通过视觉算法识别出用户面部特征及其动作。随后利用其他算法进一步分析这些信息以解析图像中的细节信息。例如识别出面部表情及肢体动作的变化情况。从而带来全新的交互体验模式。而智能电视设备及辅助学习系统则根据识别到的面部特征与动作反馈相应的响应信息。
