R-CNN(Region with CNN feature)

news2025/1/12 12:06:13

目录

1. 介绍

2. R-CNN

2.1 SS(Selective Search) 算法 生成候选框

2.2 CNN 提取特征

2.3 SVM 分类

非极大值抑制

2.4 回归器微调候选框

3. R-CNN 的缺点


1. 介绍

目标识别的发展历史如图

 

2. R-CNN

RCNN 是两阶段目标检测的鼻祖,类似于深度学习开山之作AlexNet那种地位

目标检测的可以分为两种:one-stage和two-stage

 

RCNN的算法流程为:

 

2.1 SS(Selective Search) 算法 生成候选框

因为RCNN是two-stage的算法,这种算法的特点是先生成候选框,然后根据生成的候选框去进一步的分类或者调整

 

这些候选框生成有很多的方法,比如根据聚类算法将类似灰度值的作为同一个区域,这样就可以产生一个阈值的效果。根据不同的区域,生成不同的候选框,RCNN总共生成2000个矩形候选框

 

2.2 CNN 提取特征

RCNN成功因素之一就是使用了深度网络进行特征提取,而不是传统的手工涉及特征的方法

当时深度学习的开山之作为AlexNet,因为当时的局限性,特征提取后的size是固定的,为了和全连接层保持一致,所以这里需要固定的输入大小。

这里用的是AlexNet 网络,所以输入图像的大小为227*227。而AlexNet特征提取层的输出为4096的向量,所以这里的输出为2000*4096

 

2.3 SVM 分类

CNN 提取的特征送入SVM进行类别的分类,SVM是一个二分类的分类器

这里的分类类别是20,所以最后会产生一个2000*20的输出。2000类似于batch,20为分类个数

 

矩阵的运算过程为:

 

非极大值抑制

经过SVM分类器后的输出维度是2000*20,意思是每个不同的类别都有2000个候选框,接下来进行非极大值抑制将无用的候选框去除

例如,假设第一列是cat这个类别,那么在2000个中寻找预测最准的那个框。然后将这个预测准的候选框与周围的候选框求iou,去除iou > 给定阈值的候选框

目标检测首先要检测的准,也就是分类的问题,所以在2000*20的每一列里面找到预测最准的候选框。既然这个候选框识别这么准了,就将周围的候选框框的较准的也去掉,因为周围候选框的识别准确率不够高,可以去除重叠的候选框。

 

2.4 回归器微调候选框

因为SS算法生成的候选框虽然可以根据类似聚类的算法产生,但还是具有一定的随机性

这里使用一个回归器对候选框进行微调

回归器可以理解为一个回归模型,会产生连续的预测值。

将生成的候选框和真实的标签框通过最小二乘算法,然后一直训练,回归器就可以尽可能的将产生好的候选框去拟合真实的标签框

 

3. R-CNN 的缺点

RCNN算法的流程如下

 

可以发现,RCNN的实现步骤很繁琐,而且相互之间的依赖程度很高,导致运行速度很慢。

 

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

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

相关文章

第03章_流程控制语句

第03章_流程控制语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模…

算法记录 | Day32 贪心算法

122.买卖股票的最佳时机II 贪心算法 思路: 把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑! 那么根据prices可以得到每天的利润序列:(prices[i] - prices[i - 1])…(prices[1] - prices[0])。 如图:…

PyCharm+PyQt5+pyinstaller打包labelImg.exe

0 开头 labelImg是一款标注软件,作为一个开源项目,它的源码可以在github上找到。官方仓库地址为: https://github.com/heartexlabs/labelImg 小白安装时的最新版本编译出来的界面长这样: 之前在小白的博客里,也教过…

Spring学习5

一、代理模式 代理模式就是AOP的底层! 1.代理模式的分类 静态代理动态代理2.静态代理 角色分析: 抽象角色:一般使用接口或者抽象类来解决真实角色:被代理的角色代理角色:代理真实角色后,一般会做一些附属操…

走进小程序【七】微信小程序【常见问题总结】

文章目录🌟前言🌟小程序登录🌟unionid 和 openid🌟关键Api🌟登录流程设计🌟利用现有登录体系🌟利用OpenId 创建用户体系🌟利用 Unionid 创建用户体系🌟授权获取用户信息流…

JVM内存模型详解

JVM内存模型和Java内存模型都是面试的热点问题,名字看感觉都差不多,实际上他们之间差别还是挺大的。 通俗点说,JVM内存结构是与JVM的内部存储结构相关,而Java内存模型是与多线程编程相关mikechen。 什么是JVM JVM是Java Virtual …

【教学类-30-04】10以内减法题不重复(一页两份)(包括6以内、7以内、8以内、9以内、10以内减法题 只抽取25个)

作品展示 ——10以内不重复减法题 需求: 1、制作10以内减法题 材料准备: Word模板 代码展示: 6、7、8、9、10以内减法一页两份(10以内减法一页两份(6以内、7以内、8以内、9以内、10以内不重复减法题) 时间…

文件访问被拒绝?5个解决方法!

案例:文件访问被拒绝 【朋友们,想问问大家的电脑有遇到过文件访问被拒绝的情况吗?真的太头疼了,大家都是怎么解决的呢?】 在日常使用电脑和操作文件时,有时我们可能会遇到文件访问被拒绝的情况。这可能会…

Scala框架Akka学习

Scala框架Akka 文章目录Scala框架AkkaAkka概述Akka特点Akka与Scala.actors.Actor的关系Akka模型介绍Actor模型的优点Akka模型的核心概念如何创建Actor添加依赖在Akka中,Actor负责通信,在Actor中有一些重要的生命周期方法**akka的架构原理**创建Actor的步…

Charles二次开发-接口解密

1,使用背景 最近工作中对公司接口进行抓包,发现接口路径和返回都是经过加密的,对于查看接口路径及接口返回结果带来了不便,于是想到了对Charles进行小改造,在Charles上增加一个按钮对加密的请求、响应结果解密&#x…

[学习笔记]计算机图形学(一)

计算机图形学学习笔记(一) 什么是计算机图形学 计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。 什么是好的画面? 从技术层面简单的评判标准:直接看画面…

Android实现RecyclerView分组显示功能完整示例(自定义组头和Item布局)

实现效果截图&#xff1a; 首先&#xff0c;我们需要为RecyclerView添加一个分组的概念&#xff0c;我们可以创建一个Group类来表示分组&#xff0c;包括分组名称和分组中的数据项列表。代码如下&#xff1a; public class Group {private String name;private List<Item&g…

ChatGPT-5到底有多强?Battle!咱貌似也不输呀!

盘点今年的热点话题&#xff0c;ChatGPT是不可避免要被反复提及的一part。从去年的-3.0到今年的-3.5&#xff0c;再到上月刚发布-4.0。从用户体验和市场反馈来讲&#xff0c;这半年的时间&#xff0c;ChatGPT每一步都走得又稳又快&#xff01; 回想起今年2月初ChatGPT全网爆火的…

最短路径-dijkstra/floyd

目录 floyd -dijkstra floyd floyd:用来求所有顶点之间的最短路径问题,求最短路径具体节点顺序&#xff0c;求各点之间最短路径长度 理解floyd&#xff1a; 二维矩阵图&#xff0c;就是不断通过测试新的节点k&#xff0c;看看k节点能不能作为中间节点优化各点之间的最短距离…

SourceMap源码映射详细讲解

SourceMap源码映射详细讲解 前端工程打包后代码会跟项目源码不一致&#xff0c;当代码运行出错时控制台上定位出错代码的位置跟项目源码上不对应。这时候我们很难定位错误代码的位置。SourceMap的用途是可以将转换后的代码映射回源码&#xff0c;如果设置了js文件对应的map资源…

Java每日一练(20230416)

目录 1. 三数之和 &#x1f31f;&#x1f31f; 2. 基本计算器 &#x1f31f;&#x1f31f;&#x1f31f; 3. 通配符匹配 &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java…

Android:编译libevent动态库并移植jni中,在Android AVD虚拟机上实现一个http服务器

libevent源码&#xff1a;libevent-2.1.8-stable Android Studio版本&#xff1a;Android Studio Electric Eel | 2022.1.1 Patch 2 AVD虚拟机为x86. https://developer.android.google.cn/studio/run/emulator-networking?hlzh-cn#connecting 大体步骤&#xff1a; 1.在ws…

Vue2_01_data_插值

插值语法 {{name}} data: vue实例的数据对象 data中数据变化时将重新渲染容器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--引入vue,引入之后vue.js 创建了一个全局变…

c语言进阶篇_动态内存管理(数组可以自动扩容?)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:讲解c语言中的动态内存管理知识,涉及malloc函数、call…

微信小程序运行及更新机制

微信小程序运行及更新机制1、微信小程序运行机制1.1 前台和后台1.2 小程序启动&#xff1a;冷启动和热启动1.3 小程序销毁2、微信小程序更新机制2.1 启动时同步更新定期检查发现版本更新用户长时间未使用小程序2.2 启动时异步更新开发者手动触发更新2.3 小程序管理后台的相关设…