基于图像的目标检测与定位方法概述

article/2025/10/12 11:49:32

目录

  • 1. 目标检测与定位概念
  • 2. 目标检测与定位方法
    • 2.1 传统目标检测流程
    • 2.2 two-stage检测算法
      • 2.2.1 R-CNN
      • 2.2.2 two-stage其他算法
        • 2.2.2.1 Spatial Pyramid Pooling(空间金字塔池化)
        • 2.2.2.2 Fast-RCNN
        • 2.2.2.3 P11 Faster RCNN
    • 2.3 One-Stage
      • 2.3.1 YOLO
      • 2.3.2 SSD
  • 参考

本文简单介绍基于图像的目标检测与定位相关概念,R-CNN和YOLO等算法基本思想。本文为学习笔记,参考了许多优秀博文,如有错误还望指正。

1. 目标检测与定位概念

目标检测与定位的任务是判断图片中目标类别, 并且在图片中用边框标记出它的位置。
图1 目标检测与定位案例
具体来说,首先需要进行图像识别(Classification)。该阶段输入图像,输出物体的类别,可以通过准确度进行评估。第二步是定位(Localization)。该阶段输入图片,输出圈出目标的方框在图片中的位置。

2. 目标检测与定位方法

  1. 传统的目标检测算法:Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化;
  2. two-stage算法,采用候选区域/框深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案,如:R-CNN(Selective Search + CNN + SVM),SPP-net(ROI Pooling),Fast R-CNN(Selective Search + CNN + ROI)和Faster R-CNN(RPN + CNN + ROI)等系列方法;
  3. One-stage算法,基于深度学习的回归方法:YOLO/SSD等方法;
    图2是各类算法出现时间及性能。FPS指每秒传输帧数(Frames Per Second),mAP是均值平均精度。
    图2 各类算法出现时间及性能

2.1 传统目标检测流程

1)区域选择
穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高;
2)特征提取
有SIFT、HOG等方法。即尺度不变特征转换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述子。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差;
3)分类器分类
主要有SVM、Adaboost等。支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器。

2.2 two-stage检测算法

2.2.1 R-CNN

该算法预先找出图中目标可能出现的位置,即候选区域(Region Proposal),然后利用卷积神经网络(Convolutional Neural Networks)进行分类。相对于传统的检测算法,不需要额外的训练分类器。
候选区域(Region Proposal)的选择利用了图像中的纹理、边缘、颜色等信息,可以保证在选取较少窗口(几千甚至几百)的情况下保持较高的召回率(Recall),召回率指的是在所有存在目标的区域样本中,被正确识别为候选区域的比例。
在这里插入图片描述
卷积神经网络CNN参考了生物视觉原理。从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体类别),示意图如图4。对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的。
在这里插入图片描述
卷积神经网络组成大致如下图。
在这里插入图片描述

卷积层(Convolutional layer),卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。在具体应用中,往往有多个卷积核。卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。
在这里插入图片描述
池化层(Pooling layer),通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。原始图片是20×20的,我们对其进行下采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。
在这里插入图片描述
全连接层( Fully-Connected layer), 把所有局部特征结合变成全局特征,用来计算最后每一类的得分。
R-CNN的实现步骤(1) 输入测试图像,(2) 利用选择性搜索Selective Search算法在图像中从下到上提取2000个左右的可能包含物体的候选区域Region Proposal,(3) 因为取出的区域大小各自不同,所以需要将每个Region Proposal缩放成统一的227x227的大小并输入到CNN,将CNN的输出作为特征,将每个Region Proposal提取到的CNN特征输入到SVM进行分类。
在这里插入图片描述
R-CNN虽然不再像传统方法那样穷举,但R-CNN流程的第一步中对原始图片通过Selective Search提取的候选框region proposal多达2000个左右,而这2000个候选框每个框都需要进行CNN提特征+SVM分类,计算量很大,导致R-CNN检测速度很慢,一张图都需要47s。

2.2.2 two-stage其他算法

2.2.2.1 Spatial Pyramid Pooling(空间金字塔池化)

在普通的CNN机构中,输入图像的尺寸往往是固定的(比如224*224像素),输出则是一个固定维数的向量。SPP Net在普通的CNN结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,输出则不变,同样是一个固定维数的向量。
只对原图进行一次卷积计算,便得到整张图的卷积特征,然后找到每个候选框在特征上的映射,将此映射作为每个候选框的卷积特征输入到SPP layer和之后的层,完成特征提取工作。
R-CNN要对每个区域计算卷积,而SPPNet只需要计算一次卷积,从而节省了大量的计算时间,比R-CNN有一百倍左右的提速。

在这里插入图片描述

2.2.2.2 Fast-RCNN

R-CNN有一些相当大的缺点,把这些缺点都改掉了,就成了Fast R-CNN。由于每一个候选框都要独自经过CNN,这使得花费的时间非常多。解决方案是共享卷积层,现在不是每一个候选框都当做输入进入CNN了,而是输入一张完整的图片,在第五个卷积层再得到每个候选框的特征。
流程为1.在图像中确定约1000-2000个候选框 (使用选择性搜索);2.对整张图片输进CNN,得到feature map;3.找到每个候选框在feature map上的映射,选出候选框;4.对候选框中提取出的特征,使用分类器判别是否属于一个特定类;5.对于属于某一类别的候选框,用回归器进一步调整其位置。

2.2.2.3 P11 Faster RCNN

Fast R-CNN存在的问题:选择性搜索,找出所有的候选框,这个也非常耗时。能不能找出一个更加高效的方法来求出这些候选框呢?解决方案为加入一个提取边缘的神经网络,也就说找到候选框的工作也交给神经网络来做了。
所以,在Fast R-CNN中引入Region Proposal Network(RPN)替代Selective Search。
在这里插入图片描述
流程为1.对整张图片输进CNN,得到feature map;2.卷积特征输入到RPN,得到候选框的特征信息;3.对候选框中提取出的特征,使用分类器判别是否属于一个特定类。

2.3 One-Stage

2.3.1 YOLO

Faster R-CNN的方法目前是主流的目标检测方法,但是速度上并不能满足实时的要求。YOLO一类的方法慢慢显现出其重要性,这类方法使用了回归的思想,利用整张图作为网络的输入,直接在图像的多个位置上回归出这个位置的目标边框,以及目标所属的类别。
YOLO的目标检测的流程图如下,
在这里插入图片描述
(1) 给个一个输入图像,首先将图像划分成7*7的网格;
(2) 对于每个网格,都预测2个边框(包括每个边框是目标的置信度,每个边框区域在多个类别上的概率)
(3) 根据上一步可以预测出772个目标窗口,然后根据阈值去除可能性比较低的目标窗口,最后去除冗余窗口即可。
整个过程非常简单,不再需要中间的region proposal找目标,直接回归便完成了位置和类别的判定。总的来说,YOLO将目标检测任务转换成一个回归问题,大大加快了检测的速度,使得YOLO可以每秒处理45张图像。
但是YOLO也存在问题:没有了Region Proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位,这也导致了YOLO的检测精度并不是很高。

2.3.2 SSD

YOLO存在的问题在于使用整图特征在7*7的粗糙网格内回归对目标的定位并不是很精准。那是不是可以结合region proposal的思想实现精准一些的定位?SSD结合YOLO的回归思想以及Faster R-CNN的anchor机制做到了这点。Anchor指的是框定目标的方框。

在这里插入图片描述
上图是SSD的一个框架图,首先SSD获取目标位置和类别的方法跟YOLO一样,都是使用回归,但是YOLO预测某个位置使用的是全图的特征,SSD预测某个位置使用的是这个位置周围的特征。
如何建立某个位置和其特征的对应关系呢?可以使用Faster R-CNN的anchor机制。如SSD的框架图所示,假如某一层特征图大小是88,那么就使用33的滑窗提取每个位置的特征,然后这个特征回归得到目标的坐标信息和类别信息。
Anchor机制是说,根据预定义的Anchor,Feature Map上的一点为中心,就可以在原图上生成多种不同形状不同大小的边框,如下图:
在这里插入图片描述
感受野指特征图上的某个点能看到的输入图像的区域,即特征图上的点是由输入图像中感受野大小区域的计算得到的。根据CNN的感受野,一个特征图上的点对应于原图的16×1616×16的正方形区域,仅仅利用该区域的边框进行目标定位,其精度无疑会很差,甚至根本“框”不到目标。 而加入了Anchor后,一个特征图上的点可以生成9种不同形状不同大小的框,这样“框”住目标的概率就会很大,就大大的提高了检查的召回率;再通过后续的网络对这些边框进行调整,其精度也能大大的提高。
不同于Faster R-CNN,这个anchor是在多个feature map上,这样可以利用多层的特征并且自然的达到多尺度(不同层的feature map 3*3滑窗感受野不同)。总的来说,SSD结合了YOLO中的回归思想和Faster R-CNN中的anchor机制,使用全图各个位置的多尺度区域特征进行回归,既保持了YOLO速度快的特性,也保证了窗口预测的跟Faster R-CNN一样比较精准。SSD在VOC2007上mAP可以达到72.1%,速度在GPU上达到58帧每秒。

参考

[1] https://easyai.tech/ai-definition/cnn/
[2] https://blog.csdn.net/l2181265/article/details/88072497
[3] https://blog.csdn.net/qq_36396104/article/details/85230012
[4] https://cloud.tencent.com/developer/news/281788
[5] https://blog.csdn.net/qq_25762497/article/details/51052861
[6] https://zhuanlan.zhihu.com/p/33544892


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

相关文章

大疆无人机实现目标定位

大疆无人机实现目标定位 大疆无人机回传的实时视频可以帮助飞友观察发现美景,就称为目标吧,你偏偏对目标很感兴趣,迫切想知道目标的位置,最好是经纬度坐标。你查找大疆Document,欣喜地发现大疆提供了定位机体本身的定…

2-基于单目视觉的目标定位

1-四种坐标系描述 一、世界坐标系 客观三维世界的绝对坐标系,也称客观世界坐标系,是以目标为原点建立起来的坐标系。 二、摄像机坐标系 摄像机坐标系是以摄像机的光心作为坐标系的原点,Zc.轴与光轴重合,并…

复杂情况下,目标区域定位

复杂情况下,基于halcon的目标区域定位 原始图源代码处理结果 原始图 源代码 dev_close_window () read_image (Image, E:/Halcon_Learn/黑块提取_网络/1.bmp) get_image_size (Image, Width, Height) dev_open_window_fit_size (0, 0, Width, Height, -1, -1, Wind…

目标检测_精确定位_2020

Side-Aware Boundary Localization for More Precise Object Detection 论文:https://arxiv.org/pdf/1912.04260.pdf 代码: 关键文章:Faster R-CNN [37], RetinaNet [25], and Cascade R-CNN 提出问题: 传统的基于锚点和大小…

Opencv中关于特征点匹配定位的问题(二)单目标和多目标定位

单目标和多目标定位 单目标定位多目标定位 单目标定位 在opencv官方提供了一种定位的思路,就是通过匹配的点来获取透视变换矩阵,然后经过透视变换后就能够获得对应的目标的坐标了。 import cv2 import numpy as np# 打开两个文件 img1 cv2.imread(321…

目标定位和检测系列(1):一些基本概念

最近开始学习深度学习中的定位和检测任务。本来打算直接看论文,却发现文章中的的很多基本概念都搞不清楚,于是就自己先梳理了一些定位和检测任务的基本概念。(内容主要来自斯坦福大学的CS231课程、吴恩达的deeplearning.ai卷积部分&#xff0…

OpenCV技巧篇——多目标视觉定位(以飞镖定位为例)

OpenCV技巧篇【1】——多目标视觉定位(以飞镖定位为例) 1、针对问题 多目标视觉定位是指通过计算机视觉技术对一张图片中的多个目标进行识别和定位的过程。本篇将以对飞镖定位为例,提出一个简单有效的多目标定位技巧,最终实现如…

目标定位算法(二)之基于测距的定位算法

文章目录 基于测距的定位算法1.最小二乘原理2.最小二乘定位算法3.基于RSSI测距的定位算法4.基于TOA/TDOA的目标定位算法1)基于TOA测距2)基于TDOA测距 基于测距的定位算法 非测距的定位算法往往误差较大,提高精度往往依赖于密集的观测站部署。…

YOLO v5与双目测距结合,实现目标的识别和定位测距

YOLO v5与双目测距结合,实现目标的识别和定位测距 1、首先安装YOLO v52、数据集的标定3、双目测距代码的单独运行调试4、YOLO v5与双目测距的代码的结合5、最终识别测距效果6、代码下载调试运行7、最终演示视频欢迎各位点赞投币收藏哦🤣🤣&am…

单目视觉的运动目标跟踪定位

[转] http://www.leiphone.com/news/201704/z87wjT8j9s94tMnG.html 市场上空间定位的技术方案分为单目、双目以及激光雷达三大阵营,其中激光雷达由于成本高昂市场接受度较低,而在都是基于计算机视觉的单目和双目中,双目则显得更受欢迎。在国内…

目标定位

声明:本文引用吴恩达教授的DeepLearning课程内容。 图像分类:图片分类问题并不陌生,例如,输入一张图片到多层卷积神经网络。这就是卷积神经网络,它会输出一个特征向量,并反馈给 softmax 单元来预测图片类型…

目标定位与检测

学习笔记仅用作自己复习 https://b23.tv/JAqvgA Object Recognition Object Detection Object Localization 位置表示,x,y中心点坐标,w宽度,h高度,就可以得到矩形框的范围。(先找中心点再得到矩形框) 黄色全连接层是…

定位目标地理位置

获取目标地理位置 一、GPS简介及分布二、定位工具:Seeker三、反向代理:Ngrok四、实战:获取目标地理位置1.运行 seeker2.上传 ngrok3.短链接伪装4.转发链接 一、GPS简介及分布 物理位置定位:根据P的定位不准确,容易被欺…

目标定位算法(四)之移动目标定位算法

文章目录 移动目标定位算法1.移动目标计算机仿真建模2.基于距离观测的运动目标定位3.纯方位角的运动目标定位 移动目标定位算法 实时探测目标并对目标进行实时定位。 1.移动目标计算机仿真建模 假定目标做匀速直线运动,第i个观测站的位置为(x,y),目标…

目标定位跟踪系统概述

一、观测系统:目标、观测站、坐标系。 观测站如雷达、声纳等传感器。坐标系:二维、三维直角坐标系(描述确定位置);极坐标系(r,cita)、球坐标系(r,cita,fai)(利用角度描述位置&#x…

目标定位算法(三)之基于角度的定位算法

文章目录 基于角度测量的定位算法1.双战角度定位2.三角测量法定位 基于角度测量的定位算法 又叫纯方位目标定位,它的测量信息是目标与观测站之间的角度,包括方向角和俯仰角等。 1.双战角度定位 例:有两个观测站,其中A观测站的位…

目标检测之目标定位

目标检测是计算机视觉领域中一个新兴的应用方向,相比前两年,它的性能越来越好。在构建对象检测之前,我们先了解一下对象定位,首先我们看看它的定义。 图片分类任务我们已经熟悉了,就是算法遍历图片,判断其中…

深度学习——目标定位

目标定位 图片分类任务我们已经熟悉了,就是算法遍历图片,判断其中的对象是不是汽车,这就是图片分类。这节课我们要学习构建神经网络的另一个问题,即定位分类问题。这意味着,我们不仅要用算法判断图片中是不是一辆汽车&…

目标检测及目标定位

一、概述 本文是关于目标检测后根据物体的坐标来确定物体所处的区域,适用于需要根据物体在图像中的位置来分别判断的情况,而且对应的是YOLOv5模型。YOLOv5目标检测的内容可以看看我之前的一篇文章YOLOv5训练自己的数据集_ONEPIECE_00的博客-CSDN博客 本…

一、目标定位

1、目标定位是要求图像中只有一个目标,则构建这个目标的位置信息,如一个网络输出8个值,一个是是否有目标的pc,4个目标位置信息的bx,by,bh,bw,其中bx,by为目标中心点坐标,bh,bw为目标的高和宽,最…