深度学习个人整理

news/2024/10/25 7:33:02/

在这里插入图片描述

深度学习

概念

DL Deep Learning 机器学习的一个分支

机器学习分类

  • 监督学习

    • 特点:已知类别数据学习

    • 因变量是否连续

      • 分类

        • 连续
        • 房价,体重,天气
      • 回归

        • 不连续
        • 是否患癌症
    • 算法

      • k-近邻算法 KNN

      • 决策树

      • 支持向量机 SVM

      • 神经网络

      • 线性模型

        • 线性回归 Linear Regression
        • 逻辑归回 Logistic Regression
      • 朴素贝叶斯

      • 随机森林

  • 非监督学习

    • 特点:未知类别数据学习

    • 算法

      • k-means 聚类
      • 分层聚类算法
      • 最大期望算法
      • 主成分分析 PCA
  • 半监督学习

    • 同时使用已知和未知数据学习

神经网络

  • 神经元线性模型

    • y = wx + b
  • BP神经网络工作过程

    • 前向传播

      • 把神经网络从输入到输出计算过程,并计算预测值与真实值之间的差值

      • 流程

        • 神经网络节点

          • 神经元模型,线性变化,一次线性变化为一层网络
        • 去线性化

          • 使用非线性函数(激活函数),输入为神经网络节点输出

          • 常见激活函数

            • ReLU

              • 函数表达式

relu(x)={x,x>00,其他relu(x)=\begin{cases} x,& \text{x>0}\\ 0,& \text{其他} \end{cases} relu(x)={x,0,x>0其他

					- 导数- 

ddxrelu(x)={1,x>00,其他\frac{d}{dx}relu(x)=\begin{cases} 1,& \text{x>0}\\ 0,& \text{其他} \end{cases} dxdrelu(x)={1,0,x>0其他

					- 问题- x 为负数时出现梯度消失- Sigmoid- 函数表达式- 

sigmoid(x)=11+e−xsigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

					- 导数- 

ddxσ(x)=σ(1−σ),σ(x)=sigmoid(x)\frac{d}{dx}\sigma(x)=\sigma (1-\sigma),\sigma(x)=sigmoid(x) dxdσ(x)=σ(1σ),σ(x)=sigmoid(x)

					- 问题- 输入过大或过小,容易出现梯度消失问题- 值域- 值域区间为[0,1],一般为2分类输出层激活函数- Tanh- 函数表达式- 

tanh(x)=ex−e−xex+e−xtanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex

					- 导数- 

ddxtanh(x)=1−tanh2(x)\frac{d}{dx}tanh(x)=1-tanh^2(x) dxdtanh(x)=1tanh2(x)

					- 值域- 值域区间为[-1,-1]- softmax- 

yj=ezj∑j=1kezj(j=1,2,…,k)y_j = \frac{e^{z_j}}{\sum^k_{j=1}e^{z_j}}(j=1,2,\ldots,k) yj=j=1kezjezj(j=1,2,,k)
- 值域区间为[0,1],和为1,一般为多分类输出层激活函数

				- Leaky ReLU- 函数表达式- 

leakyrelu(x)={x,x≥0px,x< 0leakyrelu(x)=\begin{cases} x,& x\geq 0\\ px,& x\text{ < } 0 \end{cases} leakyrelu(x)={x,px,x0x < 0

					- 导数- 

ddxleakyrelu(x)={1,x≥0p,x< 0\frac{d}{dx}leakyrelu(x)=\begin{cases} 1,& x\geq0\\ p,& x\text{ < } 0 \end{cases} dxdleakyrelu(x)={1,p,x0x < 0

		- 一般表达式- 

h=relu(Wx+b)h=relu(\pmb{W}x+\pmb{b}) h=relu(Wx+b)

	- 损失函数- 均方误差 MES- 

MES=12N∑i=1N(yi−yi^)2MES = \frac{1}{2N}\sum_{i=1}^N(y_i-\hat{y_i})^2 MES=2N1i=1N(yiyi^)2

		- 交叉熵损失- 反向传播- 模型优化- 降低误差,更新权值- 算法- 随机梯度下降 SGD- 核心思想损失函数求导- 超参数 学习率- 权值更新- 链式求导法则,求权值偏导
  • 全连接网络

    • 特点

      • 每一个输出节点与全部的输入节点相连接
    • 输入矩阵X

      • X的shape为[b,din] b为样本数量,din为输入节点数
    • 权重矩阵W

      • W的shape为[din,dout],dout为输出节点数
    • 输出矩阵O

      • O的shape为[b,dout]
    • 偏置矩阵b

      • b的shape为[dout]
  • 卷积神经网络

    • 卷积层

      • 卷积运算

        • 局部相关性

          • 每个像素点和周围的像素点的关联性更大
        • 权值共享

          • 使用同一个权值矩阵
        • 感受野

          • 视觉皮层中的神经元并非与前一层的所有神经元相连,而只是感受一片区域内的视觉信号,并只对局部区域的视觉刺激进行反应。
        • 权值相乘累加

          • 感受野与权值矩阵相乘累加得到对应位置的值
        • 卷积操作可以获得图像像素之间的特征相关性

      • 卷积核 kernel

        • 权值矩阵
      • 步长 stride

        • 感受野窗口每次移动的长度单位

          • 对于二维卷积,分别沿X(向右)反向和Y(向下)方向移动长度
        • 减少感受野密度

      • 填充 padding

        • 保持与输入尺寸相同
      • 输出尺寸计算

h新=h+2∗ph−ks+1h_新=\frac{h+2*p_h-k}{s}+1 h=sh+2phk+1
-

w新=w+2∗pw−ks+1w_新=\frac{w+2*p_w-k}{s}+1 w=sw+2pwk+1

	- 一个卷积核只能提取一种特征- 一般深层卷积神经网络,按照特征图高宽逐渐减少,通道数逐渐增大的经验法则
- 池化层- 作用- 保留主要特征的同时减少参数和计算量,防止过拟合。- 向下采样- 分类- 全局平均/最大池化池化- 获取全局上下文关系- 不以窗口的形式取均值,而是以feature map为单位进行均值化。即一个feature map输出一个值。- 平均池化- 保留背景信息- 取窗口内的平均值作为结果- 最大池化- 提取特征纹理- max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。- 上池化层- 上采样是指将图像上采样到更高分辨率(resolution),是一种把低分辨率图像采样成高分辨率图像的技术手段。- 方法- 最邻近元法- 双线性内插法- 三次内插法- BatchNorm层- 批标准化BN- 解决梯度消失和梯度爆炸的问题- 作用- 对数据进行规范化,降低样本之间的差异- 使激活函数的输入落在梯度较大的区域,一个很小的输入差异也会带来较大的梯度差异,可以有效的避免梯度消失,加快网络的收敛- 降低了层与层之间的依赖关系,不加BN的时候当前层会直接接收上一层的输出,而加了BN之后当前层接收的是一些规范化的数据,因此使得模型参数更容易训练,同时降低了层与层之间的依赖关系- BN层的可学习参数- scale(γ),即缩放尺度,用于乘以输入进行缩放。- offset(β),即偏移量,用于和输入相加进行偏移。- - 经典卷积网络- LeNet5- 创新点- 使用卷积替代全连接- AlexNet- 创新点- 层数提升至8层- 使用relu ,代替Sigmoid- 引入Dropout层,防止过拟合- VGG系列- 创新点- 层数提升至19层- 使用更小的3*3卷积核- 采用更小的池化层2*2窗口和步长s=2- MLP卷积层- 网络中添加网络- 在卷积之后在添加一个网络- 在MLP网络中,比较常见的是使用一个三层的全连接网络,这等效于普通卷积层后再链接1*1的卷积和relu激活函数- GooLeNet- 创新点- Inception块- 前身 MLP卷积层- 网中网的结构- 增加宽度- 使用1*1 卷积- 不改变图像宽高,只降低通道数- ResNet- 创新点- 残差网络- 使用Skip Connetction(跳跃连接),给深层神经网络添加一种回退到浅层神经网络的机制 shortcut- 在通道轴c维度进行相加操作- 增加深度- f(x) = H(x) +x- DenseNet- 使用Skip Connetction思想- 在通道轴c维度进行拼接操作,聚合特征信息- 稠密连接块 DenseBlock- 卷积层变种- 空洞卷积- 增大感受野- 反卷积- 向上采样- o=(i-1)*s+k-2p- 分离卷积- [卷积神经的发展, 经典网络结构总结](https://blog.csdn.net/qq_23981335/article/details/122538921)- FCN- 全卷积网络- FPNNet- 多尺度预测- - ResNet- 残差网络- 所解决问题- 网络退化问题- ResNet 是通过逐元素相加(element-wise add)和前面特征聚合- - [InceptionNet](https://zhuanlan.zhihu.com/p/480384320)- - InceptionBlock- [SPPNet](https://zhuanlan.zhihu.com/p/79888509)- Spatial Pyramid Pooling Network,多尺度融合- - - [DenseNet](https://zhuanlan.zhihu.com/p/37189203)- 稠密连接网络- DenseNet 则是通过拼接(concatenation)的方式- - [VoVNet](https://zhuanlan.zhihu.com/p/139517885)- One-Shot Aggregation(一次聚合,OSA)- - [CSPNet](https://zhuanlan.zhihu.com/p/116611721)- Cross Stage Partial Network,跨阶段局部网络- - [PANet](https://zhuanlan.zhihu.com/p/373907181)- Path Aggregation Network,路径聚合网络- - ELAN- - 最短最长梯度路径- 高效层聚合网络- PRN - Focus- - [Rep](https://zhuanlan.zhihu.com/p/344324470)- 结构重参数化- 用一个结构的一组参数转换为另一组参数,并用转换得到的参数来参数化(parameterize)另一个结构。只要参数的转换是等价的,这两个结构的替换就是等价的。- - ACNet- [Diverse Branch Block](https://zhuanlan.zhihu.com/p/360939086)- - [SENet](https://zhuanlan.zhihu.com/p/32702350)- - [EfficientNet](https://blog.csdn.net/qq128252/article/details/110953858)- - [Ghost Convolution](https://zhuanlan.zhihu.com/p/368832202)- - 轻量级网络- [MobileNet](https://zhuanlan.zhihu.com/p/394975928)- [ShuffleNet](https://zhuanlan.zhihu.com/p/32304419)- [SqueezeNet](https://zhuanlan.zhihu.com/p/49465950)- 生成对抗网络

损失函数

focal loss 聚焦损失函数

  • 解决样本分布不均匀问题

smooth 损失

smoothL1(x)={0.5x2,如果∣x∣<0|x|-0.5,否则smooth_{L1}(x)= \begin{cases} 0.5x^2, &如果|x|<0 \\ \text{|x|-0.5}, &否则 \end{cases} smoothL1(x)={0.5x2,|x|-0.5,如果x<0否则

MSE 均方误差

MES=12N∑i=1N(yi−yi^)2MES = \frac{1}{2N}\sum_{i=1}^N(y_i-\hat{y_i})^2 MES=2N1i=1N(yiyi^)2

MAE 平均绝对误差

CrossEntropy Loss 交叉熵损失

tripletloss

  • 三元损失函数

ranking loss函数:度量学习

iou loss

  • iou
  • diou
  • giou
  • ciou
  • siou
  • wise-iou

优化器

Batch Gradient Descent (BGD)

Stochastic Gradient Descent (SGD)

Mini-Batch Gradient Descent (MBGD)

Momentum

Adam

Adadelta

Adagrad

学习率优化方法 Trick

warm up 学习率预热

余弦退火

数据集增强 Trick

label smooth 标签平滑

  • 标签平滑是一种损失函数的修正,可以提高图像分类的准确性。简单的解释是,它将神经网络的训练目标从“1”调整为“1-label smoothing adjustment”,这意味着神经网络被训练得对自己的答案不那么自信。

图像处理

  • 单图操作

    • Cutout

      • 对CNN 第一层的输入使用剪切方块Mask
    • Random Erasing

      • 用随机值或训练集的平均像素值替换图像的区域
    • Hide-and-Seek

      • 图像分割成一个由 SxS 图像补丁组成的网格,根据概率设置随机隐藏一些补丁,从而让模型学习整个对象的样子,而不是单独一块,比如不单独依赖动物的脸做识别。
    • GridMask

    • FenceMask(2020)

  • FenceMask(2020)

    • Mixup
    • Cutmix
    • KeepAugment(2020)
    • Mosaic data augmentation

Trick

多尺度训练

头部解耦

深度学习框架

tensorflow

  • data_format

    • 用于设置通道位置
    • 'channels_first’为bchw
    • 'channels_last’为bhwc
  • input层中 batch_size参数设置batch_size大小

pytorch

目标检测

一阶段

  • anchor-base
  • anchor-free

边界框描述法

  • bounding box

    • 左上角和右下角
    • 中心点和长宽
  • 锚框

    • anchor

      • k-means

YOLO系列整理

  • anchor-base

    • yolov3

      • backbone

        • Darknet-53

          • resnet

            • CBR(conv+bn+relu)
          • 子主题 2

        • 下采样层

          • 无池化,使用步长为2的卷积层下采样
      • neck

        • FPN
      • head

        • 3×3的卷积层和1×1的卷积层
      • loss

        • 正负样本分配策略
    • yolov4

      • backbone

        • CSPDarknet53

          • csp

            • CBM(conv+bn+mish)
      • neck

        • SPP
        • PANet
      • head

      • loss

    • yolov5

    • yolov7

  • anchor-free

    • yolox
    • yolov6
    • yolov8
  • 目标检测

    • backbone

      • resnet
      • csp
    • 数据集增强

      • mixup
      • masaic
      • 亮度
      • 对比度
      • 颜色空间转换
      • 缩放
      • 旋转
      • 镜像
      • 空洞填充
    • neck

      • FPN
      • PANet
      • BiFPN
    • head

      • 头部解耦
    • loss

      • 正负样本分配

两阶段

  • R-CNN
  • SPP-Net
  • Fast R-CNN
  • Faster R-CNN

语义分割

FCN

  • 将CNN的全连接层换成了卷积层
  • 加入上采样操作(反卷积)
  • 采用跳跃连接

unet

  • unet

    • 模型结构完全对称
    • 采用编码和解码结构(Encoder-Decoder)
    • U-Net式的跳跃连接(skip connection)
  • unet++

    • 加入深度监督(Deep Supervision)
    • 多尺度跳跃连接
  • unet3+

    • 全尺度跳跃连接

deeplab

  • deeplabv1

    • 空洞卷积
    • CRF
  • deeplabv2

    • ASPP
  • deeplabv3

    • Multi-Grid
  • deeplabv3+

SegNet

人脸识别

facenet

SiameseNet

模型部署

onnx

OpenVino

tensorRT

ncnn


http://www.ppmy.cn/news/38514.html

相关文章

设计模式小记

1、设计模式介绍 1.1、设计模式目的 编写软件过程中&#xff0c;程序员面临着来自 耦合性&#xff0c;内聚性以及可维护性&#xff0c;可扩展性&#xff0c;重用性&#xff0c;灵活性 等多方面的挑战&#xff0c;设计模式是为了让程序(软件)&#xff0c;具有更好的 代码重用性…

Spring封装的动态代理

看proxyFactory.addAdvice主要干了什么? 看下继承关系&#xff1a; 将advisor加入advisors 看下如何生成代理对象 org.springframework.aop.framework.DefaultAopProxyFactory#createAopProxy org.springframework.aop.framework.DefaultAopProxyFactory#hasNoUserSupplied…

2022国赛22:免密码ssh登录到其他Linux主机

大赛试题内容: 5.所有Linux主机root用户使用完全合格域名免密码ssh登录到其他Linux主机。 解答过程: 在linux-1上设置 [root@host-10-10-70-101 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): C…

.net C#反编译及脱壳常用工具--小结

1、Reflector --微软自家工具--推荐 Reflector是最为流行的.Net反编译工具。Reflector是由微软员工Lutz Roeder编写的免费程序。Reflector的出现使NET程序员眼前豁然开朗&#xff0c;因为这个免费工具可以将NET程序集中的中间语言反编译成C#或者Visual Basic代码。除了能将IL转…

【Linux】(一.基础:Linux安装,Xshell, Xftp,vim编辑器)

文章目录1.安装CentOS1.1 安装软件VMware1.2 安装CentOS1.3安装vmtools2.Linux目录结构3.Xshell Xftp4.vim编辑器1.安装CentOS 1.1 安装软件VMware 1.2 安装CentOS &#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; &#xff08;4&#…

聊聊MySQL主从延迟

文章目录 MySQL 的高可用是如何实现的呢?二、什么是主备延迟?三、主备延迟常见原因1、备库机器配置差2、备库干私活3、大事务四、主库不可用,主备切换有哪些策略?1、可靠优先2、可用优先实验一实验二3、结论MySQL 的高可用是如何实现的呢? 高可用性(high availability,缩…

Spring实战(Spring起步)

Spring起步什么是Spring初始化Spring应用pom文件启动类测试类编写spring应用控制器视图测试了解Spring Boot DevTools回顾俯瞰Spring风景线小结什么是Spring 组件&#xff1a;任何实际的应用程序都是由很多组件组成的&#xff0c; 每个组件负责整个应用功能的一部分&#xff0…

C++ 模板、函数模板、类模板

函数模板、类模板 文章目录函数模板、类模板前言1.模板1.1 模板的概念1.2 模板的特点2. 函数模板2.1 函数模板语法2.2 函数模板注意事项2.3 普通函数与函数模板的区别2.4 普通函数与函数模板的调用规则2.5 模板的局限性2.6 函数模板案例3. 类模板3.1 类模板语法3.2 类模板与函数…