深度学习个人整理

在这里插入图片描述

深度学习

概念

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

机器学习分类

  • 监督学习

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

    • 因变量是否连续

      • 分类

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

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

      • k-近邻算法 KNN

      • 决策树

      • 支持向量机 SVM

      • 神经网络

      • 线性模型

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

      • 随机森林

  • 非监督学习

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

    • 算法

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

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

神经网络

  • 神经元线性模型

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

    • 前向传播

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

      • 流程

        • 神经网络节点

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

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

          • 常见激活函数

            • ReLU

              • 函数表达式

r e l u ( x ) = { x , x>0 0 , 其他 relu(x)=\begin{cases} x,& \text{x>0}\\ 0,& \text{其他} \end{cases} relu(x)={ x,0,x>0其他

					- 导数

						- 

d d x r e l u ( x ) = { 1 , x>0 0 , 其他 \frac{d}{dx}relu(x)=\begin{cases} 1,& \text{x>0}\\ 0,& \text{其他} \end{cases} dxdrelu(x)={ 1,0,x>0其他

					- 问题

						- x 为负数时出现梯度消失

				- Sigmoid

					- 函数表达式

						- 

s i g m o i d ( x ) = 1 1 + e − x sigmoid(x)=\frac{1}{1+e^{-x}} sigmoid(x)=1+ex1

					- 导数

						- 

d d x σ ( x ) = σ ( 1 − σ ) , σ ( x ) = s i g m o i d ( x ) \frac{d}{dx}\sigma(x)=\sigma (1-\sigma),\sigma(x)=sigmoid(x) dxdσ(x)=σ(1σ),σ(x)=sigmoid(x)

					- 问题

						- 输入过大或过小,容易出现梯度消失问题

					- 值域

						- 值域区间为[0,1],一般为2分类输出层激活函数

				- Tanh

					- 函数表达式

						- 

t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+exexex

					- 导数

						- 

d d x t a n h ( x ) = 1 − t a n h 2 ( x ) \frac{d}{dx}tanh(x)=1-tanh^2(x) dxdtanh(x)=1tanh2(x)

					- 值域

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

				- softmax

					- 

y j = e z j ∑ j = 1 k e z j ( 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

					- 函数表达式

						- 

l e a k y r e l u ( x ) = { x , x ≥ 0 p x , x  <  0 leakyrelu(x)=\begin{cases} x,& x\geq 0\\ px,& x\text{ < } 0 \end{cases} leakyrelu(x)={ x,px,x0x < 0

					- 导数

						- 

d d x l e a k y r e l u ( x ) = { 1 , x ≥ 0 p , 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 = r e l u ( W x + b ) h=relu(\pmb{W}x+\pmb{b}) h=relu(Wx+b)

	- 损失函数

		- 均方误差 MES

			- 

M E S = 1 2 N ∑ i = 1 N ( y i − y i ^ ) 2 MES = \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 ∗ p h − k s + 1 h_新=\frac{h+2*p_h-k}{s}+1 h=sh+2phk+1
-

w 新 = w + 2 ∗ p w − k s + 1 w_新=\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 损失

s m o o t h L 1 ( x ) = { 0.5 x 2 , 如果 ∣ 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 均方误差

M E S = 1 2 N ∑ i = 1 N ( y i − y i ^ ) 2 MES = \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

猜你喜欢

转载自blog.csdn.net/qq_45723275/article/details/129994619