算法问题整理(二)

网络资料整理个人学习,感谢各位大神!(若侵则删)

问题10:卷积-目标检测系列问题

参考:40+目标检测网络架构大盘点!从基础架构ResNet到最强检测器Yolov7再到最新部署神器GhostNetV2 

【深度学习】YOLO检测器家族所有版本(2024最新汇总、详细介绍)_yolo各个版本-CSDN博客
YOLO系列算法全家桶——YOLOv1-YOLOv9详细介绍 !!-腾讯云开发者社区-腾讯云
关键挑战
  • 类内变化: 同一目标实例之间的类内变化在自然界中很常见。这种变化可能由多种原因引起,如遮挡、照明、姿势、视角等。这些不受约束的外部因素可能会对目标外观产生巨大影响。 某些目标可能具有非刚性变形或旋转、缩放或模糊等特性,这都使得特征提取变得异常困难。

  • 类别数量: 同时检测大量的目标是一个非常具有挑战性的问题。它需要大量的高质量注释数据,这极大的增加了标注成本。 使用少样本训练策略来训练检测算法当前十分热门的研究领域。

  • 效率: 当今的模型需要大量的计算资源来生成准确的检测结果。随着移动和边缘设备变得普遍,高效的目标检测器对计算机视觉领域的进一步发展至关重要。

评价指标

1 Precision
Precision(精确率):Precision 衡量了在所有被检测为正样本的样本中,有多少是真正的正样本。

Precision 的计算公式为:Precision = TP / (TP + FP),其中 TP 是真正的正样本数量,FP 是将负样本错误地标记为正样本的数量。较高的 Precision 表示算法在正样本的判定上更准确。

2. Recall
Recall(召回率):Recall 衡量了在所有真正的正样本中,有多少被算法正确地检测出来了。

Recall 的计算公式为:Recall = TP / (TP + FN),其中 TP 是真正的正样本数量,FN 是错误地未能检测到的正样本数量。较高的 Recall 表示算法能够更好地检测出真实目标。

3. Average Precision(AP)
AP 是根据 Precision-Recall 曲线计算的面积。它对不同召回率下的 Precision 进行插值,并计算插值曲线下的面积。AP 是评估目标检测算法在不同召回率下的综合性能指标。

4. mean Average Precision(mAP)
mAP 是所有类别的 AP 值的平均值。它是评估多类别目标检测算法整体性能的重要指标。

5. Intersection over Union(IoU)
IoU 是用于衡量预测边界框与真实边界框之间重叠程度的指标。IoU 计算为预测框与真实框的交集面积除以它们的并集面积。IoU 通常用于确定预测框是否与真实框匹配。

6. F1-score
F1-score 是 Precision 和 Recall 的调和平均值,用于综合考虑算法的准确性和召回能力。

F1-score 计算公式为:F1-score = 2 * (Precision * Recall) / (Precision + Recall)。

方法分类

参考:https://zhuanlan.zhihu.com/p/694572995

anchor-based。目标检测一般都是采用anchor_based的方法,大致可以分为单阶段检测器和双阶段检测器。它们都是在一张图片上放置大量的预先定义好的 anchor boxes,然后预测其类别,优化这些anchor boxes的坐标,最终将这些优化后的 anchor boxes作为检测结果输出。由于双阶段方法需要优化的 anchors 的数量是单阶段方法的好几倍,前者的准确率要高一些,而后者的计算效率要高一些。在常用的检测基准上,SOTA的方法一般都是anchor_based 的。

  • 双阶段方法。Faster R-CNN 的出现确立了双阶段、anchor-based 检测器的主导地位。Faster R-CNN 由一个 RPN 网络和一个 region-wise 的预测网络(R-CNN)组成,然后预测目标。之后,人们又提出了许多的算法来提升其表现,包括结构重新设计、注意力机制、多尺度训练、训练策略和损失函数、特征融合和增强、候选框平衡等。目前在标准的检测基准上,SOTA的结果仍然被双阶段anchor-based方法统治。
  • 单阶段检测器。随着SSD(RetinaNet)的出现,由于其计算效率高,单阶段检测器吸引了很多人的关注。SSD 在卷积网络的多尺度上展开 anchor boxes,直接预测物体的类别和 anchor box 偏移量。随后,人们又从多个方面进行大量的工作来提升其性能,如不同层之间上下文信息融合、从零开始训练、引入新的损失函数、anchor优化与匹配、结构重设计、特征增强和对齐等。现在,单阶段 anchor-based 方法已经可以取得与双阶段 anchor-based 方法类似的性能,而速度要更快。

anchor-free。由于FPN和 Focal Loss 的出现,最近学术领域又开始关注在 anchor-free 检测器上。Anchor-free 检测器以两种不同的方式来直接找到物体,无需预先定义 anchors。一种方式是首先定位到多个预定义或自学习的关键点,然后约束物体的空间范围。作者称这种 anchor-free 方法为 keypoint-based 方法(基于关键点的方法)。另一种就是利用中心点或中心目标区域来定义正样本,然后预测它到目标四个边的距离。这类 anchor-free 方法被称作为 center-based 方法(基于中心点的方法)。这些 anchor-free 方法降低了有关anchor的超参数,取得的效果与 anchor-based 方法类似,使它们更具泛化潜能。

检测算法:RCNN
  • 基于选择性搜索算法为每个图像提取2,000个候选区域;
  • 使用CNN为每个图像区域提取特征;
  • 整个RCNN物体检测过程用到三种模型:

这些过程相结合使得RCNN非常慢,对每个新图像进行预测需要大约40-50秒,这使得模型在面对巨大的数据集时变得复杂且几乎不可能应用。

检测算法:Fast RCNN
  • 训练是single-stage的,使用multi-task loss;
  • 训练时可以更新所有网络层;
  • 不需要再硬盘上额外存储;
  • 更高精读mAP。

输入是一张图片和多个proposal,经过卷积层计算之后,通过ROI pooling的方式归一到一个fixed size的feature map,最后通过FCs计算分类损失(softmax probabilities)和框回归损失(b-box regression offsets)。

相比于RCNN,Fast RCNN已经取得了长足的进步。但是,Fast RCNN也存在一定的问题,它仍然使用选择性搜索作为查找感兴趣区域的提议方法,这是一个缓慢且耗时的过程,每个图像检测对象大约需要2秒钟。

检测算法:Faster RCNN

Faster RCNN其实可以分为4个主要内容:

  1. Conv layers。作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
  2. Region Proposal Networks。RPN网络用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals。
  3. Roi Pooling。该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
  4. Classification。利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。
检测算法:SSD

SSD网络以VGG16作为基础的特征提取层Base Layer,选取其中的Conv4_3作为第一个特征层用于目标检测;

在VGG16 Base Layer的基础上,作者额外的添加了几个特征层用于目标检测,将VGG16中的FC7该成了卷积层Conv7,同时增加了Conv8、Conv9、Conv10、Conv11几个特征层。

对获取到的每一个有效特征层,我们都需要对其做两个操作,分别是:

num_anchors x 4的卷积 用于预测 该特征层上 每一个网格点上 每一个先验框的变化情况。
num_anchors x num_classes的卷积 用于预测 该特征层上 每一个网格点上 每一个预测对应的种类。

YOLOv1-YOLOv8之间的对比如下表所示:

Model

Anchor

Input

Backbone

Neck

Predict/ Train

YOLOv1

锚框(7*7grids,2 anchors)

resize(448*448*3): 训练是224*224,测试是448*448;

GoogLeNet(24*Conv+2*FC+reshape;Dropout防止过拟合;最后一层使用线性激活函数,其余层都使用ReLU激活函数);

IOU_Loss、nms;一个网格只预测了2个框,并且都属于同一类;全连接层直接预测bbox的坐标值;

YOLOv2

锚框(13*13grids,5 anchors:通过k-means选择先验框)

resize(416*416*3):416/32=13,最后得到的是奇数值有实际的中心点;在原训练的基础上又加上了(10个epoch)的448x448高分辨率样本进行微调;

Darknet-19(19*Conv+5*MaxPool+AvgPool+Softmax;没有FC层,每一个卷积后都使用BN和ReLU防止过拟合(舍弃dropout);提出passthrough层:把高分辨率特征拆分叠加大到低分辨率特征中,进行特征融合,有利于小目标的检测);

IOU_Loss、nms;一个网络预测5个框,每个框都可以属于不同类;预测相对于anchor box的偏移量;多尺度训练(训练模型经过一定迭代后,输入图像尺寸变换)、联合训练机制;

YOLOv3

锚框(13*13grids,9 anchors:三种尺度*三种宽高比)

resize(608*608*3)

Darknet-53(53*Conv,每一个卷积层后都使用BN和Leaky ReLU防止过拟合,残差连接);

FPN(多尺度检测,特征融合)

IOU_Loss、nms;多标签预测(softmax分类函数更改为logistic分类器);

YOLOv4

锚框

resize(608*608*3)、Mosaic数据增强、SAT自对抗训练数据增强

CSPDarknet53(CSP模块:更丰富的梯度组合,同时减少计算量、跨小批量标准化(CmBN)和Mish激活、DropBlock正则化(随机删除一大块神经元)、采用改进SAM注意力机制:在空间位置上添加权重);

SPP(通过最大池化将不同尺寸的输入图像变得尺寸一致)、PANnet(修改PAN,add替换成concat)

CIOU_Loss、DIOU_nms;自对抗训练SAT:在原始图像的基础上,添加噪音并设置权重阈值让神经网络对自身进行对抗性攻击训练;类标签平滑:将绝对化标签进行平滑(如:[0,1]→[0.05,0.95]),即分类结果具有一定的模糊化,使得网络的抗过拟合能力增强;

YOLOv5

锚框

resize(608*608*3)、Mosaic数据增强、自适应锚框计算、自适应图片缩放

CSPDarknet53(CSP模块,每一个卷积层后都使用BN和Leaky ReLU防止过拟合,Focus模块);

SPP、PAN

GIOU_Loss、DIOU_Nms;跨网格匹配(当前网格的上、下、左、右的四个网格中找到离目标中心点最近的两个网格,再加上当前网格共三个网格进行匹配);

YOLOX

无锚框

resize(608*608*3)

Darknet-53

SPP、FPN

CIOU_Loss、DIOU_Nms、Decoupled Head、SimOTA标签分配策略;

YOLOv6

无锚框

resize(640*640*3)

EfficientRep Backbone(Rep算子)

SPP、Rep-PAN Neck

SIOU_Loss、DIOU_Nms、Efficient Decoupled Head、SimOTA标签分配策略;

YOLOv7

锚框

resize(640*640*3)

Darknet-53(CSP模块替换了ELAN模块;下采样变成MP2层;每一个卷积层后都使用BN和SiLU防止过拟合);

SPP、PAN

CIOU_Loss、DIOU_Nms、SimOTA标签分配策略、带辅助头的训练(通过增加训练成本,提升精度,同时不影响推理的时间);

YOLOv8

无锚框

resize(640*640*3)

Darknet-53(C3模块换成了C2F模块)

SPP、PAN

CIOU_Loss、DFL_Loss、DIOU_Nms、TAL标签分配策略、Decoupled Head;

YOLO算法的核心思想

YOLO系列的核心思想就是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。

YOLO系列算法的步骤

(1)划分图像:YOLO将输入图像划分为一个固定大小的网格。

(2)预测边界框和类别&#x

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值