计算机视觉 阶梯式学习路径

计算机视觉 阶梯式学习路径_第1张图片

PDF版本已上传至 Github

#1、Python入门

周期 :12周(每周10h)

你将在 12 周的时间里,从零开始,系统学习人工智能所需的核心技术 —— Python 编程、数据分析处理及数学知识,并将应用这些技术于基础的机器学习模型及神经网络构建中,为进入 AI 行业工作做准备。从此纳米学位毕业后,你将能够解决基本的数据分析与预测的问题,并能够胜任 AI /数据类实习生的岗位。

  • 第 1 部分:Python 编程

    Python 零基础热身课

    • 学习 Python 最基本的绘图库 Turtle

    为何要学习 Python 编程

    • 了解我们为什么需要学习编程

    • 了解课程会涉及到的知识概述,并提前做好准备

    • 了解使用 Python 编程的独特点

    数据类型和运算符

    • 了解数据类型和运算符是如何应用在 Python 编程中的
    • 了解并使用以下数据类型:integers, floats, booleans, strings, lists, tuples, sets, dictionaries
    • 使用以下运算符:arithmetic, assignment, comparison, logical, membership, identity

    控制流

    • 使用条件语句来实 现代码中的决策功能

    • 用 for 和 while 循环重复代码

    • 使用 break 断开一个循环,并通过 continue 跳过循环的一次迭代

    • 使用内置函数,如 zip 和 enumerate

    • 以 list comprehension 自然地构建列表。

    函数

    • 编写你自己的函数来封装一系列指令
    • 了解变量作用域,即程序的哪些部分可以引用这些变量
    • 通过适当的文档与注释使得函数更易于使用
    • 使用lambda表达式,迭代器(iterators)和生成器(generators)。

    脚本编写

    • 在本地计算机上编写并运行代码脚本
    • 处理用户的原始输入
    • 读取和写入文件,处理错误并导入本地脚本
    • 使用来自Python标准库和第三方的模块
    • 使用在线资源来帮助解决问题

    进阶知识

    • 学习迭代器和生成器

    面向对象编程

    • 面向对象编程提供了一些优于过程编程的优点。 通过了解如何使用类来学习对象、方法、属性等面向对象编程的基础知识。
    • 实战项目 1:控制迷宫寻宝机器人
  • 第 2 部分:NumPy, Pandas, Matplotlib, Seaborn

    Numpy

    • 了解 NumPy 以及如何使用它来处理 AI 问题中的数据
    • 迷你项目:使用 NumPy 来归一化一个 ndarray 并将其分成几个较小的 ndarray

    Pandas

    • 学习使用 Pandas 加载和处理机器学习问题中的数据
    • 迷你项目:使用 Pandas 来绘制并从股票数据中获取统计数据

    Matplotlib 和 Seaborn

    • 学习使用 Matplotlib 和 Seaborn 绘图,根据数据类型为一个或两个变量选择适当的图
  • 第 3 部分:数据分析入门

    数据分析过程

    • 学习如何使用 Python 了解数据分析流程的主要步骤,运用 Python 和 Pandas 处理多个数据集。

    数据分析案例分析 - 1

    • 通过整个数据分析过程,研究关于葡萄酒样品化学性质和质量等级的数据集,并掌握更多使用 Python 进行数据分析的技能。

    数据分析案例分析 - 2

    • 研究一个更具挑战性的燃料经济性数据集,并更多地了解数据分析中的问题和策略。继续强化你的 Python 数据分析技能。

    数据分析的编程工作流

    • 该内容向你介绍在 Python 中进行分析的不同工作流程:IPython 的命令行界面、在文本编辑器中编写脚本,以及在终端中运行脚本。
    • 实战项目 2:探索分析电影数据集
  • 第 4 部分:统计学与机器学习入门

    描述统计学

    • 你将学习数据类型,中心度量和统计表达式的基础知识,了解与定量数据相关的离散程度测量,形状和异常值,并学习了解推论统计。

    概率、二项分布和贝叶斯公式

    • 学习概率知识、二项分布和贝叶斯公式,并掌握如何使用 Python 进行计算。

    推论统计学入门

    • 学习正态分布、抽样分布、置信区间以及假设检验的概念和计算方式。

    回归

    • 使用 Python 来拟合线性回归模型,学习如何解释线性模型的结果。

    多元线性回归

    • 学习在 Python 里应用多元线性回归、解释回归结果并判断模型拟合效果。

    逻辑回归

    • 学习如何在 Python 里应用逻辑回归、如何解释结果并判断模型拟合效果。
    • 实战项目 3:毕业项目

  • 选修内容:Python 中的线性代数

    简介

    • 探索美丽的数学世界,了解线性代数的基础知识,并了解它为何是如此重要的数学工具。

    向量

    • 了解线性代数的基本构建单元

    线性组合

    • 了解如何缩放和添加矢量,以及如何在2维和3维中对它们进行可视化

    线性变换和矩阵

    • 了解线性变换是什么以及它与矩阵的关系。 了解如何应用数学和可视 化概念。

    Labs

    • 向量 - 了解如何绘制 2D 和 3D 矢量图
    • 线性组合 - 学习如何通过计算来确定矢量的范围并求解简单的方程组
    • 线性映射 - 学习如何通过计算使用矢量和矩阵以解决问题。
  • 选修内容:微积分与神经网络

    简介

    • 可视化微积分的原理
    • 了解为什么它是数学中如此强大的概念

    几何求导

    • 了解导数,这是微积分中最重要的工具之一
    • 了解导数如何衡量函数的梯度,以及为什么它是机器学习领域中如此重要的一部分

    链式法则和向量点积

    • 学习如何找到两个或多个函数组合的导数,这是训练神经网络的一个非常重要的工具

    导数

    • 了解有关导数的更多知识,并学习指数函数和隐函数

    极限

    • 通过理解极限了解导数的定义

    积分

    • 了解导数的反向:积分

    神经网络中的微积分

    • 通过一个案例,了解有关神经网络世界的更多信息,并了解它如何直接与微积分相关
  • 选修内容:神经网络

    神经网络简介

    • 夯实深度学习和神经网络的理论基础

    训练神经网络

    • 了解如何优化神经网络训练的技巧,例如:early stopping, regularization and dropout

    通过 PyTorch 进行深度学习

    • 学习如何使用 PyTorch 搭建深度学习模型

    Lab:狗狗品种分类

    • 使用预训练的图像分类器识别狗的品种

    Lab:花卉图像分类

    • 你将编写自己的图像分类程序,使得你的模型可以从 102 种花卉图像数据集中学习,然后对新图像中花品种进行预测。
  • 选修内容:使用 GitHub 进行版本控制

    使用 Git 和 GitHub 进行版本控制

    • 了解版本控制的优势并安装 Git
    • 学习如何创建仓库和其他常用操作
    • 学习如何利用 git 的分支实现隔离开发过程
    • 学习如何在 GitHub 上创建远程仓库,以及如何获取和推送对远程仓库的更改

    在 GitHub 上发布你的作品

    • 建立你的仓库
    • 优化文档 重构代码
    • 合并分支
    • 发布你的作品
  • 选修内容:Anaconda 与 Jupyter Notebook

    Anaconda

    • 了解 Anaconda 是什么

    • 学习如何安装 Anaconda

    • 了解 Anaconda 的基础操作,如管理包、管理环境等

    Jupyter Notebooks

    • 了解 Jupyter Notebook 是什么

    • 学习如何安装 Jupyter Notebook

    • 了解 Jupyter Notebook 的基础操作

  • 选修内容:Shell 工作坊

    Shell 讲习班

    • 学习如何使用 Git Bash,以及基础操作

#2、机器学习工程师

周期 :26周(每周10h)

一站式学习系统掌握监督学习、非监督学习、深度学习、强化学习等热门技术,挑战实战应用。

先修知识:

掌握中级编程知识、中级统计学知识、中级微积分和线性代数知识。

  • 第一章:监督学习

    简介

    • 在深入研究多种机器学习算法之前,我们先了解整个领域的全局知识

    线性回归

    • 了解分类与回归的区别,学习如何使用线性回归来做预测

    感知器算法

    • 学习神经网络中的感知器,以及如何使用它进行分类

    决策树

    • 学习决策树,并使用决策树探索泰坦尼克号乘客存活模型

    朴素贝叶斯

    • 学习朴素贝叶斯原理,并构建垃圾邮件分类器

    支持向量机

    • 学习如何训练支持向量机以线性分离数据;

    • 使用核方法在非线性可分的数据上来训练 SVMs

    集成方法

    • 通过 boosting 提升传统方法;Adaboost

    模型评估维度

    • 学习评估模型的常用维度:准确率、精读、召回率等等。

    错误与优化

    • 了解训练过程中常见的错误类型,学习如何处理错误来优化模型性能。

    Lab:为银行提供精准营销方案

    • 练习机器学习基础技能,在实战中掌握预测的 pipeline。
    • 实战项目 1:航班延误预测(数据集由和鲸社区提供)
  • 第二章:深度学习

    神经网络简介

    • 学习深度学习基础,包括 softmax、one-hot encoding 和 cross entropy

    • 学习感知器与梯度下降

    实现梯度下降

    • 了解如何实现梯度下降,并实现一个反向传播

    训练神经网络

    • 学习如何训练神经网络,包括早期停止、正则化、dropout等知识

    PyTorch

    • 学习如何使用 PyTorch 构建神经网络,并在 Fashion-MNIST 数据集上学习图像分类与迁移学习。
    • 实战项目 2:人脸识别
  • 第三章:非监督学习

    聚类

    • 学习如何聚类算法,并尝试使用 k-means 对数据进行聚类

    层次聚类法与密度聚类

    • 学习单连接聚类法和层次聚类法,DBSCAN

    高斯混合模型与聚类验证

    • 学习高斯混合模型及相关示例,以及聚类分析过程和如何验证聚类结果。

    降维和 PCA

    • 了解降维的作用,并学习 PCA 的原理和使用场景

    随机投影与 ICA

    • 学习随机投影与独立成分分析,并通过 Lab 学习如何应用这些方法
    • 实战项目 3:创建客户细分
  • 第四章:软件工程

    软件工程练习

    • 编写清晰、注释充分的模块化代码
    • 重构代码并提高代码效率
    • 创建检验程序的单元测试
    • 通过日志记录进程操作和结果
    • 审阅代码

    编程

    • 了解何时使用面向对象编程;

    • 构建和使用类;

    • 了解如何创建大型模块化 Python 软件包并使用面向对象编程

    将软件包上传到 PyPI

    • 作品集练习:构建你自己的 Python 软件包
    • 案例演练:构建 PYTHON 软件包
  • 第五章:模型部署

    部署简介

    • 了解云端和部署术语

    • 了解生产环境中的机器学习工作流程

    • 了解机器学习的工作场所用例

    部署模型

    • 在 SageMaker 中部署模型

    • 使用 SageMaker 上的 XGBoost 预测波士顿房价

    • 使用 SageMaker 上的 XGBoost 判断影评情感

    网络托管

    • 学习如何从网站提供端点访问权限;

    • 使用 API Gateway 和 Lambda 将机器学习模型集成到网络应用中;

    模型监控

    • 了解如何监控模型随时间推移的行为;

    • 使用 SageMaker 的自动化超参数调节工具调节 XGBoost 模型的超参数;

    • 在 SageMaker 上运行 A/B 测试,比较调节过的模型与未调节的模型;

    更新模型

    • 在监控模型的过程中发现数据有变化后,相应地更新模型;

    • 了解如何处理在情感分析过程中添加到模型中的新短语;

    • 实战项目 5:部署情感分析模型

  • 第六章:机器学习案例研究

    利用 SageMaker 进行总体分割

    • 使用 AWS SageMaker 了解可用的算法广度;

    • 了解如何通过 SageMaker 使用非监督式算法分析数据;

    • 使用 SageMaker 部署非监督式模型;

    • 通过提取模型属性了解数据;

    检测信用卡欺诈行为

    • 构建并改善能识别付款欺诈行为的线性模型;

    • 处理训练数据类别不平衡的问题;

    • 在 SageMaker 中根据特定指标调节模型并改善模型性能;

    部署自定义模型

    • 使用 SageMaker 部署自定义 PyTorch 模型;

    • 编写自定义训练脚本,并训练你设计的模型;

    时间序列预测

    • 处理时间序列数据并调整数据格式,使数据适合训练机器学习模型;

    • 使用 SageMaker 的DeepAR 算法进行时间序列预测;

    • 部署模型并使用模型预测未来的数据点;

    • 实战项目 6:抄袭检测器

  • 第七章:毕业项目开题报告

    实战项目:毕业项目开题报告
    在正式开始毕业项目之前,你需要撰写一份开题报告来阐述自己的建模过程,并得到专业审阅者的建议。

  • 第八章:毕业项目

    实战项目:毕业项目(三选一)
    在毕业项目中,你将运用你在此纳米学位中学到的机器学习算法和方法选择一个你感兴趣的问题来解决。首先你需要定义 (define) 一个你想要解决的问题,调研可能的解决方案,并解释其衡量指标。其次,你需要通过数据可视化和数据挖掘分析 (analyze) 这个问题,以便对适于解决该问题的算法和特征有一个更好的了解。接着,你需要实现 (implement)你的算法和衡量指标。你需要记录下预处理、改善、后处理的整个过程。接下来,你需要收集这些模型的表现结果 (results) ,把重要的部分可视化,来验证或证明这些结果。最后,你要在你的结果基础上得出结论 (conclusions),讨论一下你的实现是否真的解决了这个问题。

    • 选择 1 - 自然语言处理方向
      项目 - 句子相似度匹配
      Quora Querstion Pairs数据集是Quora于2017年公开的句子匹配数据集,其通过给定两个句子的一致性标签标注,从而来判断句子是否一致。

    • 选择 2 - 数据挖掘方向
      项目预测 Rossmann 未来的销售额
      Rossmann 是欧洲的一家连锁药店。 在这个源自Kaggle比赛 Rossmann Store Sales,我们需要根据 Rossmann 药妆店的信息(比如促销,竞争对手,节假日)以及在过去的销售情况,来预测它未来的销售额。

    • 选择 3 - 计算机视觉方向
      项目 - 猫狗大战
      使用深度学习方法识别一张图片是猫还是狗。

    注: 由于技术的快速迭代,中国区教研团队将根据当前热点对毕业项目选题进行实时更新,请以教室中的选题为准。


  • 先修知识:Python 与数据分析

    数据类型和运算符

    • 你将学习 Python 中用到的所有数据类型和运算符,如字符串、列表、元组、集合、字典等;

    控制流

    • 学习如何通过控制流为你的程序创建逻辑;

    函数

    • 你将学习如何定义函数。还将学习如何将程序拆分为多个部分,使得代码的结构更加合理。

    脚本编写

    • 了解如何编写脚本,学习用来开发程序的不同环境,有助于之后与他人合作编程;

    NumPy

    • 在这节课,你将学习 NumPy 基本知识,以及如何使用 NumPy 创建和操作数组。

    Pandas

    • 在这节课,你将学习 Pandas Series 和 DataFrame 基本知识,以及如何使用它们加载和处理数据。
  • 先修知识:SQL 与数据分析

    基本 SQL

    • 学习在单个表中使用 SQL 的基础知识;学习以许多不同方式过滤表的关键命令;

    SQL JOIN

    • 学习如何将多个表格中的数据组合到一起;

    SQL 聚合

    • 学习如何使用 SUM、AVG 和 COUNT 等 SQL 函数整合数据。此外,CASE、HAVING 和 DATE 函数是非常强大的问题解决工具;

    SQL 子查询和临时表格

    • 学习使用子查询来回答更加负责的商业问题;

    SQL 数据清理

    • 数据清理是数据分析的重要步骤,你在本课中将会学到如何使用 SQL 进行数据清理;

    窗口函数

    • 学习强大的数据分析工具——窗口函数;

    SQL 全连接与性能优化

    • 学习 SQL 的高级用法,了解如何在大数据上使用查询语句;
  • 选修内容:Python 与数据可视化

    数据分析中的数据可视化

    • 了解数据可视化成为数据分析重要组成部分的原因以及它的适用范围。

    可视化的设计

    • 了解可视化设计的元素,尤其要避免使用那些可能导致不良可视化的元素;

    单变量数据探索

    • 学习如何利用 matplotlib 和 seaborn 可视化单变量数据;

    双变量数据探索

    • 学习使用 matplotlib 和 seaborn 探索双变量数据,根据对变量的理解,构建变量之间的关系;

    多变量数据探索

    • 学习如何使用 Matplotlb 和 Seaborn 可视化多个变量(三个或三个以上)之间的关系;

    解释性数据可视化

    • 学习如何修饰图表让你的信息得到精准地传达;

    可视化案例分析

    • 运用之前学到的关于解释性和探索性可视化的技巧,来探索钻石价格的影响因素;

    补充主题

    • 在本附加课程中,你可以阅读有关本课程的其他可视化方法和图类型的信息。
  • 选修内容:应用统计学

    描述统计学

    • 学习数据类型,中心度量和统计表达式的基础知识;
    • 了解与定量数据相关的离散程度测量,形状和异常值,并学习了解推论统计。

    录取案例分析

    • 学习辛普森悖论,学会提正确的问题。

    概率

    • 利用硬币和骰子获得概率基础知识。

    二项分布

    • 学习概率中最流行的分布之一:二项分布。

    条件概率

    • 并不是所有事件都是独立的。学习相关事件的概率规则。

    贝叶斯规则

    • 学习概率中最流行的一种规则:贝叶斯规则。

    Python 概率练习

    • 利用上节课所学知识,应用到 Python 实践中。

    正态分布理论

    • 学习从掷硬币到正态分布背后的数学知识。

    抽样分布与中心极限定理

    • 学习置信区间和假设检验的基础:抽样分布。
  • 选修内容:NLP 基础

    NLP 简介

    • 了解自然语言模型中文本的表示方式; 使用“Bag-of-Words”、“ TF-IDF”、“ Word2Vec”和“ GloVE”之类的方法来转换文本。

    Pytorch 实现 RNN 和 LSTM

    • 学习如何用代码表示记忆功能。然后在 PyTorch 中定义和训练 RNN 并将它们用于处理序列数据。

    在线 Lab:Pytorch实现情感分析 RNN

    • 实现一个判定影评是正面还是负面影评的情感分析 RNN。

    线性变换和矩阵

    • 什么是线性变换,它与矩阵有何直接联系?你将学习如何运用数学知识并可视化这些概念。
  • 选修内容:卷积神经网络

    卷积神经网络

    • 卷积神经网络可以识别空间图案。Alexis 和 Cezanne 将介绍卷积神经网络如何帮助我们显著提高图像分类的效果。

    迁移学习

    • 学习如何通过迁移学习将预训练的网络应用到新任务上。

    权重初始化

    • 在这节课,你将学习如何为神经网络设置合适的初始权重。合适的初始权重使神经网络更接近最佳模型。

    自动编码器

    • 自动编码器是用于数据压缩,图像降噪和降维的神经网络。在这里,你将使用 PyTorch 构建自动编码器。

#3、计算机视觉

周期 :16周(每周10~15h)

先修要求

掌握 Python、统计学和机器学习相关知识

计算机视觉基础:学习高端的计算机视觉和深度学习技术,从基础图像处理着手,构建和定制卷积神经网络。掌握前沿深度学习框架,Pytorch,Tensorflow 和 Keras,将这些概念应用于视觉相关项目中,如自动图像标注与对象跟踪,并构建出自己出彩的项目作品集。

先修知识

你需要事先掌握 Python、统计学与机器学习相关知识。

  • 第一部分:计算机视觉入门

    掌握计算机视觉和图像处理基础知识。学会从图像数据中提取重要特征,并将深度学习技术应用在人脸关键点检测任务中。

    • 欢迎学习计算机视觉课程
    • 图像表示法和分类
    • 卷积过滤器和边缘检测
    • 特征类型和图像分割
    • 特征向量
    • CNN 层级和特征可视化
    • 实战项目 1:面部关键部位检测
  • 第二部分:高阶计算机视觉与深度学习

    学习将深度学习的架构应用于计算机视觉相关工作中。了解如何结合 CNN 和 RNN 网络构建自动图像标注的应用。

    • 高级 CNN 架构
    • YOLO
    • RNN
    • 长短期记忆网络(LSTM)
    • 超参数
    • 深度学习注意力机制
    • 图像说明
    • 项目:图像说明
    • 选修:云计算
    • 实战项目 2:图像描述
  • 第三部分:目标检测与定位

    了解如何定位对象并随着时间的推移进行追踪。这类技术已被用于各种移动系统,如无人驾驶车导航和无人机飞行中。

    • 动作简介
    • 机器人定位
    • 迷你项目: 二维直方图滤波器
    • 卡尔曼滤波器简介
    • 状态与移动
    • 矩阵和状态变换
    • 即时定位与地图构建
    • 选修:车辆运动和微积分
    • 实战项目 3:地标检测和机器人跟踪 (SLAM)
  • 第四部分:云计算(选修)

    学习如何利用 Google Cloud 与 AWS 上的 GPU 进行机器学习和科学计算。

    • 用 Google Cloud 进行云计算
    • 用 AWS 进行云计算
  • 第五部分:计算机视觉与深度学习的应用(选修)

    使用其他人在 Github 上贡献的预训练模型,尝试几个非常酷的计算机视觉和深度学习应用,例如风格迁移。

    • 风格迁移
    • DeepTraffic
    • Flappy Bird
    • 课外图书
  • 第六部分:[回顾] 训练神经网络(选修)

    复习训练神经网络的基础知识,了解神经网络是如何训练的。

    • 前向反馈与反向传播
    • 训练神经网络
    • 通过 PyTorch 进行深度学习
  • 第七部分:[实战] 皮肤癌检测(选修)

    Sebastian Thrun 向我们讲述了他用卷积神经网络探测皮肤癌的开创性工作。

    • 项目简介
    • 皮肤癌与医学分类
    • 数据挑战
    • 训练神经网络
    • 敏感性与特异性
    • 癌症诊断
    • ROC 曲线回顾
    • 可视化
    • 神经网络关注的是什么
    • 混淆矩阵
    • 迷你项目:皮肤科医生的人工智能
  • 第八部分:[实战] 文本情感分析(选修)

    在这节课中,《Grokking Deep Learning》一书的作者 Andrew Trask,将指导你一步步来运用神经网络进行情感分析。具体而言,你将构建一个神经网络,完全根据评论文本内容将影评归类为正面影评或负面影评!

    • 认识 Andrew Trask
    • 分析问题
    • 迷你项目 1
    • 迷你项目 2
    • 迷你项目 3
    • 理解神经网络中的噪音
    • 迷你项目 4
    • 迷你项目 5
    • 进一步减少噪音
    • 迷你项目 6
    • 分析与总结
  • 第九部分:更多深度学习模型(选修)

    在这节课中,《Grokking Deep Learning》一书的作者 Andrew Trask,将指导你一步步来运用神经网络进行情感分析。具体而言,你将构建一个神经网络,完全根据评论文本内容将影评归类为正面影评或负面影评!
    场景理解

    • 全卷积神经网络
    • 语义分割

    3D CNN 架构

    • 简介
    • 手势识别
    • 端到端学习
    • 实现手势识别 3D CNN
  • 第十部分:C++ 编程(选修)

    在这节课中,学习基础 C++ 编程知识。
    C++ 基础

    • C++ 入门
    • C++ 向量
    • C++ 实战
    • C++ 面向对象编程
    • Python 和 C++ 的速度

    C++ 的性能编程

    • C++ 优化实战
    • 实战项目:高性能粒子滤波器

你可能感兴趣的:(GitHub,计算机视觉)