20220526 yolov1-v5

you only look once

yolo是怎么预测bbox?

超详细的Yolo检测框预测分析 - 知乎 (zhihu.com)

怎么关联的?坐标狂

(166条消息) YOLOv3学习——特征提取与候选区域_天涯尽头黄鹤楼的博客-CSDN博客_yolov3特征图

一、yolov3训练预测流程:

非常好:

(166条消息) YOLOv3学习——特征提取与候选区域_天涯尽头黄鹤楼的博客-CSDN博客_yolov3特征图

1>·在3个尺度上进行预测,得到三个特征图。边长13:26:52,深度都是255。

2>特征图的每个点预测3个box,对应不同大小的anchor,每个box需要(x, y, w, h, confidence)五个基本参数,还要有80个类别的概率,所以3×(5 + 80) = 255,这个255就是这么来的。  

实际总共有(52×52+26×26+13×13)×3=10647个proposal box。

3>nms (只用在预测,训练所有框都要向ground truth靠拢)

按每个框的类别置信度排列anchor,再通过IOU递归选取不同的对象。

4>损失函数

分类、置信度、位置偏移量损失。  预测的置信度、位置偏移量相对anchor,  和anchor与标签的置信度偏移量进行计算损失,yolov4采用CIOU计算。

模型不再使用softmax函数作为最终的分类器,而是使用logistic作为分类器,使用 binary cross-entropy作为损失函数(使用sigmoid计算的xy, 物体置信度、类别置信度中均使用了交叉熵)

二、yolov5模型输出解析:

        设输出图片大小为1280,768,类别个数为2,则yolov5输出的三种特征图,其维度分别为:[1,3,96,160,7],[1,3,48,80,7],[1,3,24,40,7];相当于yolov5模型总共输出(96*160+48*80+24*40)*3=60480个目标框;

        其中,[1,3,96,160,7] 中1指代输入图像个数为1,3指的是该尺度下的3种anchor,(96,160)  指的是特征图的尺寸,7具体指的是:(center_x,center_y, width, height, obj_conf, class_1_prob, class_2_prob ),即分别为box框中心点x,y,长和宽 width,height,以及该框存在目标的置信度obj_conf,类别1和类别2 的置信度,若class_1_prob > class_2_prob,则该框的类别为class1;因此,obj_conf和class_1_prob一个指得是该框存在目标的概率,一个指是该框分类为类别1的概率;

二、yolov5后处理解析;

        从一可知模型输出了60480个目标框,因此,要经过NMS进行过滤,进NMS之前需要经过初筛(即将obj_conf小于我们设置的置信度的框去除),再计算每个box框的综合置信度conf:conf = obj_conf * max(class_1_prob ,class_2_prob),此时的conf是综合了obj_conf以及class_prob的综合概率;再经过进一步的过滤(即将conf小于我们设置的置信度的框去除),最后,将剩余的框通过NMS算法,得出最终的框;(NMS中用到了我们设置的iou_thres);
 

YOLO 原理:

YOLO-YOLOV5算法原理及网络结构整理 - it610.com

一、FasterRcnn 先实现感兴趣区域生成,再进行精细的分类和回归,限制了速度。
二、yolov1 无锚框预测
     1、网络结构
         卷机神经网络
         24个卷机层和两个全连接层。
         细节:

            3*3卷机后接一个通道数低的1*1卷机,降低计算量
            都是激活函数 leaky relu ,最后是线性激活函数

            训练使用dropout与数据增强来防止过拟合。

2、特征图意义

7*7*30 大小的特征图。

图像划分成7*7的区域,每个区域对应特征图的一个点,该点通道数为30,代表预测的30个特征。

每个区域内预测两个边框。


     预测特征由类别概率、边框的置信度、边框位置组成。
         1》类别概率:预测边框是哪个类别。
         2〉置信度:该区域内是否包含物体的概率。两个框,两个置信度。

        3》边框位置:中心坐标和宽高4个量。 两个边框8个值

       细节:
           1〉yolov1没有先验框,每个区域预测框的大小和位置,是回归问题。
          2》两个边框公用一个类别预测。在训练时选取和物体iou大的框。在预测时,选取置信度高的一个框,所以最多检测出49个物体。
          3》采用物体类别和置信度分开预测方法。而fasterrcnn背景当作一个类别,在类别预测中包含了置信度的预测。

        不足:

           1》只能49,有限制,挨着近的不行
           2〉没有anchor,对于新的宽高比例的物体检测效果不好。
           3》损失函数,大小物体损失占比失衡,定位不准确。
   3、损失计算
      原则:

      1、与真实物体 iou大的为正样本,这个区域类别真值为真实物体类别,该边框置信度真值为 1
      2、除了正样本,其余为负样本.负样本没有类别损失和位置损失,只有置信度损失,其真值为0
     损失意义:  均使用均方差损失
     1、正样本中心点坐标损失
     2、正样本宽高损失
     3、正样本与负样本的置信度损失。
     4、正样本类别损失

三、yolov2依赖锚框

        使用darknet网络结构。
        darknet优化点:

          1、BN层:解决梯度消失和爆炸问题。加速收敛、正则化。在每个卷机之后,激活函数之前。leakey relu
           2、用连续的3*3 替代v1的7*7卷机,减少计算量,增加了网络深度。去掉全连接和dropout层。

       3、深浅层特征融合,浅层变化13*13*2048,和深层13*13*1024的特征通道拼接。利于小物体检测。
       4、每个区域预测5个边框,每个边框有25个预测值,分别20个类别预测、4个(中心xy,宽高wh)偏移量位置、1个置信度。v1是共享类别预测。


      先验框设计
         1、v2使用聚类
         2、优化偏移公式
         faster rcnn 预测的边框中心可以出现在图像任何位置,没有限制。

      正负样本和损失函数
        将预测的位置偏移量作用到先验框上,得到预测框的真实位置。

        如果一个预测框和所有真实物体的最大iou小于一定阈值,该预测框为负样本。
        真实物体中心点的区域和物体的iou最大预测框为正样本。
        保证recall

      损失计算:

        1、负样本的置信度损失
        2、先验框和预测框的损失
        3、正样本的位置损失
        4、正样本的置信度损失和类别损失。
 

  工程技巧:

     1、多尺度训练
         接受任意尺寸的输入图片。

      2、多阶段训练
         darknet分类.  224*224
         分类。448*448
         检测  darknet passthrouth

           
 改进:

先验框

不需要直接预测边框,而是预测先验框到真实框的偏移,降低预测难度。和预测值和先验框GT的真实值,求损失。

特征融合

v2不足:

  1、虽然采用passrhrouth 采用一层特征图融合,小物体检测有限
  2、太工程话,调参数太多

改进点:

1、YOLOv1并没有采用先验框,并且每个grid只预测两个bounding box,也就是整个图像只有98个bounding box。YOLOv2如果每个grid采用9个先验框,总共有13*13*9=1521个先验框。所以最终YOLOv2去掉了全连接层,使用Anchor Boxes来预测 Bounding Boxes。作者去掉了网络中一个Pooling层,这让卷积层的输出能有更高的分辨率,同时对网络结构进行收缩让其运行在416*416而不是448*448

2、Multi-ScaleTraining(多尺度图像训练)

区别于之前的补全图片的尺寸的方法,YOLOv2每迭代几次都会改变网络参数。每10个Batch,网络会随机地选择一个新的图片尺寸,由于使用了下采样参数是32,所以不同的尺寸大小也选择为32的倍数{320,352…..608},最小320*320,最大608*608,网络会自动改变尺寸,并继续训练的过程。

五、yolov3 多尺度与特征融合
  1、网络结构darknet-53
      DBL:卷机、BN、leaky relu
      Res
      上采样
      concat
      残差思想
      多层特征图
      无池化层
 2、多尺度预测

    输出三个尺度特征图,深层感受野大,有利于大物体,浅层有利于小物体。 类似FPN

    沿用预选框,聚类,9个不同大小宽高的先验框,每个特征图的一个点需要预测3个框。感受野大的使用大的anchor.

  优缺点:

    优点:速度快、通用强、背景误检率低。
    缺点:位置准确性差,召回率不高,对于遮挡和拥挤较难处理,无法高精度。

在这里插入图片描述

改进点:

1、v3中主要包含三种损失,即坐标的损失,置信度的损失、分类的损失。
为了实现多标签分类,模型不再使用softmax函数作为最终的分类器,而是使用logistic作为分类器,使用 binary cross-entropy作为损失函数(使用sigmoid计算的xy, 物体置信度、类别置信度中均使用了交叉熵)

YOLOv3不使用Softmax对每个框进行分类,主要考虑因素有两个:

  • Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。
  • Softmax可被独立的多个logistic分类器替代,且准确率不会下降。

六、yolov4

yolov4数据输入采用mosaic


  1、网络结构

在这里插入图片描述
yolov4是CSP darknet53,yolov3是darknet53

yolov3中只有res结构,可以发现yolov4中,res只是CSPx结构的一小部分,CSPx中,一个分支进行过res残差结构,另一个分支,直接和残差结构的结构cat到一起。

base layer后面会分出来两个分支,一个分支是一个大残差边,另外一个分支会接resnet残差结构,最后会将二者经过融合。而yolov3中只有csp中简单的残差,并没有最后的融合操作。

yolov4增加了spp,用来增加感受野
yolov4 ssp之后使用了PANet,进行特征融合。

在这里插入图片描述

 激活函数:

mish 

1.从图中可以看出他在负值的时候并不是完全截断,而是允许比较小的负梯度流入,从而保证信息流动。
2.并且激活函数无边界这个特点,让他避免了饱和这一问题,比如sigmoid,tanh激活函数通常存在梯度饱和问题,在两边极限情况下,梯度趋近于1,而Mish激活函数则巧妙的避开了这一点。
3.另外Mish函数也保证了每一点的平滑,从而使得梯度下降效果比Relu要好。
 

损失计算:
yolov4中采用CIOU loss

http://www.136.la/jingpin/show-141192.html

YOLOV4与YOLOV3的区别_进我的收藏吃灰吧~~的博客-CSDN博客_yolov4和yolov3的区别

改进点:

1、DropBlock正则化

  • 原始输入图像。
  • 绿色部分表示激活的特征单元,b图表示了随机dropout激活单元,但是这样dropout后,网络还会从drouout掉的激活单元附近学习到同样的信息。
  • 绿色部分表示激活的特征单元,c图表示本文的DropBlock,通过dropout掉一部分相邻的整片的区域(比如头和脚),网络就会去注重学习狗的别的部位的特征,来实现正确分类,从而表现出更好的泛化。

    20220526 yolov1-v5_第1张图片

六、yolov5

深入浅出Yolo系列之Yolov5核心基础知识完整讲解 - 知乎

YOLOv5中的Focus层详解|CSDN创作打卡_tt丫的博客-CSDN博客_focus层

yolov5 训练技巧: 

YOLOv5的Tricks | 【Trick12】YOLOv5使用的数据增强方法汇总_yolov5数据增强_Clichong的博客-CSDN博客

七.SPP模块作用

  1. 多尺度特征提取:SPP模块通过在不同尺度上进行空间金字塔池化,获得了不同大小的感受野,从而可以对目标的多尺度特征进行有效的提取。这有助于模型在检测不同大小的目标时更加有效和准确。

  2. 减少特征图尺寸:SPP模块在进行空间金字塔池化时,会对特征图进行不同大小的池化操作,得到不同尺寸的池化特征。这些特征会被拼接在一起,形成一个多尺度的特征表示。通过这种方式,可以在不增加特征图尺寸的情况下,获得更多的上下文信息,提高特征的丰富性。

  3. 提高感受野:感受野是指网络在特定位置上看到的输入图像区域大小。通过在SPP模块中应用空间金字塔池化,可以增加感受野的大小,从而提高模型对整个图像区域的理解和感知能力。

  4. 缩减参数量:相较于在backbone中增加更多的卷积层,SPP模块可以在一定程度上减少参数量,从而减轻模型的计算负担,加快推理速度。

FPN和PAN的作用:

在YOLOv5中,neck(即Neck部分)是模型结构的一部分,它位于backbone(骨干网络)和head(检测头部)之间,用于进一步提取特征和融合多尺度特征。FPN(Feature Pyramid Network)和PAN(Path Aggregation Network)是YOLOv5中两种常用的neck模块,它们的作用是增强模型对不同尺度目标的检测能力。

  1. FPN(Feature Pyramid Network):

    • FPN模块的主要作用是构建特征金字塔,以提供多尺度的特征表示。它通过在不同层级的特征图上进行上采样和下采样操作,将低层级的细节特征与高层级的语义特征进行融合,生成一组具有不同分辨率的特征图。
    • FPN模块有助于检测不同尺度的目标,特别是小目标和远处目标。它可以通过融合多层级的特征信息,提高模型对整个图像场景的感知能力,并提高目标检测的性能。
  2. PAN(Path Aggregation Network):

    • PAN模块的主要作用是通过路径融合来整合不同层级的特征信息。它通过自适应池化和卷积操作,将较低层级的细粒度特征融合到较高层级的特征图中,形成一组具有多尺度信息的特征图。
    • PAN模块有助于增强模型对不同尺度目标的检测能力,同时减轻了特征图的尺寸,提高了模型的计算效率。

这两种neck模块都是为了提高模型对不同尺度目标的检测能力而设计的。它们能够有效地融合多尺度特征,提高模型的感知能力和准确性,适用于处理包含不同大小目标的复杂场景。在YOLOv5中,根据不同的网络版本和实验设置,可以选择使用FPN、PAN或其他合适的neck模块来进一步优化模型性能。

nms:

yolov1

前向推理:

  • 每个grid cell包含2个bounding box(每个bounding box包含4个box位置坐标和1个box置信度)和20个类别的条件概率。
  • 将box置信度和20个类别的条件概率分别相乘,得到一个权概率(20*1)。
  • 因此每个bounding box有一个权概率,1个grid cell有2个权概率,总共输出有772=98个权概率(上图竖条)。

YOLO中的NMS_WaitFoF的博客-CSDN博客_nms yolo



   
  

     

你可能感兴趣的:(深度学习)