当前位置: 首页 > 后端技术 > Python

我读计算机视觉和机器学习硕士时学到了什么

时间:2023-03-25 22:52:18 Python

这篇文章描述了我的经历和课程内容,但我相信其他大学的课程不会和我学的有太大区别。因此,读者可以以本文为窗口,了解机器学习和计算机视觉方向的硕士项目和内容。PostedbyRichmondAlakeurl:https://towardsdatascience.co...我写这篇文章是为了反思和总结我在攻读机器学习硕士学位的过程中所学到的和收获的。我不得不承认,我的研究的某些部分非常有用,而某些部分则没有。这篇文章描述了我的经历和课程内容,但是我相信其他大学的课程和我所学的不会有太大的不同。因此,一些读者可能会将本文作为了解机器学习和计算机视觉领域硕士学位课程和内容的窗口。除了我在学习期间学到的知识和信息外,我还将介绍和引用有关所获得的学术知识如何与我目前作为计算机视觉工程师的工作相关的信息。先决条件机器学习的高级学位有几个选定的主题,反映了机器学习领域的发展方向。机器学习的任何课程都有很多内容要涵盖。因此,我所攻读的硕士学位确保学生在接受课程之前具备以下先决条件。良好理解线性代数和微积分(微分/优化)基本统计和概率研究编程语言背景计算机科学、数学、物理或电气和机械工程本科学习获得的关键信息。计算机视觉=========先从课程中最强的模块说起。我对机器学习领域的真正兴趣是计算机视觉和深度学习,也许我被吸引到这个领域是因为所开发的技术可能会产生立竿见影的影响。媒体对计算机视觉技术几十年来的进步赞不绝口。面部识别系统的迅速出现不容错过。现在可以在主要的国际机场、银行和政府机构中找到面部识别系统的应用。我的计算机视觉硕士课程研究组织得很好。你不应该期望直接跳到实施和分析最先进的技术。事实上,你后退了几步。您首先要了解在引入我们今天看到和使用的计算机视觉高级技术之前开发的基本图像处理技术的知识。照片由GeryWibowo在Unsplash上拍摄在深度学习中,我们了解到卷积神经网络的较低层从输入图像中学习较低级别的模式,例如线条和边缘。然而,在将卷积神经网络(CNN)引入计算机视觉之前,有一些基于启发式的技术用于检测感兴趣区域和从图像中提取特征。我的计算机视觉研究通过了解这些基于启发式的技术如何工作以及如何在实际应用中使用这些知识,确保了我对该领域基础知识的理解。计算机视觉的研究让我获得了处理图像、提取特征和对从图像中获得的描述符进行分类的传统机器学习技术的知识。以下是我在计算机视觉研究期间引入的一些关键主题和术语:请随意跳过定义。我把这些放在这里是为了给好奇的人提供一些信息。(尺度不变特征变换)SIFT:这是一种用于生成图像关键点描述符(特征向量)的计算机视觉技术。生成的描述符包含有关边缘、角和斑点等特征的信息。描述符可用于检测不同尺度和扭曲图像的对象。SIFT可用于对象识别、手势识别和跟踪等应用。这是介绍该技术的原始研究论文的链接。SIFT的关键在于它检测到的特征对于缩放、平移和旋转等仿射变换是不变的。(定向梯度直方图)HOG:这是一种用于从图像中提取特征的技术。提取的特征来自于图像中的边和角所提供的信息,更具体地说,是图像中的物体。这种技术简单的描述就是识别图像中的边缘(梯度)、角和线的位置,还可以获得边缘方向的信息。HOG描述符生成一个直方图,其中包含有关从图像检测到的边缘和方向分布的信息。该技术可应用于计算机视觉应用以及图像处理。此链接包含更多信息。主成分分析(PCA):一种用于减少多特征数据集中特征的算法。降维是通过将数据点从较高维度投影到较低平面来实现的,但仍保留信息并最大限度地减少信息丢失。其他值得一提的主题如下:线性插值无监督聚类(K-Means)视觉词袋(视觉搜索系统)在我学习的早期,我希望开始开发基于计算机视觉的应用程序。对象分类是一个热门话题,也是一个相对容易获得一些基础知识和实施的话题。在我的研究中,我的任务是在Matlab中开发视觉搜索系统。Matlab是一种为高效数值计算和矩阵操作而开发的编程语言,Matlab库配备了一套算法和可视化工具。过去在JavaScript、Java和Python方面的编程经验帮助我轻松掌握了Matlab编程语法,这样我就可以全身心投入到计算机视觉方面的研究中。更多信息要实现的视觉系统相当基础,它通过将查询图像传递给系统来工作,然后系统生成一组图像结果,并将这些结果传递到与查询图像相似的系统中。我应该提一下,该系统由一个存储图像的数据库组成,从中提取结果图像(首先查询图像,然后输出结果图像)。该视觉系统没有使用任何奇特的深度学习技术,而是使用了前面提到的一些传统机器学习技术。您只需传递一个RGB图像,将该图像转换为灰度图像,然后对图像施加特征提取器;然后,提取图像描述符并将其表示在N维特征空间上。在这个特征空间中,可以通过计算两个N维点之间的欧氏距离来计算相似图像。事情开始变得严肃起来了解计算机视觉不仅限于处理图像,您还可以在视频处理中应用算法和技术。请记住,视频只是图像序列,因此您在准备和处理输入数据方面还没有学到任何新知识。如果您使用YOLO、RCNN等对象检测框架,那么一系列图像中的对象跟踪似乎非常微不足道。但要意识到研究计算机视觉并不是使用预训练网络和微调。它是关于了解该领域本身多年来的发展情况和今天的进展情况,而获得扎实、扎实的理解的最佳方式是研究随着时间的推移发展起来的各种传统技术。因此,对于目标跟踪任务,介绍以下主题:BlobTrackersKalmanFiltersParticleFiltersMarkovProcessesRelevanceforComputerVisionEngineers老实说,到目前为止我还没有使用过任何传统的机器学习分类器,而且我不认为我很快就会使用它们。然而,为了让您了解其中提到的一些技术的相关性,值得指出的是,自动驾驶汽车、车牌阅读器和车道检测器采用了前面讨论的一种或两种方法。BramVanOost在Unsplash上拍摄的照片。TrentSzmolnik在Unsplash上拍摄的照片。深度学习========深度学习是计算机视觉研究发展的必然。一些深度学习主题已经包含在计算机视觉模块中,而其他主题则是对传统计算机视觉技术的扩展或改进。深度学习中的教学主题采用与我的计算机视觉研究类似的方法,因为在进入高级主题和应用程序开发之前,它建立了对该领域基础知识的扎实理解。图片来自kisina/GettyImages深度学习的研究始于对像素的理解,像素是图像的基本构建块。您很快就会了解到数字图像是由像素集合组成的网格。在了解了图像的原子基础之后,您将继续了解图像是如何存储在系统内存中的。Framebuffer(帧缓冲区)是在系统内存中存储像素位置的名称(很多慕课不会教你这个)。照片由GeryWibowo在Unsplash上拍摄我还了解了相机设备如何捕捉数字图像。我必须承认,对智能手机相机如何捕捉图像有一些直觉是很棒的。让我们继续做一些更酷的事情。如果不了解卷积神经网络(CNN),就无法学习深度学习,因为它们是互补的。我的研究展示了过去20年CNN引入和发展的时间表(从LeNet-5到RCNN),以及它们在替代传统方法完成典型计算机视觉任务(如对象识别)中的作用。在我的研究期间,我展示了对深度学习早期提出的不同CNN架构的探索。AlexNet、LeNet和GoogLeNet是了解卷积神经网络内部结构及其在解决对象检测、识别和分类等任务中的应用的示例。我学到的一项重要技能是如何阅读研究论文。阅读研究论文并不是您在本文中直接学到的技能。如果您认真对待深度学习和一般学习,那么寻找信息和研究资源总是一个好主意。利用深度学习框架提供的预训练模型相当容易。尽管如此,一项高级研究仍希望您了解每个提议架构的技术和组件的内部细节,以及仅在研究论文中提供的信息。以下是深度学习模块涵盖的主题摘要:请随意跳过定义。我把这些放在这里是为了给好奇的人提供一些信息。多层感知器(MLP):多层感知器(MLP)是一种堆叠感知器层的结构。MLP由一个输入层、一个或多个TLU层(称为隐藏层)和最后一层(称为输出层)组成。NeuralStyleTransfer(NST):一种使用深度卷积神经网络和算法从一个图像中提取内容信息和从另一个参考图像中提取样式信息的技术。在提取风格和内容之后,生成组合图像,其中生成的图像的内容和风格来自于不同的图像。递归神经网络(RNN)和LSTM:神经网络架构的一种变体,可以接受任意大小的输入作为输入并生成随机大小的输出数据。RNN神经网络架构用于学习时间关系。人脸检测:这是用于自动识别和定位图像和视频中人脸的技术的术语。人脸检测用于人脸识别、摄影、情感捕捉等相关应用。姿势推断:从提供的数字资产(例如图像、视频或图像序列)推断身体的主要关节位置的过程。姿势推理技术存在于动作识别、人类交互、虚拟现实和3D图形游戏创建、机器人等应用中。对象识别:识别与目标对象关联的类的过程。对象识别和检测是具有相似最终结果和实现方法的技术。尽管在各种系统和算法中,识别过程通常先于检测步骤。跟踪:一种随着时间的推移识别、检测和跟踪图像序列中的感兴趣对象的方法。在许多监控摄像头和交通监控设备中都可以找到系统内跟踪的应用。对象检测:与计算机视觉相关联,对象检测描述了一种能够识别图像中对象或感兴趣对象的存在和位置的系统。请注意,待检测对象可能会出现一次或多次。其他值得注意的主题和子主题包括神经网络、反向传播、CNN网络架构、超分辨率、手势识别、语义分割等。与计算机视觉工程师的相关性这基本上是我的主要收入来源。到目前为止,我已经为游戏目的在边缘设备上集成了人脸检测、手势识别、姿势估计和语义分割模型。在我目前的角色中,我实施、训练和评估了许多深度学习模型。如果你想在先进的公司大量使用前沿算法、工具,那么深度学习是一个可以让你走在AI实际商业化发展前沿的领域。论文======硕士论文的目的是使您能够使用在学习期间获得的所有技能、知识和直觉来设计基于现实生活的问题的解决方案。我的论文是关于基于计算机视觉技术的四足动物的运动分析。姿势推断是我用于运动分析的核心计算机视觉技术。这是我第一次接触深度学习框架领域。我已经决定我的运动分析解决方案将是一个利用卷积神经网络的基于深度学习的解决方案。在框架的选择上,我在Caffe和Keras之间折腾过,但由于PyTorch有任务相关的即用型预训练模型,所以我选择了PyTorch。Python是我选择的编程语言。以下是我从论文中学到的项目列表:迁移学习/微调Python编程语言C#编程语言姿态推理的理论知识如何使用Unity3D进行仿真的知识使用GoogleCloudPlatform的经验更多关于运动分析的信息MotionAnalysisis该术语用于指从清晰的运动图像或从表示连续运动的时间序列图像的整理中获取运动信息和细节所涉及的过程。利用运动分析的应用和操作结果,以最直接的形式详细介绍了运动检测和关键点定位。复杂的应用程序可以利用顺序相关的图像逐帧跟踪对象。目前,运动分析及其各种应用形式在处理时间数据时提供了显着的好处和丰富的信息。不同的行业受益于运动分析提供的结果和信息,医疗保健、制造、机械、金融等行业有各种用例和应用运动分析来解决问题或为消费者创造价值的方式。运动分析在整个行业中应用方式的多样性间接引入了运动分析的各种子集,例如姿势推断、对象检测、对象跟踪、关键点检测和其他不同的子集。有关本文的更多信息本文介绍了一种使用计算机视觉和机器学习技术进行运动分析的方法。该方法使用四足动物的合成图像作为数据集来训练预训练的关键点检测网络。KeypointRCNN是Pytorch库中的一个内置模型,扩展了原有的FastRCNN和FasterRCNN的功能。本文的方法修改了在COCO2017目标检测和分割数据集上预训练的Keypoint-RCNN神经网络架构,并用合成数据集重新训练最后一层。通过使用人体17个关节扩展人体关键点检测的基线框架,我提出了一种框架扩展,可以预测多个26关节四足动物的主要关节位置。论文结果片段定性和定量评估策略用于显示改进的Keypoint-RCNN架构在预测合成四足动物关键点时的视觉和度量性能。如果你已经做到了这一步,我为你鼓掌……让我们结束这篇文章现在到了2020年,我们已经看到机器学习已经在其他一些领域做出了巨大的贡献。因此,如果您参加了机器学习课程并且正在学习本文未涉及的主题或主题领域,请不要感到惊讶。所以不要忘记,在人工智能领域,作为机器学习的从业者,不仅需要自己学习如何创建模型,还必须不断学习,才能跟上新研究的步伐。