2019-04-06 16:08:43 qq_33732358 阅读数 440
  • 基于深度学习计算机视觉:原理与实践(上部)

    本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。 基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。 本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。 通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。 本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。 本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

    3111 人正在学习 去看看 白勇

计算机视觉和机器学习-深度学习的学习指南

计算机视觉是一门对理论基础要求比较高的计算机科学。
实验室中计算机视觉的工作分为图像处理基于深度学习的图像识别

图像处理

《数字图像处理》一书中对图像处理的解释为:将数字图像处理定为其输入和输出都是图像的处理。

比如在车道线检测任务中,我们需要对图像进行车道线二值化处理得到只包含车道线像素的二值化图像。
在这里插入图片描述

图像处理的主要功能:

  • 图像处理帮助我们对原始图像进行过滤、去噪、平滑、锐化等
  • 可以对图像进行压缩,并保持清晰度不变
  • 对图像进行分割,检测图像中物体的点、线、边缘
  • 提取图像中物体的特征(即通过对图像像素点的计算得到某种特征向量,用于描述某些特征),如:LBP特征检测、HOG特征检测、Haar-like特征检测,通过对特征点的计算可以实现:特征点的匹配(两幅图像中同一物体的匹配)、图像的融合等
  • 模式识别
  • 图像的变换:透视变换、仿射变换等

学习方法

  作为非科班的学习者来说,借鉴科班的学习方法很有必要。实验室倡导实践和理论相结合的方式进行学习。然而如何处理好理论学习和实践学习的先后顺序问题是个至关重要的问题。以个人的学习经历来看,在学习新的知识点的时候需要先对理论知识概览一遍;接着使用代码去实现相关功能,遇到障碍的时候可以借鉴开源的代码,但一定要做到理解;接着,这时候肯定有很多疑惑的地方,如果第一遍概览比较细腻的话可以只看稍有疑惑的地方,如果感觉很多地方不清不楚则需要对理论知识再做细致的学习;然后尽量再次独立完成代码的实现。

举了栗子:

  以直方图均衡化为例,
Step1:
  首先:我们要理解:

  1. 什么是直方图?
  2. 什么是直方图均衡化?
  3. 直方图均衡化的思路是什么?
  4. 直方图均衡化的公式推导是什么?
  5. 直方图均衡化的算法实现思路是什么?

Step2:
  接着我们就可以尝试用代码去实现它,当然,可能会遇到困难,也许是出现了BUG、也许甚至是不知道如何用代码去描述算法,我们可以查阅别人优秀的代码实现,学习别人的算法实现思路。

Step3:
  之后我们重新过一遍Step1记录的学习笔记,相信会有了新的理解和体会。

Step4:
  整理好思路,动手独立完成代码。

Step5:
  做到复习很重要,也许当时确实弄懂了,但复杂的知识点和算法实现过程很容易被遗忘,需要我们时常巩固才能做到心中不虚。

推荐阅读《数字图像处理冈萨雷斯
推荐使用C++,其次Python

基于深度学习的图像识别

又可分为:图像的分类、图像中的物体检测、图像的语义分割

  深度学习属于机器学习的一个分支,因其构建深度神经网络而得其名。可以将神经网络想象成一个复合函数,每一层神经网络即是一个函数层,通过函数(网络层)的复合实现了由输入到输出的某种映射关系(自我理解,需考证)。

基于深度学习的图像识别的主要功能

  • 图像的分类(分辨图像是人还是狗)
    在这里插入图片描述
  • 图像的物体检测(识别图像中的某个物体的位置,比如:人在图像中的位置)
    在这里插入图片描述
  • 图像的语义分割(预测图像中每个像素的类别)
    在这里插入图片描述

学习方法

   实际上传统机器学习在图像处理中的应用并不是特别的出彩,但是对传统机器学习是深度学习的入门,很多深度学习的教程也是以传统机器学习作为入门,比如:感知机、K近邻法、决策树、SVM等,都属于传统的机器学习范畴,并不属于深度学习,但其中的很多概念,比如损失函数、梯度下降、先验概率、特征空间等概念都来自于机器学习。

如上述图像处理的学习方法,也是理论和实践相结合且不停相互巩固的学习过程。

机器学习推荐阅读《统计学习方法李航》。
深度学习则推荐斯坦福大学的深度学习课程,并陆续学习主流的深度学习模型框架,理解其设计思路,如:Yolo系列、VGGNet、ICNet等。并且,kaggle竞赛平台开放了一些数据集,提供了一些项目供大家学习交流,在kaggle上的有价值的项目的leaderboard有好的名次对CV研究者来说是个很棒的履历。
推荐使用Python、keras、tensorflow

数学

   数学应该是很多人的心魔,包括我。但作为算法工程师,和应用开发程序员的最大区别就在于算法工程师对数学和算法基础的掌握上。没有良好的数学功底,在图像处理和深度学习领域只能是隔靴搔痒。

需要掌握的内容

  • 高数上下册
  • 概率论
  • 统计学
  • 线性代数

学习方法

   有些晦涩的推理公式可以暂时不去正面刚,初期学习的重点放在对专业词汇的理解以及数学与CV、ML&DL的连接上。
比如:数学中的导数和机器视觉中的梯度的关系,数学中的卷积和图像处理中卷积的应用及关系,数学中的卷积和ML&DL中卷积的应用及关系等。
   在学习的过程中,会慢慢发现CV和ML&DL中的莫名其妙的名词和公式推导可以读懂一些,这个时候相比已经总结、培养出了属于自己的学习习惯和思路。

2016-05-05 16:54:47 popo_0314 阅读数 871
  • 基于深度学习计算机视觉:原理与实践(上部)

    本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。 基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。 本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。 通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。 本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。 本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

    3111 人正在学习 去看看 白勇

近年来,与本人研究领域相关的比较火热的技术包括:计算机视觉、机器学习和深度学习。

1.计算机视觉:虚拟现实/增强现实;

2.机器学习:互联网从业必备,举个栗子,神马广告点击预测,推荐系统,大数据挖掘等等;

3.深度学习:AlphaGo,人工智能;

此外,高级辅助驾驶系统(ADAS),自动驾驶,无人驾驶,无人机,智能机器人,智能视频监控等等也与上述技术有着千丝万缕的联系。

所以,深入学习上述技术势在必行。那么,为学习它们需要哪些预备知识呢?总结一下,无外乎如下:

1)高等数学,线性代数与解析几何,概率论与数理统计,矩阵论,随机过程;

2)模式识别,图像处理,统计学习;

3)最优化算法;

4)编程语言,数据结构,算法;

工作之后的一个体会就是,上学时学的知识和工作中用到的知识是脱节的,老师如果能在讲解理论的同时给出实际应用的例子,会大有裨益。

本人最近找到一份台湾大学(NTU,LIBSVM作者林智仁就来自这里)Hsuan-Tien Lin的机器学习预备知识作业做了一下,现在分享给大家,希望与各位同仁一起进步。




下一站:

1.矩阵分解:SVD/QR/Cholesky/LU/Jacobi;

2.最优化算法:拉格朗日乘数法/梯度下降/牛顿/高斯-牛顿/LM等。

2017-05-11 18:48:19 soaring_casia 阅读数 639
  • 基于深度学习计算机视觉:原理与实践(上部)

    本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。 基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。 本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。 通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。 本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。 本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

    3111 人正在学习 去看看 白勇

在上世纪50年代,数学家图灵提出判断机器是否具有人工智能的标准:图灵测试。图灵测试是指测试者在与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。

图灵测试一词来源于计算机科学和密码学的先驱阿兰·麦席森·图灵写于1950年的一篇论文《计算机器与智能》,其中30%是图灵对2000年时的机器思考能力的一个预测,但是从图灵测试提出来开始到本世纪初,50多年时间有无数科学家提出很多机器学习的算法,试图让计算机具有与人一样的智力水平,但直到2006年深度学习算法的成功,才带来了一丝解决的希望。

深度学习时代的计算机视觉

为什么深度学习之前,传统计算机视觉算法在人脸识别、跟踪、目标检测等诸多领域没有达到深度学习的精度呢?回答这一问题,需要我们先了解传统算法的特点。

对于视觉算法来说,大致可以分为以下4个步骤:图像预处理、特征提取、特征筛选、推理预测与识别。计算机视觉可以说是机器学习在视觉领域的应用,所以计算机视觉在采用这些机器学习方法的时候,不得不自己设计前面3个部分。但对任何人来说这都是一个比较难的任务。

传统的计算机识别方法把特征提取和分类器设计分开来做,然后在应用时再合在一起,比如如果输入是一个摩托车图像的话,首先要有一个特征表达或者特征提取的过程,然后把表达出来的特征放到学习算法中进行分类的学习。

传统视觉算法.jpg

过去20年中出现了不少优秀的特征算子,比如最著名的SIFT算子,即所谓的对尺度旋转保持不变的算子。它被广泛地应用在图像比对,特别是所谓的structure from motion这些应用中,有一些成功的应用例子。另一个是HoG算子,它可以提取物体,比较鲁棒的物体边缘,在物体检测中扮演着重要的角色。

这些算子还包括Textons,Spin image,RIFT和GLOH,都是在深度学习诞生之前或者深度学习真正的流行起来之前,占领视觉算法的主流。

这些特征和一些特定的分类器组合取得了一些成功或半成功的例子,基本达到了商业化的要求但还没有完全商业化。比如指纹识别算法、基于Haar的人脸检测算法、基于HoG特征的物体检测。但这种成功例子太少了,因为手工设计特征需要大量的经验,需要你对这个领域和数据特别了解,然后设计出来特征还需要大量的调试工作。说白了就是需要一点运气。

另一个难点在于,你不只需要手工设计特征,还要在此基础上有一个比较合适的分类器算法。同时设计特征然后选择一个分类器,这两者合并达到最优的效果,几乎是不可能完成的任务。

深度学习时代的计算机视觉

深度学习的前世

深度学习网络的最初原型是人工智能领域的大牛Lecun在1998年AT&T的实验室时发明出来的,当时用这一网络进行字母识别,达到了非常好的效果。

我们不禁要问:似乎卷积神经网络设计也不是很复杂,98年就已经有一个比较像样的雏形了。自由换算法和理论证明也没有太多进展。那为什么时隔20年,卷积神经网络才能卷土重来,占领主流?

这一问题与卷积神经网络本身的技术关系不太大,与其它一些客观因素有关。

首先,深度卷积神经网络需要大量数据进行训练。网络深度太浅的话,识别能力往往不如一般的浅层模型,比如SVM或者boosting;如果做得很深,就需要大量数据进行训练,否则机器学习中的过拟合将不可避免。而2006年开始,正好是互联网开始大量产生各种各样的图片数据的时候,即视觉大数据开始爆发式地增长。

另外一个条件是运算能力。卷积神经网络对计算机的运算要求比较高,需要大量重复可并行化的计算,在当时CPU只有单核且运算能力比较低的情况下,不可能进行个很深的卷积神经网络的训练。随着GPU计算能力的增长,卷积神经网络结合大数据的训练才成为可能。

最后一点就是人和。卷积神经网络有一批一直在坚持的科学家(如Lecun)才没有被沉默,才没有被海量的浅层方法淹没。最后终于看到卷积神经网络占领主流的曙光。

深度学习的今生

深度学习的概念由Hinton等人于2006年提出,具备天时地利人和的深度学习从此一发不可收拾,其在计算机视觉的诸多领域取得的效果远超传统机器学习算法,包括人脸识别、图像问答、物体检测、物体跟踪

人脸识别方面,工作比较超前的是汤晓鸥教授,他们提出的DeepID算法在LWF上做得比较好。最新的DeepID-3算法,在LWF达到了99.53%准确度,与肉眼识别结果相差无几。

物体检测方面,2014年的Region CNN算法、2015年的Faster R-CNN方法、FACEBOOK提出来的YOLO网络、在arXiv上出现的最新算法叫Single Shot MultiBox Detector在识别精度和速度上均与较大提升。

物体跟踪方面,DeepTrack算法是第一在线用深度学习进行跟踪的文章,当时超过了其它所有的浅层算法。此后越来越多的深度学习跟踪算法提出。

2017-07-06 15:12:05 u014274339 阅读数 1307
  • 基于深度学习计算机视觉:原理与实践(上部)

    本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。 基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。 本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。 通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。 本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。 本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

    3111 人正在学习 去看看 白勇

计算机视觉、机器学习岗需要复习的内容

编程基础

  1. C++基础知识学习:《C++ primer》
  2. 算法编程:Leetcode牛客网《算法导论》
  3. 编程思想: 《算法导论》《程序员面试宝典》《剑指offer》
  4. 其他语言熟悉: Python,Scala,Matlab等

机器学习基础知识 ——《统计学习方法》、《机器学习》

  1. 特征工程 :《机器学习》《模式识别》googletencent课件
  2. 机器学习模型学习: 《统计学习方法》《机器学习》google
    1. 监督学习
    2. 无监督学习
    3. 半监督学习?
  3. 性能评估方法:《统计学习方法》,《机器学习》

深度学习

  1. 深度学习基础知识:UFLDL教程google
  2. Tensorflow学习
    1. 资源:
      1. tensorflow官网
      2. tensorflow Github
      3. 莫烦tensorflow视频
  3. 熟悉深度学习相关论文
  4. 几种重要的深度学习模型
    1. CNN
    2. RNN
    3. 强化学习
    4. 迁移学习
    5. 对抗网络(GAN网络)

研究内容准备

  1. 图像处理基础知识
  2. 计算机视觉的一些应用
    1. 目标识别
    2. 目标跟踪
    3. 图像质量评价
    4. 人脸检测及识别
    5. 行人检测
    6. 超分辨等
  3. 重点:图像质量评价研究
    1. 方法综述
    2. 最新进展
    3. 我所做的工作

个人项目准备

  1. 阿里云音乐流行趋势预测
  2. 图像质量评价系统
  3. 无参考图像质量评价算法研究
  4. 腾讯实习项目
  5. 彩色文本检测与识别项目
  6. 行人检测项目
2018-12-18 10:46:49 ChangWei_wenzhou 阅读数 172
  • 基于深度学习计算机视觉:原理与实践(上部)

    本课程适合具有一定深度学习基础,希望发展为深度学习之计算机视觉方向的算法工程师和研发人员的同学们。 基于深度学习的计算机视觉是目前人工智能最活跃的领域,应用非常广泛,如人脸识别和无人驾驶中的机器视觉等。该领域的发展日新月异,网络模型和算法层出不穷。如何快速入门并达到可以从事研发的高度对新手和中级水平的学生而言面临不少的挑战。精心准备的本课程希望帮助大家尽快掌握基于深度学习的计算机视觉的基本原理、核心算法和当前的领先技术,从而有望成为深度学习之计算机视觉方向的算法工程师和研发人员。 本课程系统全面地讲述基于深度学习的计算机视觉技术的原理并进行项目实践。课程涵盖计算机视觉的七大任务,包括图像分类、目标检测、图像分割(语义分割、实例分割、全景分割)、人脸识别、图像描述、图像检索、图像生成(利用生成对抗网络)。本课程注重原理和实践相结合,逐篇深入解读经典和前沿论文70余篇,图文并茂破译算法难点, 使用思维导图梳理技术要点。项目实践使用Keras框架(后端为Tensorflow),学员可快速上手。 通过本课程的学习,学员可把握基于深度学习的计算机视觉的技术发展脉络,掌握相关技术原理和算法,有助于开展该领域的研究与开发实战工作。另外,深度学习之计算机视觉方向的知识结构及学习建议请参见本人CSDN博客。 本课程提供课程资料的课件PPT(pdf格式)和项目实践代码,方便学员学习和复习。 本课程分为上下两部分,其中上部包含课程的前五章(课程介绍、深度学习基础、图像分类、目标检测、图像分割),下部包含课程的后四章(人脸识别、图像描述、图像检索、图像生成)。

    3111 人正在学习 去看看 白勇

转载:https://blog.csdn.net/ksws0292756/article/details/78876125

本文的内容主要借鉴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条件等,潜下心花两天学一学。 建议备一份高校关于凸优化的教学课件,大家对这一块毕竟比较生,缺乏系统感。比如北大的《凸优化》课程。这些数学知识没必要系统学习,效率低又耗时。毕竟大家都有本科的基础,够了。一般用到的时候学,学完之后总结一下。

深度学习之于传统计算机视觉

博文 来自: liubing8609
没有更多推荐了,返回首页