做积分商城网站,广州做网站多少,扎区门户网站建设,wordpress_百科分类#xff1a;
即是将图像结构化为某一类别的信息#xff0c;用事先确定好的类别(category)或实例ID来描述图片。这一任务是最简单、最基础的图像理解任务#xff0c;也是深度学习模型最先取得突破和实现大规模应用的任务。其中#xff0c;ImageNet是最权威的评测集
即是将图像结构化为某一类别的信息用事先确定好的类别(category)或实例ID来描述图片。这一任务是最简单、最基础的图像理解任务也是深度学习模型最先取得突破和实现大规模应用的任务。其中ImageNet是最权威的评测集每年的ILSVRC催生了大量的优秀深度网络结构为其他任务提供了基础。在应用领域人脸、场景的识别等都可以归为分类任务。
检测
分类任务关心整体给出的是整张图片的内容描述而检测则关注特定的物体目标要求同时获得这一目标的类别信息和位置信息classification localization。相比分类检测给出的是对图片前景和背景的理解我们需要从背景中分离出感兴趣的目标并确定这一目标的描述类别和位置因此检测模型的输出是一个列表列表的每一项使用一个数组给出检出目标的类别和位置常用矩形检测框的坐标表示。
先来回顾下分类原理这是一个常见的CNN组成图输入一张图片经过其中的卷积、激活、池化相关层最后加入全连接层达到分类概率的效果。 目标定位的简单实现 在分类的时候我们直接输出各个类别的概率如果再加上定位的话我们可以考虑在网络的最后输出加上位置信息。 回归位置 增加一个全连接层即为FC1、FC2 1FC1作为类别的输出 2FC2作为整个物体位置数值的输出 分割
分割包括语义分割semantic segmentation和实例分割instance segmentation前者是对前背景分离的拓展要求分离开具有不同语义的图像部分而后者是检测任务的拓展要求描述出目标的轮廓相比检测框更为精细。分割是对图像的像素级描述它赋予每个像素类别实例意义适用于理解要求较高的场景如无人驾驶中对道路和非道路的分割。
目标检测的基本思路
同时解决定位localization 识别Recognition。
多任务学习带有两个输出分支。一个分支用于做图像分类即全连接softmax判断目标类别和单纯图像分类区别在于这里还另外需要一个“背景”类。另一个分支用于判断目标位置即完成回归任务输出四个数字标记包围盒位置(例如中心点横纵坐标和包围盒长宽)该分支输出结果只有在分类分支判断不为“背景”时才使用。详细结构如下图所示 什么是位置位置的定义
目标检测的位置信息一般有2种格式以图片左上角为原点0,0
极坐标表示xminyminxmaxymax xminyminxy坐标的最小值 xmaxymaxxy坐标的最大值
中心点坐标x_centery_centerwh x_centery_center目标检测框的中心点坐标 wh目标检测框的宽高
传统目标检测缺点、弊端
1基于滑动窗口的区域选择策略没有针对性时间复杂度高窗口冗余
2手工设计的特征对于多样性的变化没有很好的鲁棒性 传统的目标检测框架主要包括三个步骤
1利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域 2提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征行人检测和普通目标检测常用的HOG特征等 3利用分类器进行识别比如常用的SVM模型。
目前目标检测领域的深度学习方法主要分为两类两阶段Two Stages的目标检测算法一阶段One Stage目标检测算法。
两阶段Two Stages首先由算法algorithm生成一系列作为样本的候选框再通过卷积神经网络进行样本Sample分类。
阶段One Stage 不需要产生候选框直接将目标框定位的问题转化为回归Regression问题处理(Process)。
基于候选区域Region Proposal的如R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN
基于端到端End-to-End无需候选区域Region Proposal的如YOLO、SSD。
对于上述两种方式基于候选区域Region Proposal的方法在检测准确率和定位精度上占优基于端到端End-to-End的算法速度占优。相对于R-CNN系列的“看两眼”候选框提取和分类YOLO只需要“看一眼”。总之目前来说基于候选区域Region Proposal的方法依然占据上风但端到端的方法速度上优势明显至于后续的发展让我们拭目以待。
目标检测的候选框是如何产生的
如今深度学习发展如日中天RCNN/SPP-Net/Fast-RCNN等文章都会谈及候选边界框Bounding boxes的生成与筛选策略。那么候选框是如何产生的又是如何进行筛选的呢其实物体候选框获取当前主要使用图像分割与区域生长技术。区域生长(合并)主要由于检测图像中存在的物体具有局部区域相似性(颜色、纹理等)。目标识别与图像分割技术的发展进一步推动有效提取图像中信息。
根据目标候选区域的提取方式不同传统目标检测算法可以分为基于滑动窗口的目标检测算法和基于选择性搜索的目标检测算法。滑窗法Sliding Window作为一种经典的物体检测方法个人认为不同大小的窗口在图像上进行滑动时候进行卷积运算后的结果与已经训练好的分类器判别存在物体的概率。选择性搜索(Selective Search)是主要运用图像分割技术来进行物体检测。
(1) 滑动窗口Sliding Window
采用滑动窗口的目标检测算法思路非常简单它将检测问题转化为了图像分类问题。其基本原理就是采用不同大小和比例宽高比的窗口在整张图片上以一定的步长进行滑动然后对这些窗口对应的区域做图像分类这样就可以实现对整张图片的检测了。但是这个方法有致命的缺点就是你并不知道要检测的目标大小是什么规模所以你要设置不同大小和比例的窗口去滑动而且还要选取合适的步长。但是这样会产生很多的子区域并且都要经过分类器去做预测这需要很大的计算量所以你的分类器不能太复杂因为要保证速度。 通过滑窗法流程图分析具体步骤首先对输入图像进行不同窗口大小的滑窗进行从左往右、从上到下的滑动。每次滑动时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率则认为检测到了物体。对每个不同窗口大小的滑窗都进行检测后会得到不同窗口检测到的物体标记这些窗口大小会存在重复较高的部分最后采用非极大值抑制(Non-Maximum Suppression, NMS)的方法进行筛选。最终经过NMS筛选后获得检测到的物体。
滑窗法简单易于理解但是不同窗口大小进行图像全局搜索导致效率低下而且设计窗口大小时候还需要考虑物体的长宽比。所以对于实时性要求较高的分类器不推荐使用滑窗法。
(2) 选择性搜索(Selective Search)
滑窗法类似穷举进行图像子区域搜索但是一般情况下图像中大部分子区域是没有物体的。学者们自然而然想到只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。选择搜索方法是当下最为熟知的图像bouding boxes提取算法其目标检测的流程图如下图所示。 选择搜索算法的主要观点图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此选择搜索基于上面这一想法采用子区域合并的方法进行提取候选边界框bounding boxes。首先对输入图像进行分割算法产生许多小的子区域(大约2000个子区域)。其次根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做外切矩形bounding boxes这些子区域外切矩形就是通常所说的候选框。
选择搜索优点 a计算效率优于滑窗法。 b由于采用子区域合并策略所以可以包含各种大小的疑似物体框。 c合并区域相似的指标多样性提高了检测物体的概率。
(3) 什么是NMS—非极大值抑制Non-Maximun Suppression
学习R-CNN算法必然要了解一个重要的概念——非极大值抑制NMS。比如我们会从一张图片中找出N多个可能包含物体的Bounding-box然后为每个矩形框计算其所属类别的概率。 正如上面的图片所示假如我们想定位一个车辆最后算法就找出了一堆的方框每个方框都对应一个属于汽车类别的概率。我们需要判别哪些矩形框是没用的。采用的方法是非极大值抑制先假设有6个矩形框根据分类器类别分类概率做排序从小到大分别属于车辆的概率分别为A、B、C、D、E、F。
(1)从最大概率矩形框F开始分别判断A~E与F的重叠度IOU是否大于某个设定的阈值;
(2)假设B、D与F的重叠度超过阈值那么就扔掉B、D并标记第一个矩形框F是我们保留下来的。
(3)从剩下的矩形框A、C、E中选择概率最大的E然后判断E与A、C的重叠度重叠度大于一定的阈值那么就扔掉并标记E是我们保留下来的第二个矩形框。
如此循环往复知道没有剩余的矩形框然后找到所有被保留下来的矩形框就是我们认为最可能包含汽车的矩形框。
YOLOv8 目标检测中的 Anchor-Free 机制
锚框Anchor
Anchor 指有固定中心位置和大小通常由宽度和高度决定的框。Anchor 思想最早在论文 Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 2015.06Microsoft 中提出。在此之前目标检测算法通常使用滑动窗口或 Selective Search 等方法来生成候选区域。而 Faster R-CNN 中的 RPNRegion Proposal Network网络通过引入 Anchor 机制解决了目标检测算法中目标大小和长宽比的变化问题。
Faster R-CNN 中的 Anchor 设计如下 注意锚框和 GT 框的区别
锚框是机器学习过程中模型预测或者预设的而 GT 框是指人工标记的图片框。锚框是基于特征图而 GT 框基于图片的像素当然两者可以非常粗略地对应上但表示的含义是不一样的。
通常在训练过程中通过和 GT 框的比对把锚框定义为正样本和负样本详见后面的标签分配章节。
Anchor-Based 和 Anchor-Free
Two-stage两阶段指目标检测过程分成两个主要步骤
生成候选区域Region Proposals来确定图像中可能包含对象的区域。对第 1 阶段生成的候选区域进行分类和边界框细化。
Anchor-based基于锚框指在目标检测中使用一组预定义的、不同尺寸和比例的候选区域anchors用于引导检测模型学习到真实的对象边界框。
Anchor-Free 并不是没有使用锚点而是指无先验锚框直接通过预测具体的点得到锚框。Anchor-Free 不需要手动设计 anchor长宽比、尺度大小、anchor的数量从而避免了针对不同数据集进行繁琐的设计。
正样本和负样本
正样本positive sample和负样本negative sample是用于训练分类模型的两种基本类型的数据点。
在目标检测中正样本是指锚框中恰当地包含我们希望检测的目标对象的样本。例如在行人检测任务中如果锚框中确实有行人且框大小合适那么这个框就是一个正样本。负样本指锚框中可能没有目标检测对象或者框大小不合适。
在目标检测任务中负样本的引入也是至关重要的。在真实世界的图像中目标往往只占图像的一小部分区域而大部分区域都是背景即负样本。如果模型仅使用正样本来训练它可能会过度拟合到这些有限的目标样本而无法正确地区分目标和背景。通过引入负样本模型能够学习到目标的边界并理解哪些区域不包含目标。
通常目标检测任务使用锚点anchor boxes而不是直接使用真实目标ground truth boxes人工标记的物体框选作为正负样本有几个重要原因
正负样本平衡直接使用真实目标作为目标值可能导致训练过程中的样本不平衡问题因为背景区域通常远多于目标区域。通过使用锚点可以更有效地分配正样本匹配真实目标的锚点和负样本不匹配任何真实目标的锚点从而帮助模型更好地学习。泛化能力如果直接使用真实目标作为目标值模型可能过于依赖于训练数据中的具体实例从而降低其泛化到新数据的能力。使用锚点可以帮助模型学习到更一般化的目标表示。边界框回归在训练过程中模型需要学习如何调整预测的边界框以更好地匹配真实目标。如果直接使用真实目标作为目标值模型将无法学习到如何进行这种调整。锚点提供了一个起点模型可以学习从这个起点调整边界框以适应真实目标。
任务对齐Task Alignment
目标检测旨在从自然图像中定位和识别感兴趣的对象它通常被表述为一个多任务学习问题通过同时优化对象分类和定位来实现。分类任务旨在学习对象的关键区分性特征而定位任务则致力于精确定位整个对象及其边界。由于分类和定位任务的学习机制存在差异这两个任务所学到的特征的空间分布可能不同当使用两个独立分支进行预测时可能会导致一定程度的错位。
YOLOv8 目标检测的 Anchor 处理
训练阶段的主要处理逻辑如下
在 Head 部分参考 YOLOv8 架构图会输出三个特征图以 YOLOv8 L 为例特征图大小分别为80 x 80 x 25640 x 40 x 5121. 20 x 20 x 512。每个特征图上的每个点会定义为 1 个锚框anchor模型的输出预测值中包括每个锚框的分类和定位信息。标签分配算法根据人工标记的 GT将每个 anchor 对应为正、负样本。依据损失函数计算正、负样本的损失反向传播更新网络参数。
尽管 YOLOv8 在检测推理阶段被归类为无锚点模型因为它不依赖于预定义的锚框。
在训练阶段它仍然使用了锚点的概念。这些“锚点”作为边界框的尺度和长宽比的初始估计或参考。在训练过程中模型根据训练图像中对象的真实边界框来调整和优化这些估计。在检测阶段模型并不严格依赖预定义的锚框来提出候选对象位置最终的对象检测是直接基于检测到的特征进行的因此 YOLOv8 被归类为无锚点anchor-free模型。
YOLOv8 将输入图像分割成单元格网格其中每个单元格负责预测位于其中的对象。对于每个单元格YOLOv8 预测对象得分objectness scores、类别概率class probabilities和几何偏移量geometrical offsets以便估计对象的边界框。
预测框的设计及损失函数DFL the classification loss function (BCE loss) and the regression loss functions (CIoU loss, DFL loss) to optimize the network parameters. YOLOv8详解:损失函数、Anchor-Free、样本分配策略以及与v5的对比_yolov8的损失函数为什么大于1-CSDN博客
参考链接
目标检测从入门到精通—概述一 - 我的明天不是梦 - 博客园 (cnblogs.com)
【目标检测】方法概述_如何判断检测到目标物的方法-CSDN博客
YOLOv8 目标检测中的 Anchor-Free 机制图示 代码 (vectorexplore.com)