乐趣区

关于计算机视觉:深度学习与CV教程1-引言与知识基础

  • 作者:韩信子 @ShowMeAI
  • 教程地址:http://www.showmeai.tech/tutorials/37
  • 本文地址:http://www.showmeai.tech/article-detail/260
  • 申明:版权所有,转载请分割平台与作者并注明出处
  • 珍藏 ShowMeAI 查看更多精彩内容

本系列为 斯坦福 CS231n《深度学习与计算机视觉 (Deep Learning for Computer Vision)》的全套学习笔记,对应的课程视频能够在 这里 查看。更多材料获取形式见文末。


1. 课程简介

CS231n 是顶级院校斯坦福出品的深度学习与计算机视觉方向专业课程,核心内容笼罩神经网络、CNN、图像识别、RNN、神经网络训练、注意力机制、生成模型、指标检测、图像宰割等内容。

  • 课程最初一版公开课视频为 2017 版,须要最新进阶技术内容的同学能够关注 ShowMeAI 公布的 cs231n 进阶课程
  • 心愿对于深度学习进行一个全面学习理解的同学,能够浏览学习 ShowMeAI 的 深度学习教程 | 吴恩达专项课程 · 全套笔记解读

2. 课程内容介绍

2.1 第 1 局部 Lecture1-3 深度学习背景常识简略介绍

  • 课程引入与介绍
  • KNN 和线性分类器
  • Softmax 和 SVM 两种损失函数
  • 优化算法(SGD 等)

2.2 第 2 局部 Lecture4-9 卷积神经网络

  • CNN 及各种层次结构(卷积、池化、全连贯)
  • 反向流传及计算方法
  • 优化的训练方法(Adam、Momentum、Dropout、Batch-Normalization)
  • 训练 CNN 的注意事项(参数初始化与调优)
  • 深度学习框架(TensorFlow、Caffe、Pytorch)
  • 线性 CNN 构造(AlexNet、VGGNet、GoogLeNet、ResNet)

2.3 第 3 局部 Lecture10-16 计算机视觉利用

  • RNN(语言模型,image captioning 等)
  • 指标检测(R-CNN、Fast / Faster R-CNN、YOLO、SSD 等)
  • 语义宰割(FCN、Unet、SegNet、deeplab 等)
  • 神经网络可视化与可解释性
  • 生成模型与 GAN
  • 深度强化学习

3. 课程学习指标

3.1 实用技能

了解如何从头开始编写、调试和训练卷积神经网络。

3.2 工具技术

集中于大规模训练这些网络的实用技术,以及 GPU(例如,将波及分布式优化、CPU 与 GPU 之间的差别等),还能够查看诸如 Caffe、TensorFlow 和 (Py)Torch 等最先进的软件工具的现状。

3.3 利用创作

一些乏味的主题,如「看图谈话」(联合 CNN + RNN),再如下图右边的 DeepDream,左边的神经格调迁徙 NeuralStyle 等。

4. 课程先修条件

1)相熟 Python(并理解 numpy 的应用),本课都用 Python 编写,如果要浏览了解软件包的源代码 C++ 会有帮忙。

2)大学微积分(如求导),线性代数(理解矩阵)。

3)有机器学习的背景,大略 CS229 程度,十分重要外围的机器学习概念会再介绍的,如果当时相熟这些会对课程有帮忙的,咱们将制订老本函数,利用导数和梯度降落进行优化。可返回文末获取 ShowMeAI 原创的 CS229 课程速查表。

4)有计算机图像根底会更好,但不是十分严格。

5. 计算机视觉简介

5.1 计算视觉历史

16 世纪最早的相机:暗箱

1963 年第一篇计算机视觉博士论文「Block world-Larry Roberts」,视觉世界简化为简略的几何形态,辨认它们,重建这些形态。

1996 年 MIT 暑期我的项目「The Summer Vision Project」目标是构建视觉零碎的重要组成部分。

1970s 的 MIT 视觉科学家 David Marr 编写了《VISION》,内容有计算机视觉的了解、解决开发、辨认算法,他提出了视觉体现的阶段,如原始草图的 零交叉点,圆点,边缘,条形,末端,虚构线,组,曲线边界等概念

1973 年后对于如何辨认和示意对象,斯坦福科学家提出「狭义圆柱体」和「圆形构造」,每个对象都是由简略的几何图形单位组成。

1987 年 David Lowe 尝试用 线 边缘 来构建辨认。

1997 年 Shi & Malik 提出,若辨认太难了,就先做指标宰割,就是把一张图片的像素点归类到有意义的区域。

2001 年此时的机器学习也疾速倒退了(尤其是 统计学习办法 ),呈现了 SVM( 反对向量机模型)、boosting、图模型等办法。Viola & Jones 发表了应用 AdaBoost 算法进行实时面部检测的论文「Face Detection」,而后 2006 年富士推出能够实时面部检测的数码相机。

1999 年 David Lowe 发表 “SIFT” & Object Recognition,提出 SIFT 特色匹配,思路是先在指标上确认要害特色,再把这些特色与类似的指标进行匹配,来实现指标辨认。从 90 年代到 2000 年的思维就是基于特色的指标辨认。

2006 年 Lazebnik, Schmid & Ponce 发表「Spatial Pyramid Matching」,图片里的各种特征描述了不同场景,空间金字塔匹配算法的思维就是从图片的各局部各像素抽取特色,并把他们放在一起作为一个特色描述符,而后在特色描述符上做一个反对向量机。

2005 年起初的钻研 方向梯度直方图 可变形部件模型,目标是将特色放在一起后,如何识别人体姿势。

21 世纪晚期,数码相机疾速倒退,图片品质进步,也真正有了标注的数据集,它可能掂量指标辨认的成绩。数据集 PASCAL Visual Object Challenge 有 20 个类别,每个品种有成千上万张图片,供团队开发算法来和数据测试集做反抗训练,来看检测成果有没有优化。

而后普林斯顿和斯坦福提出怎么辨认大部分物体,这个问题也是由机器学习中的一个景象驱动的,机器学习算法在训练过程中很可能会过拟合(只对现有的这些数据完满拟合,但对未知数据不肯定完满)。局部起因是可视化的数据非常复杂(像是记住了每道题),从而模型维数比拟高,输出是高维的模型,并且还有一堆参数要调优,当咱们的训练数据量不够时很快就会产生过拟合景象,这样就无奈很好的泛化。

因而有了两方面能源:① 辨认万物② 克服机器学习的瓶颈 - 过拟合问题

针对上述问题发展了 ImageNet(http://www.image-net.org/)我的项目,在网络上收集了上亿张图片,用 WordNet 字典来排序,这个字典有上万个物体类别,不得不用 Amazon Mechanical Turk 平台来排序、荡涤数据、给每张图片打上标签,最终失去的 ImageNet 有 1500 万甚至 4000 万图片分成了 22000 多类的物体或场景。它将指标检测算法的倒退推到了新高度。

2009 年为了推动基准测试的停顿,ImageNet 开始组织了 ImageNet 大规模视觉辨认比赛 ,筛选了更严格的测试集,140 万指标图像 有 1000 种指标类别,分类辨认来测试计算机视觉算法。

下图为图像分类后果,纵轴为比赛结果的错误率,2012 年的错误率降落的十分显著,这一年获头奖的算法是一种卷积神经网络模型。

5.2 计算机视觉近代技术倒退

卷积神经网络Convolutional Neural Networks,CNN)已成为图像识别中最重要的模型之一。

2010 年的 NEC-UIUC 依然用到了 层次结构 检测边缘 不变特色。在 2012 年才有重大突破,多伦多的博士生和导师发明了 7 层的 CNN,称为 SuperVision 当初叫做 AlexNet

2014 年谷歌的 GoogLeNet 和牛津大学的 VGG 有 19 层网络。

2015 年微软亚洲研究院发表了残差网络,有 152 层。

CNN 早在 1998 年由 Yann LeCun 团队在贝尔实验室创造的,他们应用 CNN 进行数字辨认,用于辨认手写支票和邮件地址,过后的 CNN 和后续的很多典型 CNN 模型构造是类似的,输出是原始像素,有很多卷积层和下采样以及全连贯层。

随着计算机算力的晋升,像 GPU 这种 图像处理单元超高的并行计算能力引入 ,人们开发出了 更大的 CNN 模型和架构

在算力的撑持下,只扩充模型的规模,沿用经典的办法和算法就能有很好的后果,这种减少计算的思维有着很重要的位置。还有数据的翻新,当初有了很多标记的数据,咱们能够实现更弱小的模型。

起初也有很多翻新的 CNN 构造引入,帮忙模型能够在更大更深的状况下,也能够很好地训练和反抗过拟合。

对视觉智能的摸索远远超出了图像识别的范畴,如图像 语义宰割 知觉分组 他们没有给整张图片打上标签,咱们要了解的是每个像素。这些工作是 3D 重构 动作辨认 加强事实 虚拟现实 等重要的撑持。

如老师 Johnson 在 2015CVPR 发表的「Image Retrieval using Scene Graphs」,视觉基因组这个数据集,不仅框出物体还要形容图像,作为整个大图形语义相干的概念,不仅包含对象的身份,还包含对象关系、对象属性、动作等,视觉零碎能够做很多事件。

当看到上方的图片时人们能够丰盛的形容这个场景,借助于他们的储备常识和过往教训又能够详细描述每个人的身份历程等。

这是典型的计算机视觉工作「看图谈话 / image captioning」,它以一种十分丰盛而粗浅的形式去了解一张图片的故事,也是目前仍旧在一直推动的钻研畛域之一。

6. 拓展学习

能够点击 B 站 查看视频的【双语字幕】版本

https://www.bilibili.com/vide…

  • 【课程学习指南】斯坦福 CS231n | 深度学习与计算机视觉
  • 【字幕 + 材料下载】斯坦福 CS231n | 深度学习与计算机视觉 (2017·全 16 讲)
  • 【CS231n 进阶课】密歇根 EECS498 | 深度学习与计算机视觉
  • 【深度学习教程】吴恩达专项课程 · 全套笔记解读
  • 【Stanford 官网】CS231n: Deep Learning for Computer Vision
  • 【CS229 常识技能速查】机器学习 - 监督学习
  • 【CS229 常识技能速查】机器学习 - 无监督学习
  • 【CS229 常识技能速查】机器学习 - 神经网络
  • 【CS229 常识技能速查】机器学习 - 教训与技巧

斯坦福 CS231n 全套解读

  • 深度学习与 CV 教程(1) | CV 引言与根底
  • 深度学习与 CV 教程(2) | 图像分类与机器学习根底
  • 深度学习与 CV 教程(3) | 损失函数与最优化
  • 深度学习与 CV 教程(4) | 神经网络与反向流传
  • 深度学习与 CV 教程(5) | 卷积神经网络
  • 深度学习与 CV 教程(6) | 神经网络训练技巧 (上)
  • 深度学习与 CV 教程(7) | 神经网络训练技巧 (下)
  • 深度学习与 CV 教程(8) | 常见深度学习框架介绍
  • 深度学习与 CV 教程(9) | 典型 CNN 架构 (Alexnet, VGG, Googlenet, Restnet 等)
  • 深度学习与 CV 教程(10) | 轻量化 CNN 架构 (SqueezeNet, ShuffleNet, MobileNet 等)
  • 深度学习与 CV 教程(11) | 循环神经网络及视觉利用
  • 深度学习与 CV 教程(12) | 指标检测 (两阶段, R-CNN 系列)
  • 深度学习与 CV 教程(13) | 指标检测 (SSD, YOLO 系列)
  • 深度学习与 CV 教程(14) | 图像宰割 (FCN, SegNet, U-Net, PSPNet, DeepLab, RefineNet)
  • 深度学习与 CV 教程(15) | 视觉模型可视化与可解释性
  • 深度学习与 CV 教程(16) | 生成模型 (PixelRNN, PixelCNN, VAE, GAN)
  • 深度学习与 CV 教程(17) | 深度强化学习 (马尔可夫决策过程, Q-Learning, DQN)
  • 深度学习与 CV 教程(18) | 深度强化学习 (梯度策略, Actor-Critic, DDPG, A3C)

ShowMeAI 系列教程举荐

  • 大厂技术实现:举荐与广告计算解决方案
  • 大厂技术实现:计算机视觉解决方案
  • 大厂技术实现:自然语言解决行业解决方案
  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程:吴恩达专项课程 · 全套笔记解读
  • 自然语言解决教程:斯坦福 CS224n 课程 · 课程带学与全套笔记解读
  • 深度学习与计算机视觉教程:斯坦福 CS231n · 全套笔记解读

退出移动版