传统目标检测算法

article/2025/8/24 17:45:32

目标分类:给一张图片,分类

 

目标检测:给一张图片,找到目标,并用矩形框画出

分类是对一幅图整体,检测是更进一步,找出一幅图中一部分。一般检测以分类为基础,

目标检测就是找出图像中所感兴趣的物体,包括物体定位和物体分类两个子任务,即不仅需要对物体进行分类,还要检测出物体的位置。 通常分为单目标检测和多目标检测,

1)区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)

2)特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)

3)分类器分类(主要有SVM、Adaboost等)

上面的检测通常分三步走:

  1. 区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高);
  2. 对可能包含物体的区域进行特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差);
  3. 对提取的特征进行检测分类(主要有SVM、Adaboost等)。

但是,我们知道,图片中的物体有大有小,尺度不同,所以用一个固定的窗口进行滑动,当物体较小的时候,会出现该窗口可能会框住很多的背景;而当物体较大的时候,会出现框住物体的局部,进而对该框的物体进行提取特征,进行分类的时候可能会产生误分类,或者出现多个正确识别的结果。
所以,在设计窗口大小的时候,得设计各种尺寸的窗口,这样就会产生大量的计算,导致运行速度慢。

总的来说,传统的目标检测算法有以下三个缺点:

  • 识别效果不够好,准确率不高
  • 计算量比较大,运算速度慢
  • 可能会产生多个正确识别的结果

候选框:一般用滑动窗口的方法提取

特征提取(模式识别):

低层次的,手工设计的特征,纹理、颜色、形状等(sift surf haar LBP HOG)

中层次的,机器学习出的特征,如pca特征,lda

分类器:提前训练好的分类器(基于上述特征的),这里是二分类,即目标和背景,也有多分类问题
 

SIFT算法的特点有:

主要是尺度不变性。

1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

2. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

4. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

5. 可扩展性,可以很方便的与其他形式的特征向量进行联合。
 

SIFT算法具有如下一些特点: [4] 

1.SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;

2. 区分性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;

3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;

4.高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;

5.可扩展性,可以很方便的与其他形式的特征向量进行联合。

SIFT特征检测主要包括以下4个基本步骤: [1]  [4] 

  1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

2. 关键点定位

在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。

3. 方向确定

基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

4. 关键点描述

在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

SIFT特征匹配主要包括2个阶段: [1] 

第一阶段:SIFT特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量。

第二阶段:SIFT特征向量的匹配。

SIFT特征的生成一般包括以下几个步骤:

1. 构建尺度空间,检测极值点,获得尺度不变性。

图1 粗检特征点图1 粗检特征点

2. 特征点过滤并进行精确定位。

3. 为特征点分配方向值。

4. 生成特征描述子。

以特征点为中心取16×16的邻域作为采样窗口,将采样点与特征点的相对方向通过高斯加权后归入包含8个bin的方向直方图,最后获得4×4×8的128维特征描述子。示意图如下:

当两幅图像的SIFT特征向量生成以后,下一步就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图1的某个关键点,通过遍历找到图像2中的距离最近的两个关键点。在这两个关键点中,如果最近距离除以次近距离小于某个阈值,则判定为一对匹配点。

假设图一的点为a, 图二中的两个点为b,c。如何a和b的距离除以a和c的距离小于某个阈值,则判断为一对匹配点。

如果图二中只选择一个点,可能匹配错误,因为图二中可能某个点的的距离与a也很近。

SIFT特征匹配的例子:

更多sift资料:

https://mp.weixin.qq.com/s/sM78DCOK3fuG2JrP2QaSZA


http://chatgpt.dhexx.cn/article/SroWpNaV.shtml

相关文章

目标检测算法基础

人脸检测算法综述 0 前言1 人脸检测算法难点2 人脸检测算法流程2.1 选择检测窗口2.2 提取图像特征2.3 设计分类器2.3.1 AdaBoost2.3.2 SVM分类器2.3.3 决策树与随机森林 3 人脸检测算法3.1 传统的人脸检测算法3.2 深度学习3.2.1 基于候选框的二阶段检测算法3.2.2 直接预测结果框…

目标检测算法回顾之传统算法

传统的目标检测算法 总体回顾基于特征基于分割 一般流程经典算法HarrAdaboost流程Harr特征Adaboost算法 HOG SVM概述方法HOG特征的优缺点 DPMDPM特征DPM流程 DPM vs HOG 总结 说明:本文仅供学习 虽然传统的目标检测方法现在比较少用,但我们认为有必要了…

目标检测算法发展综述

目标检测算法 一、目标检测算法二、目标检测算法存在的问题三、目标检测算法的基本流程四、传统的目标检测算法 1.Viola-Jones(VJ人脸检测算法)2.HOG SVM(行人检测,使用Opencv实现)3.DPM(物体检测&#xf…

目标检测算法研究

1、目标检测基本介绍 1.1、项目结构 1.2、目标检测的算法分类 1.2.1两步走的目标检测:先进行区域推荐、而后进行目标分类 代表算法 :R-CNN、 SPP-net、Fast-R-CNN、Faster R-CNN 1.2.2、端到端的目标检测:采用一种网络一步到位 代表&#x…

目标检测算法分类

目标检测算法分类: 1、两步走的目标检测:先找出候选的一些区域,再对区域进行调整分类 代表:R-CNN、SPP-net、Fast R-CNN、Faster R-CNN 2、端到端的目标检测:采用一个网络一步到位,输入图片,输…

目标检测算法

目标检测算法 一、目标检测算法二、目标检测算法存在的问题三、目标检测算法的基本流程四、传统的目标检测算法1.Viola-Jones(VJ人脸检测算法)2.HOG SVM(行人检测,使用Opencv实现)3.DPM(物体检测&#xff…

目标检测总结:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

目标检测总结:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD 转自:七月在线实验室 一、目标检测常见算法 object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。所以,object detection要解…

目标检测算法总结

一、基于候选区域的目标检测器 滑动窗口检测器 根据滑动窗口从图像中剪切图像块,把图像块处理成固定大小。随后输入CNN分类器中,提取特征。最后使用SVM分类器识别种类,并且用线性回归器得到边框。 选择性搜索selective search 首先将每个…

万字长文详解目标检测算法,超大超全(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系统提供了…