-
2021-04-03 13:39:20
问题场景:
目标检测算法大致可分为两阶段(two stage)目标检测算法和一阶段(one stage)目标检测算法,在没有过多的tricks的情况下,两阶段的目标检测算法的检测精度是要比一阶段的目标检测算法精度高的。
原因分析:
其实我认为主要原因有以下几点:
1.正负样本的不均衡性
这一点想必大家在做目标检测实验的时候深有体会,当某一类别的样本数特别多的时候,训练出来的网络对该类的检测精度往往会比较高。而当某一类的训练样本数较少的时候,模型对该类目标的检测精度就会有所下降,这就是所谓样本的不均衡性导致的检测精度的差异。
对于一阶段的目标检测来说,它既要做定位又要做分类,最后几层中1×1的卷积层的loss都混合在一起,没有明确的分工哪部分专门做分类,哪部分专门做预测框的回归,这样的话对于每个参数来说,学习的难度就增加了。
对于二阶段的目标检测来说(Faster RCNN),在RPN网络结构中进行了前景和背景的分类和检测,这个过程与一阶段的目标检测直接一上来就进行分类和检测要简单的很多,有了前景和背景的区分,就可以选择性的挑选样本,是的正负样本变得更加的均衡,然后重点对一些参数进行分类训练。训练的分类难度会比一阶段目标检测直接做混合分类和预测框回归要来的简单很多。
2.样本的不一致性
怎么理解样本不一致性呢?首先我们都知道在RPN获得多个anchors的时候,会使用一个NMS。在进行回归操作的时候,预测框和gt的IoU同回归后预测框和gt的IOU相比,一般会有较大的变化,但是NMS使用的时候用的是回归前的置信度,这样就会导致一些回归后高IoU的预测框被删除。这就使得回归前的置信度并不能完全表征回归后的IoU大小。这样子也会导致算法精度的下降。在第一次使用NMS时候这种情况会比较明显,第二次使用的时候就会好很多,因此一阶段只使用一次NMS是会对精度有影响的,而二阶段目标检测中会在RPN之后进行一个更为精细的回归,在该处也会用到NMS,此时检测的精度就会好很多。
总结:
最后,想说的是,现在的一阶段目标检测的数据不平衡问题已经用focal loss解决了,在一阶段目标检测中使用focal loss就能够使得预测效果媲美二阶段目标检测算法。本文是自己的一些想法,欢迎讨论。
更多相关内容 -
目标检测一阶段和二阶段对比图
2021-11-04 09:35:32 -
单阶段和两阶段目标检测
2022-04-20 10:16:04第一阶段:专注于找出目标物体出现的位置,得到建议框,保证足够的准确率和召回率 第二阶段:专注于对建议框进行分类,寻找更精确的位置 优缺点:通常精度较高,但速度较慢 典型算法:R-CNN、SPP-Net、Fast R-...在目标检测算法中,目标边框从无到有以及边框变化的过程在一定程度上体现了检测是两阶段还是单阶段的。
Two-stage:
第一阶段:专注于找出目标物体出现的位置,得到建议框,保证足够的准确率和召回率
第二阶段:专注于对建议框进行分类,寻找更精确的位置
优缺点:通常精度较高,但速度较慢
典型算法:R-CNN、SPP-Net、Fast R-CNN 和 Faster R-CNN
One-stage:
第一阶段:不需要得到建议框阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果
优缺点:速度一般比Two-stage算法更快,但精度有所损失
典型算法:SSD、YOLO
-
单阶段目标检测算法之YOLOv1详解
2022-03-28 13:02:32官方网站C语言版本:... ... ... 一、YOLO介绍 YOLO的全称叫做“You Only Look Once”,简单来说,YOLO可以做到将一张图片输入,直接输出最终结果,包括框和框内物体的名称及score(得分)。 相比RCNN系列的算法(..官方网站C语言版本:https://pjreddie.com/darknet/yolov1/
tensorflow版本的代码下载: https://github.com/hizhangp/yolo_tensorflow
论文: http://arxiv.org/abs/1506.02640
目录
一、YOLO介绍
YOLO的全称叫做“You Only Look Once”,简单来说,YOLO可以做到将一张图片输入,直接输出最终结果,包括框和框内物体的名称及score(得分)。
相比RCNN系列的算法(提取候选框+分类回归),YOLO仅仅一个网络就能完成检测框和分类任务,所以说它是单阶段目标检测算法;
YOLO主要特点是:
- 速度快,能够达到实时的要求。在 Titan X 的 GPU 上 能够达到 45 帧每秒。
- 使用全图作为 Context 信息,背景错误(把背景错认为物体)比较少。
- 泛化能力强。
二、YOLOv1的结构
YOLO V1是单阶段one stage体系开创者,一次卷积可得结果。
如下:
YOLOv1是端到端进行训练,因此YOLOv1只有一条单一的网络分支。
步骤:
- 输入图像(固定大小到448x448)到卷积神经网络,得到特征图;
- 经过全连接网络,然后分类和回归;输出包含分类信息、置信度、坐标等信息;
- 使用NMS方法筛选获得结果。
三、YOLOV1原理
(一)基本核心思想
如下图:
- 首先将原图像分成S x S grid;在论文里S=7,即将图像分为7 x 7 grid;
- 每个grid cell都会预测B个Bounding Box 去进行物体的框定和分类;在论文里B=2,那么一图像预测7x7x2=98个预测框;
- 每个预测框包含有4个边框的值和1个的置信度,如:(x,y,w,h,confidence);
- 预测出来相同物体有重复的边框,利用NMS (非极大值抑制) 算法得到最后的final detections。
(二)网络结构
如下图:
输入图像为448x448,输出特征图大小为7x7x30;
(三)输出7x7的理解
特征图7x7映射至原图,即图像被分成7×7个网格(grid cell);映射关系如下图:
如果GT物体的中心落在某个网格中,则这个网格就负责预测这个物体;
(四)输出维度30的理解
(1)每个网格使用B(B=2)个Bbox进行回归预测,共产生5个值;
A.置信度confidence,包含物体的可能性大小;
B.回归坐标(x,y,w,h);
(2)每个网格还要预测C个类别概率,以判断当前cell属于哪个类别C;因此1个网格的输出维度是(5×B+C),S×S个网格就输出就是S × S×(5×B+C)。
论文:B=2,VOC有20个类别,那么网络输出维度就是5x2+20=30。
(五)一次预测98个框
如下图:
(1)图像被划分成7×7,可知产生的特征图大小为7×7,因此S=7;
(2)真实的人物体中心落在黄色网格,使用黄色网格预测分类人;黄色网格产生了2个蓝色的Bbox用来回归预测,因此B=2;
(3)每个Bbox的检测结果会包含有关人的置信度和回归坐标信息;
(4)黄色网格会使用softmax进行分类预测,如果使用VOC数据集C=20。
最终,根据公式可得输出维度5×B+C=30,即输出特征图7×7×30;预测框的个数7×7×2=98。
(六)对98个预测框处理
使用NMS算法对预测框进行处理,最后保留最优的预测框:
(七)回归坐标xywh
如下图:
实际Bbox框的预测结果包含(xc, yc ,wbox,ℎbox):
- xc是预测框的中心点相对于原图的横坐标;
- yc是预测框的中心点相对于原图的纵坐标;
- wbox是预测框的宽度;
- ℎbox是预测框的高度。
回归坐标的目的是将坐标映射到0-1之间,方便计算损失;有如下要求
- x,y是相对于当前网格的偏移值,范围是0~1;
- w,h是归一化(分别除以图像的W和H)的结果,范围是0~1;
(八)训练样本标签
训练样本的标签理解:
四、总结
Yolov1是单目标检测的开创者,相比较RCNN等两阶段系列,预测速度上有天然的优势,就是检测速度快。但是也存在许多缺点:
- YOLO对相互靠的很近的物体,还有很小的群体 检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。
- 对测试图像中,同一类物体出现的新的不常见的长宽比和其他情况是。泛化能力偏弱。
- 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。
-
基于候选区域的目标检测器(两阶段)和单次目标检测器(一阶段)
2019-01-15 22:06:45一、基于候选区域的目标检测器(两阶段) 主要是RCNN系列。 1.1 滑动窗口检测器 伪代码。我们创建很多窗口来检测不同位置的不同目标。要提升性能,一个显而易见的办法就是减少窗口数量。 ... -
目标检测之单阶段和两阶段检测算法的对比
2020-09-19 20:39:21双阶段目标检测器采用了两段结构采样来处理类别不均衡的问题,rpn使正负样本更加均衡 使用了两阶段级联的方式来拟合bbox,先粗回归,再精调。 One stage detector 的一个通病就是既要做定位又要做classification。... -
目标检测(一)目标检测算法综述
2022-03-21 15:56:41Viola Jones检测器: Viola Jones...然而,HOG检测器的缺点是始终需要保持检测窗口的大小不变,如果待检测目标的大小不一,那么HOG检测器需要多次缩放输入图像。 基于部件的可变形模型(DPM):DPM所遵循的思想是“分 -
两阶段目标检测综述
2019-07-21 11:45:14两阶段目标检测 在上个世纪,深度神经网络就已经被提出了,但是在当时机器硬件还未达到实验要求,深度神经网络便沉浸了10年。在21世纪初,当机器硬件达到实验要求之后,深度神经网络就得到了快速的发展。在CNN[7]还... -
两阶段(two stage)目标检测原理详解 -- RCNN
2022-03-22 11:55:24一、目标检测的任务 二、什么是“两阶段”呢? 三、两阶段算法原理 (二)候选区域算法 (三)边框回归( Bounding Box Regression ) 1.非极大值抑制(Non-Maximum Suppression,NMS) 2.对候选框进行坐标... -
单阶段目标检测
2020-01-13 19:50:461、特征金字塔的优点 图像金字塔,需要的计算和内存多;...分类模型输入多是224的,目标检测输入更大,因此先将分类模型在大尺寸数据上微调,可以显著提升效果。 3、维度聚类 手动设定的先验框具有主... -
【论文研读】-用于约束多目标优化的新型双阶段双种群进化算法
2022-03-30 17:34:06论文研读-用于约束多目标优化的新型双阶段双种群进化算法 A Novel Dual-Stage Dual-Population Evolutionary Algorithm for Constrained Multi-Objective Optimization 觉得有用的话,欢迎一起讨论相互学习~ 最近我... -
【学习笔记】目标检测算法(两阶段)
2020-11-20 09:31:58两阶段目标检测算法: R-CNN: 1.对图像进行Selective Search生成1K~2K个候选区域 2.将每个候选区域输入网络提取特征 3.将特征送入每一类的SVM分类器中,判读是否属于该类 4.使用回归器精细修正候选框的位置 具体的... -
基于深度学习的目标检测综述(单阶段、多阶段、FPN变体、旋转目标检测等)
2021-04-14 22:25:19随着深度学习的发展,基于深度...下面主要介绍单阶段的目标检测方法(SSD、YOLO系列、RetinaNet等)和多阶段目标检测方法(RCNN系列)。 一、单阶段 1、SSD 2、YOLO1 3、YOLO2 4、YOLO3 5、YOLO4 6、RetinaNet 二、多阶段 -
目标检测算法的分类和优缺点
2022-03-01 15:28:45前言 随着今年来科学技术的发展,尤其是人工智能和大数据技术的不断发展,不断应用于生活中的各个领域,给...现阶段目标检测算法存在两类分类标准:1)是否存在候选区;2)是否存在先验框。 按照是否存在候选区分类... -
深度学习目标检测2013-2018单双阶段主流模型概览及详解
2018-12-04 19:27:45A Survey”由香港中文大、国防科技大、芬兰奥卢大学、澳大利亚悉尼大学、加拿大滑铁卢大学的研究者共同发布的一篇综述文章,系统的总结了2013年深度学习引入目标检测领域以来的进展。非常具有参考意义。 目的: ... -
CenterNet2:CenterNet再升级,原作者提出基于概率解释的两阶段目标检测
2021-03-16 15:26:44CenterNet(Objects as Points)原作者的又一力作,超过YOLOv4。其在两阶段目标检测框架中引入概率解释:第一阶段推断出目标vs背景的似然性,第二阶段得到具体类别的分类得分。 -
yoloV5(一)目标检测概述
2022-01-29 00:48:14机器视觉任务、目标检测发展历史、单阶段和双阶段目标检测 -
two stage 、one stage 的目标检测算法
2018-10-24 11:05:08AI 科技评论按:本文作者 Ronald,首发于作者的知乎专栏「炼丹师备忘录」,AI 科技评论获其授权转发。目前目标检测领域的深度学习方法主要分为两类:two stage 的目标检测算法;one... -
Metropolis(大都会):以太坊网络的下一个阶段
2019-05-11 16:32:41现阶段叫做Homestead(家园),2015年7月第一个系列叫做Frontier(前沿)。 以下是对Vitalik关于Metropolis演讲所用PPT的简单介绍。 首先,讲讲现在的进度。去年我们花了许多时间去优化我们的核心客户端,加强网络安全... -
事件的三个阶段:捕获阶段 目标阶段 冒泡阶段及防止冒泡和捕获
2020-02-29 22:29:47最恰当的比喻:可以想象画在...捕获阶段 (从根节点开始顺着目标节点构建一条事件路径,即事件由页面元素接收,逐级向下,到具体的元素) 目标阶段 (到达目标节点,即元素本身) 冒泡阶段 (从目标节点顺着捕获阶段构建... -
目标检测二阶段网络(faster-rcnn)的端到端训练方式
2020-01-08 14:57:10简明扼要说一下二阶段网络训练的pipeline,一些基本概念还需要自行去查询一下,这里就不做介绍了 RPN网络的训练 需要的输入有之前卷积层得到的featuremap,anchor的规格(size,scale等能表达anchor大小的参数),... -
目标检测 - 主流算法介绍 - 从RCNN到DETR
2022-03-18 17:15:11目标检测是计算机视觉的一个非常重要的核心方向,它的主要任务目标定位和目标分类。...基于深度学习的目标检测方法大致可分为三类——双阶段目标检测、单阶段目标检测、基于transformer的目标检测,本文将分别介绍这三 -
[人工智能-深度学习-67]:目标检测 - 常见目标检测算法大汇总
2021-12-23 19:54:31作者主页(文火冰糖的硅基工坊):...第1章 目标检测概述 第2章 常见的Two-Stage算法 2.1R-CNN 2.2Fast R-CNN 2.3Faster R-CNN 第3章常见的One-Stage算法 3.1SSD 3.2 YOLO 第4章 汇总比较 4.1 汇总比较 第... -
目标检测->SSD算法
2022-04-24 10:49:12目标检测算法总体分为:基于区域的算法和基于回归的算法 1)基于区域的算法: RCNN, Fast RCNN, Faster RCNN, Mask RCNN 等。整个检测过程分为两个阶段。在第一个阶段,检测器需要找到一些假设的区域 (ROI);在第二... -
事件的三个阶段:捕获阶段 目标阶段 冒泡阶段
2017-04-21 20:41:04js有好多的知识需要不断积累,但是不能浅尝,应该深究其内因,并运用在日常开发过程中。 捕获阶段: 事件从根节点流向目标节点,途中流经各个DOM节点,...事件到达目标节点时,就到了目标阶段,事件在目标节点上被触发 -
遥感图像目标检测研究综述
2022-04-10 21:16:56遥感图像目标检测研究综述 -
APQP的三个准备工作及五个阶段之目标和输出(干货)
2020-12-22 13:02:40原标题:APQP的三个准备工作及五个阶段之目标和输出(干货)===================================APQP的三个准备工作1、成立跨功能小组(或APQP小组),小组成员职责分工。成员一般来自工程、制造、材料控制、采购、现场... -
多目标、多阶段、多层次的强化学习合作方法
2021-03-27 00:42:13作者提出了一个信用函数,是一个专门评估动作-目标对的动作-价值函数,用于多目标MARL的局部信用分配,用它来推导出第2阶段的多目标多智能体策略梯度。在与多阶段协同作用下,信用函数是通过阶段1中的批判者的函数... -
小目标检测
2021-12-14 10:22:48Chen等提出了一个针对小目标的数据集,对小目标进行定义:同一类别中,所有目标实例的相对面积,即边界框面积与图像面积之比的中位数在0.08%~0.58%之间。如在640×480\times480×480像素分辨率图像中,16×1616\... -
目标跟踪检测算法(一)——传统方法
2019-05-06 22:36:02第一阶段 目标跟踪分为两个部分,一个是对指定目标寻找可以跟踪的特征,常用的有颜色,轮廓,特征点,轨迹等,另一个是对目标特征进行跟踪。 1、静态背景 1)背景差:对背景的光照变化、噪声干扰以及周期性运动等...