YOLOV1——YOLOV10的学习内容总结(篇幅巨长版,建议索引看)

目录

卷积神经网络

YOLOV1

YOLOV2

YOLOV3

YOLOV4

YOLOV5

YOLOV 6

YOLOV7 

YOLOV8 

 YOLOV9

YOLOV10


学习时长近一个半月多的时间,边看视频边总结的笔记。可以看此篇笔记进行对yolo方向的了解或者复习内容。格式排本有些问题,太多了,改不过来了。

卷积神经网络

学习yolo,我首先从卷积网络了解起的。

5.21

1.计算机视觉三大任务:

分类(图片识别分类),检测(识别目标信息),分割(语义分割:对类别进行区分;实例分割:不仅区分类别,还细化到识别个体)

2.传统的目标检测:

首先用 动窗口框住图中的某一部分作为候选区域(利用卷积神经网络提取图像特征,生成特征图,在此图上生成预定义的锚点,对锚点进行分类,筛选形成候选区),提取候选区域相关的视觉特征,利用分类器进行识别,比如常用的SVM模型(一种用于分类和回归分析的机器学习算法)

3.目标检测性能指标:

准确度和速度
two-stage 算法在 准确度 上有优势,而 one-stage 算法在 速度 上有优势。

4.两类主要的目标检测方法:

核心组件之一:区域建议网络(RPN,单阶段yolo不采用), RPN网络通过滑动窗口 在卷积特征图上定位锚点,并生成这些锚点的区域建议。
优点
应用场景
工作流程
典型模型
缺点
Two-Stage Detection
高检测精度,可靠性高
复杂目标检测任务
首先生成候选区,然后对候选区进行分类和边界框回归
Faster R-CNN
Mask R-CNN
Cascade R-CNN
计算复杂度高,推理速度慢。
资源设备要求高

Single-Stage Detection

只需要一次前向传播,计算效率高,结构相对简单,易于实现和部署,能够实现实时检测
应用于需要快速检测的场景中,例如视频监控和无人驾驶
不采用候选区,直接从输入图像生成目标类别和边界框预测结果
特征提取-->多尺度特征图生成-->直接预测-->损失函数-->后处理
YOLO(基于锚点,采用CNN检测器)
SSD
RetinaNet
检测精度低
类别不平衡

5.全连接神经网络:

输入层-->隐藏层-->输出层
x(输入)---->model(算法或模型)------->y(输出)
单个神经元图
x为输入值,w为权重,b为偏置量,a为所要求的结果。h表示激活函数。
通过求得一组最优的w和b,来保证输出接近真实值。
多个神经元图
  1. 6.激活函数
是为了引入非线性因素,往往都是非线性,如果是线性,只是系数常数的叠加,最终还可以拿kx表示,不能发挥神经网络深层次的效应。
Sigmoid函数:适用于分类,存在梯度消失的问题,输出值不对称
Tanh函数:解决了函数值非0对称,训练速度快,更容易收敛(输出值均值为0,有利于数据中心化,同时在0点处更陡峭,有利于缓解梯度消失)。但仍存在梯度消失的问题。
ReLU函数:解决了梯度消失的问题,计算简单,没有指数运算。但训练时可能出现神经元死亡(w,b的值不更新)
Leaky ReLU函数:解决了神经元死亡问题,但正负输入值不能提供一致的关系预测。
没有最优的模型,只有最合适的

7.损失函数

神经网络在训练的过程: 前向传播----->计算误差------->反向传播(运用梯度下降算法,更新w,b)

8.梯度下降算法

5.22

1.全连接神经网络存在的问题

全神经网络输入一个图片,会将图片的小格子打散,破坏图像的空间信息,而卷积神经网络则不会破坏。

2.卷积层---卷积计算

输入函数(卷积核运算)--->激活函数---->输出函数
y=h(xw+b)
  1. 步幅和填充可以控制输出特征图的大小
  2. 经过卷积运算后特征图的大小
  1. 多通道卷积运算
单卷积核图如下
多卷积核图如下
  1. 池化层:就是对卷积层出来的特征图进行进一步的筛选、降维处理。
没有卷积核(没有w和b),只是一个卷积神经网络的一个操作而已,不含网络参数。
输出特征图的大小也由卷积运算输出图大小计算公式一致。
池化层就是找最大最小值,或者平均值。
  1. 卷积神经网络整体结构

5.23

  1. LeNet5网络
有五个有参数的层,2个卷积层,3个全连接层,采用Sigmoid激活函数,采用平均池化
卷积操作使通道变多,卷积核大小决定能否捕捉到更多细节,通常选择较小的卷积核,池化层操作使特征图变小
卷积层的大小不固定。要记住输出特征图的大小计算公式
  1. AlexNet网络
有八个有参数的层组成,5个卷积层,2个全连接隐藏层和一个全连接输出层,使用ReLU激活函数,采用最大池化
  1. Dropout操作(基于AlexNet网络)
防止神经网络过拟合(平常测试结果好,到训练时结果差)
  1. 图像增强(基于AlexNet网络)
因为训练数据最难找,也最耗时。采用水平翻转和随机裁剪后,可以起到为了防止过拟合作用,同时也产生更多的数据集
利用PCA进行图像增强:就是将一个拥有三通道的图,进行normalization处理,均值为0,方差为1,经过PCA操作后,得到一个值,设置不同的抖动系数能获得不同的值,之后将这个值加到每个图的像素点上去,是图像发生变化。例如
  1. LRN正则化(基于AlexNet网络,后来很少被应用)
提高网络精准度的方法,增加局部的对比度,有1.2个百分比左右的提升。
局部归一化是以通道为方向的。参数k,a,b,n都是手动设置的
  1. 深度学习代码
model(训练模型,代码最少)
train(数据处理,模型训练,loss值,acc精度值)--->权重(w,模型结构,w,b值)
test (测试)
LeNet网络模型的搭建

5.25

  1. LeNet训练和测试代码
在图像数据中,四维张量例如( 32, 3, 224, 224),32指的是 批量大小,意味着这个批次中包含了 32 张图像。3指通道数,224,224指高和宽。在模型和算法中,通常移除第一维张量。
训练代码和测试代码要熟悉,所有训练模型都通用的
numpy用来画图展示数据的,totensor格式是模型张量的模式
  1. 损失函数
回归一般用均方差损失函数,分类用交叉熵损失函数

  1. VGG神经网络
VGG一般指的是VGG-16,有13层卷积层和层全连接层
每一层卷积都会有个ReLU激活函数
VGG的卷积层是通过block块状形式相连的,block内的卷积层结构相同。block之间通过maxpool连接。池化层都使上一层的卷积层特征缩减一半。深度越深,参数量越大。一般采用小尺寸的filter(3*3)
  1. VGG网络参数结构
第一个VGG block层( Block层是将多个基本的神经网络层(如卷积层、激活函数层、池化层等)组合在一起,形成一个相对独立且具有特定功能的子网络结构
以此类推,到最后一个VGG block层

5.26

  1. yolo算法中的三种损失

box_loss 边界框损失:衡量画框

cls_loss 分类损失:判断框里的物体

dfl_loss 分布式焦点损失:精益求精

缺失率,准确率,召回率
随着网络越来越深,存在梯度消失的问题,导致w更新后,效果不是很好,甚至不收敛了(前面做的训练权重(w)都没有初始化,权重初始化可以加快收敛,随着网络越来越深的模型,应该对权重进行初始化操作,否则可能出现不收敛,loss值不下降,acc也不高)
  1. GoogLeNet
googLeNet参数要比VGG少很多

架构

网络结构

在GoogLeNet中,卷积块被叫作inception块(结构如下图所示)。
有输入,卷积池化操作+9个inception块+池化全连接层组成。
  1. 1*1卷积的优点
跨通道的交互与信息整合(其实每个?*?的卷积都有)
卷积核通道数的降维和升维,减少网路参数(例如下面的例子)
  1. 全局平均池化
优点:
抑制过拟合
使特征图输入尺寸更加灵活
缺点:
信息丢失,复杂任务。
  1. 搭建模型
自己要会搭建,根据架构图,去定义卷积,池化,全连接,注意参数的填写,写前向传播模块,最后搭建网络,注意别丢激活函数。
注意:通道融合一定要检查每个路径的大小参数(高和宽)一定相等
  1. 训练自己的数据集

总结:写代码的顺序:

(1)准备数据集:收集并预处理数据(数据清洗,归一化,数据增强),设计数据加载和预处理管道(正确分割为训练集、验证集和测试集),同时必要时进行数据转换(转换成张量形式)
(2)模型设计:选择合适的深度学习模型(定义网络的各层、激活函数、损失函数等)+定义前向传播的函数
(3)训练逻辑:初始化模型和优化器,批次迭代和反向传播
(4)调优:参数调优,优化学习率和批次大小、网络结构等
(5)评估和测试

实战:猫狗分类

数据集的准备: 不同种类的数据要相对均衡,图片命名不要有汉字
经过transforms.ToTensor这个函数后,图像数值已经经历过一次归一化(对图像三通道中的像素进行缩放到0-1区间)了

第一次训练结果

第一次测试结果

第二次训练结果

放大前
放大后

第二次测试结果

  1. 模型的推理测试(预测随意的单张照片)
将照片放到被训练后的模型数据集中去检验。要将图片进行张量的转换,同时要添加批次的维度,将其转化成 四维张量后才可以放入模型中。 在GoogLeNet-1文件中
水果分类做练习
  1. ResNet网络模型(很重要)
由残差块搭建
网络越深,可能会带来模型退化问题。该网络可以解决层次越深,效果越差的情况
神经网络层的输出=神经网络层函数+输入(即,输出信息=处理前的有效信息+处理后的有效信息和冗余信息。)
(为了保证处理后的有效信息的丢失,需要加上处理前的信息,保证信息的完整性)
ResNet残差块中输入和输出张量的参数一定是相等的(宽,高,和维度相同),并且公式的和是张量的叠加,不像Inception块中将后加的数据放到尾部连接。
如果在残差块中进行数据相加时,存在通道数不同的情况下,用1*1的卷积去更改其实一项数据的通道数。

5.28

  1. BN层(批量规范化层)
为什么要归一化?
归一化就是让所有特征的影响权重更加平衡,防止某些特征影响过大
BN层可以加速收敛,解决梯度消失和梯度爆炸的问题,可以不需要再小心翼翼的设置权重初始化
BN怎么做?
求均值、方差、做归一化,获得0-1分布, 进行尺度变换和偏移(这步不是多余的,前几步是让数据函数变化经过非线性激活函数后变得有梯度,而当它紧接着进行下一层时,为了让他的梯度变化有所差异,因此要进行尺度的变换的偏移)
  1. ResNet网络参数的详解
以ResNet-18为例

YOLOV1

5.30

  1. Yolov1背景
目标检测步骤
(1)检测目标位置:找位置
(2)对目标物体进行分类:
二者同时一起进行,因此yolo算法检测比较快,但精度可能较低
全连接网络层参数大,容易过拟合,在v1版本之后就去除了
池化层一般采用最大池化
  1. V1参数详解

V1架构

除了最后一层1470*1用了线性激活函数外,其余层都是Leaky ReLu非线性激活函数
每一个卷积层:Conv+BN层+Leaky ReLu激活函数
训练使用Dropout与数据增强(翻转等操作)的方法防止过拟合
模型输出结果解析(7*7*30大小的向量)
特征的提取是全图的视野,不是将图片分成49个块送进yolo模型计算,图片还是以原始大小输入网络,最后的结果是把全图视野分成7*7 49个图像区域来去表示,每个区30个大小的向量,对存在目标的区进行标注(即7*7*30大小的向量,对应原始图片对应区域的结果)
7*7=49个结果里面各包含两个预测框(最后将精度和概率值低的过滤掉),每个框有5个元素值(w,h,x,y,c),两个框共用的20个物体类别的概率值

结果解析-置信度

IOU全称交并比,标注框与预测框的交并集:用于是否检测到目标的指标
预测阶段没有标注,置信度是模型预测出来的,而训练和测试的时候才是标注好的框,真实的值

结果解析-概率值

类别物体对应的概率值

结果解析-类别置信度

对结果进行筛选要进行后处理:(1)类别置信度 (2)非极大值抑制
公式:C(类别置信度) = P(有物体的概率)* Pr(是否有物体)* IOU(交并比)

非极大值抑制:删除一些较高的预测结果的框

针对不同类别检测且并行处理,处理流程如下

YoLoV1的总体流程

  1. YoloV1的损失函数
公式如下,参数解释也如下
  1. Yolov1的训练阶段
(1)先分类,将yolov1模型转化为分类模型,卷积,池化,全连接
(2)将分类模型转换为检测模型,在进行卷积等操作
  1. Yolov1的优缺点:
优点:(1)将物体检测定义为回归问题,速度快
(2)基于全图检测
缺点: (1)准确率不高
(2)在定位物体,尤其小物体方面比较差
(3)检测到的目标物体少(因为两个预选框共用一个类别概率)

YOLOV2

  1. Yolov2模型的改进点
加入BN层
注意:BN层与drouput最好不要共同使用,BN在某些情况下会削弱Dropout的效果
分类模型
采用更高分辨率的图片进行输入(原224*224-->448*448),准确率提高了(高分辨率能够呈现出更多细节)
去除全连接层(改成全卷积)
输出的参数由(7*7*30)--->(13*13*225)
其中,255向量大小是由9个预选框产出,(x,y,w,h,c,p,其中xywhc占5大小,p占20大小),也就是9*25=225
Anchor box
可以把Anchor框想象成预先设定的一些“模板框”,模型基于这些模板框去调整预测框,从而更快、更准地检测出目标。
Anchor框的大小比例设置很重要。最初设置了9个Anchor框(YOLOV2采用5个Anchor框,YOLOV3采用9个),分为3种不同的尺度(如128×128、256×256、512×512)和3种不同的宽高比例(如1:1、1:2、2:1)。
如图
DarkNet19(网络架构)分类模型
模型如下
输入由448改成416,这样做是为了下采样32倍之后最终的得到的特征图大小是奇数×奇数(416下采样32是13,448下采样32是14),这样13×13的特征图有中心单元格,这个技巧一定程度上提升了检测效率
去除了最后一层的定)卷积和池化,添加了1*1*n卷积层(n视输出结果而
dimension priors(对anchor框的优化)
相比之前手动选择Anchor box 的尺寸,利用k-means聚类手段算法可以自动得到k个尺寸比例
位置预测(location prediction)
公式如图所示(Yolov3也是这样的)
Passthrough(对网络模型的改进)
Passthrough层(特征重排层)是YOLO系列等目标检测模型中提升小目标检测能力的关键结构,其核心价值在于实现跨层级的细粒度特征融合。
concat操作(GoogNet网络操作):特征融合,保留了小目标的特征信息,同时,也保留了特征提取的信息,如图
add操作(ResNet网络操作)
完整的Darknet检测模型(可利用passthrough作为创新点提高检测mAP)
多尺度训练
训练输入图像是改变size(最好是32倍数)如果size大一点,计算速度可能会慢,但精度会高
  1. Yolov2模型的训练三个阶段
finetune分类模型(微调分类模型)
基于预训练模型,通过少量特定数据集对模型进行进一步训练,以适应新的分类任务。
当面临一个新的分类任务时,直接从头开始训练一个新模型可能需要大量的数据和计算资源,且效果不一定理想。而微调则是在预训练模型的基础上,使用新任务的数据集对模型的部分或全部参数进行调整,让模型能够学习到新任务的特定特征,从而达到较好的分类效果。
  1. Yolov2损失函数
参数有些复杂,到v3后有些部分被删除了
  1. Yolov2总结
优点:
对于yolov1定位不准确和检测召回率低的问题有了较好的解决。
anchor box(预选框)和DarkNet网络架构在后续版本有较好的沿用
缺点:
小目标检测效果差,整体检测效果有待提高

YOLOV3

6.2

  1. 召回率
召回率也称为查全率。它表示的是模型正确预测出的正样本数量占实际正样本总数的比例。在某些场景下意味着能减少漏判的情况。
  1. YoloV3网络结构图
V2和V3的架构图对比
图像金字塔(FPN)对应上图Backbone和Neck部分的操作
yolov1和v2采用VOC数据集,v3采用的是COCO数据集
物体位置的检测仍和v2版本一样
左右两边要会推,这是yolov3的架构
  1. Yolov3的正负样本
预测框三种情况:正例,负例,忽略样例
正例:任取一个标注框,与其他检测框做 IOU计算,IOU最大的预测框为正例
负例:正例除外,IOU小于阈值的为负例
忽略样例:IOU大于阈值的为忽略样例
  1. Yolov3损失函数
正样本有坐标损失、类别损失、置信度损失
负样本有置信度损失
  1. Yolov3总结
优缺点

6.3

.
  1. 评价指标(以分类为例)
  • 准确率
  • 精确率
  • 召回率
  • F1-Score
  1. 评价指标(以目标检测为例)
  • IOU交并比,置信度,类别置信度,非极大值抑制
  • 准确率、精确率和召回率同分类公式
  • PR曲线(就是精度和召回率的坐标曲线,横轴召回,纵轴精度)
  • AP:平均精度(直接求P-R曲线下的面积)
  • mAP:平均精度均值,就是AP的平均值,主要用于衡量目标检测模型的性能。
  • FPS:一秒能够检测多少张
  1. yolov3项目练习
  • 采用官方提供的权重作为预训练权重,可以提高训练速度
  • 利用数据集划分代码进行数据集的划分与转换,将xml文件转换为VOC文件
  • 标注模型还是训练模型,只需在原有基础上改参数就行
模型推理:对视频物体进行标注
  1. labelimg(标注软件)
标签文件体统采用VOC格式的xml文件,易读性强,标出了很多信息。
Yolo格式的数据集为txt文件,纯数字,比较难理解

6.4

  • 样本均衡的情况下,也可能改进mAP值
  • 调整参数设置,改善mAP值
练核心看了看代码训

YOLOV4

6.6

  1. Yolov4模型
  • 输入x-->主干--->颈部--->头部---->预测框
主干:主要负责从图像中提取基础的特征信息,提取的质量直接影后面结果
颈部:对主干网络提取的特征进行进一步的融合和处理,将不同尺度的特征信息进行整合,有效提高模型对不同尺度目标的检测精度。
头部:模型的输出部分,对特征图进行目标的分类和检测。
  • 免费包:不改变模型推理速度的方法,例如数据增强、解决数据集中语义分布偏差问题、边界框回归的目标函数
特殊包:改变模型推理速度的方法,例如增强感受野、插件模块之注意力机制、特征融合、激活函数、后处理
二者是改变输入部分
  1. Yolov4架构
主干部分基于CPSDarkNet-53架构,将模块中resunit换成ResNeXt模块,主干部分就变成了CSPResNeXt-50架构
  1. yolov4中的数据增强
  • Mixup:通过线性差值生成新的样本(就是两个图片模糊的重叠在一起)
  • CutMix:将一张图像的随机区域剪切并粘贴到另一张图像上
  • Blurring:模糊操作
  • Mosaic:通常是将四张图像拼接在一起形成一个新的图像
CutMix和Mosaic对数据分类、数据定位和数据检测方面都有很大的提升
  1. yolov4中的标签平滑
标签平滑是一种正则化技术,尤其在分类问题上。他可以有防止模型过拟合,提高泛化能力。
  1. ResNeXt(区别于ResNet)网络模块
该模块是由残差块和Inception块组合而成,CSPResNeXt-50在分类任务中会比CSPDackNet-53效果好,检测中二者反过来,二者各有千秋
  1. CSPNet网络结构(区别于DenseNet网络结构,对它的改进)
CSPNet对半划分的模块是通过卷积实现的,如下图
yolov4中CPS模块是上图的样式,CBM模块是对输入 x进行一个下采样的操作
  1. Yolov4的SPP结构
采用SPP模块的方式,比单纯的使用k*k最大池化的方式更有效的增加主干特征的接受范围,显著分离特征

6.7

  1. Yolov4颈部结构(FPN+PAN路径聚合块)
不断地融合特征,最终使输出的结果更好的去检测。
  1. Yolov4的改进
  • 消除网络对方程的敏感性。采用新的预选框参数公式,扩展预选框的移动范围。
  • 采用多个anchor匹配单个结果(v3版本中一个真实框对应一个预测框)
  • 遗传算法更新模型参数
  • 余弦退货算法(动态调整学习率)
  • 动态调整输入批次的大小
  • 优化Anchor大小,yolov4选取512*512的大小anchor
  • IOU的改进----GIoU DIoU CIoU
  1. Yolov4的损失函数
  1. DrouBlock操作(区别于Dropout)
DrouBlock不像Dropout一样随机丢弃单个神经元,会在特征图上丢弃一块相邻的单元,尤其适合卷积网络
DropBlock+Resnet-50的精度提升
  1. SAT自对抗训练(让模型增强对噪声和扰动的抵抗力)
可以扩充我们的数据集,提高模型泛化能力。对抗训练的结构图如下
  1. SAM(空间注意力模块)
SAM会为输入特征图分别应用最大池化和平均池化,得到两个特征图集合,其结果被送入一个卷积层,再由一个sigmoid函数创建出空间注意力,这个空间注意力掩码应用于输入特征,输出经过优化的特征图。不过,像YOLOv4使用的是修改版的SAM,其中未使用最大池化和平均池化。

6.10

  1. 看了yolov4代码模块的讲解

YOLOV5

6.14

  1. yolov5算法Mosaic增强、自适应锚框(同yolov4)
  2. Yolov5的推理原始图片可以是长方形,对长方形进行填补成正方形,补充的部分有利于提高推理速度
  3. yolov5的SiLU激活函数
  4. yolov5整体架构(与v3很像)
  • Focus模块(v5中的6.0版本代码已经移除),类似于v2中的Passthrough操作
  • C3模块,由CBS模块和残差组件以及Concat操作组成,其中Res Unit T残差组件有跳转连接,Res Unit F没有跳转连接
  • SPPF模块(v4中SPP模块的改进)多尺度特征融合+快速池化

6.15

  1. yolov5损失函数(同v4损失函数差别不大)

YOLOV 6

  1. yolov6整体架构图
  • 主干网络:主要决定了特征表示能力  
  • 颈部:用于将低级的物理特征与高级的语义特征进行聚合,然后在所有层次上建立金字塔形特征映射
  • 头部:由多个卷积层组成,并根据颈部组装的多级特征预测最终检测结果
  1. yolov6的改进
  • Backbone设计:对于小型模型,训练部分使用RepBlock,推理时合并多分支为RepConv。对于大型模型,提出了SCPStackRep Block,用在训练部分,在推理时合并成RepConv堆。
  • Neck设计:提出了Rep-PAN,将PAN的CSPBlock替换为RepBlock(小型模型)或者CSPStackBlock(大型模型),可根据需求调整相应的宽度和深度。
 EfficientRep Backbone 具体设计结构图,网络在不同情况下,RepVGG模块会有变化。
训练时采用多分支能够增强模型的表征能力,提高模型的准确率。推理时用单分支更快更省内存更灵活, 分支的每个分支计算量可能不同,但是需要将每个分支的结果相加,导致并行度下降,降低速度,另外多分支调用的算子更多,更耗时
  • 头部:将中间的3×3卷积层的数量减少到只有一个。头部的宽度由骨干和颈部的宽度乘数共同缩放。这样可以降低计算成本,如下所示。
  • Rep-PAN:Rep-PAN 基于 PAN拓扑方式,用 RepBlock 替换了 YOLOv5 中使用的 CSP-Block,同时对整体 Neck 中的算子进行了调整
  • 在训练策略上,采用了Anchor-free 无锚范式,SimOTA 标签分配策略,SIoU 边界框回归损失
  • YOLOv6进行了系统性分析并最终选择VariFocal Loss作为分类损失,SIoU/GIoU作为回归损失;

YOLOV7 

6.16

  1. yolov7的网络结构
最原始版本
  1. v7中的ELAN模块
  1. v7中的MP模块
与googlenet模块很像,没有太大的变化
  1. v7中的SPPCSPC模块
  1. v7中的ELAN-H模块与ELAN对比
  1. v7算法中的重参数化RepConv(在v7的别的版本中,并没有采用重参数化,只是使用的普通卷积)
在训练时,采用左边的残差架构。在进行模型测试或者推理时,采用右边的架构(将3*3+BN,1*1+BN与BN融合成3*3的结构,这就叫重参数化,能够降低网络 复杂度 ,提高效率)
下面的调整可以作为论文的改进点
  1. yolov7的辅助头
反向传播更新参数的过程中,由于yolo网络比较深,前面的网路参数更新可能会受到影响,所以添加辅助头来解决。测试不需要这个过程,只有训练需要
  1. ELAN-↑模块(主要应用在yolov7x版本中)
就是加深的ELAN的模块,参数变大了
yolov7x网络架构
  1. Yolov7w6版本的网络架构
多了检测头,参数变大了,最前面多了一个ReOrg模块,去除了MP模块,采用了ELAN-H模块,其余整体变化不大。 ReOrg模块同yolov5的focus模块
  1. yolov7e6版本的网络架构
  • 新增了ELAN-H-↑(加深了模块)
  • 新增了DownC模块 ,该模块与yolov7的MP模块相似(只是通道数的不同)
  1. yolov7d6版本,与e6版本很像。
  1. yolov7e6e模型
E-ELAN采用了分组卷积操作(可以降低网络参数),E-ELAN分组卷积可以拆分成两个ELAN,如下图所示

YOLOV8 

6.17

  1. yolov8的改变(官方团队写的代码,比较好,优化的也比较好)
  • Backbone:骨干网络和Neck与v7很像。将v5的C3结构换成了C2f结构,并对不同尺度模型调整了不同的通道数
  • Head:将分类和检测头分离,采用Anchor-Free ,v8没有了Anchor框大小的信息
  • Loss:抛弃了IOU匹配的分配方式,使用正负样本的匹配方式。
  1. yolov8的Bottleneck模块
没有什么特殊之处,有是否使用残差的区别,主要由CBS模块构成
  1. yolov8中C2F模块(相似与v7中的ELAN-H模块)
将ELAN中的CBS模块替换成了Bottleneck模块,初始时对通道进行划分。注意紫色模块的代码比较难理解
  1. v8中的SPPF模块
代码难理解,采用的方法和C2F模块一样
  1. v8中的模型深度和卷积通道参数的宽度受到权重类型的限制。 v8中采用的是l类型的权重
例如下图中,红色箭头的通道数经过CBS卷积后,应为20*20*1024,但是l类型的权重要求不得超过512,因此还是512
紫色圈中的C2F_1_x, x的深度大小也受到第一列权重的影响。

6.18

  1. yolov8不基于Anchor框去做自由检测的 ,那是如何输出结果的?
基于检测框的中心点,进一步确认上下左右的位置。
首先获取检测目标的坐标偏移量。 之后通过DFL模块(通过进行概率计算,计算并更新坐标偏移量的位置的概率情况。)
之后再将偏移量与概率相乘得出结算后的位置,最后确定检测框的位置。例子如下图
  1. v8正负样本的匹配
只要所有的Anchor框在所有的真实框和标注框的内部,就是初筛正样本。在经过Anchor point质量的计算得分,默认得分高的前10个为正样本。最后去重(可能一个Anchor框对应两个标注框)
  1. v8的损失函数(没听懂,v3之后,这损失函数逐渐离谱)

 YOLOV9

  1. yolov9(改进不是很多)
  • 提出了解决深度网络中信息损失的问题方案——可编程梯度信息(PGI),可以维持深层特征的关键信息。与yolov7版本中提出的辅助头异曲同工
如上图所示,该模型多引入了三个输出头,新增的粉色辅助头模块可以对浅层进行传播,是训练的结果更好。 但是在测试的时候,粉色以上的所有分支是不存在的。
  • 还有个信息聚合的创新点

YOLOV10

6.19

  1. yolov10整体架构(v10版本取消了后处理NMS非极大值抑制,主要是提高检测速度,加快收敛速度)
  1. 创新模块
  • C2fCIB模块:在特征映射上添加恒等映射,与残差块的跳转连接做特征融合作用一样
  • PSA模块:利用并行空间注意力机制,提升检测精度
  • SCDown模块:就是简单的卷积模块的组合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值