目标检测及相关算法介绍

文章目录

  • 目标检测介绍
  • 目标检测算法分类
  • 目标检测算法模型组成
  • 经典目标检测论文

在这里插入图片描述

目标检测介绍

目标检测是计算机视觉领域中的一项重要任务,旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同,目标检测不仅需要识别出图像中的对象,还需要确定这些对象在图像中的准确位置,同时通过矩形边界框(Bounding Box)来表示。在自动驾驶领域,目标检测技术具有重要的应用,帮助自动驾驶系统识别和理解道路上的环境,从而做出适当的驾驶决策。以下是目标检测在自动驾驶领域的一些主要应用:

  • 行人检测: 目标检测可用于识别道路上的行人,包括行人的位置和动态行为。这对于确保行人的安全以及避免与行人的碰撞非常重要。
  • 车辆检测: 自动驾驶车辆需要准确地检测其他车辆的位置、速度和行驶方向,以便在交通中做出正确的驾驶决策,如超车、跟车等。
  • 交通信号灯和标志检测: 目标检测可以帮助车辆识别交通信号灯的状态(红灯、绿灯、黄灯)以及道路上的交通标志,从而调整行驶速度和行为。
  • 道路边缘和障碍物检测: 自动驾驶车辆需要检测道路边缘和障碍物,以保持在正确的车道内并避免与障碍物发生碰撞。
  • 自动驾驶中的人体姿态估计: 目标检测可以用于估计驾驶员或乘客的身体姿态,以便自动驾驶系统可以更好地理解车内的情况。
  • 环境感知和感知预测: 目标检测可以帮助自动驾驶系统感知周围环境中的不同目标,并预测它们的行为和轨迹,以做出相应的驾驶决策。
  • 道路几何检测: 目标检测可以用于检测道路的几何特征,如车道线和路缘石,以提供更准确的定位和导航信息。
  • 自动泊车: 在自动泊车场景中,目标检测可用于检测停车位的位置和大小,以及其他可能的障碍物,以确保安全的泊车过程。

目标检测算法分类

目标检测算法可以有多种划分方法。按照stage个数划分,可以分为:one-stage(一阶段)算法和two-stage(两阶段)算法,按照是否需要预定义anchor划分,也可分为anchor-based和anchor-free。以下是按照stage个数进行划分的案例:

  • one-stage代表算法: RetinaNet、YOLO系列、FCOS、SSD等。

  • two-stage代表算法: R-CNN、SPPNet、Fast R-CNN、Faster R-CNN、Mask R-CNN、Cascade R-CNN、Sparse R-CNN等。

  • 理解: two-stage算法会先①生成一个候选区域(region proposal),然后②利用CNN对每个候选区域进行分类;而one-stage算法则一步到位,直接输出每个候选区域及对应的分类结果。

  • Anchor-Based(基于锚点的方法):Faster R-CNN、YOLO系列、SSD、Cascade R-CNN、RetinaNet

  • Anchor-Free(无锚点方法):CenterNet、FCOS、CornerNet

目标检测算法模型组成

目标检测算法训练阶段的模型主要由以下几个部分组成,分别是:Backbone、Neck、Head、Enhance、BBox Assigner、BBox Sampler、BBox Encoder、 Loss组成。

  • Backbone: Backbone(主干网络)的主要作用是特征提取。常见的Backbone有:ResNet、ResNext、Res2Net、ResNeSt、DarkNet、HRNet、RegNet等。

  • Neck: Neck可以认为是Backbone和Head的连接层,主要负责对Backbone提取的的特征进行高效融合和增强,能够对输入的单尺度或者多尺度特征进行融合、增强输出等。常见的Neck有:FPN、BFP、RFP、PAFPN、NAS_FPN、HRFPN等。

  • Head: 目标检测算法输出一般包括分类(比如:人、汽车等)和框坐标回归(标记"人"的矩形框对应的坐标)两个分支。

  • Enhance: Enhance是即插即用、能够对特征进行增强的模块。常用的Enhance模块有:SPP、ASPP、RFB、Dropout、Dropblock、DCN以及各种注意力模块SeNet、Non_local、CBA等。

  • BBox Assigner: 待更新

  • BBox Sampler: 待更新

  • BBox Encoder: 待更新

  • Loss: Loss(损失)通常分为分类Loss和回归Loss,主要对Head网络输出的预测值和BBox encoder得到的targets进行梯度下降迭代训练。常见的分类Loss有:BCELoss、CELoss、FocalLoss、QualityFocalLoss、VarifocalLoss、GaussianFocalLoss、GHMC、OHEM等;常见的回归Loss有:L1/L2 Loss、SmoothL1Loss、BalancedL1Loss、DistributionFocalLoss、GHMR、IoU/BoundeIoU/GIoU/CIoU Loss等。

  • 训练技巧: 目标检测算法的训练技巧非常多,常说的调参很大一部分工作都是在设置这部分超参。这部分内容比较杂乱,很难做到完全统一,目前主流的tricks有:大batch训练、分布式训练和同步BN、Warm Up、余弦学习率、多尺度训练、模型EMA、知识蒸馏、Label Smoothing、对抗训练、随机权重平均、遗传算法自动超参数搜索等。

  • 图像数据增强: 图像数据增强旨在通过对原始图像进行一系列变换和修改,从而生成更多、多样化的训练样本。常见的数据增强方法有:常规的图像数据增强(翻转、旋转、平移、缩放、裁剪、色彩变换、噪声添加等)、AutoAug、RandAug、MixUp/CutMix、Mosaic、Stitcher等。

经典目标检测论文

  • R-CNN (Region-based Convolutional Neural Networks): [2014-CVPR] Rich feature hierarchies for accurate object detection and semantic segmentation. [pdf]
  • Fast R-CNN: [2015-ICCV] Fast R-CNN. [pdf]
  • Faster R-CNN: [2015-NeurIPS] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks [pdf]
  • YOLO (You Only Look Once): [2016-CVPR] You Only Look Once: Unified, Real-Time Object Detection. [pdf]
  • SSD (Single Shot MultiBox Detector): [2016-ECCV] SSD: Single Shot MultiBox Detector. [pdf]
  • RetinaNet: [2017-CVPR] Focal Loss for Dense Object Detection. [pdf]
  • EfficientDet: [2020-CVPR] EfficientDet: Scalable and Efficient Object Detection. [pdf]
  • Cascade R-CNN: [2018-CVPR] Cascade R-CNN: Delving into High Quality Object Detection [pdf]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue全家桶之状态管理Pinia

一、Pinia和Vuex的对比 1.什么是Pinia呢? Pinia(发音为/piːnjʌ/,如英语中的“peenya”)是最接近pia(西班牙语中的菠萝)的词; Pinia开始于大概2019年,最初是作为一个实验为Vue重新…

详解C++类和对象(上)

文章目录 写在前面1. 类的定义2. 类的访问限定符及封装2.1 类的访问限定符2.2 封装 3. 类的作用域4. 类的实例化5 类的对象大小的计算6. 类成员函数的this指针 写在前面 类和对象这一章节,分为上、中、下三篇文章进行拆分介绍的,本篇文章介绍了类和对象…

LabVIEW与EtherCAT实现风洞安全联锁及状态监测

LabVIEW与EtherCAT实现风洞安全联锁及状态监测 在现代风洞试验中,安全联锁与状态监测系统发挥着至关重要的作用,确保了试验过程的安全性与高效性。介绍了一套基于EtherCAT总线技术和LabVIEW软件开发的风洞安全联锁及状态监测系统。该系统通过实时、可靠…

C++后端开发之Sylar学习二:配置VSCode远程连接Ubuntu开发

C后端开发之Sylar学习二:配置VSCode远程连接Ubuntu开发 没错,我不能像大佬那样直接在Ubuntu上面用Vim手搓代码,只能在本地配置一下VSCode远程连接Ubuntu进行开发咯! 本篇主要是讲解了VSCode如何配置ssh连接Ubuntu,还有…

蓝桥杯每日一题-----数位dp练习

题目 链接 参考代码 写了两个,一个是很久以前写的,一个是最近刚写的,很久以前写的时候还不会数位dp所以写了比较详细的注释,这两个代码主要是设置了不同的记忆数组,通过这两个代码可以理解记忆数组设置的灵活性。 im…

UE4运用C++和框架开发坦克大战教程笔记(十七)(第51~54集)

UE4运用C和框架开发坦克大战教程笔记(十七)(第51~54集) 51. UI 框架介绍UE4 使用 UI 所面临的问题以及解决思路关于即将编写的 UI 框架的思维导图 52. 管理类与面板类53. 预加载与直接加载54. UI 首次进入界面 51. UI 框架介绍 U…

【C++】运算符重载详解

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读 1. 为什么需要运算符重载 2. 运算符重载概念 3. 运算符重载示例 3.1 运算符重载 3.2 >或<运算符 4. 运算符重…

2024最新最详细【接口测试总结】

序章 ​ 说起接口测试&#xff0c;网上有很多例子&#xff0c;但是当初做为新手的我来说&#xff0c;看了不不知道他们说的什么&#xff0c;觉得接口测试&#xff0c;好高大上。认为学会了接口测试就能屌丝逆袭&#xff0c;走上人生巅峰&#xff0c;迎娶白富美。因此学了点开发…

分享个前端工具-取色调色工具

这里虽然贴了两个&#xff0c;但推荐 Pipette. PipetteWin22.10.22.zip: https://download.csdn.net/download/rainyspring4540/88799632 图标&#xff1a; 界面&#xff1a; ColorPix https://download.csdn.net/download/rainyspring4540/88799642 图标&#xff1a; 界面…

【Spring】自定义注解 + AOP 记录用户的使用日志

目录 ​编辑 自定义注解 AOP 记录用户的使用日志 使用背景 落地实践 一&#xff1a;自定义注解 二&#xff1a;切面配置 三&#xff1a;Api层使用 使用效果 自定义注解 AOP 记录用户的使用日志 使用背景 &#xff08;1&#xff09;在学校项目中&#xff0c;安防平台…

FastAdmin西陆房产系统(xiluHouse)全开源

应用介绍 一款基于FastAdminThinkPHPUniapp开发的西陆房产管理系统&#xff0c;支持小程序、H5、APP&#xff1b;包含房客、房东(高级授权)、经纪人(高级授权)三种身份。核心功能有&#xff1a;新盘销售、房屋租赁、地图找房、房源代理(高级授权)、在线签约(高级授权)、电子合同…

C#实现坐标系转换

已知坐标系的向量线段AB&#xff0c;旋转指定角度后平移到达坐标AB 获取旋转角度以及新的其他坐标转换。 新建窗体应用程序CoordinateTransDemo&#xff0c;将默认的Form1重命名为FormCoordinateTrans&#xff0c;窗体设计如图&#xff1a; 窗体设计代码如下&#xff1a; 部分…

Redis-缓存问题及解决方案

本文已收录于专栏 《中间件合集》 目录 概念说明缓存问题缓存击穿问题描述解决方案 缓存穿透问题描述解决方案 缓存雪崩问题描述解决方案提高缓存可用性过期时间配置熔断降级 总结提升 概念说明 Redis是一个开源的内存数据库&#xff0c;也可以用作缓存系统。它支持多种数据结构…

前端小案例——动态导航栏文字(HTML + CSS, 附源码)

一、前言 实现功能: 这案例是一个具有动态效果的导航栏。导航栏的样式设置了一个灰色的背景&#xff0c;并使用flex布局在水平方向上平均分配了四个选项。每个选项都是一个li元素&#xff0c;包含一个文本和一个横向的下划线。 当鼠标悬停在选项上时&#xff0c;选项的文本颜色…

华为自动驾驶干不过特斯拉?

文 | AUTO芯球 作者 | 李诞 什么&#xff1f; 华为的智能驾驶方案干不过蔚小理&#xff1f; 特斯拉的智能驾驶[FSD]要甩中国车企几条街&#xff1f; 这华为问界阿维塔刚刚推送“全国都能开”的城区“无图 NCA” 就有黑子来喷了 这是跪久了站不起来了吧 作为玩车14年&…

get通过发送Body传参-工具类

1、调用方式 String url "http://ip/xxx/zh/xxxxx/xxxx/userCode"; //进行url中的对应的参数 url2 url2.replace("ip",bancirili); url2 url2.replace("zh",zh); url2 url2.replace("userCode",userCode);String dateTime xxxx; //组…

04. 【Linux教程】安装 Linux 操作系统

通过前面的小节学习&#xff0c;我们已经对 Linux 操作系统有了简单的了解&#xff0c;同时也在 Windows 下安装了虚拟机软件 VMware &#xff0c;那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。 通过第一小节的学习我们知道 Linux 有很多的发行版本&#xf…

Vscode配置STM32开发环境(联合Keil MDK/IAR开发)

Vscode配置STM32开发环境&#xff08;替代Keil MDK/IAR&#xff09; 前言 使用了很长时间的Keil5 MDK&#xff0c;以及最近用了一段时间的IAR for ARM&#xff0c;总体来说体验都不是特别的好&#xff0c;Keil功能还行&#xff0c;也不卡顿&#xff0c;就是开发效率、界面样式…

1-2 动手学深度学习v2-基础优化方法-笔记

最常见的算法——梯度下降 当一个模型没有显示解的时候&#xff0c;该怎么办呢&#xff1f; 首先挑选一个参数的随机初始值&#xff0c;可以随便在什么地方都没关系&#xff0c;然后记为 w 0 \pmb{w_{0}} w0​在接下来的时刻里面&#xff0c;我们不断的去更新 w 0 \pmb{w_{0}…

asp.net core 依赖注入 实例化对象实例

在面向对象编程中&#xff0c;推荐使用面向接口编程&#xff0c;这样我们的代码就依赖于服务接口&#xff0c;而不是依赖于实现类&#xff0c;可以实现代码解耦。 名称解释&#xff1a; 我们把负责提供对象的注册和 获取功能的框架叫作“容器”&#xff0c; 注册到容器中的对象…