(2023版)斯坦福CS231n学习笔记:DL与CV教程 (1) | 引言与知识基础

在这里插入图片描述

前言

  • 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)
  • 🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5
  • 💻 CS231n: 深度学习计算机视觉(2017)中文笔记:https://zhuxiaoxia.blog.csdn.net/article/details/80155166
  • 🔥 2023最新课程PPT:https://download.csdn.net/download/Julialove102123/88734395

1.课程简介

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

课程最后一版公开课视频为2017版,但是课程PPT最新的已经更新到2023版,见「2023最新CS231NPPT」,此外,需要关注进阶技术内容的同学可以看一下「密歇根EECS498:深度学习与计算机视觉课程(2019)」

2. 课程内容

第1部分 Lecture1-3 深度学习背景知识简单介绍

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

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

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

第3部分 Lecture10-16 计算机视觉应用

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

3. 课程学习目标

  1. 实用技能:理解如何从头开始编写、调试和训练卷积神经网络。

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

  3. 应用创作:一些有趣的主题,如「看图说话」(结合 CNN + RNN),再如下图左边的 DeepDream,右边的神经风格迁移 NeuralStyle 等。

4. 课程先修条件

1)熟悉 Python(并了解 numpy 的使用),本课都用 Python 编写,如果要阅读理解软件包的源代码 C++ 会有帮助。

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

3)有机器学习的背景,大概 CS229 水平,非常重要核心的机器学习概念会再介绍的,如果事先熟悉这些会对课程有帮助的,我们将制定成本函数,利用导数和梯度下降进行优化。可前往文末获取 ShowMeAI 原创的CS229课程速查表。

4)有计算机图像基础会更好,但不是非常严格。

5. 计算机视觉简介

5.1 计算视觉历史

在这里插入图片描述

  1. 16世纪最早的相机:暗箱

  2. 1963年第一篇计算机视觉博士论文「Block world-Larry Roberts」,视觉世界简化为简单的几何形状,识别它们,重建这些形状。

  3. 1996年MIT暑期项目「The Summer Vision Project」目的是构建视觉系统的重要组成部分。

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

  5. 1973年后对于如何识别和表示对象,斯坦福科学家提出「广义圆柱体」和「圆形结构」,每个对象都是由简单的几何图形单位组成。

  6. 1987年 David Lowe 尝试用 线 和 边缘 来构建识别。

  7. 1997年 Shi & Malik 提出,若识别太难了,就先做目标分割,就是把一张图片的像素点归类到有意义的区域。

  8. 2001年此时的机器学习也快速发展了(尤其是统计学习方法),出现了SVM(支持向量机模型)、boosting、图模型等方法。Viola & Jones 发表了使用 AdaBoost 算法进行实时面部检测的论文 「Face Detection」,而后2006年富士推出可以实时面部检测的数码相机

  9. 1999 年 David Lowe 发表 “SIFT” & Object Recognition,提出 SIFT 特征匹配,思路是先在目标上确认关键特征,再把这些特征与相似的目标进行匹配,来完成目标识别。从90年代到2000年的思想就是基于特征的目标识别。

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

  11. 2005年后来的研究 方向梯度直方图 和 可变形部件模型,目的是将特征放在一起后,如何辨认人体姿态。

  12. 21世纪早期,数码相机快速发展,图片质量提高,也真正有了标注的数据集,它能够衡量目标识别的成果。数据集 PASCAL Visual Object Challenge 有 20 个类别,每个种类有成千上万张图片,供团队开发算法来和数据测试集做对抗训练,来看检测效果有没有优化。

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

因此有了两方面动力:① 识别万物;② 克服机器学习的瓶颈-过拟合问题。

  1. 针对上述问题开展了 ImageNet 项目,在网络上收集了上亿张图片,用 WordNet 字典来排序,这个字典有上万个物体类别,不得不用 Amazon Mechanical Turk 平台来排序、清洗数据、给每张图片打上标签,最终得到的 ImageNet 有 1500 万甚至 4000 万图片分成了 22000 多类的物体或场景。它将目标检测算法的发展推到了新高度。

  2. 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. 拓展学习

  1. 「2023最新CS231NPPT」,
  2. 「密歇根EECS498:深度学习与计算机视觉课程(2019)」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/322331.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis 分页插件 PageHelper

今天记录下 Mybatis 分页插件 pageHelper 的使用。 背景 有一个员工表(employee),现在要使用 pageHelper 插件实现员工的分页查询。 员工表 create table employee (id bigint auto_increment comment 主键primary key,name varchar(32) not …

springboot基于WEB的旅游推荐系统设计与实现

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1选题动因 当前…

Unity使用Protobuf

1.下载Protobuf ProtoBuf 2.打开它并且编译 如果有报错下载相应的.net版本即可 这里默认是6.0.100 由于我本机是8.0.100所以我改了这个文件 3.编译后的文件复制到Unity Assets/Plugins下 4.写个测试的proto文件 5.然后使用protoc生成 这里实现了一个简单的bat批量生成 Protos C…

postman上传文件文件名有黄色图标

问题: 解决方案 步骤一:设置处打开settings 步骤二:打开location,选择文件所在磁盘目录 步骤三:关闭选项框 文件报错问题解决

cmd输入Python后Python环境无反馈,空

我用cmd输入Python后Python环境无反馈没打开Python环境。 解决方法: 一、打开电脑 [设置] 或 [控制面板] ; 二、点到 [系统] 或 [系统和安全] 后,你要看一下找到 [系统信息] 然后点击; 三、 [高级系统设置] 点击后跳出 [系统属…

Pixart PAR2861 蓝牙 keyboard 开发笔记

Pixart PAR2861 是一款采用32 bits ARM Cortex-M0 低功耗、高效能 2.4GHz RF 的 SoC。 该 SoC 整合了高效能的 2.4GHz RF 收发器、硬体Keyscan、硬体按键防弹跳、SPI、I2C、PWM LED、ADC、UART等。内建 DC/DC 转换器和 LDO 为独立 HID 应用提供完整的低功耗 SoC 解决方案。 1.…

uniapp下各端调用三方地图导航

技术栈 开发框架: uniappvue 版本: 2.x 需求 使用uniapp在app端(Android,IOS)中显示宿主机已有的三方导航应用,由用户自主选择使用哪家地图软件进行导航,选择后,自动将目标地址设为终点在导航页面。 使用…

宋仕强论道之华强北的“熵增”定律(四十二)

熵增”是热力学第二定律概念,描述了关于生命体的能量耗散的问题,即当一个封闭系统内没有新的能量输入时,就会逐渐失能无序发展至混乱直至混沌状态,后面我还会讲到“华强北的焓值”。华强北目前的情况就是“熵增”现象非常严重,人流…

SpringBoot---CRUD测试案例:

1. 概述 本次案例模拟公司后端人员开发场景: 当前案例的前端工程,前端人员已经帮我们开发好了,我们只需要关注服务端接口的开发。 1.1 页面原型 产品经理绘制的的页面原型的展示效果: 成品展示:完成部门管理和员工…

曲线生成 | 图解贝塞尔曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 贝塞尔曲线的应用2 图解贝塞尔曲线3 贝塞尔曲线的性质4 算法仿真4.1 ROS C仿真4.2 Python仿真4.3 Matlab仿真 0 专栏介绍 🔥附C/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法…

CAN工具 - ValueCAN3 - 基础介绍

关注菲益科公众号—>对话窗口发送 “CANoe ”或“INCA”,即可获得canoe入门到精通电子书和INCA软件安装包(不带授权码)下载地址。 CAN/CANFD通讯广泛存在于整个车载网络中,几乎每一块软硬件的开发都需要用到CAN工具&#xff0c…

iOS UIViewContentMode 不同效果图文对比

一. iOS提供了的ContentMode有如下几种 其中默认mode是UIViewContentModeScaleToFill typedef NS_ENUM(NSInteger, UIViewContentMode) {UIViewContentModeScaleToFill,UIViewContentModeScaleAspectFit, // contents scaled to fit with fixed aspect. remainder is tr…

leetcode第365题:水壶问题

有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到 targetCapacity 升。 如果可以得到 targetCapacity 升水,最后请用以上水壶中的一或两个来盛放取得的 targetCapacity 升水。 你可以&a…

使用composer构建软件包时文件(夹)权限设置

在构建软件包的时候你可能会需要对包源内文件或文件夹的权限做出相应的调整,以确保软件包在部署到客户端后可以正常运行。在此之前我们先来了解一下Apple文件系统内文件或文件夹的权限设定。 常见的文件或文件夹会有Owner, Group, Everyone这三种类型的所有权&#…

C++力扣题目108--有序数组转换为二叉平衡搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例 1: 输入:nums [-10,-3,0,5,9] 输…

数据结构学习 数位dp

关键词:数位dp 记忆化搜索 dfs 数位dp属于比较难的题目,所有数位dp在leetcode都是hard。 因为没有做出jz43.里面用到了数位dp,所以去学习了一下,学习看了这位大神的基础知识。 题目基本上是跟着这位灵大哥的题单做的。 学完数…

Hive分区表实战 - 多分区字段

文章目录 一、实战概述二、实战步骤(一)创建学校数据库(二)创建省市分区的大学表(三)在本地创建数据文件1、创建四川成都学校数据文件2、创建四川泸州学校数据文件3、创建江苏南京学校数据文件4、创建江苏苏…

ubuntu打开epub格式的文件

Koodo Reader 是一个开源免费的电子书阅读器,支持多达15种主流电子书格式, 内置笔记、高亮、翻译功能,助力高效书籍阅读和学习。 官网地址 拖拽到此处即可添加图书 支持滚轮和点击翻页 菜单在这里 可以记笔记 查看笔记

大数据开发之Hive(压缩和存储)

第 9 章:压缩和存储 Hive不会强制要求将数据转换成特定的格式才能使用。利用Hadoop的InputFormat API可以从不同数据源读取数据,使用OutputFormat API可以将数据写成不同的格式输出。 对数据进行压缩虽然会增加额外的CPU开销,但是会节约客观…

CTFhub-phpinfo

CTFhub-Web-信息泄露-“phpinfo” 题目信息 解题过程 ctrlF搜索关键字…