当前位置: 首页 > news >正文

目标检测及相关算法介绍

文章目录

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

在这里插入图片描述

目标检测介绍

目标检测是计算机视觉领域中的一项重要任务,旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同,目标检测不仅需要识别出图像中的对象,还需要确定这些对象在图像中的准确位置,同时通过矩形边界框(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]

相关文章:

目标检测及相关算法介绍

文章目录 目标检测介绍目标检测算法分类目标检测算法模型组成经典目标检测论文 目标检测介绍 目标检测是计算机视觉领域中的一项重要任务,旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同,目标检测不仅需要…...

跟着cherno手搓游戏引擎【20】混合(blend)

抽象: Renderer.h: #pragma once #include"RenderCommand.h" #include "OrthographicCamera.h" #include"Shader.h" namespace YOTO {class Renderer {public:static void Init();static void BeginScene(OrthographicCamera& …...

leetcode 3.无重复字符的最长字串(滑动窗口) (C++)DAY2

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示…...

Android Build 依赖项

在项目中的Build.Gradle文件中dependencies代码块中添加指定依赖项。 有三种不同类型的依赖项 本地模块依赖项 implementation project(:mylibrary)这个mylibrary 必须在 settings.gradle 中使用的库名称相同 本地文件依赖项 implementation fileTree(dir: libs, include:…...

SpringMVC精简知识点

SpringMVC 数据格式化基本数据类型和字符串自动转换特殊数据类型和字符串自动转换 验证及国际化应用实例注意事项和使用细节注解的结合使用数据类型转换校验核心类-DatBinder取消某个属性的绑定中文乱码解决处理json和HttpMessageConverter<T>作业布置SpringMVC文件上传自…...

如何写好论文——(17)如何用批判性思维检阅文献

在写论文的时候&#xff0c;往往需要引用很多文献资料&#xff0c;作为论点来证明我们的研究目标是合理的。在讨论和结论中&#xff0c;我们往往也需要引用很多的文献资料和我们自己的研究结果放在一起&#xff0c;来证明我们的研究结果是有意义的。所以在选择文献资料的时候&a…...

git将项目的某次签入遴选(Cherry-Pick)另一个项目

需求&#xff1a;将项目Product&#xff0c;分支feature/platform&#xff0c;签入959294ce6b75ee48c5cb22c46d7398654628a896&#xff0c;遴选到项目BRP&#xff0c;分支dev 第一步&#xff1a;使用原签入生成patch文件&#xff08;git format-patch -1 <commit_hash>&a…...

开源节点框架STNodeEditor使用

节点&#xff0c;一般都为树形Tree结构&#xff0c;如TreeNode&#xff0c;XmlNode。 树形结构有其关键属性Parent【父节点】&#xff0c;Children【子节点】 LinkedListNode为链表线性结构&#xff0c;有其关键属性Next【下一个】&#xff0c;Previous【上一个】&#xff0c…...

算法每日一题: Nim游戏 | 找规律

哈哈&#xff0c;大家好&#xff0c;我是星恒&#xff0c;今天的每日一题真开心&#xff0c;连做了3天牢&#xff0c;终于ak了一道&#xff0c;太不容易了 这道题其实就是找规律&#xff0c;刚开始我还以为是动归&#xff0c;但是列举了不少例子之后&#xff0c;发现有自己直接…...

分类预测 | Matlab实现GAF-PCNN-MATT格拉姆角场和双通道PCNN融合多头注意力机制的分类预测/故障识别

分类预测 | Matlab实现GAF-PCNN-MATT格拉姆角场和双通道PCNN融合多头注意力机制的分类预测/故障识别 目录 分类预测 | Matlab实现GAF-PCNN-MATT格拉姆角场和双通道PCNN融合多头注意力机制的分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现G…...

Dockerfile保留字

目录 一、Dockerfile保留字是什么&#xff1f; 二、Docker构建流程 1. 从基础镜像运行容器 2. 执行指令并修改容器 3. 提交新的镜像层 4. 基于新镜像运行新容器 5. 执行下一条指令 6. 循环执行指令 7. 所有指令执行完成 三、保留字 1. FROM 使用基础镜像作为起点 2.…...

Linux的7个运行级别

目录 1、有那7个运行级别&#xff1f; 2、那么如何查看运行级别呢?  3、那么我想临时切换运行级别? 4、那么我想修改配置文件中的运行级别呢? 1、有那7个运行级别&#xff1f; 0&#xff1a;停机状态。系统默认运行级别不能设置为0&#xff0c;否则系统不能正常启动&a…...

Linux期末总复习( 详解 )

文章目录 一、选择题二、填空题三、简答题四、操作题 一、选择题 1.在创建Linux分区时&#xff0c;一定要创建&#xff08; D &#xff09;两个分区 A. FAT/NTFS  B. FAT/SWAP  C. NTFS/SWAP  D.SWAP/根分区 2.在Red Hat Linux 9 中&#xff0c;系统默认的&#xf…...

【Linux系统化学习】进程等待

目录 进程等待 进程等待的必要性 进程等待的方法 wait方法 等待一个进程(阻塞等待&#xff09; waitpid方法 任意等待多个进程&#xff08;阻塞等待&#xff09; 父进程获取子进程的退出信息 非阻塞轮询等待 进程等待 进程等待的必要性 之前讲过&#xff0c;子进程退…...

前端学习笔记 | HTML5+CSS3静态网页制作的技巧(持续更新)

注&#xff1a;本文的css样式均使用less写法 1、字体居中 &#xff08;1&#xff09;先text-align:center;行内元素水平居中 &#xff08;2&#xff09;再line-heigh:(盒子高度);行内元素垂直居中 text-align: center;line-height: ( 30 / vw ); 2、盒子居中 情景1&#…...

docker安装-centos

Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10 卸载旧版本Docker sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine使用yum安装 yum 更新到最新版本: sudo yum update执行以下命令安装依赖包&#xff1a; sudo yum…...

Redis入门指南

文章目录 Redis概述Redis基本数据类型Redis与MySQL的区别以及使用场景如何保持双写一致性&#xff08;缓存一致性&#xff09;1. 延迟双删2. 分布式锁&#xff08;强一致性时使用&#xff09;3. 中间件 Redis持久化机制RDB&#xff08;redis database&#xff09;AOF&#xff0…...

K8s之configMap

1. 概述​ 1.1 什么是configMap​ 1.1 什么是configMap configMap是Kubernetes中的一种资源对象&#xff0c;用于存储配置数据。它可以包含键值对&#xff0c;也可以包含来自文件的配置数据。configMap的作用是将配置数据与应用程序的容器分离&#xff0c;使得配置可以在不重…...

提高 NFS Azure 文件共享性能

本文内容 适用于增加预读大小以提高读取吞吐量Nconnect另请参阅 本文介绍如何提高 NFS Azure 文件共享的性能。 适用于 展开表 文件共享类型SMBNFS标准文件共享 (GPv2)、LRS/ZRS 标准文件共享 (GPv2)、GRS/GZRS 高级文件共享 (FileStorage)、LRS/ZRS 增加预读大…...

【Django-ninja】使用schema

在Django Ninja中&#xff0c;"schema"主要是指帮助描述和规范你的API的工具&#xff0c;以便系统能够自动生成文档并提供验证。通俗地说&#xff0c;它有两个主要作用&#xff1a; API文档生成器&#xff1a; Schema 让 Django Ninja 能够自动生成互动式的API文档。…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

项目进度管理软件是什么?项目进度管理软件有哪些核心功能?

无论是建筑施工、软件开发&#xff0c;还是市场营销活动&#xff0c;项目往往涉及多个团队、大量资源和严格的时间表。如果没有一个系统化的工具来跟踪和管理这些元素&#xff0c;项目很容易陷入混乱&#xff0c;导致进度延误、成本超支&#xff0c;甚至失败。 项目进度管理软…...

第2篇:BLE 广播与扫描机制详解

本文是《BLE 协议从入门到专家》专栏第二篇,专注于解析 BLE 广播(Advertising)与扫描(Scanning)机制。我们将从协议层结构、广播包格式、设备发现流程、控制器行为、开发者 API、广播冲突与多设备调度等方面,全面拆解这一 BLE 最基础也是最关键的通信机制。 一、什么是 B…...