05- 算法解读 R-CNN (目标检测)

news2024/11/17 9:44:55

要点:

  • R-CNN可以说是利用深度学习进行目标检测的开山之作。


R-CNN算法

R-CNN可以说是利用深度学习进行目标检测的开山之作。作者Ross Girshick多次 在PASCAL VOC的目标检测竞赛中折桂,曾在2010年带领团队获得终身成就奖。

RCNN算法流程可分为4个步骤:

  • 一张图像生成1K~2K个候选区域(使用Selective Search方法)
  • 每个候选区域,使用深度网络提取特征
  • 特征送入每一类的SVM 分类器,判别是否属于该类
  • 使用回归器精细修正候选框位置

1.1 候选区域的生

利用Selective Search算法通过图像分割的方法得到一些原始区域,然后使用一些合并策略将这些区域合并得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。

Selective Search算法是一种基于目标检测的图像分割算法,它能够将图像分成多个区域,每个区域都具有相似的纹理、颜色和其他特征。这个算法可以用于物体识别和检测等计算机视觉任务中。

Selective Search算法的核心思想是通过不断合并相似的小块来生成更大的区域。具体来说,它首先将图像分成许多小块,然后计算这些小块之间的相似度,并将相似度高的小块合并成一个更大的超像素。这个过程会重复多次,直到整张图像都被分成若干个超像素。

在Selective Search算法中,相似度的计算可以使用多种方法,例如颜色直方图、边缘密度、纹理等。此外,为了提高算法的效率,Selective Search还可以使用快速的图像分割技术,如Felzenszwalb和Huttenlocher算法。

最终,Selective Search算法会生成一个超像素图像,其中每个超像素都代表了一个具有相似特征的图像区域。这个超像素图像可以作为物体检测和识别等计算机视觉算法的输入,从而提高其精度和效率。

1.2 对每个候选区域,使用深度网络提取特征

2000候选区域缩放到227x227pixel将候选区域输入事先训练好的AlexNet CNN获取4096维的特征得到2000×4096维矩阵

1.3 特征送入每一类的SVM分类器,判定类别

将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘, 获得2000×20维矩阵表示每个建议框是某个目标类别的得分。分别 对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重 叠建议框,得到该列即该类中得分最高的一些建议框。

2000×4096的特征矩阵与20SVM组成的权值矩阵4096×20  相乘,获得2000×20的概率矩阵,每一行代表一个建议框归于每个 目标类别的概率。分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框

IoU(Intersection over Union)  表示(A∩B)/(A∪B)

1.4 使用回归器精细修正候选框位

对NMS处理后剩余的建议框进一步筛选。接着 分别 用20个回归器对上述20个类别中剩余的建议框进行回 归操作 ,最终得到每个类别的修正后的得分最高的 bounding box。
如图,黄色框口P表示建议框Region Proposal, 绿色窗口G表示实际框Ground Truth,红色窗口 G ˆ
表示Region Proposal进行回归后的预测窗口, 可以用最小二乘法解决的线性回归问题

 R-CNN

1.5 R-CNN存在的问题

  1. 测试速度慢 :测试一张图片约 53s(CPU) 。用 Selective Search 提取候选框用时约 2 秒,一张图像内 候选框之间存在 量重叠 ,提取特征操作冗余
  2. 训练速度慢 :过程及其繁
  3. 训练所需空间大 :对于 SVM bbox 回归训练,需要从每个图像中的每个目标候选 提取特征,并写入磁盘。对于非常深的网络,如 VGG16 ,从 VOC07 训练集上的 5k 图像上提取的特征需要数百 GB 的存储空间

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

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

相关文章

ACM输入输出

写在前面 主要记录一下ACM输入输出的写法&#xff1b; 一、输入数值 1. 给定N的定长多行输入 题目&#xff1a;https://ac.nowcoder.com/acm/contest/5657/B&#xff1b; 代码&#xff1a; #include <iostream> #include <stdio.h> using namespace std;int m…

JavaWeb《后端内容:1. Tomcat - Servlet - Thymeleaf》

目录 1. 基础概念 1.1 BS架构和CS架构 1.2 Tomcat图解 2.TomCat 2.1 IDEA配置web项目和tomcat 2.2 idea启动TomCat因为端口号失败的问题 3.Servlet使用流程 3.1 Servlet简单图解 3.2 Servlet导入依赖 3.3 编写Servlet和add.html 3.4 试着使用Jdbc和Dao层连接水果库存…

如何是Jetpack Compose构建漂亮的应用程序

如何是Jetpack Compose构建漂亮的应用程序 Jetpack compose 是在 Android 上构建 UI 的未来。 如果您完全不熟悉 android 并且不知道 Jetpack Compose 是什么——它基本上是一种构建本机用户界面的新方法。 Jetpack compose官方站点 https://developer.android.com/jetpack/co…

MySQL执行顺序

MySQL执行顺序 MySQL语句的执行顺序也是在面试过程中经常问到的问题&#xff0c;并且熟悉执行顺序也有助于SQL语句的编写。 SELECT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT执行顺序如下&#xff1a; FROM ON JOIN WHERE GROUP BY # (开始使用别名) SUM # SUM等…

4.4——多重继承

在前面学习了一个派生类只有一个基类&#xff0c;这种派生方法称为单继承或单基派生。当一个派生类具有两个或多个基类时&#xff0c;这种派生方法称为多重继承或多基派生。 多重继承派生类的声明 在C中&#xff0c;声明具有两个以上基类的派生类与声明单基派生类的形式相似&a…

K8S:二进制安装K8S(单台master)

目录 一、安装K8S 1、拓扑图​编辑 2、系统初始化配置 3、部署docker引擎 4、部署etcd集群 ①etcd简介 ②准备签发证书环境 ③etcd部署 5、master部署组件 6、 部署 Worker Node 组件 7、 node节点部署flannel网络插件 一、安装K8S 1、拓扑图​​​​​​​ 2、系…

C++好难(4):类和对象(下)

okk我们终于来到了C类和对象的最后一节&#xff0c;大多都是对之前学习的内容做的补充 所以加油继续冲啦&#xff01; ∧_∧::   (&#xff65;ω&#xff65;):: /⌒  ⌒):: /へ_&#xff3f; / /:: (&#xff3f;&#xff3c;&#xff3c; &#xff90;)/::   &am…

一种轻松且客观介绍大模型方式,避免过度解读:一

这是我关于《一种轻松且客观介绍大模型方式&#xff0c;避免过度解读》第一篇 一、前言 这篇文章旨在为没有计算机科学背景的读者提供一些关于ChatGPT及其类似的人工智能系统&#xff08;如GPT-3、GPT-4、Bing Chat、Bard等&#xff09;如何工作的原理。ChatGPT是一种聊天机器…

【网络安全】mysql数据库提权

数据库提权 数据库提权适用场景前提条件提权步骤如何探查数据库服务是否启动 mysql提权mysql 获取数据库最高权限账号密码方法1.读取网站配置文件2. 读取数据库存储或备份文件3. 脚本暴力破解 利用udf提权udf定义udf提权原理udf常用函数1. 获取mysql版本号2.udf.dll放置到被攻击…

华为P60 Pro灵犀双Wi-Fi流畅通信,让你体验超凡网速

家里装有宽带的朋友&#xff0c;用手机进行无线网络连接时&#xff0c;经常会发现有2.4G和5G两个Wi-Fi信号网络。Wi-Fi信号是通过无线电波传输的&#xff0c;2.4G和5G是两个不同的频段&#xff0c;Wi-Fi信号就在这样的频段内进行传输。 2.4G信号频率低&#xff0c;在空气或障碍…

【机器学习】集成学习(理论)

集成学习&#xff08;理论&#xff09; 目录 一、何为集成学习二、集成学习最简单的模型&#xff1a;投票策略三、弱学习器的组合算法&#xff1a;自助聚合&#xff08;Bagging模型&#xff09;1、数据划分方法&#xff1a;自助法&#xff08;Bootstrap Method&#xff09;2、B…

决策树的介绍

一、介绍 决策树 (decision tree) 是一类常见的机器学习方法。它是一种树形结构&#xff0c;其中每个内部节点表示一个属性上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;最后每个叶节点代表一种分类结果。 例如&#xff0c;我们要对"这是好瓜吗?&qu…

3.docker—应用部署MySQL

文章目录 1、mysql部署2、使用Navicat客户端来连接 docker应用部署 docker出现后&#xff0c;这些软件的安装会变得比较简单 1、mysql部署 四步走&#xff1a; 1️⃣搜索mysql镜像 2️⃣拉取mysql镜像 3️⃣创建容器 4️⃣操作 遇到问题&#xff1a; 容器内的网络服务和…

MySQL定时刷新数据

一、步骤 1.查看定时策略是否开启&#xff0c;查看命令: show variables like %event_sche%; 2.显示的 event_scheduler 为 OFF 时用以下命令开启: set global event_scheduler1; 3.创建存储过程 use toursim_platform; -- 选择数据库toursim_platform delimiter // create pro…

【刷题之路Ⅱ】LeetCode 86. 分隔链表

【刷题之路Ⅱ】LeetCode 86. 分隔链表 一、题目描述二、解题1、方法1——先分离再连接1.1、思路分析1.2、代码实现 2、方法2——将较大的节点后移2.1、思路分析2.2、代码实现 一、题目描述 原题连接&#xff1a; 86. 分隔链表 题目描述&#xff1a; 给你一个链表的头节点 head…

科大讯飞交卷,实测星火大模型

作者 | 辰纹 来源 | 洞见新研社 星星之火&#xff0c;可以燎原。 5月6日&#xff0c;讯飞星火认知大模型揭开神秘面纱。 发布会上&#xff0c;科大讯飞董事长刘庆峰、研究院院长刘聪现场实测了星火大模型七大核心能力&#xff0c;并发布基于该大模型的教育、办公、汽车和数字…

docker-mysql的几个问题

来水一篇文章 文章目录 问题一&#xff1a;问题2&#xff1a; 问题一&#xff1a; 在Navicat上执行大脚本mysql的sql文件时&#xff0c;出现插入数据报错的问题&#xff0c;查了一下innodb_log_file_size参数show variables like innodb_log_file_size;只有50331648即48M&…

WB_BF项目问题说明以及探究

我就现在WB_BF项目群里面提到的“根据测试脚本运行日志来看&#xff0c;bf运行了约31小时后又开始出现了api调用返回nginx的错误信息。之后&#xff0c;bf客户端也无法打开。”问题做一下说明&#xff0c;今天早上我在机器上复现了这一问题。针对于api调用会返回nginx的错误信息…

CTF权威指南 笔记 -第四章Linux安全机制-4.1-Linux基础

常用命令 这里给出linux常用命令 cd ls pwd 显示当前工作目录 uname 打印系统信息 whoami 打印用户名 man 查询帮助信息 find echo cat less head grep diff mv cp rm ps top kill touch 创建文件 mkdir 创建文件夹 chmod 变更权限 chown 变更所属者 nano 终端文本编辑器 e…

MySQL获取当前日期、时间、时间戳函数

目录 1.MySQL 获取当前日期时间 函数 1.1 获取当前日期&#xff08;date&#xff09;函数&#xff1a;curdate() 1.2 获取当前时间&#xff08;time&#xff09;函数&#xff1a;curtime() 1.3 获取当前日期时间&#xff08;date time&#xff09;函数&#xff1a;now() …