Yolo系列总结

以下资料由本人观看up主霹雳吧啦Wz的讲解视频总结而来,总结定有不足之处,可移步观看up主本人的视频讲解,讲的很好(给我导打个广告)

文章目录

    • 目标检测数据集
    • 目标检测常见指标
    • yolov1
      • 论文思想
      • 网络结构
      • 损失函数
        • bounding box损失
        • confidence损失
        • classes损失
      • yolov1的局限性
    • yolov2
      • yolov2中的尝试
        • Batch Normalization
        • Hign Resolution Classifier(高分辨率图像)‘
        • Convolutional With Anchor Boxes(采用锚框的预测方式)
        • Dimension Cluters
        • Direct location prediction
        • Fine-Grained Featuires
          • PassThrough Layer实现此目的
        • Multi-Scale Training(多尺度训练方法)
      • 骨干网络
          • BackBone:Darknet-19
      • 模型框架
    • yolov3
      • 骨干网络
          • BackBone:Darknet-53
      • 模型框架
          • 目标边界框的预测
          • 正负样本匹配准则
      • 损失计算
          • 置信度损失
          • 分类损失
          • 定位损失
    • yolov3-spp
      • Mosaic图像增强
      • SPP模块
      • 模型框架
      • 损失函数
        • IoU Loss
        • GIoU Loss
        • DIoU Loss
        • CIoU Loss
        • Focal Loss
          • 引入
          • 使用Focal Loss的原因
          • Focal Loss的定义
          • 损失对比
    • yolov4(2020 CVPR)
      • 介绍
      • 网络结构
        • CSPDarknet53
          • CSP结构
          • Darknet53
        • SSP(同yolov3)
        • PAN结构--Path Aggregation Network
        • yolov4整体网络结构
      • 优化策略
        • Eliminate grid sensitivity--消除grid网格的敏感程度
        • Mosaic data augmentation(同yolov3)
        • IoU threshold(match positive sample)--匹配正样本的IoU阈值
        • Optimizered Anchors--优化锚框
        • CIoU损失函数(同yolov3 SPP)
    • yolov5(v6.1版本)
      • 前言
      • 网络结构(以yolov5-l为例)
        • Back Bone:New CSP-Darknet53
        • Neck:SPPF,New CSP-PAN
        • Head:yolov3 Head
          • Focus模块
        • SPP与SPPF
      • 数据增强
        • mosaic(同上)
        • Copy paste
        • Random affine--随机仿射变换
        • Mix Up
        • Albumentations
        • Augment HSV(Hue, Saturation,Value)
        • Random horizontal flip
      • 训练策略
        • Multi-scale training 多尺度训练(0.5~1.5x)
        • AutoAnchor(For training custom data)
        • Warmup and Cosine LR scheduler
        • EMA(Exponential Moving Average)
        • Mixed precision
        • Evolve hyper-parameters
      • 其他
        • 损失计算
        • 平衡不同尺度损失
        • 消除grid敏感度
        • 匹配正样本(Bulid targets)
    • yolox
      • 前言
      • 网络结构(以yolox-l为例)
      • Anchor-Free
      • 损失计算
      • 正负样本匹配SimOTA

目标检测数据集

每行表示一个物体,属性有图片文件名,物体类别,边缘框,有6个值

COCO数据集,目标检测的经典数据集,80个类别,330k图片,1.5m物体

目标检测常见指标

TP(True Positive): IoU>0.5的检测框数量(同一Ground Truth只计算一次)

FP(False Positive): IoU<=0.5的检测框(或者是检测到同一个GT的多余检测框的数量)

FN(False Negative): 没有检测到的GT的数量

Precision: TP / (TP + FP) 模型预测的所有目标中,预测正确的比例

Recall: TP / (TP + FN) 所有真实目标中,模型预测正确的目标比例

AP: P-R曲线下面积

P-R曲线: Precision-Recall曲线

mAP: mean Average Precision, 即各类别AP的平均值

yolov1

论文思想

1.将一幅图像分成SxS个网格(grid cell), 如果某个object的中心 落在这个网格 中,则这个网格就负责预测这个object。

2.每个网格要预测B个bounding box,每个bounding box,除了要预测位置的四个参数之外,还要附带预测一个confidence值,共5个。 每个网格还要预测C个类别的分数。B一般取2

每个bounding box要预测五个值,有位置参数,confidence值(置信度)yolo独有参数,每个网格预测C个类别的分数

在这里插入图片描述
Yolo系列总结_第1张图片

以上图为例,yolov1最终会得到一个7x7x30的tensor。

解释:对于一个7x7的网格来说,每个网格预测2个budding box,每个budding box包括位置信息(x,y,w,h)及confidence,再加上网格的C个类别分数,因此加起来为30

其中x,y表示预测目标框的中心坐标,范围在0-1之间,坐标相对于预测目标框,w,h表示预测目标框的坐标,相对于整个网格,范围同上

confidence定义为预测目标的budding box与真实目标budding box的交并比*Pr(object),后者取0或1,取零表示网格中不存在当前目标,取1表示网格存在当前目标。yolo中无anchor的概念,直接预测位置信息,与SSD,Fast-Rcnn的区别

在这里插入图片描述

最终得到的目标概率如上,既包括类别的概率,也包括预测目标框与真实目标框的交并比

网络结构

Yolo系列总结_第2张图片

未标s,默认步距为1

损失函数

bounding box损失

Yolo系列总结_第3张图片

计算损失采用的都是误差平方和的方法sum-squared error

Yolo系列总结_第4张图片

如图,在相同偏移的情况下,无论大目标还是小目标,误差都是一样的,但对于小目标预测而言,误差很不理想,大目标却很合适,所以改用采用y=sqrt(x)的方法求误差平方和,在相同偏移的情况下这样能够使小目标的损失大于大目标的损失,从而更去关注小目标的损失,对小目标更为敏感

Yolo系列总结_第5张图片

confidence损失

Yolo系列总结_第6张图片

classes损失

在这里插入图片描述

将上述三个损失函数相加,得到最终的损失函数

yolov1的局限性

对群体性的小目标检测结果不理想,比如一群鸟

当目标出现新的尺寸或比例时,效果不理想

主要错误原因来自于定位不准确,没有采用之前的锚框方法

从yolov2开始采取基于锚框的回归预测

yolov2

yolov2中的尝试

Batch Normalization

添加BN层,能够达到将近%2的mAP提升,有利于训练收敛,起到对模型的正则化作用,可以不再使用dropout层

Hign Resolution Classifier(高分辨率图像)‘

采用448x448的输入,能够带来将近%4的mAP提升

Convolutional With Anchor Boxes(采用锚框的预测方式)

基于锚框的偏移使得网络更易学习,简化yolov1中的问题,对于mAP会有轻微我的下降,但召回率提升很大,说明网络有很大的提升空间

Dimension Cluters

采用k-means聚类方法获取anchor

Direct location prediction

让每个anchor去负责预测目标中心落在某个grid cell(网格单元)区域内的目标 ,限制在感受野内

Fine-Grained Featuires

通过passthrough layer使相对底层的特征图和高层的特征图进行融合,从而提升小目标的检测效果

Yolo系列总结_第7张图片

PassThrough Layer实现此目的

Yolo系列总结_第8张图片

例子:4x4变成4通道的2x2

Multi-Scale Training(多尺度训练方法)

在迭代若干次后,将网络输入的图片随机修改成其他尺寸

原论文中采用的是加32的整数倍来改编输入尺寸

骨干网络

BackBone:Darknet-19

Yolo系列总结_第9张图片

19代表有19个卷积层

模型框架

Yolo系列总结_第10张图片

Filters:卷积核个数 Size:卷积核大小 无标注默认步距为1

Convolution中的Conv2d无偏置

最后的conv2d就是单纯卷积,没有BN,没有激活函数

x5表示一个目标会生成5个anchor,每个anchor有位置参数和类别分数

yolov3

骨干网络

BackBone:Darknet-53

Yolo系列总结_第11张图片

有53个卷积层,每个框是一个残差结构,没有最大池化层,下采样基本都是卷积层来实现的,卷积层替代最大池化下采样提升的原因是卷积层的参数是可以学习的

每个Convolutional由如下部分组成:
Yolo系列总结_第12张图片

无偏置参数

Yolo系列总结_第13张图片

Yolo系列总结_第14张图片

在coco数据集上训练,由于会选取三个不同尺寸的anchor模板,因此会输出三个尺度的tensor,每个tensor有85个参数,4个位置参数,一个confidence,80个类别分数

模型框架

从Dark-net53中输出进入以下结果

Yolo系列总结_第15张图片

concatenate均是在通道维进行拼接

共产生三个输出,预测输出1是13x13的,预测相对较大我的目标;

​ 预测输出2是26x26的,预测相对中等的目标;

​ 预测输出3是52x52的,预测相对较小的目标;

目标边界框的预测

目标中心点的参数并不是相对于anchor的,而是相对于当前整个cell的左上角点,虚线框表示实际的目标框,蓝色框表示预测的目标框,当卷积操作到红色标出的cell中,就产生如下计算,其他cell亦然

Yolo系列总结_第16张图片
bx,by的范围都是在cell之内的,预测的目标框的中心点限制在当前cell中

这样做,可以加快网络的收敛

正负样本匹配准则

Yolo系列总结_第17张图片

GT中心点所在的那个cell的AT2被预测为正样本

当三个anchor的模板IoU均大于设定的阈值(上图是0.3)时,会将该cell的三个AT均归纳为正样本,扩充正样本的数量

损失计算

Yolo系列总结_第18张图片

置信度损失

Yolo系列总结_第19张图片

对于每个bounding box的目标分数使用逻辑回归计算,采用二值交叉熵损失

pytorch当中的有nn.BCE函数

分类损失

Yolo系列总结_第20张图片

同样采用二值交叉熵损失计算,并用sigmoid激活函数输出,得到的概率是相互独立的

定位损失

采用的是预测值与真实值的差值再平方的计算方法,类似MSE,在后续的yolo网络中并不是这个损失函数
Yolo系列总结_第21张图片

yolov3-spp

Mosaic图像增强

Yolo系列总结_第22张图片

BN层用于计算每一个特征层的均值和方差,batch_size越大,得到的均值和方差就更接近整个数据集的均值和方差,但受限于硬件,batch_size是有增长局限的。因此,将多张图片拼接在一起输入网络,可变相地增加了输入网络的batch_size,更好的接近整个数据集的均值与方差

SPP模块

Yolo系列总结_第23张图片

输入一共分成了四个分支,一个直接接到输出,一个进行5x5的最大池化,一个进行9x9最大池化。一个进行13x13的最大池化,步距均为1,池化之前会对特征矩阵做padding填充,经过上述操作后各个分支的高宽和通道数都不变,最后作拼接,得到通道数x4的特征矩阵

SSP模块3个和1个的比较,随着输入尺寸越来越大,3个SPP模块的效果要更好一些,但是推理时间相应地会增加

Yolo系列总结_第24张图片

模型框架

与yolov3的区别在于在第一个预测输出之前加了SPP模块

该网络输入图像是512x512的RGB图像
Yolo系列总结_第25张图片

Yolo系列总结_第26张图片

损失函数

Yolo系列总结_第27张图片

IoU Loss

Yolo系列总结_第28张图片

右上角第三种的交并比最高,效果最好,且三者L2损失一样

IoU损失函数红框所示,或者是1-IoU

相比L2 Loss,用IoU Loss可以更好反映重合程度,具有尺度不变性,即无论矩形框是大是小,重合程度与矩形框的尺寸是无关的

缺点就是两个框不相交时IoU为0,IoU Loss会趋向于无穷大

GIoU Loss

Yolo系列总结_第29张图片

绿框表示真实的目标框,红色表示网络预测的目标框,蓝色框表示能涵盖绿框和红框并集的最小框,Ac表示蓝框的大小,u表示绿框和红框的并集大小,当绿框和红框重合程度越大,IoU越趋近于1,后面分式越趋近于0,GIoU越趋近于1;相反,绿框和红框距离无限拉远,IoU越趋近于0,分式越接近1,GIoU越趋近于-1

缺点:在高宽比相同以及两框处于水平、垂直的位置关系时,会退化成IoU
在这里插入图片描述

DIoU Loss

改进原因:IoU Loss收敛太慢;GIoU回归不准确

Yolo系列总结_第30张图片

绿框是真实框,黑色表示一个初始的训练框,蓝框表示基于黑框不断迭代接近真实框的预测框

DIoU在更少的迭代次数下,拟合更准确,右侧表示的三种情况,前两种IoU已经无法反映三者之间的差别了,但DIoU可以

在这里插入图片描述

b表示预测框的中心点坐标,bgt表示真实框的中心点坐标,d是这两个中心点的欧氏距离,c表示两框最小外接矩形的对角线长度

CIoU Loss

在DIoU基础上加上长(高)宽比
Yolo系列总结_第31张图片

Yolo系列总结_第32张图片

Focal Loss

引入

原论文提到使用Focal Loss反而mAP降2个百分点

Focal Loss都是针对One-stage object detection model的,如SSD,yolo,但会出现Class Imbalance,即正负样本不匹配的问题

一张图像中能够匹配到目标的候选框(正样本)个数一般只有十几个或几十个,而没匹配到的候选框(负样本)大概有10的4次幂-105次幂个,在这10的4次幂-10的5次幂个未匹配到目标的候选框中大部分都是简单易分的负样本(对训练网络起不到什么 作用,但由于数量太多会淹没掉少量但有助于训练的样本)

例如下图的红色框和黄色框的数量比较
Yolo系列总结_第33张图片

通过hard negative mining的方法筛选正负样本,寻找Loss较大的负样本,但是效果没有使用Focal Loss的效果好

使用Focal Loss的原因

Yolo系列总结_第34张图片

在这里插入图片描述

当为正样本时,α取1,负样本时α取-1,α用于平衡正负样本的权重

Focal Loss的定义

α无法区分哪些是容易的样本,哪些是困难的样本,因此提出损失函数,降低简单样本的权重,聚焦去训练难以分辨的样本,引入1-Pt的γ次幂

在这里插入图片描述

1-Pt的γ次幂可以降低易分样本的损失贡献

Yolo系列总结_第35张图片

最终公式:
Yolo系列总结_第36张图片

γ是超参数,α是平衡因子,γ、α分别取2,0.25时,mAP最高

损失对比

p–预测概率 y–取1表示正样本,取0表示负样本, CE–交叉熵损失 FL–论文提出的损失

rate–两种损失的比值

α=0.25,γ=2的情况下

Yolo系列总结_第37张图片

蓝色两行表示易分类的正样本;红色两行表示易分类的负样本;采用FL确实降低易分样本的权重

后两行表示难学习的正负样本,FL可以更好的学习难学习的样本

缺点:调参的影响大,训练集要标注准确,易受噪音干扰

yolov4(2020 CVPR)

介绍

Yolo系列总结_第38张图片

网络结构

CSPDarknet53

CSP结构

CSP结构作用:增强CNN的学习能力;移除计算瓶颈;降低显存使用

Yolo系列总结_第39张图片

part1和part2通道数均减半,part2经过两个ResBlock再接ConvBNMish,然后拼接输出,如上图所示

Darknet53

Mish激活函数:Mish=x * tanh(ln(1+e^x))

Mish激活函数无边界(即正值可以达到任何高度)避免了由于封顶而导致的饱和。理论上对负值的轻微允许允许更好的梯度流,而不是像ReLU中那样的硬零边界。

mish函数具有以下几个特点:1、无上限,但是有下限;2、光滑;3、非单调

Yolo系列总结_第40张图片

与其他激活函数比较

img

ConvBNMish结构由一个卷积层,一个BN层,一个Mish激活函数组成

ResBlock主分支是一个1x1、步距为1的ConvBNMish加上一个3x3、步距为1的ConvBNMish,

然后在输出端与输入端进行通道维的拼接

在DownSample1中的CSP结构中,两分支的通道数并未减半,之后的DownSample才开始减半

Yolo系列总结_第41张图片

SSP(同yolov3)

PAN结构–Path Aggregation Network

Yolo系列总结_第42张图片

FPN模块:将高层的语义信息与低层的融合

Yolo系列总结_第43张图片

在此基础上加上一个模块,该模块是将低层的语义信息与高层的融合,就是PAN模块

Yolo系列总结_第44张图片

另外不同的是,原始PANNet中,特征层与特征层的融合采用的是相加的方法,而yolov4采用的是通道维相加的方法

Yolo系列总结_第45张图片

yolov4整体网络结构

Yolo系列总结_第46张图片

优化策略

Eliminate grid sensitivity–消除grid网格的敏感程度

Yolo系列总结_第47张图片

上图会有极端情况,即gt box的中心点落在grid的顶点时,我们希望网络预测的tx,ty是0,

但sigmoid函数在x趋向于负无穷时才会到0,这种数值网络一般无法达到

下图引入缩放因子来解决这个问题,但会导致预测中心点出框的问题(未解释)

Yolo系列总结_第48张图片

最后两行是yolov5中的公式,y取到的范围更广,y对x更加敏感了

Mosaic data augmentation(同yolov3)

IoU threshold(match positive sample)–匹配正样本的IoU阈值

Yolo系列总结_第49张图片

通过之前的消除grid网格敏感度,可以得到更多的正样本数量,上图所示三个网格的AT2都会对应成正样本,根据上面提到的右下角公式可以推断左上角的网格不在内,因为左上角点与黑点的x,y偏移量是超过公式提供的值域的,因此不算在内
Yolo系列总结_第50张图片

右下角极端情况,x,y偏移量分别刚好等于0.5,1.5,这时只采用刚好落入该grid cell的anchor框,yolov5中这种cell的扩散都是上下左右方向的,不会有斜对角

Optimizered Anchors–优化锚框

Yolo系列总结_第51张图片

CIoU损失函数(同yolov3 SPP)

Yolo系列总结_第52张图片

yolov5(v6.1版本)

前言

Yolo系列总结_第53张图片

右上角主要针对输入分辨率是640x640的图片,下采样倍率最大达到32倍,与之前的一样,预测特征层也有三层

左下角主要针对输入1280x1280的图片,更高分辨率,下采样倍率最大达到64倍,预测特征层有四层

性能对比
Yolo系列总结_第54张图片

网络结构(以yolov5-l为例)

Back Bone:New CSP-Darknet53

Neck:SPPF,New CSP-PAN

Head:yolov3 Head

Yolo系列总结_第55张图片

Focus模块

输入的特征层每2x2大小化成一个patch,然后标注四个位置,然后画出若干个这样的patch,然后将每个patch中位置一样的块拼成新的特征层,如此一来,原来的输入特征层高宽减半,通道方向翻了4倍,再接上一个3x3的卷积层
Yolo系列总结_第56张图片

SPP与SPPF

Yolo系列总结_第57张图片

池化部分并行改串行,每一个串行都等价于一个并行模块,采用更小的卷积核,计算量也会更小

数据增强

mosaic(同上)

Copy paste

不同图像的目标复制粘贴,前提是数据集中必须要有每个目标的实例分割标签

Yolo系列总结_第58张图片

Random affine–随机仿射变换

Yolo系列总结_第59张图片

包括旋转、平移、缩放、错切

Mix Up

将两张图片按一定透明程度混合成新图片
Yolo系列总结_第60张图片

Albumentations

滤波,直方图均衡化,改变图片质量,源代码默认不使用

Augment HSV(Hue, Saturation,Value)

调节色度,饱和度,明度

Yolo系列总结_第61张图片

Random horizontal flip

水平随机翻转

训练策略

Multi-scale training 多尺度训练(0.5~1.5x)

比如训练输入图片是640x640,那么实际训练图片大小是在0.5x640到1.5x640之间的,随机取值,且取32的整数倍(受下采样的倍率影响)

AutoAnchor(For training custom data)

一般自己数据集启用,数据集的目标大小与常见的数据集目标差异过大时,建议采用,他会自动生成新的anchor,迁移学习时该方法不可用

Warmup and Cosine LR scheduler

以cos函数的形式改变学习率

EMA(Exponential Moving Average)

相当于给学习的变量增加动量,更新参数会更加平滑

Mixed precision

混合精度训练,可减少GPU显存占用,理论减半,加速两倍训练,适合非常大型网络模型的训练,需要GPU支持该方法

Evolve hyper-parameters

炼丹,建议采用官方的超参数

其他

损失计算

Yolo系列总结_第62张图片

λ是超参数,平衡因子

平衡不同尺度损失

Yolo系列总结_第63张图片

对每个目标的权重设置

P3–小目标

P4–中等目标

P5–大目标

消除grid敏感度

Yolo系列总结_第64张图片

tx,ty – 网络预测的目标中心点相对于当前grid cell左上角的偏移参数

cx,cy – 当前grid cell左上角的坐标

问题仍然是目标中心点落在grid cell边界上时所产生的正无穷和负无穷的问题

解决方法引入缩放因子,同yolov4
Yolo系列总结_第65张图片

另外的变换,对高宽进行改进
Yolo系列总结_第66张图片

修改原因:https://github.com/ultralytics/yolov5/issues/471

th,tw过大会出现指数爆炸,训练不稳定的情况,改用之后,限制在0~4之间

匹配正样本(Bulid targets)

Yolo系列总结_第67张图片

先计算gt与每个anchor的高度和宽度比值

然后求rw-max和rh-max,计算gt与anchor在高度和宽度方向的差异,差异越小,这两个数据越接近于1

最后计算在高度和宽度方向差异最大的比例

设立阈值anchor-t,若r-max小于anchor-t,则匹配成功,anchor-t的取值是跟上面的缩放后的值域有关

后续步骤与yolov4一致

Yolo系列总结_第68张图片

通过之前的消除grid网格敏感度,可以得到更多的正样本数量,上图所示三个网格的AT2都会对应成正样本,根据上面提到的右下角公式可以推断左上角的网格不在内,因为左上角点与黑点的x,y偏移量是超过公式提供的值域的,因此不算在内

Yolo系列总结_第69张图片

右下角极端情况,x,y偏移量分别刚好等于0.5,1.5,这时只采用刚好落入该grid cell的anchor框,yolov5中这种cell的扩散都是上下左右方向的,不会有斜对角

yolox

Anchor-Free思想(Fcos网络用过)

decoupled detection head–解耦检测头

advanced label assigning strategy(SimOTA)–更好的正负样本匹配的策略

前言

Yolo系列总结_第70张图片

网络结构(以yolox-l为例)

它是基于YOLO v5构建的,所以Backbone以及PAN部分和YOLO v5是一模一样的,注意这里说的YOLO v5是对应tag:v5.0版本的(开头有focus模块,中间用的是SPP结构),而我们之前讲的YOLO v5文章中是tag:v6.1版本,所以在Backbone部分有些细微区别

Yolo系列总结_第71张图片

除了右边的三个检测头,剩下的部分都是yolov5-l

Yolo系列总结_第72张图片

采用解耦和耦合的检测头的对比,新的检测头参数是不共享的,Focus中是共享的

乘4代表只预测四回参数,不需要再乘以anchor模板个数,anchor-free的网络特点

Anchor-Free

Yolo系列总结_第73张图片

与yolov4、v5相比,四个参数的计算去除了anchor的高宽参数,凸显anchor-free思想

不考虑anchor

损失计算

Yolo系列总结_第74张图片

检测头有三个分支,分类分支Cls,回归分支Reg,以及Obj分支(正样本gt标签为1,负样本gt标签为0)

Anchor-Point—由于是anchor-free方法,这指的是特征图中的每一个grid-cell,Npos代表的就是被分为正样本的grid-cell个数

正负样本匹配SimOTA

SimOTA是由OTA(Optimal Transport Assignment)简化得到的,OTA也是旷视科技

同年出的一篇文章,论文名称叫做《Optimal transport assignment for object detection》

目的是将匹配正负样本的过程看成一个最优传输问题。

Yolo系列总结_第75张图片

消融实验均基于yolov3比较

Yolo系列总结_第76张图片

Yolo系列总结_第77张图片

计算cost时需要进行预筛选,否则计算成本会很高

Yolo系列总结_第78张图片

fixed center area–通过计算得到这个区域框,该区域框与GT box的重合部分的anchor-point(图中黄色√) 右侧公式除了类别损失和回归损失之外,还加了一项

对交集区域取反,也就是图中黑色√的anchor point,在其前乘以一个很大的参数,这里是10万

这样在最小化cost的过程中,就会逼迫优先选择交集之内的anchor point,不够时再选取黑色的部分

Yolo系列总结_第79张图片

表1:将每个anchor point与gt计算cost,得到一个cost矩阵

IoU是每个anchor point预测的目标边界框和每个gt之间的IoU,这个数值在计算回归损失时会得到

n_candidate_k = min(10, ious_in_boxes_matrix.size(1)) 在10和anchor point个数之间取最小,上图得到的是6,根据IoU选取前六个anchor point得到表2

Yolo系列总结_第80张图片

dynamic_ks = torch.clamp(topk_ious.sum(1).int(), min=1)

针对每个gt所分配的正样本个数是不一样的,是动态计算得到的

对每一行求和再去整(向下取整),也就是说对gt1,有三个anchor point与之对应,gt2同理,

计算得到每个gt的dynamic_ks之后,根据dynamic_ks以及cost分配对应的Anchor point,根据最小化cost原则,选取cost表(表1)中三个最小的cost值所对应的anchor point

以上图为例,gt1选取A1 A2 A5, gt2选取A3 A4 A5,进而得到anchor point分配矩阵,如下图
Yolo系列总结_第81张图片

这里A5对gt1和gt2都是正样本,为了消除歧义,此时需对比一开始计算的cost矩阵,将anchor point分配给cost较小的那个gt,上图gt2更小,因此A5的真实标签就是gt2,得到下图

Yolo系列总结_第82张图片

此时,就已经找到了所有的正样本,也就是将gt分配给了对应的anchor point,其他均为负样本

正负样本匹配完之后,便可计算损失

你可能感兴趣的:(深度学习,目标检测,计算机视觉)