场景文本检测识别学习 day04(目标检测的基础概念)

经典的目标检测方法

one-stage 单阶段法:YOLO系列、SSD系列

  • one-stage方法:仅预测一次,直接在特征图上预测每个物体的类别和边界框
  • 输入图像之后,使用CNN网络提取特征图,不加入任何补充(锚点、锚框),直接输出预测框左上右下角的坐标(回归任务)以及物体的类别(分类任务)
  • 即该CNN网络在单次前向传播中,不仅提取特征,还要预测每个物体的类别和边界框
    在这里插入图片描述
  • 优点:速度非常快,适合做实时检测任务
  • 缺点:效果通常不会太好

two-stage 两阶段:Faster-RCNN 、 Mask-RCNN系列

  • two-stage方法:先进行一个粗糙的目标检测(例如使用RPN网络),之后再根据粗糙的目标检测结果来进行更精确的目标检测。
  • 一阶段,区域提议:输入图像之后,会先经过CNN网络,生成特征图。在将特征图送入RPN(区域提议网络)生成一系列区域提议(锚框,大概2万个),RPN根据这些锚框,输出这些锚框包含物体的概率(二分类:前景、背景),以及锚框与真实边界框的偏移量,应用该偏移量后得到候选框(提议区域,大概缩小到2000个)
  • 二阶段,检测:对于一阶段得到的提议区域(RoI),我们根据正负样本的比例(通常为1:1)进一步选取一定数量的提议区域(候选框,大概256个),先将其映射回特征图的对应区域,再使用RoI池化、RoI Align,从特征图对应区域中提取固定尺寸大小的特征,并将这些特征送入检测网络(全连接),得到最后选择的候选框中的类别概率(多分类:具体哪一个物体)、从候选框到真实边界框的偏移量。并应用该偏移量后得到最后的预测框。(训练阶段)
  • 在测试阶段,由于我们不知道真实框,所以有可能多个预测框检测到同一物体,最后需要使用NMS来过滤这些重复框。最后根据置信度阈值来输出类别、相应置信度得分、以及预测的目标边界框
  • 注意,在RPN和测试时的检测阶段中都会使用NMS操作:
    • 在RPN中,我们先使用NMS来筛选锚框,选择高质量的锚框来进行损失计算,此时虽然使用了NMS,但是不会唯一确定与真实框对应的锚框,反而会选择一个合理数量(例如256个)的锚框,来进行下一步的损失计算
    • 在测试时的检测阶段,我们会在得到预测框后,使用NMS来确定唯一对应的预测框,并进行输出
    • 但是在训练时的检测阶段,我们不会用NMS来减少预测框,因为我们需要所有预测框对模型训练的贡献
  • 注意,虽然在RPN和检测阶段都会使用真实边界框来计算偏移量:
    • 但是在RPN中,通过计算真实边界框和锚框的IoU来判断正负样本,以及通过计算正样本的锚框和真实边界框的偏移量,来训练RPN,使它学会如何调整锚框来更好的覆盖真实物体,并应用偏移量后得到候选框。(较为粗略的候选框)
    • 在检测阶段中,仍然计算通过计算真实边界框和候选框的IoU,但是得到具体的物体类别,以及通过计算候选框和真实边界框的偏移量,来训练检测网络,使它学会更精细的调整候选框来更好的覆盖该物体,并应用偏移量后得到最后的预测框。(更精细的预测框)
      在这里插入图片描述

R-CNN、Fast R-CNN、Faster R-CNN 、Mask R-CNN系列解释

在这里插入图片描述
在这里插入图片描述

  • R-CNN中,我们对于输入图像,先用启发式搜索算法(在神经网络出现之前,用于目标检测的搜索锚框的算法)进行锚框的生成,然后分别将这些锚框覆盖的部分输入图像送入不同的卷积神经网络,提取特征图,再分别将这些特征图送入各自的SVM(支持向量机)做物体分类任务,送入线性回归模型(不包含激活函数)做边界框的回归任务。

    • 缺点:由于需要对每一张输入图片中的所有锚框进行特征提取,所以运行速度慢,预测速度慢,同时模型包含多个卷积神经网络,多个线性回归模型,多个SVM,设计复杂。速度在50秒左右检测一张图
      在这里插入图片描述
      请添加图片描述
  • Fast R-CNN中,我们先将整个输入图像送入一个卷积神经网络,提取特征图。之后用启发式搜索算法在原始图像中进行锚框的生成,并将原始图像的锚框按照比例映射到特征图的对应位置中,再用 RoI池化 将特征图中每个被锚框选中的区域,都生成固定尺寸大小的特征,最后送入全连接层做分类和回归任务。

  • Fast R-CNN只会对输入图像做一个整体的特征提取,而R-CNN由于是对每一个锚框都要进行特征提取,所以会有很多次的重复提取

    • 优点:相比于R-CNN,速度会很快很多
    • 缺点:由于锚框的生成还是基于启发式搜索算法,所以很难做到实时检测,大概速度在2-3秒左右检测一张图
      在这里插入图片描述
  • Faster R-CNN中,我们也是先将整个输入图像送入一个卷积神经网络,提取特征图。之后用RPN(区域提议网络)做一个粗糙的目标检测(二分类,进行锚框的生成),并将RPN生成的锚框按照比例映射到特征图的对应位置中,再用 RoI池化 将特征图中每个被锚框选中的区域,都生成固定尺寸大小的特征,最后送入全连接层做分类和回归任务(更精细的目标检测)。

    • 优点:由于使用了神经网络替换掉了启发式搜索算法,相比Fast R-CNN,速度又会快很多,大概在0.2秒左右一张图
    • 缺点:速度仍然达不到实时检测的要求
      请添加图片描述
  • Mask R-CNN中,主要添加了FCN来针对,具有像素级标号的数据集,从而可以做像素级的预测,即实例分割。使用RoI Align来解决,RoI池化对于候选框还原回原始图像有像素误差的问题。

  • 综上:R-CNN是最早基于锚框和CNN的目标检测算法,Faster R-CNN和Mask R-CNN是在要求高精度场景下的常用算法

锚点、锚框、RoI池化、RoI Align

  • 锚点、锚框作为额外补充的方法,主要用在two-stage的目标检测方法中,但是YOLOV2开始,也使用锚点、锚框来提升模型对不同尺寸和形状的物体的检测能力,但区别于two-stage的方法,YOLO仍然是在单个网络提过程中完成分类和边界框的回归。
  • 在RPN(区域提议网络)中,锚点代表潜在的候选区域的中心,也是锚框的中心。
  • 每个锚点可以生成多个锚框,而锚框则是作为候选框,用于覆盖图像中可能出现物体的不同位置和形状
  • 在Fast R-CNN的RPN中,锚框就被用来预测物体的位置,而RPN会对每个锚框输出两个结果,一个是物体的存在概率,一个是锚框的调整参数(用来接近真实框)
    在这里插入图片描述
  • RoI池化:使用量化操作,将特征图中的RoI区域,均匀分割成n*m块,并输出每块里的最大值
    • 缺点:由于RoI池化采用量化操作(取整),所以如上图,对33的锚框变化为22的输出,就会将锚框分为[(2,2), (2,1), (1,2), (1,1)],不均匀等分,这样在最后还原回输入图像时,就会有误差存在。这就导致了在做像素级别的标号(实例分割)时,在边界区域会不准。
  • 由于锚框的尺寸大小不统一,而我们最后使用的全连接层(做分类和回归)需要固定大小的输入,而使用RoI池化可以不管锚框多大,总是输出n*m个值,即可以固定输出尺寸的大小
  • 注意:RoI的输入为特征图和锚框
    请添加图片描述
  • RoI Align:使用双线性插值,将特征图中的RoI区域,均匀分割成n*m块,并输出每块里的最大值
  • 由于使用了双线性插值,所以可以得到像素点之间(四个像素点内部任意采样点)的值,这样防止在最后还原回输入图像时的误差,主要是用在实例分割任务中。
  • 这个采样点的值,可以看作是周围四个像素点的加权平均。

特征图、特征向量

  • 特征图是CNN中的概念,它表示输入图像经一系列卷积层、池化层处理后的得到的中间输出结果,特征图通常是三维的数据结构,具体为(高度,宽度,通道数),所以特征图保留了输入图片的位置信息。特征图通常出现在网络的中间层,代表输入数据的中间级特征
  • 特征向量是一个一维数组,它表示输入数据经过网络最后几层全连接层的输出,用于描述输入数据的高级抽象特征。特征向量通常出现在网络的最后几层,代表输入数据的高级特征。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony轻量系统开发【2】源码下载和开发环境

2.1源码下载 关于源码下载的,读者可以直接查看官网: https://gitee.com/openharmony/docs/tree/master/zh-cn/release-notes 本文这里做下总结: (1)注册码云gitee账号。 (2)注册码云SSH公钥…

如何采集opc服务器数据上传云端

为了进一步提高生产效率,生产制造的不断朝着智能化发展和升级,传统的自动化生产系统已经不能满足需求。传统的SCADA系统一般是用于现场的数据采集与控制,但是本地控制已经无法满足整个工厂系统智能化数字化的需求,智能化数字化是需…

【Altium Designer 20 笔记】PCB线宽与过孔尺寸

电源线:40mil1A(一般翻倍给),地线比电源线粗一点即可;信号线:10-15mil 一、线宽 市电的火线和零线:80-100mil12V /24V 20mil~60mil 5V 20-30mil 3V 20-30mil GND 越宽越好20-30mil普通信号线 10mil-15mil…

Qt 3 QVariant类的使用和实例

QVariant, 类本质为 C联合(Union)数据类型,它可以保存很多Qt 类型的值,包括 QBrush、QColor、QString 等等。也能够存放Qt的容器类型的值。QVariant::StringList 是 Qt定义的一个 QVariant::type 枚举类型的变量,其他常用的枚举类型变量如下表…

LabVIEW变速箱自动测试系统

LabVIEW变速箱自动测试系统 在农业生产中,采棉机作为重要的农用机械,其高效稳定的运行对提高采棉效率具有重要意义。然而,传统的采棉机变速箱测试方法存在测试效率低、成本高、对设备可能产生损害等问题。为了解决这些问题,开发了…

网站添加PWA支持,仅需三步,无视框架的类型

总结起来,网站配置PWA简单步骤为: 编写 manifest.json;编写 serviceWorker.js;在 index.html 引入上述两个文件;把上述三个文件放在网站根目录(或者同一目录下);网站需要部署在https环境才能触发&#xff…

偏微分方程算法之二维初边值问题(交替方向隐(ADI)格式)

一、研究对象 以二维抛物型方程初边值问题为研究对象: 为了确保连续性,公式(1)中的相关函数满足: 二、理论推导 2.1 向前欧拉格式 首先进行网格剖分。将三维长方体空间(二维位置平面一维时间轴&#xff09…

微服务之CircuitBreaker断路器

一、概述 1.1背景 在一个分布式系统中,每个服务都可能会调用其它的服务器,服务之间是相互调用相互依赖。假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务。这就是构成所谓“扇出”。 如果扇出的链路上某个微服务的调…

图数据库Neo4J入门——Neo4J下载安装+Cypher基本操作+《西游记》人物关系图实例

这里写目录标题 一、效果图二、环境准备三、数据库设计3.1 人物节点设计3.2 关系设计 四、操作步骤4.1 下载、安装、启动Neo4J服务4.1.1 配置Neo4J环境变量4.1.2 启动Neo4J服务器4.1.3 启动Ne04J客户端 4.2 创建节点4.3 创建关系(从已有节点创建关系)4.4…

数据结构和算法(哈希表和图(A*算法精讲))

一 、哈希表 1.1 哈希表原理精讲 哈希表-散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法 键(key): 组员的编号如,1、5、19。。。 值(value): 组员的其它信息(包含性别、年龄和…

并查集练习

前言&#xff1a; 关于并查集的一些训练题。 正文&#xff1a; 1.亲戚&#xff1a; #include<bits/stdc.h> using namespace std; const int N5005; int fa[N]; int find(int x){if(xfa[x])return x;return fa[x]find(fa[x]); } void merge(int x,int y){fa[find(x)]fi…

MajorDoMo thumb.php 未授权RCE漏洞复现(CNVD-2024-02175)

0x01 产品简介 MajorDoMo是MajorDoMo社区的一个开源DIY智能家居自动化平台。 0x02 漏洞概述 MajorDoMo /modules/thumb/thumb.php接口处存在远程命令执行漏洞&#xff0c;未经身份验证的攻击者可利用此漏洞执行任意指令&#xff0c;获取服务器权限。 0x03 影响范围 MajorD…

消息队列和分布式消息队列

文章目录 分析系统现状不足中间件消息队列什么是消息队列&#xff1f;应用场景消息队列的模型为什么不直接传输&#xff0c;而要用消息队列&#xff1f;为什么要用消息队列&#xff1f;消息队列的缺点&#xff1f; 分布式消息队列分布式消息队列的优势&#xff1f;消息队列应用…

数字晶体管数字三极管

数字晶体管 指内部集成了电阻的三极管&#xff0c;有PNP和NPN型&#xff0c;也有双管&#xff0c;双管有3种形式&#xff0c;其中一种是PNPNPN。下面以双NPN示例&#xff0c;好处是外面没有电阻&#xff0c;批量应用时&#xff0c;焊点费用就可省下不少。双NPN的用在串口自动下…

SSH客户端工具输入目标地址端口远程失败故障原因和解决方案

问题表现&#xff1a;SSH客户端工具输入目标地址端口远程失败时&#xff0c;出现ssh client 报 algorithm negotiation failed的异常信息。 使用SSH Secure Shell Client连接Linux服务器的SSH的时候有时会出现错误提示信息&#xff1a;ssh algorithm negotiation failed。这是…

HarmonyOS NEXT星河版之实战知乎App评论功能

文章目录 一、目标完成页面二、实战2.1 定义数据2.2 mock数据2.3 封装顶部标题栏2.4 封装评论Item2.5 定义回复组件2.6 主页面 三、小结 一、目标完成页面 二、实战 2.1 定义数据 export interface ReplyItem {avatar: ResourceStr // 头像author: string // 作者id: number …

【数据结构|C语言版】顺序表应用

前言1. 基于动态顺序表实现通讯录1.1 通讯录功能1.2 代码实现1.2.1 SeqList.h1.2.2 SeqList.c1.2.3 Contact.h1.2.4 Contact.c1.2.5 test.c 1.3 控制台测试1.3.1 添加联系人1.3.2 删除联系人1.3.3 修改联系人1.3.4 查找联系人1.3.5 清空通讯录1.3.6 通讯录读档和存档 2. 好题测…

Day 41:动态规划 LeedCode 343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 思路: 1.确定dp数组&#xff0…

支付系统核心逻辑 — — 状态机(JavaGolang版本)

支付系统核心逻辑 — — 状态机 代码地址&#xff1a;https://github.com/ziyifast/ziyifast-code_instruction/tree/main/state_machine_demo 1 概念&#xff1a;FSM&#xff08;有限状态机&#xff09;&#xff0c;模式之间转换 状态机&#xff0c;也叫有限状态机&#xff08…

OpenWrt 多拨负载均衡不起作用

检查 负载均衡->规则->Https->粘滞模式 是否启动&#xff0c;设置为 否 如果设置为是&#xff0c;那么根据官方描述&#xff1a; 来自相同源 IP 的流量&#xff0c;如果已经匹配过此规则并且在粘滞超时时间内&#xff0c;将会使用相同的 WAN 接口 意思就是如果你同一个…