编程语言
首页 > 编程语言> > YOLO系列目标检测算法详解

YOLO系列目标检测算法详解

作者:互联网

目录

前言 YOLO发展历程

FPPS 帧每秒

目标检测

YOLOv2
- VOC精度78.6, 推理速度达到40FPS
- VOC精度76.8, 推理速度达到67FPS
- SSD的速度,RCNN的精度
YOLOv3
- COCO数据集精度33.0
- 推理速度快于SSD3倍
- 推理速度快于RetinaNet3.8倍

实时检测(FPS>30)
精度速度性价比最高

在这里插入图片描述

YOLO开山之作 ---- YOLO(v1)

单阶段目标检测模型
You Only Look Once
将目标检测当作一个单一的回归任务
在这里插入图片描述

  1. yolov1原理
    将图像划分为SS个网格
    物体bbox中心落在哪个网格上,就由该网格对应锚框负责检测该物体
    在这里插入图片描述
    输出特征图的宽度、高度(H、W)维上即为S
    S个网格
    输出特征图通道(C)维上组织x,y,w,h, Pobject, classification(one-hot)信息
    在这里插入图片描述

YOLOv2

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

YOLOv3

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

  1. YOLOv3目标检测原理
    在这里插入图片描述
    在这里插入图片描述
  2. YOLOv3网络结构
    在这里插入图片描述
    在这里插入图片描述
    上图三个方框内表示Yolov3的三个基本组件:
    (1)CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。
    (2)Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。
    (3)ResX:由一个CBL和X个残差组件构成,是Yolov3中的大组件。每个Res模块前面的CBL都起到下采样的作用,因此经过5次Res模块后,得到的特征图是416->208->104->52->26->13大小。
    其他基础操作
    (1)Concat:张量拼接,会扩充两个张量的维度,例如26×26×256和26×26×512两个张量拼接,结果是26×26×768。Concat和cfg文件中的route功能一样。
    (2)Add:张量相加,张量直接相加,不会扩充维度,例如104×104×128和104×104×128相加,结果还是104×104×128。add和cfg文件中的shortcut功能一样。

Backbone中卷积层的数量
每个ResX中包含1+2×X个卷积层,因此整个主干网络Backbone中一共包含1+(1+2×1)+(1+2×2)+(1+2×8)+(1+2×8)+(1+2×4)=52,再加上一个FC全连接层,即可以组成一个Darknet53分类网络。不过在目标检测Yolov3中,去掉FC层,不过为了方便称呼,仍然把Yolov3的主干网络叫做Darknet53结构。

  1. YOLOv3网络的输入输出
    在这里插入图片描述
    在这里插入图片描述

  2. 锚框
    在COCO数据集上KMeans聚类了9(3*3)种尺度的anchor(先验的超参数)
    在这里插入图片描述
    锚框只给出了框的宽度和高度,怎么去表示图像中物体真实框?
    有多少个真实框?分别在图像的哪个位置?

锚框的宽度和高度是固定的,物体真实框的宽度和高度各种各样,怎么去表示?

  1. YOLOv3检测流程
    在这里插入图片描述
    在这里插入图片描述
    真实框匹配
    真实框的中心落在哪个网格上,就由哪个网格负责检测这个真实框
    真实框的中心会落在三个特征图的网格上,每个网格有三个锚框,哪个锚框来检测这个真实框呢?
    –所有的9个锚框中,与真实框最匹配的,即IoU最大的负责检测这个真实框
    在这里插入图片描述
    如果两个真实框落在同一个网格上,还匹配了同一个锚框,怎么办?

如果两个真实框落在了同一个网格上,还匹配了同一个锚框,怎么办?
后一个真实框覆盖前一个真实框的信息,前一个真实框就会丢失了,这就是yolov3原理层面上决定的,不适合检测靠的近的,有遮挡的物体或者群体,因为很有可能他们落在了同一个网格同一个锚框上。
由真实框得到监督信息
在这里插入图片描述
在这里插入图片描述
yolo的思想是各通道之间是互相独立的,也就是各类别之间独立,也就允许多类别检测。所以用sigmoid,类别之间不互相干扰。softmax只允许一个类别

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

损失函数
在这里插入图片描述
需要计算哪些损失?
1)有真实框落在的锚框(正例)
在这里插入图片描述
2) 没有真实框落在的锚框(负例)

3) 只给了真实框落在的锚框回归真实框的机会?样本倾斜?(非正非负)

在这里插入图片描述
9. 计算预测框
在这里插入图片描述
10. NMS
在这里插入图片描述
在这里插入图片描述

PaddleDetection中YOLOv3模型介绍

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

总结
  1. YOLO发展史

    • YOLO(v1):首个单阶段目标检测深度学习模型,将目标检测当作一个单一的回归任务,基于锚框学习“形变”系数
    • YOLOv2:全卷积网络结构、Kmeans聚类anchors,多尺度训练
    • YOLOv3:新骨干网络DarkNet53,多尺度预测
  2. YOLOv3检测原理

    • 网络:输出特征图H,W维为网格
    • 锚框:9个锚框,每个尺度3个
    • 预测框:输出特征图C上为预测框信息,5+class_num
  3. PaddleDetection中的YOLOv3模型

    • 丰富的模型库。高精度高性能的YOLOv3模型
    • 一键式运行YOLOv3模型,YOLOv3模型配置文件解析
    • 集成PaddleSlim压缩能力,高性价比的YOLOv3压缩模型
    • 更快更强的PP-YOLO模型

标签:真实,YOLOv3,检测,锚框,YOLO,网格,算法,详解
来源: https://blog.51cto.com/u_11495341/3036178