目标检测算法总结

article/2025/8/24 18:43:26

一、基于候选区域的目标检测器

滑动窗口检测器

根据滑动窗口从图像中剪切图像块,把图像块处理成固定大小。随后输入CNN分类器中,提取特征。最后使用SVM分类器识别种类,并且用线性回归器得到边框。
在这里插入图片描述

选择性搜索selective search

首先将每个像素作为一组。
然后,计算每一组的纹理,并将两个最接近的组结合起来。
但是为了避免单个区域吞噬其他区域,我们首先对较小的组进行分组。我们继续合并区域,直到所有区域都结合在一起。

R-CNN

R-CNN 利用候选区域方法创建了约 2000 个 ROI。这些区域被转换为固定大小的图像,并分别馈送到卷积神经网络中。该网络架构后面会跟几个全连接层,以实现目标分类并提炼边界框。
在这里插入图片描述
比滑动窗口更快速、更准确。

边界框回归器

在这里插入图片描述
使用回归的方法,将蓝色边界框转变成红色边界框。
在这里插入图片描述
经过平移、缩放,得到回归窗口。
把A框经过映射,得到与真实窗口G框更接近的回归窗口G’。

Fast R-CNN

R-CNN缺点:需要非常多的候选区域以提升准确度,但其实有很多区域是彼此重叠的。对每个候选区域都要提取一次特征,速度很慢。

Fast R-CNN先用CNN提取整个图像的特征,再把SS应用到提取到的特征图上。这样只需要提取一次特征,加快了速度。
在这里插入图片描述

ROI池化

因为 Fast R-CNN 使用全连接层,所以我们应用 ROI 池化将不同大小的 ROI 转换为固定大小

在这里插入图片描述
左上角:特征图
右上角:ROI(蓝色框)
左下角:将ROI拆成目标维度(这里是2*2)
右下角:找到每个部分的最大值,得到变换后的特征图

这样就把特征区域resize成固定大小了。

Faster R-CNN

Fast R-CNN缺点:使用SS,太慢了
Faster R-CNN 采用与 Fast R-CNN 相同的设计,只是它用内部深层网络代替了候选区域方法。新的候选区域网络(RPN)在生成 ROI 时效率更高。
在这里插入图片描述
流程图与Fast R-CNN相同,只是生成候选区域的方法不同。

候选区域网络RPN

候选区域网络(RPN)将第一个卷积网络的输出特征图作为输入
它在特征图上滑动一个 3×3 的卷积核,以使用卷积网络(如下所示的 ZF 网络)构建与类别无关的候选区域。其他深度网络(如 VGG 或 ResNet)可用于更全面的特征提取,但这需要以速度为代价。
在这里插入图片描述
ZF网络最后输出256个值,分别送入两个全连接层,以预测边界框和两个objectness 分数,这两个 objectness 分数度量了边界框是否包含目标(0或1)。
对于特征图中的每一个位置,RPN 会做 k 次预测。
因此4k表示,每次4个坐标,总共4k个参数。
2k表示,每个位置上0或1得分,总共2k个参数。

Faster R-CNN 使用更多的锚点。它部署 9 个锚点框:3 个不同宽高比的 3 个不同大小的锚点框。每一个位置使用 9 个锚点,每个位置会生成 2×9 个 objectness 分数和 4×9 个坐标。

基于区域的全卷积神经网络(R-FCN)

Faster R-CNN缺点:如果ROI数量过多,送入全连接层进行预测,速度太慢了。
因此R-FCN 通过减少每个 ROI 所需的工作量实现加速。

1、现有一个5x5的特征图M,内部包含一个蓝色方块。我们将蓝色方块划分成3x3个区域。
在这里插入图片描述
2、创建一个新的特征图,来检测方块的左上角。只有黄色区域是处于激活状态。
在这里插入图片描述
3、类似的,创建出9个特征图,来分别检测对应的目标区域。这些叫做位置敏感得分图。
在这里插入图片描述
4、红色虚线矩形是建议的 ROI,将其分割成3x3个区域,并用得分图来求每个区域包含目标对应部分的概论是多少。
例如,左上角 ROI 区域包含左眼的概率。
在这里插入图片描述
在这里插入图片描述
最后得到一个3x3的vote数组,这个过程叫做位置敏感ROI池化。
对ROI的每个区域,都进行一次映射后,得到了3x3个得分,最后计算所有元素得分的平均值。
(得分的意思,就是你这块区域是目标区域的概率。如,目标区域是检测眼睛的,这块区域是眼睛的概率是多少。因此,最后的平均分,就表示这个ROI区域是目标物体的概论)
在这里插入图片描述
假如我们有 C 个类别要检测。我们将其扩展为 C + 1 个类别,这样就为背景(非目标)增加了一个新的类别。每个类别有 3 × 3 个得分图,因此一共有 (C+1) × 3 × 3 个得分图。使用每个类别的得分图可以预测出该类别的类别得分。然后我们对这些得分应用 softmax 函数,计算出每个类别的概率。

二、单次目标检测器

第二部分,我们将对单次目标检测器(包括 SSD、YOLO、YOLOv2、YOLOv3)进行综述。

单次检测器

以前的滑动窗口检测器,有一个缺点,就是把窗口边界作为最终的边界框,这样无法准确定位目标
更为有效的方法,就是把窗口当作初始的猜想,然后根据初始窗口得到预测类别和边界框的检测器。
单次检测器会同时预测边界框和类别。

在 Faster R-CNN 中,卷积核做5个参数的预测:4个参数对应预测边框+1个目标得分,得到8 x 8 x 5。
现在单次检测器中,卷积核还预测C个类别概率以执行分类。因此得到特征图8 x 8 x(C+5)。

SSD

SSD 是使用 VGG19 网络作为特征提取器(和 Faster R-CNN 中使用的 CNN 一样)的单次检测器。
在该网络中,添加自定义卷积层(蓝色),并使用卷积核(绿色)进行预测。
在这里插入图片描述
但是,多个卷积层会降低维度和分辨率。为了解决该问题,从多个特征图上执行独立的目标检测。
在这里插入图片描述

YOLO

YOLO 在卷积层之后使用了 DarkNet 来做特征检测。
在这里插入图片描述
YOLO没有使用多尺度特征图,而将特征图部分平滑化,并将其和另一个较低分辨率的特征图拼接。例如,将一个 28 × 28 × 512 的层重塑为 14 × 14 × 2048,然后将它和 14 × 14 ×1024 的特征图拼接。之后,YOLO 在新的 14 × 14 × 3072 层上应用卷积核进行预测。

YOLOv3

YOLOv3 使用了更加复杂的骨干网络来提取特征。DarkNet-53 主要由 3 × 3 和 1× 1 的卷积核以及类似 ResNet 中的跳过连接构成。

YOLOv3 还添加了特征金字塔,以更好地检测小目标。


http://chatgpt.dhexx.cn/article/9P16xJ3C.shtml

相关文章

万字长文详解目标检测算法,超大超全(2022最新)

摘要 1 概述 2 目标检测回顾 2.1 two-stage 2.2 one-stage 3 目标检测配方 3.1 基础概念 3.1.1 损失函数 3.1.2 Anchor-based 和 Keypoint-based 3.1.3 NMS 3.2 目标检测中的挑战 4 目标检测中的Head 4.1 ThunderNet 4.2 You Only Look Once(YOLO) 4.3 Single Sh…

常见经典目标检测算法

1、目标检测基本概念 1.1 什么是目标检测 目标检测(Object Dectection)的任务是找出图像中所有感兴趣的目标(物体),确定他们的类别和位置。 1.2 目标检测要解决的核心问题 除图像分类外,目标检测要解决的核心问题是&#xff1a…

目标检测的各种算法总结

这里是引用腾讯云博客文章:一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD 文章目录 一、目标检测常见算法二、传统的目标检测算法2.1 从图像识别的任务说起2.2 物体检测(Object Detection) 三、候选区域/窗 深度…

【NLP】预训练模型——GPT1

背景 废话不多说,先把三篇论文链接放出来:GPT1:Improving Language Understanding by Generative Pre-Training、GPT2:Language Models are Unsupervised Multitask Learners、GPT3:Language Models are Few-Shot Learners。李沐老师也在B站上放了介绍G…

ResNet50修改网络适应灰度图片并加载预训练模型

此博文是修改https://blog.csdn.net/jiacong_wang/article/details/105631229 这位大大的博文而成的,自己根据自己的情况稍微加了点东西 要修改的地方有4处 1.修改网络第一层,把3通道改为1 法一:直接在定义网络的地方修改 self.conv1 nn.…

TD-LTE R8 预编码学习笔记

预编码: MIMO系统中,当发射端通过某种方式获得一定的CSI(瞬时值,短期或中长期统计信息),就能通过一定的预处理方式对各个数据流加载的功率,速率乃至发射方向进行优化,并通过预处理在…

Task2-基于MobileaNet的预训练模型优化

##项目背景 mobilenet_v2_0.75_224 预训练模型是基于224224的训练集图片训练而来,需要通过imagenet 100M数据集把模型训练成适用于448448的预训练模型 ##思考的问题 1、预训练模型怎么使用和导入 2、如何在服务器上训练 3、如何把训练集弄出来 4、如何评价训练效果…

波束形成 基于对角加载的稳健自适应波束形成

前言 本人刚刚入门阵列信号处理的波束形成方向,因此仿真过程中可能会出现错误,如果诸位大佬发现仿真过程中有错误,请不吝指出谢谢。 对角加载(Diagonal Loading, DL)是一种比较常用的提高Capon波束形成器鲁棒性的方法,通过在样本协…

Unity大场景数据加载及优化方案

前段时间,有几个虚拟仿真公司跟我请教关于大地形的加载优化问题,它们使用的引擎都是自己研发的,引擎对于开发者来说,大同小异,它们的基本构造是一样的,关键是在于解决问题的方法,正是基于这个前…

预训练模型

目录 一、BERT1、贡献1.1 MLM任务1.2 NSP任务 2、实验细节 二、ALBERT1、贡献1.1 词向量分解1.2 层参数共享1.3 SOP任务 三、 ERNIE1、贡献2、实验细节2.1 语料2.2 MLM任务2.3 DLM任务 四、DistilBERT1、贡献2、实验细节 五、RoBERTa1、贡献2、实验细节2.1 动态mask2.2 去掉NSP…

改动模型后,加载部分预训练权重文件

加载部分预训练权重文件 最近在做姿态估计相关内容,需要将Hrnet模型修改,Hrnet是基于coco数据集训练的,coco数据集是17个关节点,而我需要的是15个关节点,在将数据集标好训练之后,发现由于数据量比较小&…

Pointer 0x0, not in getPreloadedDrawables android 系统资源预加载

Android系统在启动的时候,会对一些系统资源进行预加载。这样不仅使得应用程序在需要时可以快速地访问这些资源,还使得这些资源能够在不同应用程序之间进行共享。在硬件加速渲染环境中,这些预加载资源还有进一步优化的空间。Android系统提供了…

OpenCV | 基本矩阵操作

起因 在2013年1月份发行的OpenCV 2.4.4中,对Java的支持也正式发布。同时也有支持Python。 环境配置 这里的环境配置十分简单,在这里,操作系统64位,所以选这个,将里面的opencv_java342.dll负责到你本地下载的JDK的bin目录下,和JDK下的JRE目录下的bin目录下。 我使用的…

Android应用程序UI硬件加速渲染的预加载资源地图集服务(Asset Atlas Service)分析

我们知道,Android系统在启动的时候,会对一些系统资源进行预加载。这样不仅使得应用程序在需要时可以快速地访问这些资源,还使得这些资源能够在不同应用程序之间进行共享。在硬件加速渲染环境中,这些预加载资源还有进一步优化的空间…

预训练词嵌入

作者|ARAVIND PAI 编译|VK 来源|Analytics Vidhya 概述 理解预训练词嵌入的重要性 了解两种流行的预训练词嵌入类型:Word2Vec和GloVe 预训练词嵌入与从头学习嵌入的性能比较 介绍 我们如何让机器理解文本数据?我们知道机器非常擅长处理和处理数字数据,但如果我们向它们提供…

【论文整理】风格迁移中格拉姆矩阵(Gram Matrix)的使用

Gram矩阵在风格迁移中的使用 1、格拉姆矩阵的定义2、风格迁移的任务描述3、格拉姆矩阵的使用方法3、实现过程4、总结5、参考文献 1、格拉姆矩阵的定义 1) 什么是格拉姆矩阵: 在内积空间中,一组向量[v1, v2, … , vn]的格拉姆矩阵&#xff0…

Tensorflow加载Vgg预训练模型

很多深度神经网络模型需要加载预训练过的Vgg参数,比如说:风格迁移、目标检测、图像标注等计算机视觉中常见的任务。那么到底如何加载Vgg模型呢?Vgg文件的参数到底有何意义呢?加载后的模型该如何使用呢?本文将以Vgg19为…

混淆矩阵、准确率、F1和召回率的具体实现及混淆矩阵的可视化

utils专栏不会细讲概念性的内容,偏向实际使用,如有问题,欢迎留言。如果对你有帮助就点个赞哈,也不搞什么粉丝可见有的没的,有帮助点个赞就ok 1、混淆矩阵、准确率、F1和召回率的计算 混淆矩阵 对于混淆矩阵的计算…

预编码技术

预编码的基本原理 TD-LTE下行传输采用了MIMO-OFDM的物理层构架,通过最多4个发射天线并行传输多个(最多4个)数据流,能够有效地提高峰值传输速率。LTE的物理层处理过程中,预编码是其核心功能模块,物理下行共…

pytorch 计算混淆矩阵

混淆矩阵是评估模型结果的一种指标 用来判断分类模型的好坏 预测对了 为对角线 还可以通过矩阵的上下角发现哪些容易出错 从这个 矩阵出发 可以得到 acc ! precision recall 特异度? 目标检测01笔记AP mAP recall precision是什么 查全率是什么 查准率…