YOLO系列目标检测算法详解

it2024-12-17  16

目录

前言YOLO发展历程目标检测YOLO开山之作 ---- YOLO(v1)YOLOv2 YOLOv3PaddleDetection中YOLOv3模型介绍总结

前言

YOLO发展历程

FPPS 帧每秒

目标检测

单阶段模型:YOLO, SSD, Retina-Net两阶段模型:RCNN, SPPNet 性价比之选:YOLO系列模型 YOLO VOC精度63.4, 推理速度达到45FPSVOC精度52.7, 推理速度达到155FPS

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 将目标检测当作一个单一的回归任务

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

YOLOv2

YOLOv3

YOLOv3目标检测原理 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结构。

YOLOv3网络的输入输出

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

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

从锚框到预测框 输出特征图高度、宽度为H, W,相当于将图像划分为H*W个网格 图像的每个网格对应输出特征图HW平面上一个点 为什么要有锚框 为什么要有锚框? 对于YOLOv3来说,巨人的名字叫”锚框“在数据集上Kmeans聚类得到锚框生成的预测框**仅需要在锚框基础上”微调“**即可收敛更快,效果更好 YOLOv3检测流程 真实框匹配 真实框的中心落在哪个网格上,就由哪个网格负责检测这个真实框 真实框的中心会落在三个特征图的网格上,每个网格有三个锚框,哪个锚框来检测这个真实框呢? –所有的9个锚框中,与真实框最匹配的,即IoU最大的负责检测这个真实框 如果两个真实框落在同一个网格上,还匹配了同一个锚框,怎么办?

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

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

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

损失函数 需要计算哪些损失? 1)有真实框落在的锚框(正例) 2) 没有真实框落在的锚框(负例)

objectness损失:将预测框的objection向0回归

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

不是匹配的锚框但是其对应的预测框与任一真实框IoU不小于ignore threshold(0.7),不计算损失

9. 计算预测框 10. NMS

PaddleDetection中YOLOv3模型介绍

总结

YOLO发展史

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

YOLOv3检测原理

网络:输出特征图H,W维为网格锚框:9个锚框,每个尺度3个预测框:输出特征图C上为预测框信息,5+class_num

PaddleDetection中的YOLOv3模型

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