• 【 声明:版权所有,欢迎转载,请勿用于商业用途。...    说很多现在最火的AI是什么,那就是... 机器学习一般是指传统的人工智能方法,它包括bayes、决策树、svm、线性回归、逻辑回归、神经网络、knn、kmeans等...

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

     

        要说很多现在最火的AI是什么,那就是深度学习。那么深度学习和机器学习有什么关系呢?我们可以通过一问一答的形式来解决。

     

    1、什么是机器学习?

        机器学习一般是指传统的人工智能方法,它包括bayes、决策树、svm、线性回归、逻辑回归、神经网络、knn、kmeans等。目前使用较多的机器学习库就是sklearn。

     

    2、深度学习是什么?

        深度学习来自于传统的机器学习方法-神经网络,即nerual network。只不过深度学习比传统的神经网络层数更多、计算量更大,深度学习中大量使用的反向传播算法起始就来自于神经网络。深度学习少则几层,多则上百层,随之而来的训练时间也很长。即使使用分布式、gpu运算,也要很长的时间。

     

    3、深度学习需要哪些基础?

        深度学习来源于机器学习,而机器学习的本身和矩阵论、概率论、凸函数和优化方法息息相关。所以,如果需要深入了解深度学习,也需要多看看数学相关的内容。深度学习没有脱离模型、损失函数、优化方法的基本框架。

     

    4、目前使用比较广泛的深度学习模型有哪些?

        目前使用比较多的深度模型有cnn、rnn、lstm。其中cnn多用于图像,rnn多用于语音、而lstm多用于行为识别。当然,2018年除了深度学习模型以外,gan也非常火,即生成对抗网络。姑且不论gan的具体含义,但是它所体现的思想非常有意义。当然,如果是图像本身,那么一般是cnn+opencv一起使用,如果是语音,一般是kaldi+rnn一起使用。因为我们实在没有必要从头开始做一些基础工作。

     

    5、目前开源的深度学习框架有哪些?

        现在使用较多的深度学习框架有tensorflow、keras、caffe、mxnet和darknet等。这几种深度学习框架结构差不多,一般都包含数据表示、layer、network、solver这几个模块。可以重点学习一种,其他几种用到的时候看一下就可以了。我个人比较推荐的是darknet。darknet结构简单,可以移植到多个cpu体系,不依赖于第三方库,支持GPU、cuDNN,使用方便。

     

    6、为什么大多数深度学习多使用python来操作?

        大多数深度学习多支持python操作,python不用编译,和matlab类似,也不涉及版权,第三方库多,所以使用广泛。当然,如果是caffe的使用者,可能连编译代码都不需要。当然如果需要将深度学习框架port到嵌入式设备上,那么c&c++是少不了的,大家可以试试darknet移植到arm开发板上面。

     

    7、很多论文中提到的yolo、r-cnn、fast r-cnn、faster r-cnn、ssd又是指什么?

        这是针对物体检测提出的优化深度学习网络,比如道路上的行人检测、汽车检测、符号检测等等。我们可以看成是针对cnn和应用场景的进一步优化。

     

    8、一般深度学习怎么训练?

        深度学习可以用cpu训练,也可以用gpu训练。但是gpu一般比cpu快十几到几十倍。首先,我们需要自定义网络模型;然后定义网络训练参数,最后输入数据开始训练。等到训练结束后,我们就会得到一个训练模型。使用这个训练模型,我们就可以进行检测、分类和识别了。

     

    9、个人如何使用别人训练好的模型?

        可以利用别人的模型加上自己的数据继续训练,或者直接修改别人的softmax层,添加自己的分类选项。个人如果训练数据,可以选择数据量比较少的模型进行训练,如果是项目需要,尽量复用别人的模型,特别是imagenet上面公用的权重模型数据。

     

     

    展开全文
  • 在我的理解里,实现计算机视觉必须有图像处理的帮助,而图像处理倚仗与模式识别的有效运用,而模式识别是人工智能领域的一个重要分支,人工智能与机器学习密不可分。纵观一切关系,发现计算机视觉的应用服务于机器...

    在我的理解里,要实现计算机视觉必须有图像处理的帮助,而图像处理倚仗与模式识别的有效运用,而模式识别是人工智能领域的一个重要分支,人工智能与机器学习密不可分。纵观一切关系,发现计算机视觉的应用服务于机器学习。各个环节缺一不可,相辅相成。

    计算机视觉(computer vision):用计算机来模拟人的视觉机理获取和处理信息的能力。就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,用电脑处理成为更适合人眼观察或传送给仪器检测的图像。

    计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。计算机视觉的挑战是要为计算机和机器人开发具有与人类水平相当的视觉能力。

    机器视觉需要图象信号,纹理和颜色建模,几何处理和推理,以及物体建模。一个有能力的视觉系统应该把所有这些处理都紧密地集成在一起。

    图像处理(image processing):用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。

    图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。

    图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。

    模式识别(Pattern Recognition)是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。

    模式识别又常称作模式分类,从处理问题的性质和解决问题的方法等角度,模式识别分为有监督的分类(Supervised Classification)和无监督的分类(Unsupervised Classification)两种。模式还可分成抽象的和具体的两种形式。前者如意识、思想、议论等,属于概念识别研究的范畴,是人工智能的另一研究分支。我们所指的模式识别主要是对语音波形、地震波、心电图、脑电图、图片、照片、文字、符号、生物传感器等对象的具体模式进行辨识和分类。

    模式识别研究主要集中在两方面:

    一是研究生物体(包括人)是如何感知对象的,属于认识科学的范畴;

    二是在给定的任务下,如何用计算机实现模式识别的理论和方法。

    应用计算机对一组事件或过程进行辨识和分类,所识别的事件或过程可以是文字、声音、图像等具体对象,也可以是状态、程度等抽象对象。这些对象与数字形式的信息相区别,称为模式信息。

    模式识别与统计学、心理学、语言学、计算机科学、生物学、控制论等都有关系。它与人工智能、图像处理的研究有交叉关系。

    机器学习(Machine Learning)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。

    机器学习在人工智能的研究中具有十分重要的地位。一个不具有学习能力的智能系统难以称得上是一个真正的智能系统,但是以往的智能系统都普遍缺少学习的能力。随着人工智能的深入发展,这些局限性表现得愈加突出。正是在这种情形下,机器学习逐渐成为人工智能研究的核心之一。它的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。

    机器学习的研究是根据生理学、认知科学等对人类学习机理的了解,建立人类学习过程的计算模型或认识模型,发展各种学习理论和学习方法,研究通用的学习算法并进行理论上的分析,建立面向任务的具有特定应用的学习系统。这些研究目标相互影响相互促进。

    人类研究计算机的目的,是为了提高社会生产力水平,提高生活质量,把人从单调复杂甚至危险的工作中解救出来。今天的计算机在计算速度上已经远远超过了人,然而在很多方面,特别是在人类智能活动有关的方面例如在视觉功能、听觉功能、嗅觉功能、自然语言理解能力功能等等方面,还不如人。

    这种现状无法满足一些高级应用的要求。例如,我们希望计算机能够及早地发现路上的可疑情况并提醒汽车驾驶员以避免发生事故,我们更希望计算机能帮助我们进行自动驾驶,目前的技术还不足以满足诸如此类高级应用的要求,还需要更多的人工智能研究成果和系统实现的经验。

    什么是人工智能呢?

    人工智能,是由人类设计并在计算机环境下实现的模拟或再现某些人智能行为的技术。一般认为,人类智能活动可以分为两类:感知行为与思维活动。模拟感知行为的人工智能研究的一些例子包括语音识别、话者识别等与人类的听觉功能有关的“计算机听觉”,物体三维表现的形状知识、距离、速度感知等与人类视觉有关的“计算机视觉”,等等。模拟思维活动的人工智能研究的例子包括符号推理、模糊推理、定理证明等与人类思维有关的“计算机思维”,等等。

    从图像处理和模式识别发展起来的计算机视觉研究对象之一是如何利用二维投影图像恢复三维景物世界。计算机视觉使用的理论方法主要是基于几何、概率和运动学计算与三维重构的视觉计算理论,它的基础包括射影几何学、刚体运动力学、概率论与随机过程、图像处理、人工智能等理论。

    计算机视觉要达到的基本目的有以下几个:

    (1) 根据一幅或多幅二维投影图像计算出观察点到目标物体的距离;

    (2) 根据一幅或多幅二维投影图像计算出目标物体的运动参数;

    (3) 根据一幅或多幅二维投影图像计算出目标物体的表面物理特性;

    (4) 根据多幅二维投影图像恢复出更大空间区域的投影图像。

    计算机视觉要达到的最终目的是实现利用计算机对于三维景物世界的理解,即实现人的视觉系统的某些功能。

    在计算机视觉领域里,医学图像分析、光学文字识别对模式识别的要求需要提到一定高度。又如模式识别中的预处理和特征抽取环节应用图像处理的技术;图像处理中的图像分析也应用模式识别的技术。在计算机视觉的大多数实际应用当中,计算机被预设为解决特定的任务,然而基于机器学习的方法正日渐普及,一旦机器学习的研究进一步发展,未来“泛用型”的电脑视觉应用或许可以成真。

    人工智能所研究的一个主要问题是:如何让系统具备“计划”和“决策能力”?从而使之完成特定的技术动作(例如:移动一个机器人通过某种特定环境)。这一问题便与计算机视觉问题息息相关。在这里,计算机视觉系统作为一个感知器,为决策提供信息。另外一些研究方向包括模式识别和机器学习(这也隶属于人工智能领域,但与计算机视觉有着重要联系),也由此,计算机视觉时常被看作人工智能与计算机科学的一个分支。

    机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演译。

    为了达到计算机视觉的目的,有两种技术途径可以考虑。

    第一种是仿生学方法,即从分析人类视觉的过程入手,利用大自然提供给我们的最好参考系——人类视觉系统,建立起视觉过程的计算模型,然后用计算机系统实现之。

    第二种是工程方法,即脱离人类视觉系统框框的约束,利用一切可行和实用的技术手段实现视觉功能。此方法的一般做法是,将人类视觉系统作为一个黑盒子对待,实现时只关心对于某种输入,视觉系统将给出何种输出。

    这两种方法理论上都是可以使用的,但面临的困难是,人类视觉系统对应某种输入的输出到底是什么,这是无法直接测得的。而且由于人的智能活动是一个多功能系统综合作用的结果,即使是得到了一个输入输出对,也很难肯定它是仅由当前的输入视觉刺激所产生的响应,而不是一个与历史状态综合作用的结果。

    不难理解,计算机视觉的研究具有双重意义。

    其一,是为了满足人工智能应用的需要,即用计算机实现人工的视觉系统的需要。这些成果可以安装在计算机和各种机器上,使计算机和机器人能够具有“看”的能力。
    其二,视觉计算模型的研究结果反过来对于我们进一步认识和研究人类视觉系统本身的机理,甚至人脑的机理,也同样具有相当大的参考意义。

    展开全文
  • 【 声明:版权所有,欢迎转载,请勿用于商业用途。...不管是模式识别、自然语言处理、计算机视觉,还是推荐系统、机器发掘、语音识别等方面,机器学习都发挥了巨大的作用。机器学习作为基础学科,它为其他学科...

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

     

        这几年,机器学习非常火。自从alpha go战胜了韩国的李世石之后,深度学习又将机器学习推向了新的高度。不可否认,机器学习是非常有用的。不管是模式识别、自然语言处理、计算机视觉,还是推荐系统、机器发掘、语音识别等方面,机器学习都发挥了巨大的作用。机器学习作为基础学科,它为其他学科的发展作出了很大的贡献,不断贡献着新的理论和算法,推动技术不断发展。

     

        从另一方面,学习机器学习也是有一定困难的。因为,对于希望学好这门课程的同学来说,除了掌握必要的编程方法和编程技巧之外,你还需要了解基本的数学方法,比如优化、概率、矩阵、随机数学等等。很多同学看到这些数学公式就一下子手足无措,不知道如何下手。

     

        下面,我就从自己个人的角度推荐一下,作为一个it工程师应该如何学习好机器学习?

     

    1)机器学习应该选用什么编程语言?

        如果大家平时留意的话,会发现大家用来编写算法的时候什么语言都有,比如c、c++、java、matlab、python、R等等。我建议大家如果是自己编写算法,最好使用python脚本语言,编写起来很快,语法和c差不多,基本不需要调试。如果是别人写的算法,那么只需要自己会编译会修改就可以了。比如说,机器学习中svm这块,大家用的比较多的都是libsvm库,最早的库是用c++库,大家只要能看懂会使用就可以了。还有一些公开发表的论文,这些论文大部分是用matlab编写的,大家也只要能看懂就可以了,如果需要的话,可以自己转换成python或者c代码。

     

    2)python常用的库有哪些?

        只需要numpy、pandas和matplotlib就可以了,前者主要处理矩阵使用,后者画图使用。

     

    3)怎么编写算法?

        可以先看懂机器算法的基本原理,然后编写代码,最后再看推倒的数学公式。it工程师比较擅长的是看代码,所以可以从自己擅长的领域着手。大部分的机器学习代码都在100~200行之间,我指的是python代码,所以理解上不会有太大的困难。即使自己不会写,先看看别人的也可以。

     

    4)有没有什么好的机器学习库?

        sklearn,python下面最简单的机器学习库。所有的代码基本上都分成三个步骤,建模、训练、预测。

     

    5)常用的机器学习的书有哪些?

        我自己经常看的书就三本,《机器学习实战》、《统计学习方法》和周志华的《机器学习》。大家在看书的时候,尽量找适合自己的书籍。大牛的书籍不一定适合自己,反而是一些实战的书特别适合入门。

     

    6)机器学习最重要的是什么?

        比算法和测试数据集本身更重要的,是希望大家寻找更多机器学习的应用场景,让这门学科更好地服务于我们的生活。

     

    7)掌握机器学习的步骤是什么?

        先利用现成的库(比如sklearn)用好算法,后面可以根据算法定理实现好算法,最后再根据使用经验发觉算法的不足,改进好算法,让更多的人从你的工作中收益。这是一个持续的过程,没有办法一蹴而就。

     

    8)公司用的机器学习和学术界的机器学习有什么区别?

        公司用的算法往往都是稳定、简洁、可靠的算法,比如说logistic回归、决策树、bayes等等,而学术中的机器学习更偏向于性能和结果,在效率和成本和算法可理解性方面考虑的不多。比如大家学习中遇到的svm、pca、lda、神经网络、深度学习,在生产中可能没有大家想象的那么多。当然也不能说,学术的算法就没有意义,也许随着计算机处理效率的提高和大数据时代的到来,学术中的某些算法会成为新的主流趋势,这也说不定。

     

    9)有没有什么比较好的视频教程?

        斯坦福大学Andrew NG的《机器学习》课程。

     

    ps:

        一般机器学习最好和一个领域联系在一起。比如ml和图像,或者dnn和语音。如果想学习语音的同学,利用kaldi来学习语音也是不错的选择,语音识别里面的声学模型、语言模型也大量使用了机器学习的知识。

     

     

    展开全文
  • 计算机视觉相当于是人工智能的大门,如果这个门不打开,就没有办法真的研究真实世界的人工智能。因为视觉信息与听觉触觉相比重要得多,人的大脑皮层70%的活动都在处理视觉信息,如果没有视觉信息的话,整个人工智 ...

    计算机视觉相当于是人工智能的大门,如果这个门不打开,就没有办法真的研究真实世界的人工智能。因为视觉信息与听觉触觉相比要重要得多,人的大脑皮层70%的活动都在处理视觉信息,如果没有视觉信息的话,整个人工智能只是一个空架子,只能做符号推理(下棋,定理证明等)。

    计算机视觉相当于一个研究领域,有很多问题要研究。而机器学习更像是一个方法和工具。
    本身应当叫统计学习,方法都是从概率领域拿来的,但是机器学习领军人物把统计和物理的数理模型,改名叫做机器,比如某某模型(model)叫某某机(machine);把一些层次模型(hierarchical model)说成网(net),搞出了许多机和网,就成了新的领域。
    机器:统计模型。 学习:用数据来拟合模型。是计算机的人将统计的理论与方法应用到视觉、语音等领域,形成了机器学习这个模型。

    机器学习与计算机视觉大概有60~70%的是重合的。

    人工智能是终极目标,让机器像人那样的思考、处理事情。

    解决问题的过程:抽象成问题(表达),寻找算法,实现。视觉是受任务驱动的,而任务是时刻在改变之中,我怎样通过这千千万万的任务,而不是简单一个分类,来驱动我的计算的过程,来找到我的需求,来支持我目前的任务,这是一个巨大的研究的方向 。

    当你要去识别、分析一个模式,比如一个动物、人脸、 一个事件, 你首先要建立一个数理模型,这个模型通过数据来拟合,也就是当前的机器学习。那么,判断这个模型好坏,或者模型是否充分的一个依据是什么?产生式建模的方法就是对这个模型随机抽样,也就是合成(synthesis)。

    展开全文
  • 如何学习计算机视觉

    2018-09-15 10:10:01
    本文的内容主要借鉴CSDN博主NodYoung的一篇文章,但是不知道什么原因,该博主的文章现已删除,这里,我根据自己的理解大致说明一下,对于一个初学小白来说,该如何学习计算机视觉。(有关计算机视觉入门的其它只是,...

    本文的内容主要借鉴CSDN博主NodYoung的一篇文章,但是不知道什么原因,该博主的文章现已删除,这里,我根据自己的理解大致说明一下,对于一个初学小白来说,该如何学习计算机视觉。(有关计算机视觉入门的其它知识,可以阅读另一篇文章计算机视觉入门必读

    1.编程能力

    1.1 编程语言(C++, python)

      刚接触CV(computer vision)(注:本文偏向于图像学而非图形学)时,大家一般都会不假思索地选择使用C++:装个VS(Visual Studio),配置下opencv,撸起袖子就上了。这样做非常合理,几乎所有人都是这么入门的。 不过,当你知识面扩展开后,你会感觉到很多时候C++都显得有些力不从心。比如:当你要画一些图表或做一些分析,就还得把数据导入MATLAB里做进一步处理;当你要非常快捷方便地学习或测试一个算法,C++会是你最糟糕的选择;或者当你要学习深度学习时,你绝对不会再选择使用C++….总之,有太多理由会促使你再学习一门编程语言,最好的选择没有之一:python。

    1.1.1 简单介绍一下C++和python的各自特点:

    • C++:偏底层,执行效率高,适合嵌入式等平台上使用;在视觉领域,C++生态好,用的人多,网上找资源很方便。 缺点是开发效率实在太低了,关于这一点如果你只是专注于图像处理的话可能感受不是那么真切,因为opencv库做得足够好。但是当你做到机器学习后,opencv就显得有些力不从心了,虽然它也包含一些SVM、神经网络等的简单实现,但毕竟不擅长。

    • python:全能语言,干啥都行,并且都相对擅长。图像处理,opencv支持有python接口;科学计算,其功能类似于matlab了:机器学习及深度学习,python是最好用的,没有之一;爬虫等网络应用,豆瓣就是用python写的;简而言之,方便,实在太方便了。
      当然python也有自己的另一面。执行效率不高,这一点做嵌入式开发的可能比较忌讳。但如今手机的内存都升到6G了,tensorflow都可以在移动端跑了,Python也都可以用来控制STM32了,未来很难说。

      顺便说一句也有人使用MATLAB等做图像方面的研究,如果你只是偶尔用图像处理辅助一下你的研究,可以这么做,一般情况下不建议使用。

    1.1.2 C++和python学习资源推荐

    • C++
      • 初级入门
        如果你是一个无编程经验的C++初学者,或者有其它语言经验的C++初学者,那强烈推荐下面的书籍。
        • C++ Primer作者:Stanley Lippman, Josée Lajoie, and Barbara E. Moo (更新到C++11) (不要和 C++ Primer Plus–Stephen Prata搞混了)近1千页,本书透彻的介绍了C++,以浅显和详细的方式讲到C++语言差不多所有内容。2012年8月发行的第五版包含C++11的内容
          电子书第三版(中文)第四版(中文)第五版(英文版)
        • Accelerated C++ 作者:Andrew Koenig and Barbara Moo 这本书覆盖了和C++ Primer一样的内容,但厚度只有C++ Primer的四分之一。这主要是因为本书面向的不是编程的初学者,而是有其它语言经验的C++初学者。对于初学者,本书学习曲线稍显陡峭,但对于能克服这一点的学习者而言,它确实非常紧凑的介绍了C++这门语言。
          电子书中文版英文版
        • C++编程思想(Thinking in C++) 作者:Bruce Eckel 共两卷,第二卷主要将标准库,但还是不错的。
          电子书第二版V2(英文版)第二版V2(中文版)
      • 最实用
        • Effective C++ 作者:Scott Meyers 本书以瞄准成为C++程序员必读的第二本书籍而写,Scott Meyers成功了。早期的版本面向从C语言转过来的程序员。第三版修改为面向从类似Jave等语言转来的程序员。内容覆盖了50多个很容易记住的条款,每个条款深入浅出(并且有趣)讲到了你可能没有考虑过的C++规则。
          电子书第三版(英文)第三版(中文)
        • C++程序设计原理与实践 (Programming: Principles and Practice Using C++ )作者:Bjarne Stroustrup C++之父写的C++入门书籍。本书面向没有编程经验的初学者,但相信有编程经验的人也能从本书中学到不少东西。
          电子书中文版
    • python
        基础部分看廖雪峰的python教程就可以了,然后就是用哪一块学哪一块了。python学起来很简单,看别人代码的过程就是学习的过程。对于不熟悉的用法多搜下官方文档,如python, numpy,pandas, matplot, scikit-learn。这里有几张python各种库的小抄表其实直接在网上搜这几张表也都比较方便。课程的话,我之前上过一些七月算法的课程,讲得不好,多少会给你一些知识体系和各种学习资料,总体不推荐或跳着看。python的开发环境值得说一下,因为有太多选择,这里比较建议使用pycharm和jupyter notebook吧,具体参考python入门环境搭建。下面,推荐一些入门和进阶的书籍

    1.2 编程平台(windows, linux)

      新手肯定都用windows了,学习过程中发现在windows上搞不定了,先忍几次,然后掉头就去学linux了。一定是这样。 哪些在windows上真的搞不定呢?比如:deeplearning,或最新论文中提出的视觉开源算法。 不过对我们而言,linux并不需要了解太深。装个ubuntu系统,常用的文件操作、程序编译等知道就OK了。我完全是在使用的过程中现用现学,手边常备一本书《鸟哥的linux私房菜》。

    2.视觉知识

      计算机视觉实在很广了,目前比较热门的方向总体上分为两大块:一块是深度学习,一块做SLAM。它们的研究点区别在哪呢?深度学习这一群体侧重于解决识别感知(是什么)问题,SLAM侧重于解决几何测量(在哪里)问题ICCV研讨会:实时SLAM的未来以及深度学习与SLAM的比较。拿机器人来说,如果你想要它走到你的冰箱面前而不撞到墙壁,那就需要使用 SLAM;如果你想要它能识别并拿起冰箱中的物品,那就需要用到深度学习机器人抓取时怎么定位的?用什么传感器来检测?。当然这两方面在research上也有互相交叉融合的趋势。 不过在学习这些之前,一般都会先掌握下传统的计算机视觉知识,也就是图像处理这一部分了。我之前大致总结过一次:
    计算机视觉初级部分知识体系。这些基础知识的理解还是挺有必要的,有助于你理解更高层知识的本质,比如为什么会出现deeplearning等这些新的理论知识(感觉有点像读史了,给你智慧和自由)。这一部分学习资料的话还是挺推荐浅墨的《OpenCV3编程入门》 也可以看他的博客。当然他的书有一个问题就是涉及理论知识太少,所以推荐自己再另备一本偏理论一点的图像处理相关的书,我手边放的是《数字图像处理:原理与实践》,差强人意吧。个人之前看浅墨书的时候做了一份《OpenCV3编程入门》学习笔记,里边包含一些理论知识和个人见解。
    下面说一下两个大的方向:基于深度学习的视觉和SLAM技术。

      基于深度学习的视觉:机器学习包括深度学习里的大部分算法本质上都是用来做“分类”的。具体到计算机视觉领域一般就是物体分类(Object Classification)、目标检测(Object Detection)、语义分割(Image Semantic Segmentation)等,当然也有一些很酷又好玩的东西比如edges2cats、deepart。本人主要做一些Object Detection相关的东西。其实一般是直接跑别人的代码了,稍微做一些修改和参数调整,前期的预处理才是主要工作。这些程序基本都是在linux下跑的。好,深度学习为什么这么强?它主要解决了什么问题呢?我比较认同以下三点:学习特征的能力很强,通用性强,开发优化维护成本低 参见为什么深度学习几乎成了计算机视觉研究的标配?。
    关于这一部分的学习,主要就是deeplearning了。关于deeplearning,漫天飞的各种资源。可以看一看李宏毅的一天搞懂深度学习课件 youtube上有一个一天搞懂深度學習–學習心得;李飞飞的CS231n课程,网易云课堂有大数据文摘翻译的中文字幕版课程,知乎专栏智能单元有CS231N课程翻译(非常好);三巨头之一Yoshua Bengio的新作《DEEP LEARNING》,目前已有中译版本 。
      SLAM技术:这一部分了解不多,不做太多评价,有兴趣的可以自己谷歌一下

    3.机器学习

      计算机视觉中使用的机器学习方法个人感觉不算多,早期的时候会用SVM做分类,现在基本都用深度学习选特征+分类。原因在于统计机器学习这一块虽然方法不少,但是基本都无法应对图像这么大的数据量。 不过大家在学习过程中很容易接触到各种机器学习方法的名字因为现在大数据分析、机器学习、语音识别、计算机视觉等这些其实分得不是很开,然后不自觉地就会去了解和学习。这样我感觉总体来说是好的。不过在学习一些暂时用不着的算法时,个人感觉没必要做的太深:重在理解其思想,抓住问题本质,了解其应用方向。
    下面分开介绍一下传统机器学习算法和深度神经网络

      传统机器学习一般也就决策树、神经网络、支持向量机、boosting、贝叶斯网等等吧。方法挺多的,同一类方法不同的变形更多。除了这些监督式学习,还有非监督学习、半监督学习、强化学习。当然还有一些降维算法(如PCA)等。对这些个人整体把握的也不是特别好,太多了。
    学习资料,吴恩达的coursera课程《Machine Learning》,他正在出一本新书《MACHINE LEARNING YEARNING》,说好陆续更新的,刚更新一点就没了,本来想翻译学习一下。个人比较喜欢他的课程风格话说今天中午传出新闻,吴恩达从百度离职了。——执笔于2017.03.22,简单易懂。还有李航的《统计学习方法》和周志华的《机器学习》,两本在国内机器学习界成为经典的书。
      深度学习主要的发展就是CNN、RNN;从去年起GAN火起来了,现在如日中天;增强学习现在发展也非常快,有些名校如CMU都开这方面课程了。
    资料上面说过就不说了喜欢高雅的人也可以看看这个深度学习论文阅读路线图 ,说说在使用deeplearning时用哪个库吧。目前为止还没有大一统的趋势,连各个大公司都是自己用自己开发的,一块大肥肉大家都不舍得放弃。感觉在这方面没必要太计较,用相对简单的和大家都用的(生态好) 。

    4.数学

      一切工程问题归根结底都是数学问题,这里说说计算机视觉和机器学习所涉及的数学问题。

      微积分:比如图像找边缘即求微分在数字图像里是做差分(离散化)啦,光流算法里用到泰勒级数啦,空间域转频域的傅立叶变换啦,还有牛顿法、梯度下降、最小二乘等等这些都用的特别普遍了。
      概率论与统计:这个比较高深,是应用在机器学习领域里最重要的数序分支。应用比如:条件概率、相关系数、最大似然、大数定律、马尔可夫链等等。 浙大的《概率论与数理统计》感觉还行,够用。
      线性代数与矩阵:数字图像本身就是以矩阵的形式呈现的,多个向量组成的样本也是矩阵这种形式非常常见,大多机器学习算法里每个样本都是以向量的形式存在的,多个矩阵叠加则是以张量(tensor)的形式存在google深度学习库tensorflow的字面意思之一。具体应用,比如:世界坐标系->相机坐标系->图像坐标系之间的转换,特征值、特征向量,范数等。 推荐国外的上课教材《线性代数》。因为浙大的那本教材感觉实在不太行,买过之后还是又买了这本。
      凸优化:这个需要单独拎出来说一下。因为太多问题(尤其机器学习领域)都是优化问题(求最优),凸优化是里面最简单的形式,所以大家都在想办法怎么把一般的优化问题转化为凸优化问题。至于单纯的凸优化理论,好像已经比较成熟了。在机器学习里,经常会看到什么求对偶问题、KKT条件等,潜下心花两天学一学。 建议备一份高校关于凸优化的教学课件,大家对这一块毕竟比较生,缺乏系统感。比如北大的《凸优化》课程。这些数学知识没必要系统学习,效率低又耗时。毕竟大家都有本科的基础,够了。一般用到的时候学,学完之后总结一下。

    展开全文
  • 在我的理解里,实现计算机视觉必须有图像处理的帮助,而图像处理倚仗与模式识别的有效运用,而模式识别是人工智能领域的一个重要分支,人工智能与机器学习密不可分。纵观一切关系,发现计算机视觉的应用服务于机器...
  • 一、前言 最近听了邹耀斌老师的数字图像处理新技术的专题课程,觉得数字图像处理真是一个比较新鲜的...后来查找相关资料我才了解到计算机视觉,图像处理,图像分析,机器人视觉和机器视觉是彼此紧密关联的学科。...
  • 最近公众号看到讲人工智能、计算机视觉机器学习三者关系的,摘录一段朱松纯(加州大学洛杉矶分校UCLA统计学和计算机科学教授)原话。关于人工智能和计算机视觉
  • 计算机视觉/机器学习/深度学习预备知识
  • Deep Learning(深度学习) ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二 Bengio团队的deep learning教程...
  • 计算机视觉分很多方向,个人比较熟悉的是图像方面的,包括:图像分类、目标检测、图像分割、视频处理等,这些小的方面每一个也学要很长的一段时间去学习. 入门这个东西很难定义,如果只是对一个方向看一下,了解...
  • 欢迎大家关注微信公众号:baihuaML,白话机器学习。 在这里,我们一起分享AI的故事。 最近有很多朋友包括认识的,不认识的人,像我打听关于入行计算机视觉这个行业的一些问题。觉得还是有必要总结以下,一方面跟...
  • 计算机视觉模型学习和原理 绪论 什么是计算机视觉 计算机视觉机器视觉 绪论内容继续讲解 计算机视觉简史 所自学书籍的结构 总结 计算机视觉:模型、学习和原理  本博文乃自学为主,转载需要声明,...
  • 计算机视觉从入门到放肆 一、基础知识 1.1 计算机视觉到底是什么? 计算机视觉是一门研究如何让机器“看”的科学 更进一步的说,就是使用摄像机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步...
  • 机器学习计算机视觉入门项目——视频投篮检测(一) 随着机器学习、深度学习技术的迅猛发展,计算机视觉无疑是近年来发展最快的AI领域之一。正因如此,互联网上有关计算机视觉机器学习、深度学习的社区、博文、...
  • 机器学习其实也有许多方向,比如强化学习、计算机视觉、自然语言处理等等,如果每个方向都学习的话,普通人也没有那么多精力。 在经过一年的泛泛的学习之后,决定将计算机视觉作为我的主攻方向,主要也是因为我对...
  • 计算机视觉学习步骤

    2017-05-23 14:15:12
    具备一点如概率、统计学、线性代数、微积分(微分与积分)等相关课程的学术背景,对学习计算机视觉大有裨益。要是想在日后更容易理解计算机视觉的一些概念,提早对矩阵计算和数字信号处理进行学习,会得更加轻松...
  • 计算机视觉“CV,是指用计算机实现人的视觉功能,对客观世界的三维场景的感知、识别和理解。 计算机视觉是一个处于指示前沿的领域。我们认为计算机视觉,或简称为“视觉”,是一项事业, 它与研究人类或动物的视觉...
  • 2016-11-24 视觉求索 谈话人: 杨志宏 视觉求索公众号编辑 ...朱松纯 加州大学洛杉矶分校UCLA统计学和计算机科学教授 ...杨: 朱教授,你在计算机视觉领域耕耘20余年,获得很多奖项, 是很资深的研究人员
1 2 3 4 5 ... 20
收藏数 53,585
精华内容 21,434
关键字:

计算机视觉要学机器学习吗