目标检测及相关算法介绍
文章目录
- 目标检测介绍
- 目标检测算法分类
- 目标检测算法模型组成
- 经典目标检测论文

目标检测介绍
目标检测是计算机视觉领域中的一项重要任务,旨在识别图像或视频中的特定对象的位置并将其与不同类别中的对象进行分类。与图像分类任务不同,目标检测不仅需要识别出图像中的对象,还需要确定这些对象在图像中的准确位置,同时通过矩形边界框(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)如何用批判性思维检阅文献
在写论文的时候,往往需要引用很多文献资料,作为论点来证明我们的研究目标是合理的。在讨论和结论中,我们往往也需要引用很多的文献资料和我们自己的研究结果放在一起,来证明我们的研究结果是有意义的。所以在选择文献资料的时候&a…...
git将项目的某次签入遴选(Cherry-Pick)另一个项目
需求:将项目Product,分支feature/platform,签入959294ce6b75ee48c5cb22c46d7398654628a896,遴选到项目BRP,分支dev 第一步:使用原签入生成patch文件(git format-patch -1 <commit_hash>&a…...
开源节点框架STNodeEditor使用
节点,一般都为树形Tree结构,如TreeNode,XmlNode。 树形结构有其关键属性Parent【父节点】,Children【子节点】 LinkedListNode为链表线性结构,有其关键属性Next【下一个】,Previous【上一个】,…...
算法每日一题: Nim游戏 | 找规律
哈哈,大家好,我是星恒,今天的每日一题真开心,连做了3天牢,终于ak了一道,太不容易了 这道题其实就是找规律,刚开始我还以为是动归,但是列举了不少例子之后,发现有自己直接…...
分类预测 | Matlab实现GAF-PCNN-MATT格拉姆角场和双通道PCNN融合多头注意力机制的分类预测/故障识别
分类预测 | Matlab实现GAF-PCNN-MATT格拉姆角场和双通道PCNN融合多头注意力机制的分类预测/故障识别 目录 分类预测 | Matlab实现GAF-PCNN-MATT格拉姆角场和双通道PCNN融合多头注意力机制的分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现G…...
Dockerfile保留字
目录 一、Dockerfile保留字是什么? 二、Docker构建流程 1. 从基础镜像运行容器 2. 执行指令并修改容器 3. 提交新的镜像层 4. 基于新镜像运行新容器 5. 执行下一条指令 6. 循环执行指令 7. 所有指令执行完成 三、保留字 1. FROM 使用基础镜像作为起点 2.…...
Linux的7个运行级别
目录 1、有那7个运行级别? 2、那么如何查看运行级别呢? 3、那么我想临时切换运行级别? 4、那么我想修改配置文件中的运行级别呢? 1、有那7个运行级别? 0:停机状态。系统默认运行级别不能设置为0,否则系统不能正常启动&a…...
Linux期末总复习( 详解 )
文章目录 一、选择题二、填空题三、简答题四、操作题 一、选择题 1.在创建Linux分区时,一定要创建( D )两个分区 A. FAT/NTFS B. FAT/SWAP C. NTFS/SWAP D.SWAP/根分区 2.在Red Hat Linux 9 中,系统默认的…...
【Linux系统化学习】进程等待
目录 进程等待 进程等待的必要性 进程等待的方法 wait方法 等待一个进程(阻塞等待) waitpid方法 任意等待多个进程(阻塞等待) 父进程获取子进程的退出信息 非阻塞轮询等待 进程等待 进程等待的必要性 之前讲过,子进程退…...
前端学习笔记 | HTML5+CSS3静态网页制作的技巧(持续更新)
注:本文的css样式均使用less写法 1、字体居中 (1)先text-align:center;行内元素水平居中 (2)再line-heigh:(盒子高度);行内元素垂直居中 text-align: center;line-height: ( 30 / vw ); 2、盒子居中 情景1&#…...
docker安装-centos
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10 卸载旧版本Docker sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine使用yum安装 yum 更新到最新版本: sudo yum update执行以下命令安装依赖包: sudo yum…...
Redis入门指南
文章目录 Redis概述Redis基本数据类型Redis与MySQL的区别以及使用场景如何保持双写一致性(缓存一致性)1. 延迟双删2. 分布式锁(强一致性时使用)3. 中间件 Redis持久化机制RDB(redis database)AOF࿰…...
K8s之configMap
1. 概述 1.1 什么是configMap 1.1 什么是configMap configMap是Kubernetes中的一种资源对象,用于存储配置数据。它可以包含键值对,也可以包含来自文件的配置数据。configMap的作用是将配置数据与应用程序的容器分离,使得配置可以在不重…...
提高 NFS Azure 文件共享性能
本文内容 适用于增加预读大小以提高读取吞吐量Nconnect另请参阅 本文介绍如何提高 NFS Azure 文件共享的性能。 适用于 展开表 文件共享类型SMBNFS标准文件共享 (GPv2)、LRS/ZRS 标准文件共享 (GPv2)、GRS/GZRS 高级文件共享 (FileStorage)、LRS/ZRS 增加预读大…...
【Django-ninja】使用schema
在Django Ninja中,"schema"主要是指帮助描述和规范你的API的工具,以便系统能够自动生成文档并提供验证。通俗地说,它有两个主要作用: API文档生成器: Schema 让 Django Ninja 能够自动生成互动式的API文档。…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
比特币:固若金汤的数字堡垒与它的四道防线
第一道防线:机密信函——无法破解的哈希加密 将每一笔比特币交易比作一封在堡垒内部传递的机密信函。 解释“哈希”(Hashing)就是一种军事级的加密术(SHA-256),能将信函内容(交易细节…...
