Vitis AI 基本认知(CNN基本概念)

发布于:2024-08-08 ⋅ 阅读:(148) ⋅ 点赞:(0)

1. 目的

这篇文档介绍了一个名为CNN Explainer的交互式可视化系统,旨在帮助非专业人士学习卷积神经网络(CNN)。该系统通过直观的方式展示了CNN的工作原理,使用户能够更好地理解复杂的神经网络结构和运算过程。

CNN ExplainerAn interactive visualization system designed to help non-experts learn about Convolutional Neural Networks (CNNs).icon-default.png?t=N7T8https://poloclub.github.io/cnn-explainer/

优化器(Optimizer)

损失函数(Loss function)

评估指标(Metrics)

反向传播算法

权重系数

计算图

2. 概念解释

2.1 并行度

PP, Pixel Parallel

ICP, Input Channel Parallel

OCP, Output Channel Parallel

虚线框内表示每周期同时执行的操作。

  • ICP:此CNN第一层有3个通道(RGB),如果DPU的ICP=3(支持3个并行数),意味着单周期内同时执行三个通道的乘法运算;如果ICP=8,那么第一层并没有完全利用DPU的并行算力。
  • OCP:此CNN的输出有三个kernel,意味着有三个输出通道;如果OCP=3,那么三个输出通道并行计算。
  • PP:每个pixcel都会一次或者多次参与卷积运算,DPU每次处理的pixel数量。
  • 卷积阵列都会执行一次乘法和一次累加,这计作 2 次运算。每个周期的峰值运算数量等于PP*ICP*OCP*2。

2.2 超参数

CNN ExplainerAn interactive visualization system designed to help non-experts learn about Convolutional Neural Networks (CNNs).icon-default.png?t=N7T8https://poloclub.github.io/cnn-explainer/

2.3 反向传播算法

 

2.4 优化器(Optimizer)

2.5 评估指标(Metrics)

2.5.1 准确率、精确率、召回率

TP(True Positive)、TN(True Negative)、FP(False Positive)、FN(False Negative)。

准确率(Accuracy):模型预测正确的样本数量占总样本数量的比例。

Accuracy=\frac{TP+TN}{TP+TN+FP+FN}

精确率(Precision):模型预测为正类的样本中实际为正类的比例。

Precision=\frac{TP}{TP+FP}

召回率(Recall):实际为正类的样本中被模型正确预测为正类的比例。

Recall=\frac{TP}{TP+FN}

区别

  • 准确率:衡量整体预测的正确性。
  • 精确率:又叫“查准率”,关注正类预测的准确性,以预测结果为判断依据,此标准来评估预测正类的准确度,适用于减少误报的场景。
  • 召回率:又叫“查全率”,关注正类样本的全面识别,以实际样本为判断依据,适用于减少漏报的场景。

2.5.2 其他

F1分数(F1 Score):精确率和召回率的调和平均数,用于平衡精确率和召回率。

AUC-ROC(Area Under the ROC Curve):衡量模型区分正负样本的能力。

交并比(IoU, Intersection over Union):常用于图像分割任务,衡量预测分割与真实分割的重叠程度。

2.6 权重系数

3. Tiny-VGG

tiny_vgg = Sequential([
    Conv2D(10, (3, 3), input_shape=(64, 64, 3), name='conv_1_1'),
    Activation('relu', name='relu_1_1'),
    Conv2D(10, (3, 3), name='conv_1_2'),
    Activation('relu', name='relu_1_2'),
    MaxPool2D((2, 2), name='max_pool_1'),

    Conv2D(10, (3, 3), name='conv_2_1'),
    Activation('relu', name='relu_2_1'),
    Conv2D(10, (3, 3), name='conv_2_2'),
    Activation('relu', name='relu_2_2'),
    MaxPool2D((2, 2), name='max_pool_2'),

    Flatten(name='flatten'),
    Dense(NUM_CLASS, activation='softmax', name='output')
])

对这个模型的逐层分析:

1. Conv2D(10, (3, 3), input_shape=(64, 64, 3), name='conv_1_1'):

  • 第一层是一个卷积层,有10个过滤器(卷积核),每个核的大小是3x3。
  • input_shape=(64, 64, 3) 指定了输入图像的尺寸为64x64像素,且是彩色的(3个颜色通道:RGB)。

2. Activation('relu', name='relu_1_1'):

  • 这层使用ReLU(Rectified Linear Unit)激活函数。ReLU函数能帮助网络使用非线性变换,并且具有加速训练的效果。

3. Conv2D(10, (3, 3), name='conv_1_2'):

  • 第三层又是一个卷积层,配置与第一层相同,也使用10个3x3的过滤器。

4. Activation('relu', name='relu_1_2'):

  • 同第二层,使用ReLU激活函数。

5. MaxPool2D((2, 2), name='max_pool_1'):

  • 最大池化层,使用2x2的池化窗口来降低特征图的空间维度(高和宽),这有助于减少计算量并且提取重要特征。

6. Conv2D(10, (3, 3), name='conv_2_1'):

  • 第五层是又一个卷积层,参数与前面的卷积层相同。

7. Activation('relu', name='relu_2_1'):

  • 使用ReLU激活函数。

8. Conv2D(10, (3, 3), name='conv_2_2'):

  • 第七层也是卷积层,与其他卷积层参数相同。

9. Activation('relu', name='relu_2_2'):

  • 使用ReLU激活函数。

10. MaxPool2D((2, 2), name='max_pool_2'):

  • 另一个最大池化层,使用2x2的池化窗口。

11. Flatten(name='flatten'):

  • 将多维的输出展平成一维,这样可以作为全连接层(Dense)的输入。

12. Dense(NUM_CLASS, activation='softmax', name='output'):

  • 全连接层,输出尺寸为NUM_CLASS,这应该是根据具体任务设定的类别数。
  • 使用softmax激活函数,这是多分类任务中常用的激活函数,用于输出每个类别的预测概率。

4. 总结

这篇文档介绍了一个名为CNN Explainer的交互式可视化系统,旨在帮助非专业人士学习卷积神经网络(CNN)。该系统通过直观的方式展示了CNN的工作原理,使用户能够更好地理解复杂的神经网络结构和运算过程。

文档首先解释了并行度的概念,包括像素并行(PP)、输入通道并行(ICP)和输出通道并行(OCP)。这些并行度参数决定了在每个周期内同时执行的操作数量。例如,ICP表示输入通道的并行度,如果DPU的ICP=3,意味着单周期内可以同时处理三个输入通道的运算。

接下来,文档详细分析了一个名为Tiny-VGG的CNN模型。该模型由多个卷积层、激活层、池化层和全连接层组成。每个卷积层使用3x3的过滤器,通过ReLU激活函数进行非线性变换。最大池化层用于降低特征图的空间维度,从而减少计算量并提取重要特征。最后,全连接层使用softmax激活函数输出每个类别的预测概率。

通过这种逐层分析,读者可以清晰地了解每一层的功能和作用,以及它们如何协同工作来完成图像分类任务。


网站公告

今日签到

点亮在社区的每一天
去签到