YOLO系列笔记

YOLO系列讲解

再次学习yolo系列理论合集,对YOLO进一步刷新印象,然后看代码。
与faster RCNN的区别: fasterRCNN是整张图进行预测回归,而YOLO是划分grid cell进行的

如何学习一个新的网络?这里作者给出了他的心得

  1. 先去别人相关讲解,有个大概印象
  2. 读原文,里面有大量的细节
  3. 读代码,对于每个网络,很多大牛都复现好了,挑选喜欢的框架,选一些作者经常更新标star比较多的,来克隆,学习。
  4. 读readme,跑通代码
  5. 进一步分析代码,先是网络搭建部分(结合原论文好理解),然后分析数据预处理以及损失计算部分,(三大部分)

什么是mAP指标呢?

文章目录

  • YOLO系列讲解
  • YOLO V1 理论部分
    • 1. 论文思想
      • 1) 将一幅图像分成sxs个网格(grid cell),如果某个object的中心落在这个网格中,则这个网格就负责预测这个object。
      • 2) 每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个**confidence值**(YOLO系列中独有的参数)。每个网格还要预测C个类 别的分数。
    • 2.网络结构
      • 3) 损失函数:
    • 3.存在问题
  • YOLO V2 理论部分
    • 1. YOLOV2的各种尝试
    • 2. YOLOV2的整体框架
    • 3. YOLOV2的backbone
    • 3. YOLOV2的网络训练的细节
  • YOLO V3 理论部分
    • 1.YOLO V3 backbone
    • 2.YOLO V3 目标边界框的预测
    • 2.YOLO V3 正负样本的匹配
    • 3.YOLO V3 损失的计算
  • YOLO V3 SPP网络
    • Moasic图像增强
    • SPP模块
    • IoU Loss
      • GIoU Loss
      • DIoU Loss
      • CIoU Loss
    • Focal loss


YOLO V1 理论部分

YOLO系列笔记_第1张图片
发表在: 2016 CVPR
推理速度:45FPS 448x448
准确率:63.4mAP

1. 论文思想

将目标检测设计成回归问题

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

2) 每个网格要预测B个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值(YOLO系列中独有的参数)。每个网格还要预测C个类 别的分数。

  • Q1: object的中心是怎么确定的?

YOLO系列笔记_第2张图片

  • Q2: 输出的网络结构为什么是这样的?2*5个bbox的信息,20个目标分数

2.网络结构

没有指出s,默认步距为1
YOLO系列笔记_第3张图片

3) 损失函数:

三损失加到一起就是总损失
YOLO系列笔记_第4张图片

3.存在问题

  1. 密集小目标检测效果很差
  2. 主要错误问题来自定位不准问题
  3. 当目标出现新的尺寸时,预测效果很差

YOLO V2 理论部分

YOLO系列笔记_第5张图片
发表在: 2017 CVPR
为什么叫9000呢?因为可检测目标个数超过9000个

1. YOLOV2的各种尝试

YOLOV2在V1基础上的各种尝试

  1. BN批量正则化
  2. 采用更高分辨率的分类器 224x224 >>> 448x448
  3. 基于anchor的目标边界框的预测
  4. anchor的一个聚类,来选出好的anchor
  5. 对预测的中心坐标偏移量进行限制,采用sigmoid函数将其限制到0~1之间,最后生成的anchor会在我们的grid(为了加快效率)
    YOLO系列笔记_第6张图片
  6. 结合更底层的信息,如何通过passthrough layer将两个大小不相同的特征层(26x26x256和13x13x1024)进行融合的呢
    这副图给出了答案,
    YOLO系列笔记_第7张图片
  7. 多尺度训练,替换固定尺寸的输入方式,每迭代10次,改变输入尺寸大小

2. YOLOV2的整体框架

YOLO系列笔记_第8张图片

3. YOLOV2的backbone

Darknet-19,19代表有19个卷积层。
并移除了最后一个卷积层
YOLO系列笔记_第9张图片

3. YOLOV2的网络训练的细节

  • Q3: 如何匹配正负样本?
  • Q4: 如何计算误差?

YOLO V3 理论部分

YOLO系列笔记_第10张图片
发表在2018CVPR会议上的,非常快,

1.YOLO V3 backbone

DarkNet-53(53个卷积层)
YOLO系列笔记_第11张图片
为什么darknet53会比resnet更深层的网络要好一些呢?因为darknet中没有最大池化层,通过卷积层来进行下采样层。

YOLOv3是通过三个预测特征层进行预测的,每个预测特征层使用三个尺度.(13x13,26x26,52x52)
YOLO系列笔记_第12张图片
UP主在这里强调了一下,与在FPN中将higher lever特征图和lower lever特征图在对应的维度上进行相加不同,这里的操作是 在深度方向上进行拼接的。

2.YOLO V3 目标边界框的预测

预测值 t x t_x tx t y t_y ty t w t_w tw t h t_h th
YOLO系列笔记_第13张图片

2.YOLO V3 正负样本的匹配

有几个GT就有几个正样本。

3.YOLO V3 损失的计算

在这里原文中并没有给出详细的计算公式,都是up主自己写出来的,up牛逼。
YOLO系列笔记_第14张图片
YOLO系列笔记_第15张图片
YOLO系列笔记_第16张图片
采用二值交叉熵损失每个类别的概率是独立的。
YOLO系列笔记_第17张图片
l ^ i x \hat l_i^x l^ix代表 预测的结构 与其对应anchor,x的偏移量。
g ^ i x \hat g_i^x g^ix代表 grand truth与其对应anchor,x的偏移量。

YOLO V3 SPP网络

Moasic图像增强

随机选取四张图象进行组合,然后进行训练
有如下三个优点:

  1. 增加数据的多样性
  2. 增加目标个数
  3. BN能一次性统计多张图像的参数,变相的增加了网络的batch size(batch size设的大一点,其算出的均值和方差更接近整个数据集的均值和方差)

SPP模块

YOLO系列笔记_第18张图片
因为步长为1,padding对外扩充,每个像素都会进行一次最大池化,对应一个新的值,所以总大小不变。 p a d d i n g = ( s i z e − 1 ) / / 2 padding=(size-1)//2 padding=size1//2
YOLO系列笔记_第19张图片

  • Q1:为什么只在第一个预测特征层前添加了一个SPP结构?
    A1:可以但是没必要,效果差不多。

IoU Loss

YOLO系列笔记_第20张图片
L2损失不能很好的反应两个边界框重合的程度。

GIoU Loss

YOLO系列笔记_第21张图片
A c A^c Ac:代表蓝色边界框面积
u u u:代表两个目标边界框并集的面积
YOLO系列笔记_第22张图片

DIoU Loss

IoU和GIoU有两个缺点:收敛慢,回归的不够准确
YOLO系列笔记_第23张图片
YOLO系列笔记_第24张图片
b b b:代表预测目标边界框的中心坐标
b g t b^{gt} bgt: 真实目标边界框中心坐标
ρ \rho ρ:欧式距离
c c c: 两个边界框最远对角线的距离。

CIoU Loss

YOLO系列笔记_第25张图片

Focal loss

针对 One-stage检测模型的,(其都会遇到正负样本不平衡的问题)

  • Q2: 为什么two-stage检测模型没有遇到正负样本不平衡的问题
    A2:这里up的看法是:因为分两步走,在第一步中,样本不平衡的问题是存在的,但是经过筛选之后的proposal的数量比one-stage模型好了很多

YOLO系列笔记_第26张图片
为了解决前景和背景极度不平衡的情况。然后引入 α \alpha α之后对于我们计算 交叉熵损失有什么作用呢? 用来平衡我们正负样本的权重
α \alpha α是针对正样本而言的,对于负样本是 1 − α 1-\alpha 1α
YOLO系列笔记_第27张图片
α \alpha α用来平衡我们正负样本的权重,但是它不能表示出哪些是容易的样本,哪些是困难的样本。所以论文作者提出了一个损失函数,用来降低我们简单样本的权重,因此网络可以聚焦于去训练比较难分的负样本。提出了 ( 1 − p t ) γ (1-p_t)^\gamma (1pt)γ
YOLO系列笔记_第28张图片
这里作者给出了总的形式
YOLO系列笔记_第29张图片
这里给出了 CE原来的交叉熵损失和FL作者提出的Focal Loss的对比,可以看出FL能够降低易分样本的权重
蓝色:正样本
红色:负样本
绿色:难以训练的样本
YOLO系列笔记_第30张图片

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