RCNN网络原理详解

news2024/12/25 1:31:45

文章目录

  • 一、前言
  • 二、R-CNN原理步骤
    • 2.1.Selective Search生成目标检测框
    • 2.2.对候选区域使用深度网络提取特征
    • 2.3.SVM分类
    • 2.4.使用回归器精细修正候选框位置
  • 三、总结
  • 参考博客与学习视频

一、前言

学习目标检测当然要学习目标检测领域的开山之作R-CNN,本文为个人笔记。
在这里插入图片描述

二、R-CNN原理步骤

R-CNN分为四个步骤:

1.由SS算法生成大约1-2k个候选框。
2.将候选框输入深度网络,提取特征。
3.使用SVM分类器得到每一个候选框属于每一个类别的分数。
4.使用回归器修正候选框位置
在这里插入图片描述

2.1.Selective Search生成目标检测框

关于Selective search的原理,详细的可以去看我写的另一篇博客博客地址。简要来说:大概的意思就是首先根据图像分割的算法来初始化划分区域,

然后根据不同颜色模式、目标颜色、纹理、大小、形状等特征来计算相似度合并子区域,使得区域相比穷举法更少,节省计算资源,提高效率,

同时可以有很好的召回率,使得生成的候选框可以很好的覆盖所有待检测目标。

2.2.对候选区域使用深度网络提取特征

在这里插入图片描述

与之前不同的是这里的AlexNet去掉了后面的全连接层,只保留了一层全连接

2.3.SVM分类

在这里插入图片描述
因为这里使用的使PASCAL VOC数据集,所以最终是有20个SVM分类器
在这里插入图片描述

如上图,2000✖4096的特征矩阵代表了2000个候选框经过深度卷积网络后提取的特征,对于每一个候选框,也即对于每一个4096维特征向量,我们需要使用SVM去判断它的类别,对于每一个类别都需要判断,总共20个类别,因此权值矩阵为2000✖20,最终得到的2000✖20的概率矩阵,每一行代表了它属于这20个类别的概率分布,对于每一个20维的概率向量来说,当中的每一个位置上的概率表示这个候选框目标属于该对应位置类别的概率。

在这里插入图片描述
得到所有候选框的类别分数后,还要进行非极大值抑制来剔除一些重叠的候选框

举例:假设我们得到上图中对于向日葵的一些候选框,通过输入深度卷积网络提取特征,再使用SVM分类器,我们最终得到了这些候选框对于向日葵这个类别的分数,我们找出得分最高的候选框,计算该候选框与其他候选框的IOU,如果IOU大于某个阈值,我们可以认为这两个框是一样的,可以删除掉这个候选框。保留下来的多个候选框我们可以认为都是向日葵的候选框,只不过位置不一样,也就是说图片中有多个向日葵。
疑问1:可能有人在想为什么不直接保留最大得分的候选框,设定一个阈值大于某个分数不就也可以保留了多个候选框吗?
答:这么理解其实是不对的 ,因为我们并不能保证候选框检测的不是同一个目标,如果检测的的同一个目标,分数都大于这个阈值,岂不是保留了同一个目标的多个预测框,这里非极大值抑制个人理解是为了删除同一个目标的多余候选框,也就是说最后保留下来的候选框我们认为它们检测不是同一个目标。
疑问2:图中有循环的操作,是怎么进行的呢?
答:个人认为是我们先找最大的得分的检测框,然后计算其他的框与它的IOU,删除和它检测的是同一个目标的检测框,保留这个最大的检测框(这个检测框之后不再加入计算),然后再继续寻找一个得分最高的检测框,同样的删除与它检测是同一个目标但是得分没有它高的检测框,依此类推。

2.4.使用回归器精细修正候选框位置

在这里插入图片描述

这里的进一步筛选指的是:需要对上一步筛选后的候选框与真实框计算IOU,保留IOU大于某个阈值的候选框,目的是为了删除与真实框差别过大的候选框。之后同样使用回归器来回归修正候选框位置,得到修正的中心点的x,y偏移量与x,y方向缩放比例

三、总结

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

参考博客与学习视频

B站up主视频(强推)
原论文地址
代码地址

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

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

相关文章

Boost开发指南-1.1timer

timer timer类可以测量时间的流逝&#xff0c;是一个小型的计时器&#xff0c;提供毫秒级别的计时精度和操作函数&#xff0c;供程序员手工控制使用&#xff0c;就像是个方便的秒表。 timer位于名字空间boost,为了使用timer组件&#xff0c;需要包含头文件<boost/timer.hp…

代码随想录算法训练营第二十三天|理论基础 77. 组合

文章目录 理论基础77.组合思路代码总结 理论基础 回溯算法&#xff1a;一种暴力搜索方式 回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 回溯法&#xff0c;一般可以解决如下几种问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合切割问题…

广告投放实战指南,让你的技术产品走向成功!

开篇词 作为深耕智能客服领域多年的云客服厂商&#xff0c;美洽在开拓市场、品牌运营、获线转化等方面积累了一定的经验&#xff0c;并打造出了在线客服、呼叫中心、客服机器人、工单系统、语音机器人等智能客服全域产品矩阵&#xff0c;不仅为企业与客户的沟通提供了便利&…

android (实现左滑删除)自定义控件+事件分发

左滑删除 背后的逻辑1布局的绘制onMeasureonLayout 2 事件的分发都不处理爸爸拦截不吃吃 事件分发的结论 完整代码的实现效果图代码 背后的逻辑 想要实现左滑删除&#xff0c;在现有控件不满足的情况下&#xff0c;肯定是要自定义View。 然后考虑需要实现的效果&#xff0c;里…

nginx(CVE-2022-41741)漏洞修复

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 最近&#xff0c;nginx曝出了最新漏洞CVE-2022-41741&#xff0c;这个影响还是比较大的&#xff0c;因为这个…

你真的了解低代码吗?

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;2022年度博客之星前端领域TOP 2&#xff0c;前端领域优质作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步…

在vue中上传图片

大纲&#xff1a; &#x1f335; 1、avue中如何上传图片 Avue官网 : Avue 在Avue官网中找到 Upload附件上传。本案例为了满足项目需求&#xff0c;我只用了上传后的方法 :upload-after"uploadAfter" &#x1f346; Avue上传图片案例代码 <template><div…

【axios】vue中axios的请求配置

注意&#xff1a;本文实例化为TS版 1、axios概念 axios 是一个基于 promise 封装的网络请求库&#xff0c;它是基于 原生XHR 进行二次封装&#xff0c;可以说是 XHR 的一个子集&#xff0c;而 XHR 又是 Ajax 的一个子集 特点 从浏览器中创建 XMLHttpRequests从 node.js 创建…

Maven——Maven工程

1.Maven工程类型 【1】POM工程 【2】JAR工程 【3】WAR工程 2.Maven的目录结构 3.POM模式-Maven工程关系 在Maven中它把每个项目都看成一个对象 3.1依赖 【1】依赖关系 【2】如何注入依赖 【3】依赖的好处&#xff1a; 省去了程序员手动添加jar包的操作&#xff01; 可以帮…

类与对象(中)(一)

1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生成以下6个默认成员 函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器…

【NoteExpress】解决缺少样式的问题

之前写过一篇关于在NoteExpress里面把参考文献输出样式改成Elsevier的教程 &#x1f449;【NoteExpress】统一Elsevier旗下期刊参考文献格式 今天打开 NoteExpress &#xff0c;准备换一个输出样式&#xff0c;发现样式数量变了&#xff0c;从原来几千多变成了7&#xff01; 我…

日撸 Java 三百行day51-53

文章目录 说明Day51-52 KNN 分类器1.KNN2.代码1.aff内容解读2.代码理解 Day53 knn补充1.加权思路2.加权代码3.leave-one-out 测试思路4.leave-one-out代码 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把…

sonarqube主要功能概览

sonarqube质量标准 sonarqube通过可靠性、安全性、安全复审、可维护性、覆盖率、重复度等方面来评价代码质量。 分别使用bugs&#xff0c; 漏洞等指标。 如图&#xff0c;有项目状态为正常&#xff0c;有项目状态为错误。 点进项目可以看具体 可以对问题进行分配&#xff0c;…

7个既可学习又可玩游戏的CSS在线学习网站

学习编码并不容易&#xff0c;尤其是 CSS&#xff0c;所以&#xff0c;在本文中我将跟大家分享一些既能学习CSS知识技能有可以玩游戏的网站&#xff0c;以有趣好玩的方式来帮助你提高学习兴趣以及解决问题的能力。现在&#xff0c;就让我们进入一些在线学习CSS的游戏网站列表&a…

【JOSEF约瑟 JDZS-1202B 可调断电延时中间继电器 精度高、延时宽、】

品牌&#xff1a;JOSEF约瑟名称&#xff1a;可调断电延时中间继电器型号&#xff1a;JDZS-1202B系列额定电压&#xff1a;110、220VDC/AC触点容量&#xff1a;250V/5A功率消耗&#xff1a;2W返回系数&#xff1a;≥5%特点&#xff1a;高精度、延时宽、功耗低。 用途及特点 基本…

使用Rust构建一个kvm用户空间实例

最近在学习虚拟化相关的内容&#xff0c;想着使用Rust构建一个最小的kvm用户空间实例。也就是直接调用kvm的api&#xff0c;然后创建虚拟机。网络上关于kvm的内容大部分是使用libvirt的&#xff0c;然后kvm用户空间实例也是使用C编写的。因此想着使用Rust写一个简单的。 思路 …

Maven依赖管理

文章目录 1 依赖传递与冲突问题2 可选依赖和排除依赖方案一:可选依赖方案二:排除依赖 Masked5 / heima_maven_codes GitCode 我们现在已经能把项目拆分成一个个独立的模块&#xff0c;当在其他项目中想要使用独立出来的这些模块&#xff0c;只需要在其pom.xml使用<depende…

看干货,10个网络安全小知识

如今&#xff0c;大家的生活与互联网已密不可分&#xff0c;每天享受着网络带给我们的服务和便利&#xff0c;工作、娱乐、购物、刷热点……&#xff0c;但网络也是一把双刃利器网络风险无孔不入&#xff0c;信息泄露、网络诈骗、虚假信息满天飞……所以&#xff0c;网络安全不…

JavaWeb-JQuery的学习

1、JQuery快速入门 1.1、JQuery介绍 jQuery 是一个 JavaScript 库。所谓的库&#xff0c;就是一个 JS 文件&#xff0c;里面封装了很多预定义的函数&#xff0c;比如获取元素&#xff0c;执行隐藏、移动等&#xff0c;目的就是在使用时直接调用&#xff0c;不需要再重复定义&…

图解LeetCode——142. 环形链表 II

一、题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…