当前位置: 首页 > article >正文

FPGA_YOLO学习(一)

一:CNN学习

首先对CNN(卷积神经网络)进行学习。

CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络-CSDN博客

https://blog.csdn.net/v_JULY_v/article/details/51812459?fromshare=blogdetail&sharetype=blogdetail&sharerId=51812459&sharerefer=PC&sharesource=2302_78225718&sharefrom=from_linkhttps://blog.csdn.net/v_JULY_v/article/details/51812459?fromshare=blogdetail&sharetype=blogdetail&sharerId=51812459&sharerefer=PC&sharesource=2302_78225718&sharefrom=from_link根据上述文章进行总结

1.1神经网络的知识

1.1.1 神经元

     神经网络由大量的神经元相互连接而成。每两个神经元之间的连接代表加权值,称之为权重(weight)。不同的权重和激活函数,则会导致神经网络不同的输出。

 基本wx + b的形式,其中

  • 表示输入向量
  • 为权重,几个输入则意味着有几个权重,即每个输入都被赋予一个权重
  • b为偏置bias
  • g(z) 为激活函数
  • a 为输出

  g(z) = g( * + * + b ),g表示激活函数,这里的b可以理解成 为更好达到目标而做调整的偏置项。 

1.1.2  激活函数

   常用的非线性激活函数有sigmoid、tanh、relu。前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层

 sigmoid的函数表达式如下

   sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0

 1.1.3 神经网络

  单个神经元

输入层(Input layer),众多神经元(Neuron)接受大量非线形输入讯息。输入的讯息称为输入向量。
输出层(Output layer),讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。
隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。

 

上图中最左边的原始输入信息称之为输入层,最右边的神经元称之为输出层(上图中输出层只有一个神经元),中间的叫隐藏层。 

1.2 卷积神经网络以及层结构

  • 最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。

1.2.1卷积层以及激励层池化层的理解

1.2.1.1 卷积层(Convolutional Layer)

核心作用提取局部特征,保留空间信息。

  • 工作原理:通过可学习的卷积核(滤波器)在输入数据(如图像)上滑动,进行局部区域的乘积和求和运算,生成特征图(Feature Map)。

  • 关键特性

    • 参数共享:同一卷积核在整个输入上共享权重,大幅减少参数量。

    • 局部连接:每个神经元仅感受局部区域,模拟生物视觉的“感受野”。

  • 层级特征提取

    • 浅层卷积核捕捉基础特征(如边缘、纹理);

    • 深层卷积核组合低级特征,检测复杂模式(如物体部件)。

  • 参数设置:卷积核尺寸(如3×3)、步长(Stride)、填充(Padding)影响特征图大小和信息保留。

1.2.1.2. 激励层(Activation Layer)

核心作用引入非线性,增强模型的表达能力。

  • 典型函数:ReLU(Rectified Linear Unit)最常用,因其计算高效且缓解梯度消失问题。公式:。

  • 功能解析

    • 解决卷积层的线性局限性,使网络可拟合复杂的非线性函数。

    • 稀疏性激活:ReLU抑制负值,仅保留显著特征,提高网络稀疏性。

  • 其他激活函数

    • Sigmoid和Tanh(易饱和,梯度消失,多用于输出层);

    • Leaky ReLU、ELU(缓解ReLU的“神经元死亡”问题)。

1.2.1.3. 池化层(Pooling Layer)

核心作用降维与特征不变性,提升鲁棒性及计算效率。

  • 常用方法

    • 最大池化(Max Pooling):取局部区域最大值,保留显著特征;

    • 平均池化(Average Pooling):取局部区域均值,平滑特征。

  • 核心优势

    • 平移不变性:特征的小位移不影响池化结果,增强模型泛化能力。

    • 降维:缩小特征图尺寸(如2×2池化窗口将尺寸减半),减少后续计算量。

    • 抗噪声:抑制局部微小噪声的影响。

  • 权衡:池化可能丢失位置细节信息,常用于低层特征抽象。

协同工作流程

  1. 特征提取阶段
    卷积层提取局部特征 → 激励层引入非线性 → 池化层压缩空间维度。

  2. 层级堆叠
    多层重复(如 Conv → ReLU → Pooling),逐级抽象(边缘 → 纹理 → 物体部件 → 整体结构)。

  3. 全连接层前
    最终高级特征经过展平,输入全连接层进行分类或回归。

示例与对比

  • 无卷积层:模型无法捕捉空间相关性,需全连接处理图像,导致参数爆炸。

  • 无激励层:网络退化为线性变换叠加,无法拟合复杂数据(如异或问题)。

  • 无池化层:特征图尺寸过大,计算成本高,且缺乏平移鲁棒性,易过拟合。

1.2.1.4鲁棒性   

鲁棒性(Robustness)是指系统、算法或模型在面对外部干扰、噪声、异常数据或不确定性时,仍能保持稳定性和有效性的能力。简单来说,鲁棒性衡量的是系统在不完美的条件下耐受性适应性

1. 机器学习和深度学习

  • 模型的鲁棒性:模型在面对输入数据中的噪声、缺失值、对抗样本或异常值时,仍能给出正确或合理的预测。
    例子:图像分类模型在输入图像有噪声或部分遮挡时,仍能准确分类。
  • 训练过程中的鲁棒性:模型对超参数选择、初始化方式等不敏感,能够稳定收敛。

 1.3 卷积激励以及池化具体图

1.3.1卷积

 输入图像跟滤波器做内积,相乘求和。中间红框为滤波器。

 左边为图像数据信息,中间为神经元带有固定的权重。

 

 不同权重展示的结果

 下图为7*7*3 长宽 以及通道数3 两个滤波器也就是两个神经元。带有三个权重信息3个通道。

通道数设置

  • CNN的卷积核通道数 = 卷积输入层的通道数
  • CNN的卷积输出层通道数(深度)= 卷积核的个数

多通道卷积的计算过程:将矩阵与滤波器对应的每一个通道进行卷积运算,最后相加,形成一个单通道输出,加上偏置项后,我们得到了一个最终的单通道输出。如果存在多个filter,这时我们可以把这些最终的单通道输出组合成一个总输出。 

  在深度学习中,一个卷积核(Convolutional Kernel)并不是一个神经元,但它们之间有一定的关联性。为了更好地理解这个问题,我们需要从卷积神经网络(CNN)的基本原理出发,逐步分析卷积核和神经元的关系。


1.3.1.2 卷积核是什么?

卷积核是卷积神经网络中的核心组件之一,它是一个小的权重矩阵(通常是 3x3、5x5 等大小),用于在输入数据(如图像)上滑动并提取特征。卷积核的作用是通过卷积操作,捕捉输入数据中的局部特征(如边缘、纹理、形状等)。

  • 卷积核的权重:卷积核的每个元素是一个可学习的参数,这些参数在训练过程中通过反向传播优化。
  • 卷积操作:卷积核在输入数据上滑动,计算局部区域的加权和,生成特征图(Feature Map)。

1.3.1.3 神经元是什么?

神经元是神经网络的基本单元,通常由一个加权求和和一个激活函数组成。在传统的全连接神经网络中,每个神经元会接收所有输入的加权和,并通过激活函数输出一个值。

  • 神经元的作用:神经元通过学习输入之间的权重关系,提取数据中的非线性特征。

1.3.1.4. 卷积核与神经元的关系

虽然卷积核和神经元都可以看作是“提取特征”的工具,但它们的工作方式和层级结构不同:

(1)卷积核是局部连接的,神经元是全连接的

  • 卷积核只与输入数据中的一个局部区域(如 3x3 的区域)连接,生成一个特征图。
  • 神经元则与所有输入连接,计算全局的加权和。

(2)卷积核可以共享权重,神经元不共享权重

  • 在卷积层中,一个卷积核在整个输入数据上共享权重,这意味着它可以在不同位置提取相同的特征。
  • 在传统神经网络中,每个神经元的权重是独立的。

(3)一个卷积核对应多个神经元的输出

  • 一个卷积核在输入数据上滑动时,会生成一个特征图,特征图中的每个元素可以被看作是一个“神经元”的输出。
    例如,如果输入数据是 5x5 的图像,使用一个 3x3 的卷积核滑动后会生成一个 3x3 的特征图,这 9 个值可以被认为是 9 个神经元的输出。

(4)多个卷积核对应多个特征的提取

  • 通常卷积层会使用多个卷积核,每个卷积核提取不同的特征。例如,一个卷积层可能有 32 个卷积核,每个卷积核会生成一个独立的特征图。

1.3.1.5. 总结:卷积核和神经元的区别
  • 卷积核:是一个小的权重矩阵,用于在局部区域内提取特征。
  • 神经元:是一个计算单元,接受输入并输出一个值。

常用的卷积计算公式

  • 输入图片的尺寸:一般用n×n表示输入的image大小。
  • 卷积核的大小:一般用f×f表示卷积核的大小。
  • 填充(Padding):一般用p来表示填充大小。
  • 步长(Stride):一般用s来表示步长大小。
  • 输出图片的尺寸:一般用0来表示。

 1.3.2 激励层

但实际梯度下降中,sigmoid容易饱和、造成终止梯度传递,且没有0中心化。咋办呢,可以尝试另外一个激活函数:ReLU,其图形表示如下

 1.3.3 池化层

 

 上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。


http://www.kler.cn/a/612412.html

相关文章:

  • 【HTML】KaTeX 常用公式字符
  • 问题分析4
  • 数据结构与算法:双向广搜
  • 第六届 蓝桥杯 嵌入式 省赛
  • ​​SenseGlove与Aeon Robotics携手推出HEART项目,助力机器人培训迈向新台阶
  • uniapp自定义目录tree(支持多选、单选、父子联动、全选、取消、目录树过滤、异步懒加载节点、v-model)vue版本
  • 免费使用!OpenAI 全量开放 GPT-4o 图像生成能力!
  • QT记事本
  • RISC-V AIA学习3---APLIC 第二部分(APLIC 中断域的内存映射控制区域)
  • 【软测】AI助力测试用例
  • 快速入手-基于Django-rest-framework的ModelSerializer模型序列化器(三)
  • 华为、浪潮、华三链路聚合概述
  • python使用cookie、session、selenium实现网站登录(爬取信息)
  • 用 Python 也能做微服务?
  • Vue+SpringBoot:整合JasperReport作PDF报表,并解决中文不显示问题
  • OPENCV数字识别(非手写数字/采用模板匹配)
  • jEasyUI 创建自定义视图
  • EMC知识学习二
  • 路由选型终极对决:直连/静态/动态三大类型+华为华三思科配置差异,一张表彻底讲透!
  • 【Ai】--- 可视化 DeepSeek-r1 接入 Open WebUI(超详细)