深度学习视觉2D检测算法综述

news2025/3/16 18:34:27

目录

一、两阶段目标检测算法

1.1 R-CNN(Region-based CNN,2014)

1.2 Fast R-CNN(Fast Region-based CNN,2015)

1.3 Faster R-CNN(Faster Region-based CNN,2016)

1.4 Mask R-CNN(Faster Region-based CNN,2017)

二、单阶段目标检测算法

2.1 yolov3(You Only Look Once v3,2018)

2.2 SSD网络(Single Shot MultiBox Detector,2016)

2.3 RetinaNet网络(2017)

2.4 fcos网络(Fully Convolutional One-Stage Object Detector,2019)

三、基于transformer目标检测算法

3.1 DETR网络(End-to-End Object Detection with Transformer,2020)

3.2 Deformable DETR网络(2020)

​编辑


自从2012年深度学习再次应用,基于深度学习的视觉2D检测算法便得到了飞速的发展。2D检测算法到目前大致经历了3个阶段,第一个阶段是(2014-2017)两阶段目标检测算法、第二个阶段(2017-2020)单阶段目标检测算法、第三阶段(2020-2024)transformer目标检测算法。

一、两阶段目标检测算法

两阶段目标检测(Two-stage Object Detection)算法是一种基于区域建议(Region Proposal)的目标检测方法,通常能够提供更高的检测精度,但速度相对较慢。它主要分为两个阶段:

第一阶段:从输入图像中生成候选区域(Region Proposals)。
第二阶段:对候选区域进行分类,并进一步优化边界框。

两阶段方法最具代表性的算法是 R-CNN 系列,包括 R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN 等。

1.1 R-CNN(Region-based CNN,2014)

R-CNN是最早基于深度学习的目标检测方法之一,主要包括:

1)使用 Selective Search 生成候选区域(通常约 2000 个),Selective Search是根据图像的纹理和颜色等特征进行候选区域选择;

2)对每个候选区域进行 CNN 特征提取(如 AlexNet),Selective Search确定的候选区域大小是不同的,将候选区域进行缩放到固定尺寸(224*224),这里的CNN网络是在imagenet分类任务里面训练好的网络,不参与RCNN的训练,只用来产生分类特征;

3)通过CNN获取4096维特征,将特征输入到SVM分类器进行训练,这里是需要训练SVM分类器,训练样本就是计算候选区域与ground truth之间的 IoU,IoU ≥ 0.5为正样本,0.1 ≤ IoU ≤ 0.5为负样本,IoU ≤ 0.1就舍弃掉,因为0.1 ≤ IoU ≤ 0.5的负样本已经足够多,IoU ≤ 0.1对训练没有太大影响;

4)然后使用回归器(Bounding Box Regressor)优化检测框,回归器与SVM分类器是完全独立训练,回归器只对IoU ≥ 0.5的样本进行训练,回归获取候选框与 Ground Truth 框的偏移量(Δx,Δy,Δw,Δh);

5)推理过程: 通过Selective Search 方法生成候选框(约2000个),CNN模型生成特征,svm分类器进行分类,回归器对分类器中的目标进行精确位置检测,最后采用非极大值抑制(NMS)算法进行过滤,这是由于多个 Region Proposal 可能预测出相同目标,导致 多个候选框重叠,需要进行 NMS 过滤。

R-CNN属于早期应用深度学习算法进行2D视觉检测的算法,从算法上可以明显看出有机器学习和深度学习缝合的现象,算法性能比传统的机器学习算法要高,由于每个候选框都需要进行CNN提取特征,推理速度非常慢。

1.2 Fast R-CNN(Fast Region-based CNN,2015)

Fast R-CNN才真正意义上算是基于深度学习的目标检测,它共享了CNN计算,使用 RoI Pooling固定候选框大小,去掉了RCNN中的SVM分类器,实现端到端的训练任务。

1)相比于R-CNN,Fast R-CNN只进行一次CNN计算,依然采用 Selective Search 生成候选区域(在原图上生成候选区域),然后将原图的候选区域按照步长缩放到特征图层上,例如原始图像224*224*3,特征图层为14*14*512,步长为16进行缩放,而且这里的CNN是参与训练的;

2)由于后续全连接层需要固定的特征维度输入,ROI Pooling负责将缩放到特征图形的感兴趣区域(由于缩放过程位置和尺寸可能成为小数)转化成固定尺寸大小,如7*7*512,通过不同池化系数等比例缩放到固定尺寸大小;

3)相比于R-CNN,使用Softmax 替换SVM预测目标类别,Bounding Box 回归调整目标框,正负样本选取逻辑基本一致,这样可以进行端到端训练;

4)推理过程:与R-CNN类似,使用 NMS(非极大值抑制)去除冗余框,输出最终目标框和类别。

Fast R-CNN相比R-CNN可以进行端到端的训练,使用共享CNN计算和RoI Pooling使得训练和推理效率得到了极大的提升,但是依然采用Selective Search使得效率依然不高,同时ROI Pooling精度不高,导致小目标检测效果不佳,这些问题在后续Faster R-CNN中得到解决。

1.3 Faster R-CNN(Faster Region-based CNN,2016)

Faster R-CNN最重要的改进是采用了RPN网络替代了Selective Search算法,其次是采用RoI Align替换了 RoI Pooling,提高了检测的精度,可以实现从图像到识别的端到端训练。

1)Faster R-CNN采用RPN网络替代了Selective Search算法,RPN网络是一个全卷积网络,在特征层后面是一个独立的分支,例如特征层为38*62*512,首先会经过一个卷积层变为38*62*256,然后经过两个1*1的卷产生两个分支,分别是分类分支38*62*18和回归分支38*62*32。这里主要是为了提高RPN的丰富性,在每个窗口点位置放了9个先验的anchors(3个比例和3个大小组合)。为了提高候选区域的可靠性,这里训练时取IoU ≥ 0.7 作为正样本,IoU ≤ 0.3 作为负样本(背景),IoU在0.3-0.7 的 Anchor 被忽略;

2)与Fast R-CNN类似,产生的候选框经过筛选进入到检测网络, Faster R-CNN采用了RoI Align替换了 RoI Pooling,使得在计算过程中候选框的位置投射的更加精确。训练过程中Fast R-CNN与RPN网络是同时训练的;

3)其他的计算和推理与Fast R-CNN类似。

Faster R-CNN基本上是两段式检测算法的最经典算法。

1.4 Mask R-CNN(Faster Region-based CNN,2017)

Mask R-CNN 是 Faster R-CNN 的扩展版本,能够同时完成目标检测(分类 + 目标框)和实例分割(像素级掩码)。

1)与Faster R-CNN基本相似,但是在R-CNN后增加了一个分割分支。首先在ROI Align增加了一个分支将所有特征映射为14*14*256(识别网络为7*7*256),通过卷积和反卷积最终输出为28*28*C,其中28*28代表分割特征区域大小,需要缩放到候选区域大小再投射到原始图像上获取真值,C代表每一个类别都有一个单独的分割特征图,输出不是1或者0的二值,而是0-1的连续值。

二、单阶段目标检测算法

单阶段(One-Stage)目标检测算法直接从输入图像预测目标的类别和边界框,不需要像 Faster R-CNN这样的两阶段(Two-Stage)方法生成候选区域(RoI)。单阶段目标检测算法一般采用全卷积网络,没有全连接层,然后通过网格(Grid)划分图像,在每个网格或特征点上进行障碍物的检测和回归。单阶段检测方法通常计算速度更快,适用于实时检测任务,典型的网络有yolo、ssd、RetinaNet和fcos。

2.1 yolov3(You Only Look Once v3,2018)

yolo系列是比较典型的单阶段检测算法,其中yolov3是最经典的版本。它采用darknet-53(类似resnet)作为主干网络,基于多尺度特征进行检测,其中P3(52×52)适用于小目标检测,P4(26×26)适用于中等大小目标,P5(13×13)适用于大目标检测。在每个特征图网格上会有3个anchor,最后通过非极大值抑制(NMS)过滤冗余框,生成最终检测结果,包括类别、目标框坐标、置信度等。

2.2 SSD网络(Single Shot MultiBox Detector,2016)

SSD网络与yolov3网络思想类似,但使用了不同的主干网络,SSD采用了VGG网络,采用不同的尺度特征以及每个特征网络网格放置不同的anchor。

2.3 RetinaNet网络(2017)

RetinaNet网络与yolov3也是同样的思想,但使用了resnet50作为主干网络,采用P3-P7层输出作为尺度特征层,每个特征网络网格放置了9个anchor,同时采用了focal loss作为损失函数,在小目标检测效果上比较好。

2.4 fcos网络(Fully Convolutional One-Stage Object Detector,2019)

fcos网络与RetinaNet网络较为类似,但是采用无Anchor设计,直接回归目标框位置和大小,采用 Center-ness 计算,提高边界框质量。fcos计算量较小,速度较快,同时对小目标检测也有较高的精度。

三、基于transformer目标检测算法

近年来,Transformer 结构在计算机视觉领域取得了重大突破,特别是在目标检测任务上,基于 Transformer 的目标检测方法(如 DETR、Deformable DETR)展现了比 CNN 传统方法更强的性能。

3.1 DETR网络(End-to-End Object Detection with Transformer,2020)

DETR(DEtection TRansformer)是 Facebook AI Research(FAIR)于 2020 年提出的基于 Transformer 的端到端目标检测算法。它彻底去掉了传统目标检测方法中的 Anchor Box、NMS(非极大值抑制),直接使用 Transformer 进行目标框的回归和分类,使得目标检测变成一个序列预测任务。

DETR 主要由 CNN Backbone(特征提取)+ Transformer(目标建模)+ FFN(最终预测) 三部分组成。采用 ResNet-50 / ResNet-101 提取深度特征,输出 固定大小的特征图(如 H/32 × W/32),这个特征图会作为 Transformer Encoder 的输入。

CNN Backbone 提取特征:

  • 采用 ResNet-50 / ResNet-101 提取深度特征;
  • 输出 固定大小的特征图(如 H/32 × W/32);
  • 这个特征图会作为 Transformer Encoder 的输入。

Transformer 编码器(Encoder):

  • 将 CNN 提取的特征图展平成序列(Flattened Features);
  • 加入位置编码(Positional Encoding),保持空间信息;
  • 经过 N 层标准 Transformer Encoder 进行特征建模;
  • 和输入形状相同的特征序列,但经过 Transformer 编码器建模。

Transformer 解码器(Decoder):

  • 采用 固定数量(N=100)的查询(Object Queries) 作为目标检测任务的 Query;
  • 查询 Query + 编码器输出 进行跨注意力计算(Cross-Attention);
  • 经过 M 层 Transformer Decoder,输出 N × D 维度的目标信息;
  • 每个 Query 预测一个目标框(N=100);
  • 使用 Hungarian Algorithm(匈牙利匹配) 计算每个预测框与真实目标的最优匹配。

detr是首次基于transformer进行的端到端训练,无需 Anchor、NMS,全局建模能力强,减少候选框误检,但是收敛速度慢(需要 500+ 轮训练),小目标检测能力较弱。

3.2 Deformable DETR网络(2020)

Deformable DETR(可变形 DETR) 是对 DETR(Detection Transformer) 的改进版本,旨在解决 DETR 的收敛速度慢、计算复杂度高、小目标检测能力差等问题。Deformable DETR 通过引入 Deformable Attention(可变形注意力),提高检测效率和准确度。

Deformable Attention机制:

标准 Transformer 采用全局自注意力(Global Self-Attention),需要计算所有Query和Key之间的相似性,导致 计算复杂度 = O(N^2)(计算量大)。而Deformable DETR采用 Deformable Attention(可变形注意力),只在每个Query 选取少量关键点(Key Points)进行计算,而不是全局计算,计算复杂度降低到O(N)。假如我们设定的关键点数量为k,Query为Q(N,256),代表N个查询向量,Q会经过两个MLP将其映射为两个物理概念,一个为Pref,维度为N*2,代表在特征层的N个二维位置,另外一个是ΔP,维度为N*L*K*2,代表在每一个特征层L上(例如P3 P4 P5)有k个偏移位置,这些偏移位置就是每一个目标N所重点关注的特征,通过P=Pref + ΔP,P的维度为N*L*K*2,可以获得在P所示的位置的L*K个特征点,以这些特征点再进行注意力计算,可以极大减少计算量。

多尺度特征融合:
Deformable DETR不仅考虑了最终输出层的特征,同时也考虑了多尺度的特征层,并通过MLP将query映射到不同尺度特征层具体的位置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

复试不难,西电马克思主义学院—考研录取情况

01、马克思主义学院各个方向 02、24马克思主义学院近三年复试分数线对比 PS:马院24年院线相对于23年院线增加15分,反映了大家对于马克思主义理论学习与研究的热情高涨,也彰显了学院在人才培养、学科建设及学术研究等方面的不断进步与成就。 6…

【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求

目录 一、模式支持要求 1.1 发现模式 1.2 连接模式 1.3 绑定模式 1.4 模式间依赖关系总结 1.5 注意事项 1.6 协议设计深层逻辑 二、安全机制(Security Aspects) 三、空闲模式操作(Idle Mode Procedures) 3.1 支持要求 …

分享一个免费的CKA认证学习资料

关于CKA考试 CKA(Certified Kubernetes Administrator)是CNCF基金会(Cloud Native Computing Foundation)官方推出的Kubernetes管理员认证计划,用于证明持有人有履行Kubernetes管理的知识,技能等相关的能力…

观成科技:​加密C2框架Platypus流量分析

一、工具介绍 Platypus 是一款支持多会话的交互式反向 Shell 管理器。在实际的渗透测试中,为了解决 Netcat/Socat 等工具在文件传输、多会话管理方面的不足,该工具在多会话管理的基础上增加了在渗透测试中能更好发挥作用的功能(如:交互式 Sh…

Jetson Nano NX 重装系统

本篇记录了自己刚拿到Jetson板子后,刻意去学习给板子重刷系统的过程,学会重装系统是玩嵌入式开发板的基操。 注意:我使用的是 Nvidia 官方 SDK Manager 给 Jetson 刷系统的,需要额外准备一台 linux 电脑(双系统或者虚拟…

Java数据结构第二十三期:Map与Set的高效应用之道(二)

专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、哈希表 1.1. 概念 1.2. 冲突 1.3. 避免冲突 1.4. 解决冲突 1.5. 实现 二、OJ练习 2.1. 只出现一次的数字 2.2. 随机链表的复制 2.3. 宝石与石头 一、哈希表 1.1. 概念 顺序结构以及平衡树中…

linux系统命令——权限

一、有哪些权限 读(r)——对应数字4 写(w)——对应数字2 执行(x)——对应数字1 二、权限及数字的对应 4对应r-- 2对应-w- 1对应--x 5对应r-x 6对应rw- 7对应rwx 三、文件的基本属性 如图&#…

PentestGPT 下载

PentestGPT 下载 PentestGPT 介绍 PentestGPT(Penetration Testing GPT)是一个基于大语言模型(LLM)的智能渗透测试助手。它结合了 ChatGPT(或其他 GPT 模型)与渗透测试工具,帮助安全研究人员自…

JVM 2015/3/15

定义:Java Virtual Machine -java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写,到处运行 自动内存管理,垃圾回收 数组下标越界检测 多态 比较:jvm/jre/jdk 常见的JVM&…

sql靶场-时间盲注(第九、十关)保姆级教程

目录 时间盲注(第九、十关) 1.判断 2.确认时间盲注 2.手工尝试时间盲注 数据库名长度 数据库名字符 表数 表名长度 表名字符 字段数 字段名长度 字段名字符 4.脚本时间盲注注入 5.第十关 时间盲注(第九、十关) 1.判…

51c自动驾驶~合集54

我自己的原文哦~ https://blog.51cto.com/whaosoft/13517811 #Chameleon 快慢双系统!清华&博世最新:无需训练即可解决复杂道路拓扑 在自动驾驶技术中,车道拓扑提取是实现无地图导航的核心任务之一。它要求系统不仅能检测出车道和交…

大模型推理:LM Studio在Mac上部署Deepseek-R1模型

LM Studio LM Studio是一款支持离线大模型部署的推理服务框架,提供了易用的大模型部署web框架,支持Linux、Mac、Windows等平台,并提供了OpenAI兼容的SDK接口,主要使用LLama.cpp和MLX推理后端,在Mac上部署时选择MLX推理…

扩散模型:AIGC领域的核心引擎,解锁图像生成新维度

一、扩散模型技术原理 扩散模型是一类生成模型,它运用了物理热力学中的扩散思想, 主要包括前向扩散和反向扩散两个过程。 1.1、生成模型 在深度学习中,生成模型的目标是根据给定的样本(训练数据) 生成新样本。首先给…

Java多线程与高并发专题——原子类和 volatile、synchronized 有什么异同?

原子类和 volatile异同 首先,通过我们对原子类和的了解,原子类和volatile 都能保证多线程环境下的数据可见性。在多线程程序中,每个线程都有自己的工作内存,当多个线程访问共享变量时,可能会出现一个线程修改了共享变…

【数据结构】数据结构,算法 概念

0.本篇问题: 数据、数据元素、数据对象、数据项之间的基本关系?ADT是什么?数据结构的三要素?数据的逻辑结构有哪些?数据的存储结构有哪些?算法的五个特征?O(1) O(logn) O(n^n) O(n) O(n^2…

总结 HTTP 协议的基本格式, 相关知识以及抓包工具fiddler的使用

目录 1 HTTP是什么 2 HTTP协议格式 3 HTTP请求(Request) 3.1 认识URL 3.2 方法 3.3 认识请求"报头"(header) 4 HTTP响应详解 4.1 认识"状态码"(statuscode) 4.2 认识响应"报头"(header) 4.3 认识响应"正⽂"(body) 5 通过f…

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要:本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势,包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例,并提供了调参实战指南,最后对蓝耘 …

Linux第三次练习

1、创建根目录结构中的所有的普通文件 首先在根目录下面新创建一个test目录,然后将查找到的普通文件新建到test目录下 2、列出所有账号的账号名 3、将/etc/passwd中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容 4、列出/etc/passwd中的第20行-25行内容…

软件测试知识总结

1、黑盒测试、白盒测试、灰盒测试 1.1 黑盒测试 黑盒测试又叫功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。 采用这种测试方法,测试工程师把测试对象看作一个黑盒子,完全不考虑程序内部的逻辑结构和…

【HTML】三、表单与布局标签

文章目录 1、input1.1 input的占位文案1.2 单选框1.3 上传文件1.4 多选框 2、 下拉菜单3、文本域:多行输入4、label标签:说明与增大点击范围5、按钮与form表单6、无语义布局标签7、有语义的布局标签8、字符实体9、练习:注册页面 1、input in…