yolo目标检测基础
一、概念目标检测需要识别图片或视频帧中的物体是什么类别,并确定他们的位置(where and what),通常用于多个物体的识别,并为每个示例提供一个边界框和类别标签。 目标检测的本质:使用边界框将物体在图中圈出,边界框上会存在两个指标:类别信息,置信度 yolo(you only look once):是一个单阶段的目标检测算法,能够用于实时监测 人工智能领域的上游任务和下游任务 上游任务通常是指为后续任务提供基础支持的任务,主要关注数据的收集、处理、模型的预训练等基础性工作。这些任务的输出通常是一个通用的模型或者数据集,可以被多个下游任务复用 下游任务是指在上游任务的基础上,针对具体的业务场景或应用需求进行的模型微调和应用开发。这些任务通常具有明确的目标和应用场景,需要在预训练模型的基础上进行进一步的优化和调整,以满足特定任务的需求 二、数据标注数据标注是在图片中框选标注出我们需要模型训练用来检测的实例,用作监督模型训练的标签 步骤: 创建一个专门用于数据标注的虚拟环境 1conda create -n yololabel python=3.12 激活虚拟环境...
经典神经网络之ResNet
前言ResNet通过引入残差结构解决了深层网络中的梯度消失、梯度爆炸及退化问题,借助Batch Normalization加速训练,成功搭建了超深网络(突破1000层)。 一、残差结构(residual)(★)ResNet中的残差块(Residual Block)是其核心组件,用于解决深层网络训练中的梯度消失和退化问题,让实现更深层的网络成为可能。 残差块包含两条路径: 一条是主路径,用于学习输入和输出之间的残差(即差异) 另一条是捷径路径,直接将输入添加到主路径的输出上,这里的添加是对应元素进行数值相加 二、批量归一化(Batch Normalization)(★)Batch Normalization(批量归一化)用于加速神经网络的训练过程并提高其稳定性。 它通过在每个小批量(Batch)上对输入数据进行归一化处理,使每层的输入数据具有均值为0、标准差为1的分布。 三、模型代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253...
经典神经网络之GoogLeNet
前言GoogLeNet 于 2014 年由 Google 团队提出,凭借其创新的 Inception 结构(融合多尺度特征)、1×1 卷积核降维以及用平均池化层替代全连接层(大幅减少参数)等设计,斩获当年 ImageNet 分类任务第一名。 一、inception结构和之前提到的线性排列的网络结构不同,inception模块采用并联结构,将特征同时输入多个分支,最后将每个分支得到的等宽等高的输出进行拼接 这里大小为1x1的卷积层,目的是为了降维(使用通道数更小的卷积核来改变原结构通道数),减少模型训练参数,减少计算量 二、全局平均池化层GAP平均池化层通过计算特征图的平均值将其压缩为全局特征表示,减少参数量和计算量,避免过拟合,提升泛化能力和训练效率,从而可替代全连接层。 在大多数实际应用中,特征图的通道数 ( C ) 与类别数 ( N ) 不同。因此,全局池化后的输出 ( (1, 1, C) ) 通常需要通过一个全连接层将其映射到类别数 ( N )。全连接层的作用是将特征向量 ( C ) 映射到类别数 ( N )。 三、模型代码(训练自己的数据集)3.1 模型结构代码代码...
经典神经网络之VGG16
前言VGG16相比AlexNet采用多个小卷积核(如3个3×3代替7×7)来增加网络深度,减少参数量,同时保持较大感受野,提升模型性能,且小卷积核更利于保持图像特征。 一、整体结构VGG系列更像是一个定式的网络,通过隐藏层的数量来进行编号 优点是结构简洁,使用统一的3×3卷积核和2×2最大池化,通过加深网络结构提升性能; 缺点是计算资源耗费大,参数多(主要集中在全连接层),模型大(约500M),训练时间长,但有公开的预训练模型可供使用。 二、模型代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293import torchfrom torch import nnfrom torchsummary import summaryclass VGG16(nn.Module): ...
经典神经网络之AlexNet
前言AlexNet和LetNet的网络结构大差不差,主干都是卷积层与池化层的线性排列,但是AlexNet比LetNet深很多,主要是五个卷积层、两个全连接隐藏层和一个全连接输出层 一、整体结构AlexNet输入为RGB三通道的227 × 227 × 3大小的图像,通过增加网络深度,AlexNet 能够更好地学习数据集的特征,从而提高了图像分类的精度 二、ReLU函数在进行激活时,AlexNet使用了RELU激活函数, 相比 sigmoid 和 tanh 函数,能有效缓解梯度消失问题,加速收敛,且计算简单高效。其稀疏激活特性还能减少冗余信息,提升特征提取效率。 三、数据增强和Dropout数据增强可以通过对图像进行旋转、翻转、裁剪等变换,增加训练数据的多样性,提高模型的泛化能力 Dropout 则是在训练过程中随机删除一定比例的神经元,强制网络学习多个互不相同的子网络,从而提高网络的泛化能力 共同的目的都是提高网络的泛化能力 注意Dropout在随机删除神经元时不是直接删除,而是随着神经元的删除而改变 例如将Dropout 概率 p=0.5为了保持期望值不变,未被置为 0 的神...
经典卷积神经网络之LeNet
前言:卷积层的输入要求卷积层对图像的输入顺序有要求,[batch, channel, height, width],当图片为灰度图是,第一层卷积的in_channels=1,后续out_channels=卷积核数量 图片原本的顺序是(height, width, channels),需要用permute来处理,并且将数值转换为浮点型 卷积、矩阵乘法等可能无法正确处理非浮点类型的数据。 一、网络结构解读 模型在手写数字识别上具有良好的效果,但是结构较为简单,只涉及卷积,池化,全连接的线性排列,这里不做过多介绍,毕竟神经网络这些参数可解释性都很差,学习他的搭建结构就好 输出特征图的参数计算比较简单,主要是在第一层全连接层的输入那里需要填。 1.1 线性层的最后输出 值得一提的是在 LeNet 模型中,最后一个线性层的输出是一个大小为 10 的向量,这些输出值被称为 logits。这些 logits 是模型对输入图像属于每个类别的原始预测值,还没有经过 Softmax 函数处理。 真正传入softmax,将预测值转变为概率是在训练阶段的交叉熵函数中 \text{Softmax...
部署本地项目到Git仓库流程
前言:Gitee学习笔记一、用Git命令行指令上传创建好自己的Gitee账号后,首先在界面里面创建一个仓库 填好仓库的名称,路径和描述信息 这里可以看到一些基础的教学,先克隆仓库地址,例如LinYong/almost get back 回到需要放置仓库的文件夹,右键更多选项,点击open git bash here,打开终端界面 输入git clone + 仓库地址,可以在文件夹中看到新增的仓库文件夹 点进去新建文件,这里就是我们放工程文件的地方 在这里再打开open git bash here界面 依次输入这几条指令: 指令解析: git clone + 地址 ==>拉去别人的仓库到本地 git pull ==> 更新整个仓库的所有更改(别人修改的也可以看见),提交前一定要先pull,push之前先pull确保提交时是代码的最新版本 git add . ==>将更改过的新修改文件添加到暂存区,这里的 . 代表所有文件 git commit -m ==>提交本地仓库,添加修改描述 git push ==> 上传自己的更新,提交云端仓库...
卷积神经网络(CNN)原理
前言:何为卷积神经网络卷积神经网络是一种深度学习模型,包括了卷积层,激活函数,池化层以及全连接层等等,他的设计灵感来自于生物学中的视觉系统,旨在模拟人类视觉处理的方式。 CNN的三大特性:局部连接,权重共享,池化 一、卷积层1.1 卷积过程卷积层的主要作用是提取输入数据中的局部特征 这张动画中蓝色的框就是指一个数据窗口,红色框为卷积核(滤波器),最后得到的绿色方形就是卷积的结果(卷积操作是通过滑动卷积核,在每个局部区域上进行“先乘再和”的运算,最终生成一个特征图,每个输出值是一个标量。) 1.2 卷积层的作用以及涉及的超参数详解卷积层主要用来提取局部特征。 在实际使用中涉及到的参数有: 卷积核大小:决定了卷积核覆盖的局部区域大小,影响特征提取的粒度。较小的卷积核可以捕捉更细粒度的特征,适合提取边缘和纹理;较大的卷积核可以捕捉更广泛的特征,但计算量更大。 卷积核形状参数一定要是奇数,因为奇数大小的卷积核具有唯一的中心像素,便于在卷积操作中均匀取样并保持对称性,同时有助于处理图像边缘,避免模糊和信息损失。 步长:每次滑动的位置,控制卷积核每次移动的像素数,影响输出特征图的尺寸 填...
全连接神经网络、不同激活函数和梯度下降法的区别、神经网络批量标准化
前言 全连接神经网络(又称前馈神经网络或多层感知机)是最基础的神经网络结构,由众多带有参数的神经元组成,常用语对图像进行分类 博主会经常分享自己在人工智能阶段的学习笔记,欢迎大家访问我滴个人博客!(养成系Blog!) 小牛壮士滴Blog~ - 低头赶路 敬事如仪https://kukudelin.top/ 一、人工神经元(全连接神经网络的最小单位)神经元中的核心公式,本质上就是在每个神经元上进行一次逻辑回归,得到下一层的输入值: 构成人工神经元的三个关键因素,这里比较重要的是激活函数,如果没有激活函数的话本质上模型还是线性的。 神经元需要激活函数,核心原因在于引入非线性变换,从而突破线性模型的表达能力限制,如果神经元上全是Wx+b的运算,最终合成的网络都可以做矩阵合并成一个大的线性网络,而异或分类、图像识别等复杂任务是非线性问题,前面的文章我们已经对机器学习算法中的激活函数sigma,以及梯度下降法BGD,SGD和MGD进行了介绍,后续我们将继续介绍深度学习领域中涉及到的一些激活函数以及梯度下降算法。 二、全连接神经网络的组成在介绍激活函数和梯度下降之前,我们先介绍...
pytorch基本组件的使用以及神经网络完整训练流程介绍
前言:本篇文章是为后续更进一步学习经典神经网络,以及更先进的技术筑基,一定要牢牢掌握,年薪百万不是梦!! 一、Dataset1234from torch.utils.data import Datasetfrom PIL import Imageimport osimport random 用torch.utils.data中的Dataset组件来实现图片数据集的的合并以及标记标签的功能 1.1 MyData类这里需要我们自己来写一个MyData类用于初始化根目录,图片目录,并将他们拼接。以及实现取出单条数据和获取数据长度的方法 12345678910111213141516171819202122232425262728293031323334353637383940class MyData(Dataset): def __init__(self,root_dir,label_dir): """ 获取根目录和标签目录图片地址 将他们拼接后输出成图片相对路径地址列表 "&quo...

