深度学习-目标检测(一)-R-CNN

news2024/11/22 22:45:59

目录

一:目标检测-Overfeat模型

1.滑动窗口

二:目标检测R-CNN模型

1.R-CNN结构

1.步骤(以AlexNet网络为基准) 

2.候选区域

3.Crop+Warp

4.CNN网络提取特征

5.特征向量训练分类器SVM

三:R-CNN训练过程 

1.训练正负样本准备

2.预训练

3.微调

4.SVM分类器

5.BBox回归器训练

 四:R-CNN测试过程

五:总结

 缺点:

 六:SPPNet

1.映射

2.spatial pyramid pooling

 都看到这里了,点个赞把!!!


一:目标检测-Overfeat模型

1.滑动窗口

目标检测的暴力方法是从左到右、从上到下滑动窗口,利用分类识别目标。为了在不同观察距离处检测不同的目标类型,我们使用不同大小和宽高比的窗口。如下图所示:

 这样就变成每张子图片输出类别以及位置,变成分类问题。但是滑动窗口需要初始设定一个固定大小的窗口,这就遇到了一个问题,有些物体适应的框不一样,所以需要提前设定K个窗口,每个窗口滑动提取M个,总共K x M 个图片,通常会直接将图像变形转换成固定大小的图像,变形图像块被输入 CNN 分类器中,提取特征后,我们使用一些分类器识别类别和该边界框的另一个线性回归器。

这种方法类似一种暴力穷举的方式,会消耗大量的计算力量,并且由于窗口大小问题可能会造成效果不准确

但是提供了一种解决目标检测问题的思路

二:目标检测R-CNN模型

1.R-CNN结构

 不使用暴力方法,而是用候选区域方法(region proposal method),创建目标检测的区域改变了图像领域实现物体检测的模型思路,R-CNN是以深度神经网络为基础的物体检测的模型 ,R-CNN在当时以优异的性能令世人瞩目,以R-CNN为基点,后续的SPPNet、Fast R-CNN、Faster R-CNN模型都是照着这个物体检测思路。

1.步骤(以AlexNet网络为基准) 

1.找出图片中可能存在目标的候选区域region proposal

2.进行图片大小调整为了适应AlexNet网络的输入图像的大小227*227,通过CNN对候选区域提取特征向量,2000个建议框的CNN特征组合成2000*4096维矩阵

3.将2000*4096维特征与20个SVM组成的权值阵4096*20相乘(20种分类,SVM是二分类器,则有20个SVM),获得2000*20维矩阵

4.分别对2000*20维矩阵中每一列即每一类进行非极大值抑制(NMS:non-maximum suppression)剔除重叠建议框,得到该列即该类中得分最高的一些建议框

5.修正bbox,对bbox做回归微调

2.候选区域

选择性搜索(SelectiveSearch,SS)中,首先将每个像素作为一组。然后,计算每一组的纹理,并将两个最接近的组结合起来。但是为了避免单个区域吞噬其他区域,我们首先对较小的组进行分组。我们继续合并区域,直到所有区域都结合在一起。下图第一行展示了如何使区域增长,第二行中的蓝色矩形代表合并过程中所有可能的 ROI。

 SelectiveSearch在一张图片上提取出来约2000个侯选区域,需要注意的是这些候选区域的长宽不固定。 而使用CNN提取候选区域的特征向量,需要接受固定长度的输入,所以需要对候选区域做一些尺寸上的修改。

3.Crop+Warp

传统的CNN限制了输入必须固定大小,所以在实际使用中往往需要对原图片进行crop或者warp的操作

  • crop:截取原图片的一个固定大小的patch
  • warp:将原图片的ROI缩放到一个固定大小的patch

无论是crop还是warp,都无法保证在不失真的情况下将图片传入到CNN当中。会使用一些方法尽量让图片保持最小的变形。

  • 1.各向异性缩放:即直接缩放到指定大小,这可能会造成不必要的图像失真

  • 2.各向同性缩放:在原图上出裁剪侯选区域, (采用侯选区域的像素颜色均值)填充到指定大小在边界用固定的背景颜色

4.CNN网络提取特征

再候选区域的基础上提取出更高级,更抽象的特征,这些高级特征是作为下一步的分类器,回归的输入数据

提取的这些特征将会保存再磁盘中(这些提取的特征才是真正的要训练的数据)

5.特征向量训练分类器SVM

假设一张图片2000个候选区,那么提取出来的就是2000*4096这样的特征向量(R-CNN中默认CNN层输出4096特征向量)。那么最后需要对这些特征进行分类,R-CNN选用SVM进行二分类。假设检测N个类别,那么会提供N个不同类别的SVM分类器,每个分类器都会对2000个候选区的特征向量分别判断一次,这样得出[2000,N]的得分矩阵。

 每个SVM分类器都要判别这2000个候选区是某类别,还是背景

6.非最大抑制(NMS)

目的:筛选候选区,得到最终候选区域结果

迭代过程:对所有的2000个候选区域得分进行概率筛选,然后对剩余的候选框,每个类别进行loU(交并比)>=0.5筛选

假设现在滑动窗口有:ABCD四个框

第一轮:假设B是得分最高的,与B的loU>0.5删除,现在与B计算loU,DE结果>0.5,剔除DE,B作为一个预测结果

第二轮:AC中,A的得分最高,与A计算loU,C>0.5,剔除C,A作为一个结果

最终筛选出A和B

7.修正候选区域

那么通过非最大抑制筛选出来的一定非常准确吗?R-CNN提供了这样一个方法,建立一个bbox regressor,用于回归修正筛选后的候选区域,使之回归用于ground-truth,默认认为这两个框之间是线性关系,因为这是最后筛选出来的候选区域和ground-truth很接近了

修正过程:

三:R-CNN训练过程 

 R-CNN的训练过程这些部分,正负样本准备+预训练+微调网络+训练SVM+训练边框回归器

1.训练正负样本准备

对于训练集中的所有图像,采用selective search方式来获取,最后每个图像得到2000个region proposal。但是每个图像不是所有的候选区域都会拿去训练

 这样得出若干个候选区域以及对应的标记结果

2.预训练

CNN模型层数多,模型的容量大,通常会采用2012年的著名网络AlexNet来学习特征,包含5个卷积层和2个全连接层,利用大数据集训练一个分类器,比如著名的ImageNet比赛的数据集,来训练AlexNet,保存其中的模型参数。

3.微调

AlexNet是针对ImageNet训练出来的模型,卷积部分可以作为一个好的特征提取器,后面的全连接层可以理解为一个好的分类器。R-CNN需要在现有的模型上微调卷积参数。

4.SVM分类器

针对每个类别训练一个SVM的而分类器。比如:猫的SVM分类器,输入维度是2000*4096,目标还是之前第一步标记是否属于该类别猫,训练结果是得到SVM的权重矩阵W,W的维度是4096*20

5.BBox回归器训练

只对那些跟ground truth的IoU超过某个阈值且IOU最大的region proposal回归,其余的region proposal不参与。

 四:R-CNN测试过程

1.输入一张图像,利用selective search得到2000个region proposal

2.对所有region proposal变换到固定尺寸并作为以训练好的CNN网络的输入,每个复选框得到4096维特征

3.采用已训练好的每个类别的svm分类器对提取到的特征打分,所以SVM的weight matrix是4096 N,N是类别数,这里一共有20个SVM, 得分矩阵是200020

4.采用non-maximun suppression(NMS)去掉候选框

5.第上一步得到region proposal进行回归

五:总结

 缺点:

  • 1、训练阶段多:步骤繁琐: 微调网络+训练SVM+训练边框回归器。

  • 2、训练耗时:占用磁盘空间大:5000张图像产生几百G的特征文件。(VOC数据集的检测结果,因为SVM的存在)

  • 3、处理速度慢: 使用GPU, VGG16模型处理一张图像需要47s

  • 4、图片形状变化:候选区域要经过crop/warp进行固定大小,无法保证图片不变形

 六:SPPNet

SPPNet主要有两点改进:1.减少卷积计算,2.防止图片内容变形

1.映射

 原始图片经过CNN变成了feature map,原始图片通过选择性搜索(SS)得到了候选区域,现在需要将基于原始图片的候选区域映射到feature map中的特征向量。映射过程图参考如下:

 假设(x′,y′)(x′,y′)表示特征图上的坐标点,坐标点(x,y)表示原输入图片上的点,那么它们之间有如下转换关系,这种映射关心与网络结构有关:(x,y)=(S∗x′,S∗y′)

左上角的点:x′=[x/S]+1

右下角的点:x′=[x/S]-1 

S是CNN中所有步数的乘积,包括了池化中的步数,卷积中的步数

2.spatial pyramid pooling

通过spatial pyramid pooling 将任意大小的特征图转换成固定大小的特征向量

示例:假设原图输入是224x224,对于conv出来后的输出是13x13x256的,可以理解成有256个这样的Filter,每个Filter对应一张13x13的feature map。接着在这个特征图中找到每一个候选区域映射的区域,spp layer会将每一个候选区域分成1x1,2x2,4x4三张子图,对每个子图的每个区域作max pooling,得出的特征再连接到一起,就是(16+4+1)x256的特征向量,接着给全连接层做进一步处理,如下图:

 都看到这里了,点个赞把!!!

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

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

相关文章

DataLoader使用

文章目录 一、认识dataloader二、DataLoader整合数据集三、使用DataLoader展示图片方法四、去除结尾不满足batch_size设值图片的展示 一、认识dataloader DataLoader 用于封装数据集,并提供批量加载数据的迭代器。它支持自动打乱数据、多线程数据加载等功能。datas…

【网络安全】-文件上传漏洞实战-upload-labs(0~16)

准备&#xff1a; 一句话木马&#xff1a;<? php eval($_REQUEST[cmd]); ?)> 格式&#xff1a;写入txt文本重命名后缀问.php /.php 格式&#xff0c;看具体要求上传。 Pass-01: 显示页面源代码&#xff0c;发现是js对不合法文件进行检查,上传修改为.jpg的php文件直接…

孩子为什么会有自闭症?

自闭症&#xff0c;这个复杂而神秘的神经发展性障碍&#xff0c;长久以来一直困扰着无数家庭和专业人士。尽管其确切原因尚未被完全揭示&#xff0c;但多年的研究与实践已经为我们提供了多个可能的解释框架。 首先&#xff0c;遗传因素在自闭症的发病中扮演了重要角色。科学家发…

HTML5超酷炫的水果蔬菜在线商城网站源码系列模板1

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059238 HTML5超酷炫的水果蔬菜在线商城网…

五星级可视化页面(04):城市鸟瞰地图,恢宏大气。

今天继续分享五星级可视化大屏界面&#xff0c;本期分享城市3D鸟瞰图的&#xff0c;非常的恢宏大气。

101 个 React 技巧和窍门

在这篇文章中&#xff0c;我分享了我多年来学到的101个最佳提示和技巧。准备好了吗&#xff1f;让我们开始吧&#x1f4aa;&#xff01; 注意&#xff1a;本指南假定你对 React 有基本的了解&#xff0c;并了解术语 props、state、context 等。 类别 #1&#xff1a;组件组织 1…

Mac中Twig模版安装与SSTI漏洞学习

感谢大佬的文章参考学习。 SSTI&#xff1a;https://www.cnblogs.com/bmjoker/p/13508538.html Homebrew&#xff1a;快速开始 - Homebrew 中文网 Homebrew安装 一键快捷安装&#xff1a;默认使用中科大的源 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homeb…

LDAP HA 配置

目录 1 LDAP 高可用1.1 介绍1.2 安装1、环境2、全量数据同步3、配置LDAP的HA4、测试 总结 1 LDAP 高可用 1.1 介绍 LDAP的主从同步模式有5种&#xff1a; MirrorMode为ldap ha比较主流的一种模式&#xff0c;本文基于MirrorMode模式进行部署。 如果想要主从LDAP是同一个IP…

QT QPrinter无弹窗后台打印

最近遇到一个打印相关的问题,就是如何通过代码设定打印的相关信息,然后一键打印出来呢,不通过系统的打印设置界面(下图所示)进行设置内容,直接实现打印? 网上找到的一般的打印都如下所示,都是通过了QPrintDialog进行弹出系统打印设置,然后再进行打印,才完成打印,类…

所有即将登陆iPhone 16的Apple智能功能以及预期发布时间

苹果即将在9月9日的“Glowtime”&#xff08;闪耀时刻&#xff09;发布会上揭示和&#xff0c;这是本年度最值得期待的iPhone。 据悉&#xff0c;今年的iPhone将推出更大的屏幕、更快的芯片、更好的摄像头、新的颜色以及更多的内部升级。但是&#xff0c;除了这些硬件提升外&a…

如何进行匈牙利匹配

1 问题提出 在做目标检测的指标评价时,模型会输出一系列目标结果,而标注的GT又会有一些结果,如何将预测值和GT标注真值进行匹配呢?这个时候就可以使用匈牙利匹配来解决问题! For example: 2 匈牙利匹配使用流程 构建代价矩阵 可以根据PRED和GT中心点距离或者颜色特征的…

消防指挥中心控制台:守护安全的关键枢纽

在消防应急救援的战场上&#xff0c;嘉德立消防指挥中心控制台犹如一座坚实的堡垒&#xff0c;发挥着至关重要的作用。它是消防指挥的核心枢纽&#xff0c;连接着无数的信息与行动&#xff0c;为保护人民生命财产安全提供了强大的保障。 一、重要地位与作用 消防指挥中心控制台…

爆火AI教学视频Grant Sanderson作者是谁?

Grant Sanderson 是一位著名的数学教育家和 YouTube 频道 3Blue1Brown 的创始人。他于 2015 年毕业于斯坦福大学&#xff0c;获得数学学士学位。在斯坦福大学期间&#xff0c;他不仅专注于数学&#xff0c;还涉猎了计算机科学领域。 毕业后&#xff0c;Sanderson 加入了 Khan A…

小白看八字排盘需要的基础知识

我们在看生辰八字的时候比较专业的大师都会先根据命主的八字排盘起卦得出命盘卦象&#xff0c;然后再进行分析&#xff0c;今天我们来教大家认识八字命盘&#xff0c;小白看八字排盘需要学习哪些基础知识&#xff1f; 什么是八字排盘 八字排盘&#xff0c;顾名思义就是将一个…

图分类!!!

deepwalk 使用图中节点与节点的共现关系来学习节点的向量表示。那么关键的问题就是如何来描述节点与节点的共现关系&#xff0c;DeepWalk给出的方法是使用随机游走(RandomWalk)的方式在图中进行节点采样,RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问…

Kafka--高吞吐量消息中间件

文章目录 Kafka特点和优势Kafka特点Kafka优势Kafka角色分区和副本的优势Kafka写入流程 Kafka部署单机集群部署1.环境准备ZooKeeper2.配置文件说明3.各节点部署Kafka4.启动服务5.确保服务启动 Kafka读写数据创建Topic获取Topic验证Topic详情生成Topic消费Topic删除 Topic Kafka特…

IP网络广播服务平台upload接口存在任意文件上传漏洞

免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 漏洞描述 …

解决常见 Android 问题的 9 大 Android 手机修复软件

许多人发现 Android 手机或平板电脑上的 Android 操作系统起初运行良好&#xff0c;但随着时间的推移&#xff0c;可能会出现各种 Android 系统问题。您可能会遇到一些问题&#xff0c;例如系统速度变慢、启动无响应、挂起错误、界面冻结、短信停滞、应用程序崩溃等。好吧&…

具体函数的卡诺图填入

目录 用卡诺图表示逻辑函数 基本步骤 例子1 例子2 例子3 用卡诺图表示逻辑函数 基本步骤 例子1 由真值表得卡诺图。 在函数值为1的地方在卡诺图上画上1。 例子2 例子3 非标准与或式&#xff0c;要找到公共部分。 将AB所在的那一行填上1。 将A非D的那个部分也填上1。 再…

平价蓝牙耳机哪个牌子好?四款宝藏机型独家推荐

在如今这个科技迅速发展的时代&#xff0c;蓝牙耳机已成为我们日常生活中不可或缺的一部分&#xff0c;尤其是对于那些寻求性价比的消费者来说&#xff0c;平价蓝牙耳机市场是一个充满选择的广阔天地&#xff0c;那么平价蓝牙耳机哪个牌子好&#xff1f;面对繁多的品牌和机型&a…