首页 > 编程语言 >yolov3算法及其改进

yolov3算法及其改进

时间:2024-12-28 15:01:30浏览次数:3  
标签:yolov3 特征 改进 cell 卷积 算法 grid YOLOV3

yolov3算法及其改进

1、yolov3简介

在这里插入图片描述

  • YOLOV3的实时性和精确性在当时比较好,广泛应用于工业界
  • YOLOV3在backbone网络结构上应用残差连接思想来解决深度网络的梯度消失问题
  • YOLOV3最显著的改进就是在三个尺度上以相同的方式来进行目标检测,这使得科技检测到不同规模的目标
  • YOLOV3损失函数是将之前的softmax改为logit
  • 在最后推理阶段YOLOV3对3个检测层的预测结果进行非最大抑制(NMS)来确定最终的检测结果

在这里插入图片描述

2、yolov3的改进

2.1、backbone的改进

yolov3主要基于darknet53进行构建,除此之外还有VGG,darknet19,resnet101,darknet53等等

2.1.1、darknet19相对于vgg16有更少的参数,同时具有更快的速度和更高的精度

  • 较少的参数量:使用1x1的卷积代替了FC,同时 darknet19使用1x1的卷积进行通道缩减,而VGG使用3X3卷积,通道数几乎不变
  • 较快的速度:1x1卷积的bottleneck设计也会有速度上的优势
  • 较高的精度:darknet19在网络后期通道上也增加了而VGG系列最后一个block的通道数是不变的
    在这里插入图片描述

2.1.2、resnet101和darknet53,同样具有残差结构,精度也类似,但是darknet具有更高的速度

残差结构
在这里插入图片描述
残差结构的如上图所示,原理如下:把卷积层的前后特征进行元素相加求和,如果特征在这其中的某一个卷积后消失,那么残差结构便可以找回丢失的特征

在这里插入图片描述在这里插入图片描述

  1. 都使用了stride=2的3x3卷积代替了Max-pooling操作,也都用了残差结构的思想来设计主干模型
  2. darknet每个stage只使用了2个卷积作为block,而resnet101则使用了3个卷积层,
  3. darknet53最后一个stage通道数是resnet101的0.5倍
  4. 每一个stage的残差块数量darknet53的设计更为均衡(1,2,8,8,4vs3,4,23,3),说明resnet01的设计可能有冗余

2.2、FPN

在这里插入图片描述
基于图像金字塔的构建的特征金字塔构成了标准解决方案的基础,能够通过在位置和金字塔级别上的扫码模型来检测大范围内的对象。手动设计

在这里插入图片描述
手工设计的特征在很大程度上被卷积网络提取的特征所取代,卷积网络除了能够表示更高层次的语言之外,对尺度变化也更为鲁棒,有助于对单一尺度上的特征进行识别

在这里插入图片描述
图像金字塔的每个level都有其主要特点,backbone的网络都会产生不同大小分辨率的特征图,不同的深度导致每一层语义差距较大,同时高分辨率特征图具体低层次的特征,会损害其对目标识别的表征能力

SSD模型的金字塔特征层次结构,如上图所示,是一个特征化的图像金字塔,SSD重要来自不同层的多尺度特征,但是为了避免使用低级特征,SSD放弃使用已有的特征层,而是从网络的高层开始构建金字塔,然后添加几个新层
SSD错过了重用特征层次结构的更高分辨率特征的机会
在这里插入图片描述
上图结构,能够增加较少计算量的前提下融合低分辨率的语义信息较强的特征图和高分辨率语义信息较弱的但空间信息丰富的特征图

FPN的独特之处在于,它是在以特征金字塔为基础的结构上,对每一层的特征图分别进行预测,在保证速度的同时进一步提升精度

YOLOV3的FPN是如何设计的?
在这里插入图片描述
在这里插入图片描述
YOLOV3选择了重用backbone所提取的不同level的特征图,主要是8,16,32倍下采样的特征图,同时采用FPN的设计思想,分别对16倍,32倍以及各自上采样的结果进行融合,融合操作由add改为concat

2.3、anchor-base与grid-cell

在这里插入图片描述
在这里插入图片描述
YOLOV3会产生三个尺度的特征图,加入输入为4164163,特征图分别为:

  • 13 X 13 预测大目标
  • 26 X 26 预测中目标
  • 52 X 52 预测小目标

总共产生1313+2626+5252个grid cell
每个grid cell由3个anchor
总共有3
(1313+2626+52*52)个预测框

在这里插入图片描述

对于每一个grid cell,都对应一个85维度的tensor(80+5 = 80+4+1)
80:80个类别的概率
5=4+1:中心坐标x,中心坐标y,宽,高,置信度

3、yolov3的坐标表示和正负样本匹配

3.1、坐标表示

在这里插入图片描述
YOLOV3采用直接预测相对位置的方法:预测出bbox的中心点相对于grid cell左上角的相对坐标,例如tx,ty,tw,th,t0),然后通过一下坐标偏移公式计算得到bbox的位置大小和置信度。
在这里插入图片描述
tx、ty、tw、th就是模型的预测输出
cx,cy表示grid cell的坐标
如果特征图大小为13*13,grid cell就有13x13
那么第2行,第2列的grid cell坐标cx就是2,cy就是2,
pw和ph表示预测的前bbox的四则
bx,by,bw和bh就是预测得到的bbox的中心坐标和宽高。
confidence=P(object)*IOU表示框中含有object的置信度和这个box预测的准确度
如果这个框对应的是背景,那就是0
如果这个框对应的是前景,这个值就是与对应前景GT的IOU

3.2、正负样本匹配

在这里插入图片描述
正负样本匹配的规则就是给每一个GT分配一个正样本,这个正样本是所有bbox中找到一个与GT重叠区域最大的一个预测框,也就是该GT的IOU最大的预测框。

如果一个样本不是正样本,它既没有定位损失,也没有类别损失,只有置信度损失,在YOLOV3中尝试用focal loss来缓解正负样本不均衡的问题,由于负样本参与了置信度的损失,对loss影响占比小,因此效果不佳

另外还有一个缺点,正样本数量较小,网络难以训练

4、yolov3的损失函数

在这里插入图片描述
yolo的loss分为三个部分:
1、xywh的误差,也就是bboxloss 上面公式前两行
2、置信度误差,也就是obj loss 上面公式接下来两行
3、类别误差。也就是class loss 上面公式最后一行

其中
S:S^2代表1313,2626,52*52
B:每个网格产生B个候选框
带obj的I:如果在i,j处的box有目标,其值为1,否则为0;
带noobj的I:如果在i,j处的box没有目标,其值为1,否则为0;

标签:yolov3,特征,改进,cell,卷积,算法,grid,YOLOV3
From: https://blog.csdn.net/m0_38113054/article/details/144727872

相关文章

  • yolov4算法及其改进
    yolov4算法及其改进1、yolov4介绍2、mosaic与mish激活函数2.1、mosaic数据增强2.2、Mish激活函数3、backbone网络框架的改进4、PAN-FPN的介绍5、样本匹配和损失函数5.1、样本匹配5.2、YOLOV4损失函数5.2.1、GIOUloss5.2.2、DIOUloss5.2.3、CIOULoss1、yolov4介......
  • yolov5及其算法改进
    yolov5及其算法改进1、YOLOV5目标检测简介2、前处理2.1、自适应Anchor计算2.2、自适应计算Anchor的流程如下:2.3、图像自适应3、YOLOV4与YOLOV5的架构区别3.1、SiLU激活函数3.2、CSPBlock结构图3.3、yolov5的spp改进4、正负样本匹配与损失函数4.1、坐标表示4.2、正......
  • 强化学习算法:soft actor-critic (SAC)—— SAC中的alpha_losse是什么?
    官方实现地址:https://openi.pcl.ac.cn/devilmaycry812839668/softlearning在SAC算法的官方实现中有一个论文中没有介绍的部分,这就是SAC中的alpha_losse,在SAC论文中alpha是以超参数的形式存在的,但是在论文作者发布的具体实现的代码中关于这个alpha却给出了一种计算方法,该方法可......
  • 基于 Python +线性回归算法 的 股票价格预测
    以下是一个基于Python控制台的股票价格预测程序,适合作为课程设计作业。程序基于机器学习模型(如线性回归),实现对股票价格的预测,并支持用户通过控制台输入或加载历史数据进行操作。功能描述数据加载:用户可输入股票历史价格数据,或从文件中加载CSV数据。数据可视化:显示......
  • node.js基于协同过滤算法的企业入职评测系统服务端程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于企业入职评测系统的研究,现有研究主要以传统的评测模式为主,如单纯依靠简历筛选、简单面试等方式进行人员筛选1。专门针对利用协同过滤算法构建企业入......
  • 强化学习算法:soft actor-critic (SAC)—— 官方发布的核心代码
    完整的官方代码地址如下:https://openi.pcl.ac.cn/devilmaycry812839668/softlearning核心代码实现:点击查看代码fromcopyimportdeepcopyfromcollectionsimportOrderedDictfromnumbersimportNumberimportnumpyasnpimporttensorflowastfimporttensorf......
  • 网络流 Dinic 算法笔记
    网络流Dinic算法笔记步骤建图,初始时令反向边权值为零,之后将该边每次用去的权值累计赋值给该反向边。分层,每次只能找下一个层的点。每次多向找增广路,并将跑满的边去掉,之后再去跑残量网络,直到榨干所有可用管道。大致就这样,然后注意时时减脂优化。code#include<bits/stdc+......
  • 【算法一周目】从时光的边缘看世界:前缀和揭示的算法真谛
    文章目录1.一维前缀和2.二维前缀和3.寻找数组的中心下标4.除自身以外数组的乘积5.和为k的子数组6.和可被k整除的子数组7.连续数组8.矩阵区域和1.一维前缀和题目链接:【模板】一维前缀和题目描述:给定一个长度为n的整数数组arr和q个查询,每个查询由两个整数l......
  • Java动态规划算法
    ①动态规划动态规划(DynamicProgramming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产......
  • 遗传算法——附python实现与各方法的作用与修改
    前言遗传算法是数学建模中非常重要的一种搜索和优化算法,掌握遗传算法的精髓除了在竞赛中具有优势以外,更主要的是在解决实际问题的时候提供了一种全新的思路,通过将现实中的某种模式转换成算法,并用以解决某种问题的这种思路,或许是算法创新,提高效率的另一条路。本文将会介绍......