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

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

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

相关文章

Kafka 架构深入介绍 及搭建Filebeat+Kafka+ELK

目录 一 架构深入介绍 (一)Kafka 工作流程及文件存储机制 (二)数据可靠性保证 (三)数据一致性问题 (四)故障问题 (五)ack 应答机制 二 实…

蓝桥杯2024年第十五届省赛

E:宝石组合 根据给的公式化简后变为gcd(a,b,c)根据算数基本定理&#xff0c;推一下就可以了 然后我们对1到mx的树求约数&#xff0c;并记录约数的次数&#xff0c;我们选择一个最大的且次数大于等3的就是gcd int mx; vector<int> g[N]; vector<int> cnt[N]; int…

基于贝叶斯算法的机器学习在自动驾驶路径规划中的应用实例

目录 第一章 引言 第二章 数据准备 第三章 贝叶斯路径规划模型训练 第四章 路径规划预测 第五章 路径执行 第六章 实验结果分析 第一章 引言 自动驾驶技术的发展带来了自动驾驶车辆的出现&#xff0c;而路径规划作为自动驾驶车辆的关键功能之一&#xff0c;对于确定最佳行…

JVM之JVM栈的详细解析

Java 栈 Java 虚拟机栈&#xff1a;Java Virtual Machine Stacks&#xff0c;每个线程运行时所需要的内存 每个方法被执行时&#xff0c;都会在虚拟机栈中创建一个栈帧 stack frame&#xff08;一个方法一个栈帧&#xff09; Java 虚拟机规范允许 Java 栈的大小是动态的或者是…

标准版uni-app移动端页面添加/开发操作流程

页面简介 uni-app项目中&#xff0c;一个页面就是一个符合Vue SFC规范的.vue文件或.nvue文件。 .vue页面和.nvue页面&#xff0c;均全平台支持&#xff0c;差异在于当uni-app发行到App平台时&#xff0c;.vue文件会使用webview进行渲染&#xff0c;.nvue会使用原生进行渲染。…

用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本

在实际项目中&#xff0c;从Kafka到HDFS的数据是每天自动生成一个文件&#xff0c;按日期区分。而且Kafka在不断生产数据&#xff0c;因此看看kettle是不是需要时刻运行&#xff1f;能不能按照每日自动生成数据文件&#xff1f; 为了测试实际项目中的海豚定时调度从Kafka到HDF…

ActiveMQ主从架构和集群架构的介绍及搭建

一、主从和集群架构的特点 1.1 主从架构的-Master/slave模式特点 读写分离&#xff0c;纵向扩展&#xff0c;所有的写操作一般在master上完成&#xff0c;slave只提供一个热备 1.2 集群架构-Cluster模式特点 分布式的一种存储&#xff0c;水平的扩展&#xff0c;消息的分布…

CCleaner怎么清理软件缓存 CCleaner清理要勾选哪些 ccleanerfree下载

CCleaner软件是一款优秀的数据清理软件&#xff0c;其中没有硬盘和内存的设置&#xff0c;也不含任何广告软件&#xff0c;其出色的注册表清洁功能能够保证您的电脑更稳定运行。本文将围绕CCleaner怎么清理软件缓存&#xff0c;CCleaner清理要勾选哪些的相关内容进行介绍。 一、…

计算机网络——DNS协议

目录 前言 前篇 引言 IP地址与域名 DNS协议的工作流程 DNS服务器节点之间是如何维护上下级关系的 前言 本博客是博主用于复习计算机网络的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结&#xff0c;讲的非…

将本地项目上传到Github

首先安装git、创建github账号 1、创建一个新的仓库 2、创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录&#xff0c;有的话看下里面有没有id_rsa和id_rsa.pub这两个文件&#xff0c;有就跳到下一步&#xff0c;没有就通过下面命令创建。 ssh-keygen -t rsa -C "you…

面试算法-174-二叉树的层序遍历

题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 解 class Solut…

代码随想录Day41:动态规划Part3

Leetcode 343. 整数拆分 讲解前&#xff1a; 毫无头绪 讲解后&#xff1a; 这道题的动态思路一开始很不容易想出来&#xff0c;虽然dp数组的定义如果知道是动态规划的话估摸着可以想出来那就是很straight forward dp定义&#xff1a;一维数组dp[i], i 代表整数的值&#xf…

pyqt QToolBar 选中高亮

目录 效果图 示例代码 效果图 示例代码 from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QToolBar, QToolButtonclass HighlightingToolButton(QToolButton):def __init__(self, parentNone):super().__init__(parent)self.setCheckable(True)def nextChe…

ins视频批量下载,instagram批量爬取视频信息

简介 Instagram 是目前最热门的社交媒体平台之一,拥有大量优质的视频内容。但是要逐一下载这些视频往往非常耗时。在这篇文章中,我们将介绍如何使用 Python 编写一个脚本,来实现 Instagram 视频的批量下载和信息爬取。 我们使用selenium获取目标用户的 HTML 源代码,并将其保存…

尚鼎环境科技诚邀您参观2024第13届生物发酵展

参展企业介绍 尚鼎环境科技(江苏)有限公司设立于2010年&#xff0c;公司坐落于江南平原南端素有『苏北门户』之称的古城扬州&#xff0c;办公室位在江苏省扬州市邗江区高新技术创业服务中心。 尚鼎环境科技长年致力于食品精炼/环境工程领域全程技术服务&#xff0c;工程实绩遍…

OpenHarmony南向开发案例:【智能体重秤】

一、简介 本demo基于OpenHarmony3.1Beta版本开发&#xff0c;该样例能够接入数字管家应用&#xff0c;通过数字管家应用监测体重秤上报数据&#xff0c;获得当前测量到的体重&#xff0c;身高&#xff0c;并在应用端形成一段时间内记录的体重值&#xff0c;以折线图的形式表现…

html公众号页面实现点击按钮跳转到导航

实现效果&#xff1a; 点击导航自动跳转到&#xff1a; html页面代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>跳转导航</title><meta name"keywords" conten…

华为框式交换机S12700E系列配置CSS集群

搭建集群环境 a.为两台交换机上电&#xff0c;按照数据规划分别对两台框式交换机进行配置 <HUAWEI> system-view [HUAWEI] sysname Switch1 [Switch1] set css id 1 [Switch1] set css priority 150 //框1的集群优先级配置为150 [Switch1] interface css-port 1 [Sw…

java的深入探究JVM之内存结构

前言 Java作为一种平台无关性的语言&#xff0c;其主要依靠于Java虚拟机——JVM&#xff0c;我们写好的代码会被编译成class文件&#xff0c;再由JVM进行加载、解析、执行&#xff0c;而JVM有统一的规范&#xff0c;所以我们不需要像C那样需要程序员自己关注平台&#xff0c;大…

最新AI创作系统ChatGPT网站源码AI绘画,GPTs,AI换脸支持,GPT联网提问、DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…