一、计算机视觉及其应用
计算机视觉是赋予计算机“看”的能力的学科,研究如何自动理解图像和视频中的内容
- 计算机视觉的应用
图像识别、人脸识别
自动驾驶、环境感知
图像生成、画风迁移
视频理解与自动剪辑
根据文本描述生成图片
- 计算机视觉学习
斯坦福cs231n课程
b站同济子豪兄cs231n中文精讲
北邮鲁鹏-计算机视觉与深度学习
二、机器学习和神经网络简介
机器学习基础
1.1机器学习是什么?
正如汤姆·米特切尔所说,用于从数据中学习经验,以解决特定问题
1.2机器学习的应用
- 人脸识别
- 机器翻译
- 语音识别
4.强化学习
1.3机器学习的典型范式
以上图片包含部分机器学习的典型范式,不够全面,例如半监督学习(或称自监督学习)未在上图中展现,让学习器不依赖外界交互、自动地利用未标记样本来提升学习性能,就是半监督学习,在进行计算机辅助医学影像分析时,可以从医院获得大量医学影像,但是希望医学专家把影像中的病灶全部标识出来则是不现实的。半监督学习则提供了一条利用“廉价”的未标记样本的途径。
1.4机器学习中的分类问题——垃圾邮件分类举例
特征与分类
基础分类器——线性分类器
感知器、与分类器参数求解
1.5 机器学习的基本流程——以分类问题为例
三、神经网络——拟合能力强大的函数
不同于线性分类器只能解决线性分类问题,神经网络由于其相对线性分类器更为复杂的结构和激活函数的加入,使其可以模拟较为复杂的非线性函数,用于多分类任务和非线性预测问题。
神经元的引入
神经网络中神经元的结构与生物体中神经元的结构相似,通过权重weight和偏置bias来对输入数据进行线性变换,而后再通过引入激活函数,给神经网络加入非线性变换,对输入数据进行非线性压缩,使其能解决非线性预测问题。
常见的激活函数有:Softmax、Sigmoid、Relu等。
多层感知器
与上文中所提到的线性感知器最大的不同是,一是引入非线性激活函数;二是层数的堆叠。层数堆叠和隐层中神经元个数的增加可以使得神经网络的非线性函数拟合能力增强,但是应注意避免出现过拟合的问题。
多分类任务
四、神经网络的训练
- 训练目标
找到使得神经网络在目标任务上可达到最高性能的可学习参数的值
- 损失函数:衡量神经网络的性能
- 降低损失——梯度下降算法、调整权重w
神经网络的训练目标是找到一组最优可学习参数w的值,使得神经网络的性能最好,等价于找到一组参数W的值,使得损失函数的值最小。
梯度的计算过程需要用到链式求导法则,其过程根据计算方向可分为正向传播和反向传播(Hinton 1986)
- 正向传播与反向传播算法
- 梯度下降算法存在的问题与改进:优化器——动量的引入
- 基于梯度下降训练神经网络的整体流程
五、卷积神经网络CNN
- CNN整体结构
- 卷积层——特征提取
卷积层可以增加边缘填充(padding)、步长(stride)和空洞(dilation)
2.1 边缘填充(padding)
2.2 步长
2.3池化层Pooling Layer
2.4 概率输出层
- 特征与分类的角度理解CNN
六、Pytorch基本使用
pytorch的基本模块包括以下内容:
- 数值计算库torch
- 自动求导torch.autograd
- 函数库 torch.nn.functional
- 通用模型封装torch.nn.Module
- 优化器torch.optim
- 数据工具 torch.utils.data
- Pytorch发展
Pytorch现已推出2.0.0dev版本,2.0版本与1.x相比性能提升巨大,同时引入torch.compile()函数,预计于2023.3月或4月份推出2.0正式版。敬请关注