目标检测概述

news2024/10/6 18:29:14

传统目标检测

任务目标

从图像中找出相应的物体位置

目标检测的核心目的在于,估计出目标在图像中的坐标。

问题定义

目标检测的结果是什么?

预测出目标在图像中的位置。

位置如何表示?

通常采用水平矩形框的形式估计目标。

在opencv中的水平矩形框的定义为:

rect=[x,y,ℎ,w]

其中,(x, y)为矩形框的左上角坐标,ℎ,w为矩形框的高和宽。

因此,目标检测的最终目的在于,得到目标在图像中的矩形框。

核心问题

  • 目标位置不确定--目标有可能出现在图像的任何位置(求x, y)

  • 目标尺度不确定--由于成像距离不同,目标的尺度也不一致 (求 ℎ,w)

  • 目标状态不确定--目标存在多样性,状态多样化。(判断矩形框中是否为目标)

传统方法的解决思路

传统目标检测的方法很多(如关键点检测),但更主流的方法大多是基于滑动窗口来实现的。主要包含以下步骤:

  1. 滑动窗口

定义一个固定尺寸的滑动窗口以及滑动步长,在图像中从左到右从上到下的滑动。

每次滑动后,都可以截取出固定大小的图像区域,用于判断这些内容是否为目标。

滑动窗口解决了目标位置不确定的问题

  1. 图像金字塔

图像金字塔的主流方式是通过将图像变换为不同的尺度,进行滑动窗口式的检测。

或者用不同尺度的窗口对图像进行滑动。

涉及的参数包括:矩形框的大小和比例

图像金字塔解决了目标尺度不确定的问题

  1. 特征提取与分类器

从目标区域提取特征,将图像内容映射到特征空间,实现目标更加泛化的分类。

特征提取包括sift、surf、orb,或者hog、lbp等等传统手工特征。

结合svm等分类器,来判断图像区域是否包含目标。

该步骤解决了目标多样性问题。

传统方法与深度方法的不同

在深度学习刚刚被提出的时候,你会如何利用深度学习来进行目标检测?

换句话说,深度学习能够替代传统方法中的那些步骤?

  • 特征提取与分类器

特征提取与分类器是最直观想到的替换步骤。利用深度学习强大的泛化性能,来实现更加准确的区域图像分类。

  • 图像金字塔

深度学习的强大特征归纳能力,可以在特征层面进行金字塔处理,从而极大地减少了图像金字塔的目标检测计算量

  • 滑动窗口

深度学习可以完美的绕开滑动窗口的限制,通过对全图进行特征提取,可以从特征图上看到不同的对目标的响应状态

这种响应状态可以使得我们无需遍历窗口,只需要选择有较高响应的区域进行深度识别即可。

目标检测的数据集

PASCAL VOC 2012

11530张图像,检测任务有27450个物体。

包含背景,共21类,包括

人
鸟、猫、牛、够、马、羊
飞机、自行车、船、公交车、汽车、摩托车、火车
瓶子、椅子、桌子、盆栽、沙发、显示器

MS COCO

328000张图像,2500000个标记

目标检测有80个类别。

包含pascal voc数据

深度学习的目标检测方法的大致分类和介绍

深度学习方法开启了目标检测的新世界。

早期的检测方法虽然用深度学习进行目标检测,但是仍然拘泥于滑动窗口方式,用深度学习作为特征提取器和目标分类器使用

之后,随着发展,目标检测分出了两种流派:

  • 流派一:两阶段目标检测。首先从图像中初步筛选出可能存在目标的区域(不用确定目标是什么),然后再使用分类器对目标进行进一步的分类;
  • 流派二:一阶段目标检测。不用出不筛选,直接对图像中的物体进行定位和分类。比二阶段更快,但没有二阶段准确。

以上两类模型都被称为Anchor-based方法。

Anchor是一组被筛选出来的目标框。从这些目标框中找出最好的那一个,就是anchorbased的方法。

本质上,anchor based的方法还有着滑动窗口方式的时代印记。(yolo、rcnn系列、ssd等)

随着时代进步,逐渐发展出anchor free的方法。

anchor free把问题进行了升级,不再纠结候选框,而是直接对目标的关键点进行预测。

预测出目标的左上角和右下角,即可得到目标框。(cornernet)

本章内容简介

本章主要聚焦anchor based的方法,内容包括

  • rcnn系列
  • yolo系列
  • ssd

同时,也会介绍一些anchor free的方法,如

  • corner net

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么Java要求多用组合,少用继承?

前言: 最近有一个要好的朋友去阿里大厂面试Java高级工程师,在第二轮面试的过程中,面试官提了一个问题:“解释下Java项目中为什么要求多用组合,少用继承?”。朋友觉得这个题目既熟悉,又陌生&…

【LeetCode】504. 七进制数

504. 七进制数&#xff08;简单&#xff09; 方法一&#xff1a;七进制数预处理 思路 这里我利用了提示&#xff0c;得知 |num| < 10^7 &#xff0c;因此所使用到的七进制数肯定也小于等于 107 &#xff0c;我将 7 的次方数算出来&#xff0c;预存在数组 seven 中。 后续…

ADUC834BSZ-ASEMI代理亚德诺ADUC834BSZ原厂芯片

编辑-Z ADUC834BSZ特征&#xff1a; 2个独立ADC&#xff08;16位和24位分辨率&#xff09; 24位无缺失代码&#xff0c;主ADC 21位rms&#xff08;18.5位p-p&#xff09;有效分辨率20 Hz 偏移漂移10 nV/C&#xff0c;增益漂移0.5 ppm/C 62 KB片上闪存/EE程序存储器 4 KB…

C++(Qt)读取.mat文件(可以读取多级变量)

全网最全&#xff0c;从安装环境和配置环境变量&#xff08;配置环境变量是大坑&#xff09;&#xff0c;然后再到需要的SDK库&#xff0c;再到代码详细解读。 首先就是需要安装matlab&#xff0c;注意&#xff1a;你使用的编译器版本需要和MATLAB版本相互兼容&#xff01;&am…

使用模板构建泛型栈

目录 一.构造栈 使用构造函数 代码&#xff1a; 二.销毁栈 使用析构函数 代码 三.判空&#xff0c;判满 四.扩容 代码 五.入栈&#xff0c;出栈 代码 六.取栈顶元素 代码 代码合集 template< class T>模板 T为当前栈的数据类型 栈类型有三个属性&#x…

Linux:概述 、安装 、文件与目录结构 、vim编辑器 、网络配置 、远程登录 、系统管理 、基础命令 、软件包管理 、克隆虚拟机 、shell编程

1、课程介绍 2、Linux概述(入门篇) 2.1、Linux的诞生 2.1.1、Linux是什么? Linux是一个操作系统&#xff08;OS&#xff09; 所谓的操作系统就是直接用来操作计算机底层硬件的软件。 2.1.2、Linux的出现 2.2、Linux和Unix的渊源 2.3、GNU/Linux 2.4、Linux VS Windows 3、…

机器学习期末复习 决策树ID3的计算与构建

ID3构建的流程就是参考书上的那个伪代码。 1&#xff09; 开始&#xff1a;构建根节点&#xff0c;将所有训练数据都放在根节点&#xff0c;选择一个最优特征&#xff0c;按着这一特征将训练数据集分割成子集&#xff0c;使得各个子集有一个在当前条件下最好的分类。 2&#xf…

愿力,心力,能力

愿力&#xff0c;心力&#xff0c;能力 三力合一成点事 趣讲大白话&#xff1a;人与人的力量差别大 【趣讲信息科技165期】 *************************** 愿力是人文东方智慧 西方大概是mission使命之类 比如佛家发愿 儒家大概类似于立志 心力也是人文东方智慧 西方大概是意志…

51单片机(十七)红外遥控(外部中断)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

基于ssm的汽车服务平台

基于ssm的汽车售后服务平台 快速链接 基于ssm的汽车售后服务平台功能模块技术栈硬件环境功能截图 功能模块 用户 注册功能&#xff1a;用户通过注册功能进行访问平台预约服务功能&#xff1a;用户可以预约服务预约记录查询&#xff1a;用户可以查询自己预约记录也可以进行修改…

AIGPT中文版(人人都能使用的GPT工具)生活工作的好帮手。

AIGPT简介 AIGPT是一款非常强大的人工智能技术的语言处理工具软件&#xff0c;它具有 AI绘画 功能、AI写作、写论文、写代码、哲学探讨、创作等功能&#xff0c;可以说是生活和工作中的好帮手。 我们都知道使用ChatGPT是需要账号以及使用魔法的&#xff0c;其中的每一项对我们…

【框架源码】Spring底层IOC容器加入对象的方式

1.Spring容器加入对象方式简介 使用XML配置文件 在XML配置文件中使用< bean >标签来定义Bean&#xff0c;通过ClassPathXmlApplicationContext等容器来加载并初始化Bean。 使用注解 使用Spring提供的注解&#xff0c;例如Component、Service、Controller、Repository等注…

学习Python的day.14

模块学习 什么是模块&#xff1a; 打开Python解释器&#xff0c;定义了data 1&#xff0c; 然后去访问data是可以访问到的&#xff1b;关闭Python解释器&#xff0c;再打开&#xff0c;再去访问data&#xff0c;访问不到了。 假设我有1000行的代码&#xff0c;在python解释器…

pv操作练习题

信号量解决五个哲学家吃通心面问题 题型一 有五个哲学家围坐在一圆桌旁&#xff0c;桌中央有盘通心面&#xff0c;每人面前有一只空盘于&#xff0c;每两人之间放一把叉子。每个哲学家思考、饥饿、然后吃通心面。为了吃面&#xff0c;每个哲学家必须获得两把叉子&#xff0c;…

【机器视觉1】坐标系定义

坐标系定义 1. 图像坐标系2. 摄像机坐标系3. 世界坐标系4. 三种坐标系间的转换4.1 摄像机坐标系与无畸变图像坐标系之间的变换4.2 世界坐标系与摄像机坐标系之间的变换4.3 世界坐标系与无畸变图像坐标系之间的变换 1. 图像坐标系 数字图像坐标系&#xff1a; O 0 − u v O_0-u…

【差分+操作】C. Helping the Nature

Problem - 1700C - Codeforces 题意&#xff1a; 思路&#xff1a; 一开始手玩了一下 如果不是高低高的形式&#xff0c;那么一定不能通过操作3把全部元素变成0 因此就是先把所有元素变成高低高的形式 但是低在什么地方不确定 因此考虑枚举中间低谷位置&#xff0c;O(1)计…

【多微电网】基于粒子群优化算法的面向配电网的多微电网协调运行与优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

软件测试岗,4轮成功拿下字节 Offer,面试题复盘(附答案)

一共经历了四轮面试&#xff1a;技术4面&#xff0b;HR面。 特整理出所涉及的全部知识点&#xff0c;并复盘了完整面试题及答案&#xff0c;分享给大家&#xff0c;希望能够帮到一些计划面试字节的朋友。 一、测试基础理论类 怎么编写案例?软件测试的两种方法测试结束的标准…

allegro查看板子元器件的pin脚总数

怎么在ALLEGRO里统计焊盘和包括芯片pin和阻容的pad&#xff1f; 板子要拿出去布&#xff0c;需要根据焊盘计费&#xff1f; 方法一&#xff1a; 在find里面只勾选pin&#xff0c;然后鼠标左键&#xff0c;选择全部的pin 再选择菜单Display–element&#xff0c;如下图&#x…

Vivado综合属性系列之三 RAM_STYLE

目录 一、前言 二、RAM_STYLE ​ ​2.1 工程代码 ​ ​2.2 参考资料 一、前言 ​ ​RAM英文全称为Random Access Memory&#xff0c;随机存取存储器&#xff0c;可以实现数据的快速随机读写&#xff0c;RAM可直接verilog代码编写&#xff0c;也可调用IP核。 二、RAM…