我在攻克机器学习硕士学位的那些年

2023-05-16

编者按:人工智能发展日趋成熟,也成为众多开发者职业生涯的首选方向。然而相较于其他领域,人工智能中的深度学习、机器学习、计算视觉、神经网络等技术更为错综复杂,进修难度也更胜一筹。对此,对于入门和想要进阶的学生及开发者群体,该如何攻克?在本文中,来自英国萨里大学机器学习与计算机视觉专业硕士Richmond Alake将从自身学业历程出发,分享一下其在读机器学习硕士的收获,以及相关的经验与课程,希望能帮助大家有所收获。

作者 | Richmond Alake,已获作者翻译授权

译者 | 鹿未来,编辑 | 屠敏

题图 | 东方 IC

来源 | CSDN(ID:CSDNnews)

其实,每所大学的课程不会有太大差异。所以,大家可以从本文了解机器学习和计算机视觉理学硕士的一些内容。除了在学习期间获得的东西之外,我还会分享更多学术知识,以及作为一名计算机视觉工程师职位相关的其他信息。

攻读机器学习硕士需要具备哪些必备技能?

研究生期间都会做一些选题,这些课题主要是反映机器学习领域的未来一些发展方向。而且机器学习的每个课程里都涵盖了很多内容。因此,我在修读MSc(Master of Science)学位需要确保在学习这些课程之前,还需要具备以下前提条件:

  • 理解线性代数和微积分(微分/优化)

  • 了解统计和概率研究

  • 具有编程语言背景

  • 拥有计算机科学、数学、物理或电子与机械工程专业学士学位

接下来介绍一下,我在读机器学习硕士时学到的关键内容:

计算机视觉

从我比较强项的课程模块说起,计算机视觉和深度学习研究是我真正非常感兴趣的机器学习领域,或者说是开发技术能直接产生实际影响,这点着实吸引了我。

近几十年来,媒体极大赞赏了计算机视觉取得的进步。如,面部识别系统的出现就非常重要,因为在国际机场、银行和政府组织等重要场景中,面部识别系统几乎无处不在。

我在硕士学业生涯中,对计算机视觉的学习研究比较有条理,我认为一开始不能直接进入实践和分析最新技术阶段,而是应该从了解基本图像处理技术开始,这样才能真正使用计算机视觉这一高级技术。

在深度学习中,想要了解卷积神经网络的底层,要从输入图像(例如线条和边缘)学习。不过,在卷积神经网络(CNN)引入计算机视觉之前就有基于启发式的技术可用于检测特征图上的目标并从图像中提取特征。我的计算机视觉研究就是通过这一系列基于启发式技术的工作原理,学以致用,才让我对该该领域基础有了理解。

计算机视觉研究为我提供了传统机器学习技术的知识,还有处理图像的技能,比如提取特征并对从图像中获得的描述符进行分类等。

接下来,分享一下我在研究生期间用到的一些议题和术语,好奇的小伙伴可以看一下:

  • SIFT(Scale Invariant Feature Transform):这是一种计算机视觉技术,用于生成图像关键点描述符(特征向量)。生成的描述符包含有关特征的信息,例如边缘、拐角和斑点。描述符可用于检测跨越不同比例和失真的图像的对象。SIFT用于诸如对象识别、手势识别和跟踪之类的应用程序中。SIFT的关键在于,其检测到的特征对于仿射变换(例如缩放,平移和旋转)是不变的。

  • HOG(Histogram of Orientated Gradients):这是一种用于从图像中提取特征的技术。提取的特征是通过图像中的边缘和拐角提供的信息中得出的,更具体地说,是图像中的对象提供的。简而言之,该技术可以识别图像中的边缘(渐变)、角和线的位置,并且还可以获取有关边缘方向的信息。HOG描述符生成一个直方图,其中包含有关边缘分布的信息和从图像中检测到的方向信息。该技术可以在计算机视觉应用程序以及图像处理中找到。

  • PCA(Principal Component Analysis):一种降维的算法。通过将数据点从较高的维度投影到较低的平面,但仍保持信息并最大程度地减少信息丢失,可以减小维度。

其他的还有:线性插值、无监督聚类(K均值)、视觉搜索等等。

一开始学习我就希望自己能开发出基于计算机视觉的App,对象分类又比较受欢迎,这样相对来说就更容易实现既学知识又能实际应用。另外我的研究过程中是在Matlab上开发视觉搜索系统的。

Matlab是为高效的数值计算和矩阵处理而开发的一种编程语言,并且Matlab库配备了一套算法和可视化工具。

之前JavaScript、Java和Python的编程经验帮我很快搞定了Matlab编程语法,所以我就可以全神贯注的研究计算机视觉。

更多视觉搜索系统的信息

要实现的视觉系统很简单,它就是通过查询图像传递给系统,之后系统将生成一组图像结果,这些结果与传递到系统中的匹配相似图像。要补充一点,该系统有一个存储图像的数据库,是用于从中提取结果图像(先查询图像,然后输出结果图像)。

视觉系统没有使用任何花哨的深度学习技术,就是用了前面提到的一些传统机器学习技术。只需传递转换为灰度的RGB图像,然后在图像上添加特征提取器即可,之后,提取图像描述符并将其表示在N维特征空间上。在此特征空间内,就可以通过计算两个N维点之间的欧式距离来得出相似的图像。

更深层次的应用

计算机视觉的理解不仅局限于图像上,还会涉及到视频中使用的算法和技术。要明白,视频可以理解为图像序列,所以收集和处理输入数据上就不需要学习新的内容。

如果使用诸如YOLO、RCNN等对象检测框架,那在一系列图像中进行对象跟踪似乎就变得非常琐碎。但要认识到,研究计算机视觉不仅是使用预训练的网络和微调。基于我个人在该领域的发展角度来看,扎实学习的最佳方法是随着时间推移,在研究中慢慢积累这些传统技术。

那么,对于对象跟踪任务,引入了以下内容:

  • Blob追踪器

  • 卡尔曼滤波器

  • 粒子过滤器

  • 马尔可夫过程

与计算机视觉的相关性

老实说,我目前没有使用任何传统机器学习中的分类器,而且我觉得我不会很快使用它。但是值得注意的是,自动驾驶汽车、车牌读取器、车道检测器均采用了上述所提及到了一到两种方法。

深度学习

深度学习是计算机视觉研究的自然发展成果。计算机视觉与我的计算机视觉研究类似的方法,即在转向高级主题和应用程序开发之前,对领域的基础有了深入的了解。

深度学习研究始于对图像、像素的基本构建块的理解。数字图像是包含像素集合并以网格的形式呈现。了解了图像的基础之后,就要继续学习如何将图像存储在系统内存中。帧缓冲区是在系统内存中存储像素的位置的名称(很少有MOOC课程会教你这一点)。

另外,在还不了解卷积神经网络(CNN)的情况下,你是无法学习深度学习的,因为它们是紧密相连的。

我的研究介绍了过去20年(从LeNet-5到RCNN)引入和开发CNN的时间表,以及它们在替代传统管道中完成诸如对象识别之类的典型计算机视觉任务的作用。

在我的研究期间,介绍了深度学习早期提出的不同CNN架构的探索。AlexNet、LeNet和GoogLeNet是案例研究,用于对卷积神经网络的内部知识及其在解决诸如目标检测,识别和分类等任务中的应用的理解。

另外,我学会的一项重要技能是如何阅读研究论文。阅读研究论文并不是直接学习的技能。如果真的想要研究一下深度学习,那么就要选择好信息和研究的来源。

利用深度学习框架提供的预训练模型相当容易。尽管如此,一项高级研究仍希望了解所提出的每种体系结构的技术和组件的内在细节,当然这些信息仅在研究论文中会提出。

在这总结了一些深度学习模块的议题(还是跳过了定义,感兴趣的同学可以看一下):

  • MLP:多层感知器(MLP)是几层感知器,一个接一个地连续堆叠。MLP由一个输入层,一个或多个TLU层(称为隐藏层)和一个最后一层(称为输出层)组成。

  • NST:一种涉及利用深度卷积神经网络和算法从一幅图像中提取内容信息并从另一幅参考图像中提取样式信息的技术。在提取样式和内容之后,将生成一个组合图像,其中生成的图像的内容和样式来自不同的图像。

  • RNN和LSTM:神经网络体系结构的一种变体,可以接受任意大小的输入作为输入,并生成随机大小的输出数据。RNN神经网络架构学习时间关系。人脸检测:这是实施系统任务的一个术语,该系统可以自动识别和定位图像和视频中的人脸。在与面部识别,摄影和运动捕捉相关的应用程序中存在面部检测。

  • 姿势估计:从提供的数字资产(例如图像,视频或图像序列)中推断出人体主要关节位置的过程。姿势估计的形式存在于诸如动作识别,人类交互,为虚拟现实和3D图形游戏创建资产,机器人技术等应用程序中。

  • 对象识别:识别与目标对象关联的类的过程。对象识别和检测是具有相似最终结果和实现方法的技术。尽管识别过程先于各种系统和算法中的检测步骤。

  • 跟踪:一种在一段时间内识别,检测和跟踪图像序列中的关注对象的方法。在许多监控摄像机和交通监控设备中都可以找到系统内跟踪的应用。

  • 对象检测:对象检测与Computer Vision相关联,描述了一种可以识别图像中所需对象或物体的存在和位置的系统。请注意,要检测的对象可能有单个或多个出现。

其他的还包括像神经网络,反向传播,CNN网络架构,超分辨率,手势识别,语义分割等......

出于兴趣,我已经在边缘设备上合并了面部检测,手势识别,姿势估计和语义分割模型。在目前的职位上,我实践,训练和评估了许多深度学习模型。如果你想在先进的公司中使用大量前沿算法,工具,那么深度学习就是一个可以使您站在AI实用商业开发的最前沿的领域。

论文

硕士学位论文的目的就是要利用在学习过程中获得的所有技能、知识和经验,为基于现实生活的问题设计解决方案。

我写的是基于计算机视觉技术对四足动物进行运动分析,运动分析用到的是计算机视觉技术里面的姿势估计。

这是我第一次被引入深度学习框架领域。我对运动分析的解决方案是基于卷积神经网络与深度学习的解决方案。在选择框架时,我曾在Caffe和Keras之间犹豫过,但由于PyTorch具有与任务相关的随时可用的预训练模型,所以我选择了PyTorch。Python是我选择的编程语言。

这是我写完论文后学习到的内容:

  • 转移学习/微调

  • Python程式设计语言

  • C#编程语言

  • 姿势估计的理论

  • 有关如何使用Unity3D进行仿真

  • 使用Google Cloud Platform

在这里扩展说一下运动分析:

运动分析是指从清晰的运动图像中获取运动信息和细节,或代表序列到运动序列描述的图像排序。利用运动分析的应用程序和操作的结果以最直接的形式详细介绍了运动检测和关键点定位。复杂的应用程序允许利用顺序相关的图像逐帧跟踪对象。

目前,运动分析及其各种应用形式在时间数据上使用时,可提供更多的信息。不同行业例如医疗保健、制造、机械、金融等行业,都在使用应用运动分析的方法来解决问题或为消费者创造价值。

整个行业对于利用运动分析的多样性,已经间接引入了运动分析的各种子集,例如姿势估计、对象检测、对象跟踪、关键点检测以及其他不同子集。

再说说论文中的其他内容:

论文提出了一种利用计算机视觉和机器学习技术进行运动分析的方法。该方法是使用合成的四足动物图像数据集来训练预训练的关键点检测网络。

Keypoint-RCNN是Pytorch库中的内置模型,它扩展了原始Fast-RCNN和Faster-RCNN的功能。

论文中的方法修改了在COCO 2017对象检测和分割数据集上预训练的Keypoint-RCNN神经网络架构,并使用合成生成的数据集对最后一层进行了训练。

通过扩展用于人体的17个关节的人体关键点检测的基准框架,我提出了该框架的扩展,该框架可以预测几个26个关节产生的四足动物的主要位置。

论文的结果节选

定性和定量评估策略可以很明显的改进Keypoint-RCNN体系结构在人工四足动物上预测关键点时的视觉和度量性能。

如果你在研究中已经实现了这些,我就有点班门弄斧。

结论

计算机领域变化太快了,我的课程是从2018年-2019年的,现在已经2020年了,我们会看到大量更多的机器学习领域的贡献,所以,如果没有在我的论文中看到,你在做机器学习过程中看到的或学到的一些议题,也不要惊讶。

不要忘了,在AI领域,你要做的不光是学习一些模型,还要不断地研究,不断地学习。

最后,我希望我的这篇文章对大家有用,欢迎大家留言,说说你在学习ML和CV的时候学到了哪些知识并应用了实际场景中拉~

原文:https://towardsdatascience.com/what-i-learnt-from-taking-a-masters-in-computer-vision-and-machine-learning-69f0c6dfe9df

本文为 CSDN 翻译,转载请注明来源出处。


推荐阅读

  • 一键实现图像、视频卡通化,GAN又进化了

  • PyTorch 1.6、TensorFlow 2.3、Pandas 1.1同日发布!都有哪些新特性?

  • Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码

  • 程序员必备基础:Git 命令全方位学习

  • 微软直播马上开始,近百岗位等你来,快戳进直播间

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我在攻克机器学习硕士学位的那些年 的相关文章

随机推荐

  • TI-DSPC6657、C6678多核开发OpenMP示例

    xff08 1 xff09 CCS编程注意事项 在CCS的工程属性Build C6000 Compiler Advanced Options里要勾选OpenMP使能 xff0c 才能有效识别OpenMP的预编译指令 需要应用omp h头文件
  • WGS84GPS坐标与大地坐标系互相转化

    大地坐标表示顺序为 xff1a 纬度B 经度L 海拔H 空间直角坐标表示方法 xff1a X Y Z 进行地图投影等价于将BLH转换为XYZ xff0c 涉及到两个椭球体以及坐标系之间的转换 xff0c 本文主要讨论WGS84坐标系下BLH
  • Error 263 for command: close audio.mp3 指定的设备未打开,或不被 MCI 所识别。 Failed to close the file:

    用python的模块playsound播放mp3音频的时候出现如题目一样的报错 xff0c 下面说一下解决办法 xff1a 办法有两种 xff0c 大家可以根据需要选择合适的解决办法尝试解决可能会遇到的这种问题 1 修改源码 xff1a p
  • linux定时清除docker镜像和容器

    bin bash 杀死运行的容器 docker stop docker ps a q docker kill docker ps a q 删除所有容器 xff1a docker rm docker ps a q 强制删除所有镜像 xff1a
  • 海康摄像头的ISAPI协议

    海康威视是一家领先的视频监控设备制造商 xff0c 其摄像头产品可以通过 ISAPI Intelligent Security Application Programming Interface 协议进行控制和管理 ISAPI 协议是海康威
  • debian11如何关闭屏保

    在 Debian 11 中 xff0c 可以使用如下命令关闭屏保 xff1a span class hljs attribute xset span s span class hljs literal off span xset dpms
  • 用可行方向算法求解问题的步骤,举出例子说明

    可行方向算法是一种用于求解约束优化问题的算法 假设我们有一个优化问题 xff0c 要求最小化目标函数 f x xff0c 其中 x 是变量向量 同时 xff0c 这个问题还有一些限制条件 xff0c 即 g i x le 0 xff0c i
  • SLAM处理器篇:Jetson Nano

    NVIDIA Jetson是隶属于NVIDIA的AI平台 xff0c 是NVIDIA为自主机器开发的一个嵌入式系统 xff0c 包括 CPU GPU PMIC DRAM 和闪存模块 xff0c 可以将自主机器软件运行系统运行速率提升 201
  • 深度学习面试必备的25个问题

    作者 Tomer Amit 译者 弯月 xff0c 编辑 屠敏 出品 CSDN xff08 ID xff1a CSDNnews xff09 在本文中 xff0c 我将分享有关深度学习的25个问题 xff0c 希望能够帮助你为面试做好准备 1
  • PID控制器是非线性控制还是线性控制

    PID控制器是线性控制器 PID控制器是一种常见的控制器 xff0c 其基本原理是根据误差信号对被控对象施加调节作用 xff0c 使得被控对象的输出接近于所期望的参考值 虽然PID控制器中包含了比例 积分和微分三个环节 xff0c 但是这些
  • python 元组取值

    在 Python 中 xff0c 元组是一种不可变的序列类型 xff0c 可以使用下标访问元组中的元素 例如 xff1a span class hljs attribute t span 61 span class hljs number
  • Python爬虫之获取淘宝商品数据

    爬取淘宝信息数据 首先需要先导入webdriver span class token keyword from span selenium span class token keyword import span webdriver web
  • linux远程桌面x11,linux服务器通过X11实现图形化界面显示

    1 背景描述 有些LINUX服务器出于性能和效率的考虑 xff0c 通常都是没有安装图形化界面的 xff0c 那么图形化程序在服务器上压根儿就跑不起来 xff0c 或者无法直接显示出来 xff0c 这就很尴尬了 xff01 那么如何解决这个
  • 目前中国最好的数据结构网课是哪个?网络地址和老师是哪个?

    目前比较受欢迎的中文数据结构网课是慕课网的 数据结构 课程 xff0c 老师是清华大学计算机系主任 教授 xff0c 华中科技大学计算机学院院长陈渝老师 xff0c 网址是 xff1a https www imooc com learn 9
  • 使用opencv識別矩形

    OpenCV是一个开源的计算机视觉库 xff0c 可以用来识别矩形 可以使用函数cv2 findContours 来检测图像中的轮廓 xff0c 然后使用函数cv2 minAreaRect 来检测矩形 代码示例如下 xff1a import
  • STM32 HAL库禁用调试

    RCC APB2PeriphClockCmd RCC APB2Periph AFIO ENABLE 开启AFIO时钟 GPIO PinRemapConfig GPIO Remap SWJ JTAGDisable ENABLE 使能JTAGD
  • Free RTOS 协程的实际应用案例

    FreeRTOS协程的实际应用案例有很多 xff0c 其中包括 xff1a 嵌入式系统 xff1a 在嵌入式系统中 xff0c FreeRTOS协程可以用来管理多个任务和资源 xff0c 比如控制器 传感器和网络通信 智能家居 xff1a
  • 物联网嵌入式面试题集锦

    目录 C 43 43 语言篇 1 1 谈谈你对命名空间的理解 1 2 谈谈指针和引 的区别 1 3 谈谈你对内联函数的理解 1 4 谈谈函数的重载条件 1 5 谈谈c与c 43 43 中struct的不同点 2 6 如何理解c 43 43
  • riscv架构的keystone enclave加密方式是怎样的,为什么说是硬件级别的安全保护,密钥创建是怎样的,由什么模块负责,如何手动创建密钥,请用示例代码说明...

    Keystone Enclave是一个基于RISC V架构的硬件级别的保密性和完整性保护系统 它通过在硬件层面上隔离敏感数据和应用程序来实现安全性 Keystone Enclave使用AES GCM加密算法来保护敏感数据 密钥由硬件安全模块
  • 我在攻克机器学习硕士学位的那些年

    编者按 xff1a 人工智能发展日趋成熟 xff0c 也成为众多开发者职业生涯的首选方向 然而相较于其他领域 xff0c 人工智能中的深度学习 机器学习 计算视觉 神经网络等技术更为错综复杂 xff0c 进修难度也更胜一筹 对此 xff0c