CV经典任务(二)目标检测 |单目标,多目标 非极大值抑制等

文章目录

  • 1 目标检测
    • 1.1 单目标检测
    • 1.2 多目标检测
      • 3.2.1 阶段一 单像素点采样目标检测
      • 3.2.2 阶段二 多像素点采样目标检测
      • 3.2.3 阶段三 RNN
      • 3.2.4 阶段四 一阶段的目标检测 Yolo/SSD

1 目标检测

目标检测的重要任务是

  1. 目标定位:目标检测的首要任务是确定图像中对象的位置,通常使用边界框(Bounding Box)来描述目标的位置。边界框由一对坐标表示,通常是左上角和右下角的坐标。
  2. 目标识别:目标检测不仅要定位目标,还要识别目标的类别或类别标签。这通常涉及将检测到的对象与已知的类别进行比较,从而确定它是什么物体。

所以目标检测可以通俗理解为分类+定位

我不仅要告诉你什么类别,还要告诉你在哪儿

在这个任务中,我们用边界框,来定位我们的物体

边界框的位置表示有两种

第一种是边框的坐上,右下的点的坐标点x1,y1 x2,y2

第二种是边框的中间点坐标,和宽高

两种方式都可以唯一确定图片上的边框,并且可以相互转换

1.1 单目标检测

即图片中只有一个要检测的物体,这个难度相对来说小一些

直观可以想到一种方式

首先拿一个卷积网络提取特征

再利用提取到的特征(假如提取到的特征是2048)一方面可以接一个全连接层做分类(比如2048到10类),另一方面可以接全连接层做坐标点的回归(比如2048到4个坐标点)

这样需要两个损失函数,一个损失函数降低分类错误率,另一个损失函数降低回归错误率,我们称这样的网络叫做多任务多损失网络
在这里插入图片描述

对于这样的任务

一般可以多阶段训练

1 先训练分类分支

2 再在分类分支训练好的基础上训练坐标点回归

3 最后一步将两个合并到一起训练

1.2 多目标检测

图片中可能有多个要检测的物体,这个难度就更大了

物体的个数是未知的,我们不能像单目标检测那样只回归一个坐标点,回归的坐标点个数是未知的!!天啊该怎么呢

所以研究者们做了如下一些尝试

3.2.1 阶段一 单像素点采样目标检测

既然直接回归不行,那么我们可以先产生很多的边界框(术语叫锚框),让网络对这些边界框 锚框一个一个做分类,并预测它距离真实边框的偏移量!

最开始大伙儿尝试直接对于每个像素点给出不同尺寸的锚框

当生成足够多的锚框的时候,大力出奇迹,总会有框几乎把我们的目标框住的

这时候对于每个区域进行分类判断,一张图片可能会产生几十万上百万张图片,然后让网络进行分类

直观感受 是有点鲁莽!!!密集恐惧症颤抖

实际也证明这种方式的运算量巨大,但他是可行的方式

训练阶段

我们把每一个锚框看作一个训练样本

这个训练样本需要两个标记,一是类别(一般就分配给与它最近边框的类别即可),二是与它最近的真实边框的偏移量

模型对于每一个框需要预测它的类别,与最近的真实边框的偏移量

预测阶段

首先为图像生成多个锚框

利用模型为这些锚框一 一预测类别和偏移量

有一个可能的问题,我们生成了多个相似的具有明显重叠的锚框

采用非极大值抑制来合并属于同一目标的相似的边界框

(1)首先,根据每个候选边界框的得分(通常是模型预测的物体存在概率或置信度分数)对所有候选边界框进行降序排序,得分较高的边界框排在前面。

(2)选择得分最高的边界框,并将其添加到最终的筛选结果中。这个边界框通常被认为是最有可能包含真实目标的边界框。

(3)于剩余的候选边界框,计算它们与已选择的高分边界框的重叠区域(通常使用IoU,Intersection over Union来衡量)。IoU是两个边界框重叠区域与它们的联合区域的比例。

(4)剔除重叠边界框:如果某个候选边界框与已选择的高分边界框具有高于预定阈值的IoU值(也就意味着和我们得分最高的边界重叠过高),则将该候选边界框从列表中移除

(5)重复步骤:重复步骤2到步骤4,直到没有更多的候选边界框需要处理。

(6)输出结果:NMS会输出一组经过非极大值抑制筛选的边界框

可以做这样一个比喻来通俗理解这件事情

想象你是一名宝藏猎人,你有一块地图上标有可能埋有宝藏的若干区域。你的任务是找到最有可能埋有宝藏的区域,同时避免走重复的路线,因为这不会增加你找到宝藏的机会。

  1. 得分排序:每个区域都有一个分数,表示它有多大的可能性埋有宝藏。你首先查看地图上所有区域的分数,将得分最高的区域放在列表的最前面,就像把最有希望的区域标记在地图上。
  2. 选择高分区域:你首先前往得分最高的区域,因为那里找到宝藏的可能性最大。
  3. 计算重叠区域:当你到达一个区域后,你会注意到一些其他区域可能与你当前所在的区域有很大的重叠。这就像你走到了一个区域,但可能有其他猎人也在附近搜索。
  4. 剔除重叠区域:为了避免重复工作,你会检查其他猎人所在的区域,如果它们与你当前的区域有很大的重叠(重复搜索的可能性高),你会决定不再前往这些区域,而是继续前往下一个可能性很高的区域。
  5. 重复步骤:你会不断重复前往得分最高的区域、计算重叠区域和剔除重叠区域的步骤,直到你认为没有更值得前往的高分区域为止。
  6. 输出结果:最终,你的努力会得到一组标记为最有可能埋有宝藏的区域,而且你不会重复浪费时间去搜索高度重叠的区域。

3.2.2 阶段二 多像素点采样目标检测

单像素点采样直接对于所有像素点为中心给出不同尺寸的锚框,运算量巨大

那么我们可不可以降低一下这个运输量呢?

当然可以啦

我们以一小部分像素为中心生成不同锚框

比如2×2像素,比如4×4像素

这样就可以降低我们的锚框量啦

3.2.3 阶段三 RNN

但是即便如此,锚框量依然巨大

那么我们可不可以进一步减少锚框量呢,可以的

我们可以采用某些算法,给出建议区域,即找出所有潜在可能包含目标的区域

这便是R-CNN系列

R-CNN

1 利用区域建议方法selective search产生的感兴趣区域,大约2000个候选区域(或称为候选框),这些区域被认为可能包含目标物体。

2 对于每个候选区域,R-CNN将其缩放裁剪出来,并通过一个预训练的卷积神经网络(通常是AlexNet)提取特征。这些候选区域在CNN中前向传播,生成固定长度的特征向量。

3 特征向量被送入一个独立的支持向量机(SVM)分类器,每个SVM分类器用于识别特定类别的目标物体。这意味着为每个可能的目标类别都训练一个二元分类器,以判断特定候选区域是否包含属于该类别的物体。

4 此外,R-CNN还包括一个边界框回归器,用于微调候选区域的边界框,以更准确地定位目标物体。

5 最后,为了去除重叠和冗余的检测结果,使用非极大值抑制(NMS)来选择最终的检测边界框。

R-CNN可以有着更高的精度,处理的锚框也少了,但是它产生感兴趣区域也很耗时

总结来看他的缺点

  • 训练和推理速度慢,因为每个候选区域都要进行独立的前向传播和分类。
  • 需要大量的存储空间,因为要保存每个候选区域的特征向量和分类器参数。
  • 不够端到端,训练过程相对复杂。

Fast R-CNN

Fast R-CNN看名字就可以知道哈哈哈哈是R-CNN的改进,让他变得更快,同时变得端到端

1 首先利用卷积网络进行特征提取

2 提取到的特征图再做感兴趣区域建议!而特征图的区域是可以和原图一一映射的

3 再对取出来的区域做裁剪缩放(Rol Align 双线性插值),然后利用全连接层输出每个感兴趣区域的特征进行分类或回归

4 使用非极大值抑制(NMS)来选择最终的检测边界框。

Faster R-CNN

与R-CNN不同,Fast R-CNN不再使用选择性搜索等传统方法生成大量候选区域。相反,它引入了一种叫做"候选区域提取网络(Region Proposal Network,RPN)"的网络模块,用于生成高质量的候选区域。提高了效率

1 首先利用卷积网络进行特征提取

2 提取到的特征图利用候选区域提取网络获得感兴趣区域!而特征图的区域是可以和原图一一映射的

候选区域提取网络需要进行二分类 是目标还是背景

3 再对取出来的区域做裁剪缩放(Rol Align 双线性插值),然后利用全连接层输出每个感兴趣区域的特征进行分类或回归

4 使用非极大值抑制(NMS)来选择最终的检测边界框。

在这里插入图片描述

3.2.4 阶段四 一阶段的目标检测 Yolo/SSD

Yolo

YOLO采用单一的卷积神经网络来同时处理目标检测和分类任务。与传统的两阶段目标检测方法不同(如R-CNN系列),YOLO将目标检测任务转化为回归问题,一次性输出所有检测框的位置和类别信息。

​ 不用区域建议网络了,直接把图片分成7×7,每个网格单元负责检测图像中的物体,产生一个或多个候选框。

每个网格单元预测多个候选框(通常是B个,如2或3个)。每个候选框由5个参数定义:中心坐标(x, y)、宽度(w)、高度(h)以及物体存在概率(objectness score)。这些参数用于定义每个候选框的位置和是否包含物体。

每个网格单元还预测C个类别的概率分数,用于表示物体属于每个类别的可能性。这些类别概率分数与每个候选框关联。

SSD

SSD和之前工作主要区别是

SSD引入了一组称为Anchor框的预定义边界框。每个Anchor框与特定位置和尺度的特征图单元相对应。这些Anchor框用于尝试捕获不同尺寸和比例的物体。

结论

​ Faster R-CNN速度偏慢,但精度高

​ SSD速度快,精度高

​ 主干网络越宽,深度越深对性能帮助越大

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大促节奏:速卖通黑五接力双十一,如何打造产品权重瓜分活动流量

双十一和黑五作为一种独特的消费文化现象,已经逐渐成为了消费领域中的一块“金字招牌”。无论是消费者还是商家,都非常期待这一天的到来,因为它不仅代表着购物的欲望和刺激,更重要的是,双十一和黑五已经成为了一种全新…

云安全之等级保护介绍

网络安全部门概述 网络安全部门 1. 公安部 网安/网警/网监:全称“公共信息网络安全监察”,后改为“网络安全保卫部门”。 简称网监,是中华人民共和国公安部门的一项职责,具体实施这一职责的机构称为网监机关或网监部门(公共信息网络安全监…

解决高分屏DPI缩放PC端百度网盘界面模糊的问题

第一步 更新最新版本 首先,在百度网盘官网下载最新安装包: https://pan.baidu.com/download 进行覆盖安装 第二步 修改兼容性设置 右键百度网盘图标,点击属性,在兼容性选项卡中点击更改所有用户的设置 弹出的选项卡中选择更改高…

案例题--Web应用考点

案例题--Web应用考点 负载均衡技术微服务XML和JSON无状态和有状态真题 在选择题中没有考察过web的相关知识,主要就是在案例分析题中考察 负载均衡技术 应用层负载均衡技术 传输层负载均衡技术 就近的找到距离最近的服务器,并进行分发 使用户就近获取…

K8S网络原理

文章目录 一、Kubernetes网络模型设计原则IP-per-Pod模型 二、Kubernetes的网络实现容器到容器的通信Pod之间的通信同一个Node内Pod之间的通信不同Node上Pod之间的通信 CNI网络模型CNM模型CNI模型在Kubernetes中使用网络插件 开源的网络组件FlannelFlannel实现图Flannel特点 Op…

Mysql技术文档--慢mysql的优化--工作流--按步排查

这里是用来发现慢sql的一个好方法 --by.阿丹 Prometheus-监控Mysql进阶用法(1)(安装配置)_一单成的博客-CSDN博客 阿丹: 知道了慢sql的语句那么就开始按照优化步骤对sql进行排查和优化。 1、阅读sql逻辑 首先观察sql语句的书写&#xff0…

什么是 MyBatis?与 Hibernate 的区别

引言 在现代的应用程序开发中,与数据库的交互是至关重要的。为了简化数据库访问,许多开发者选择使用ORM(对象-关系映射)框架。MyBatis和Hibernate都是流行的ORM框架,它们可以帮助开发者更轻松地将Java对象映射到数据库…

OOTD | 美式复古穿搭耳机,复古轻便的头戴式耳机推荐

复古耳机更能带来年代感的复古数码产品,头戴式耳机就好似是时光滤镜的时髦配饰,不说功能实用性,在造型上添加就很酷。 随着时代的发展,时尚有了新的定义。对如今的消费者来说,时尚不仅是美学与个性的展现,…

【Spring篇】简述IoC入门案例,DI入门案例

🎊专栏【Spring】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎄Spring Framework系统架构🎆Spring核心概…

这可能是最全的反爬虫及应对方案,再也不怕爬不到数据了

一、什么是反爬虫 网络爬虫,是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。但是当网络爬虫被滥用后,互联网上就出现太多同质的东西,原创得不到保护。于是,很多网站开始…

asp.net core mvc Razor +dapper 增删改查,分页(保姆教程)

说明:本demo使用sqlserver数据库,dapper orm框架 完成一张学生信息表的增删改查,前端部分使用的是Razor视图, Linq分页 HtmlHelper。(代码随便写的,具体可以自己优化) //实现效果如下&#xff0…

服装服饰小程序商城的作用是什么

服装绝对算是市场重要的组成部分,零售批发都有大量从业者,随着线下流量匮乏、经营困难重重,很多厂家商家选择线上经营,主要方式是直播、入驻第三方平台等,同时私域节奏加快及线上平台限制等,不少商家也是通…

appscan的两种手动探索扫描方式

文章目录 一、使用火狐FoxyProxy浏览器代理探索二、使用appscan内置浏览器探索 一、使用火狐FoxyProxy浏览器代理探索 首先火狐浏览器需安装FoxyProxy 先在扩展和主题里搜FoxyProxy 选FoxyProxy Standard,然后添加到浏览器就行 添加后浏览器右上角会有这个插件 打开apps…

Linux系统下xxx is not in the sudoers file解决方法

文章目录 遇到问题解决方法参考 遇到问题 服务器上新建用户,名为lishizheng,现在想给该用户添加sudo权限。 $ sudo lsof -i tcp:7890 [sudo] password for lishizheng: lishizheng is not in the sudoers file. This incident will be reported.解决…

Go 语言内置类型全解析:从布尔到字符串的全维度探究

目录 一、布尔类型定义基础用法声明与初始化逻辑运算 进阶用法条件语句循环结构函数返回值 常见错误与陷阱 二、整数类型定义基础用法声明与初始化运算符位运算 进阶用法数据溢出类型转换类型推断 特殊整数类型runebyte 常见问题和陷阱 三、浮点数类型定义基础用法声明与初始化…

Junit的常用操作

注:本篇文章讲解的是junit5 目录 Juint是什么 Juint需要导入的依赖 Juint常用注解 Junit执行顺序 参数化 断言 测试套件 Juint是什么 Juint 是 Java 的一个单元测试框架. 也是回归测试框架. 使用 Junit 能让我们快速的完成单元测试。 注意:Junit 测试也是程序…

联合概率和条件概率的区别和联系

联合概率P(A∩B) 两个事件一起(或依次)发生的概率。 例如:掷硬币的概率是 ⁄₂ 50%,翻转 2 个公平硬币的概率是 ⁄₂ ⁄₂ ⁄₄ 25%(这也可以理解为 50% 的 50%) 对于 2 个硬币,样本空间将…

8章:scrapy框架

文章目录 scrapy框架如何学习框架?什么是scarpy?scrapy的使用步骤1.先转到想创建工程的目录下:cd ...2.创建一个工程3.创建之后要转到工程目录下4.在spiders子目录中创建一个爬虫文件5.执行工程setting文件中的参数 scrapy数据解析scrapy持久…

超市便利店批发零售小程序商城的作用是什么

超市便利店甚至是商场,所售卖的产品广而多,其线上线下商家数量也非常庞大,对传统超市便利店来说,往往会优先发力线下经营,然而随着互联网电商冲击,传统线下经营也面临:拓客引流难、产品销售难、…

子监督学习的知识点总结

监督学习 机器学习中最常见的方法是监督学习。在监督学习中,我们得到一组标记数据(X,Y),即(特征,标签),我们的任务是学习它们之间的关系。但是这种方法并不总是易于处理&…