R-CNN(Region with CNN feature)

news/2024/11/26 23:17:56/

目录

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.ppmy.cn/news/39338.html

相关文章

Cartesi 2023 年 3 月回顾

2023 年 3 月 31 日 ,欢迎新一批建设者加入Cartesi 社区。我们在三月初非常愉快地结束了ETH Denver,看到所有使用Cartesi技术建立的创新项目,让我们印象深刻,这些项目来自我们今年的第一次黑客马拉松!想要了解更多关于…

Python 自动化指南(繁琐工作自动化)第二版:十二、网络爬取

原文:https://automatetheboringstuff.com/2e/chapter12/ 在那些没有 Wi-Fi 的罕见、可怕的时刻,我意识到我在电脑上做的事情有多少是我在互联网上做的。出于纯粹的习惯,我会发现自己试图查看电子邮件,阅读朋友的 Twitter 信息&am…

Python 进阶指南(编程轻松进阶):五、发现代码异味

原文:http://inventwithpython.com/beyond/chapter5.html 导致程序崩溃的代码显然是错误的,但是崩溃并不是发现程序问题的唯一手段。其他迹象可能表明程序存在更微妙的错误或不可读的代码。就像气体的味道可以指示气体泄漏或者烟雾的味道可以指示火灾一样…

【高分好刊邀稿】IEEE出版社,中科院1区(TOP),CCF-C类,涵盖网络物理系统智能领域

IEEE出版社 【期刊简介】IF:7.0-8.0,JCR1区,中科院1区(TOP) 【检索情况】SCI&EI 双检,正刊,CCF-C类 【参考周期】3-5个月左右录用 【截稿日期】2023.7.30 【征稿领域】网络物理系统在生物医学中的应用…

Python四种常用的高阶函数,你会用了吗

1、什么是高阶函数 把函数作为参数传入,这样的函数称为高阶函数 例如: def func1(x,y,f): return f(x) f(y)num func1(-10, 2, abs) print(num) 注意: 把函数作为参数传入的时候,不要再传入函数后面解括号, …

【ChatGPT】ChatGPT-5 强到什么地步?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 ChatGPT-5 强到什么地步? 技术 深度学习模型的升级 更好的预测能力 自适应学习能力 特点 语言理解能力更强 自我修正和优化 更广泛的应用领域 应用 对话系统 智能写作…

Centos7安装Redis

一、下载安装包 地址1: 下载地址:http://download.redis.io/releases/redis-4.0.14.tar.gz 下载后上传到服务器上,并解压: 地址2: 链接:https://pan.baidu.com/s/1aED9QbG4cgu4lO-gdFDt0Q 提取码&…

电脑清理怎么做?5个方法帮你解决电脑空间不足的问题!

案例:电脑清理怎么做? 【求一个电脑清理的好方法!电脑垃圾文件太多了又不敢随意删除,怕误删重要的文件!哪位友友可以帮我出出主意呀?到底应该怎么清理电脑呢?】 电脑使用的时间长了都会慢慢变…