目标检测算法——R-CNN

简介: 目标检测算法——R-CNN

1.R-CNN简介


R-CNN(Region with CNN feature)

文章的全称为:Rich feature hierarchies for accurate object detection andsemantic segmentation,原文链接

翻译过来就是针对高准确度的目标检测与语义分割的多特征层级,通俗地来讲就是一个用来做目标检测和语义分割的神经网络。


这篇论文发布时间是 2014 年,它具有很多比较重要的意义。

  1. 在 Pascal VOC 2012 的数据集上,能够将目标检测的验证指标 mAP 提升到 53.3%,这相对于之前最好的结果提升了整整 30%.
  2. 这篇论文证明了可以讲神经网络应用在自底向上的候选区域,这样就可以进行目标分类和目标定位。
  3. 这篇论文也带来了一个观点,那就是当你缺乏大量的标注数据时,比较好的可行的手段是,进行神经网络的迁移学习,采用在其他大型数据集训练过后的神经网络,然后在小规模特定的数据集中进行 fine-tune 微调。


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

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

image.png


2.R-CNN处理过程


1)候选区域的生成

能够生成候选区域的方法有很多,比如:

  • objectness
  • selective search
  • category-independen object proposals
  • constrained parametric min-cuts(CPMC)
  • multi-scale combinatorial grouping
  • Ciresan

其中,C-RNN采用是Selective Search算法(ss算法)。

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

image.png


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

将由第一步ss算法框选的2000个候选区域缩放到相同的尺寸227x227pixel,接着将候选区域输入事先训练好的AlexNet CNN网络获取4096维的特征得到2000×4096维矩阵。该矩阵的每一行代表了一个候选框的通过卷积网络后提取到的特征信息。

image.png


3)特征信息送入每一类的 SVM 分类器,判定类别

将2000×4096维特征与20个SVM组成的权值矩阵4096×20相乘,获得2000×20维矩阵表示每个建议框是某个目标类别的得分。

image.png

SVM的权值矩阵中的每一列代表了一类的权值;而相乘后所得到的矩阵的每一行,代表了一个候选框的20个类别的概率,2000表示一共有2000个候选框。

比如:第一行的第一个值代表了该第一个候选框是猫的概率,第二个值表示该候选框是狗的概率。而第二行的第一个值就代表了第二个候选框是猫的概率。

image.png

然后分别对上述2000×20维矩阵中每一列即每一类进行非极大值抑制剔除重叠建议框,得到该列即该类中得分最高的一些建议框。


非极大值抑制剔除重叠建议框

IoU(Intersection over Union)表示(A∩B)/(A∪B),也就是两个区域的交并比。

image.png

具体操作是:

对于每一类中,有2000个候选框,其中我们寻找其中得分最高的目标,然后计算其他目标与该目标的iou值,然后删除所有iou值大于给定阈值的目标。因为如果iou值大于给定阈值,就说明了这两者其中是可以被看作是同一个目标,所以可以选择得分高的,然后删除其他得分低的。如此反复循环,不断地减少候选框的个数。

image.png

如此操作后,希望得到的是一个最完美的边界框。

以上的操作,是对2000x20维的概率矩阵的每一列,都做刚刚所说的非极大值抑制处理。因为每一列是对于同一个类别的概率。


4)使用回归器精细修正候选框位置

通过ss算法得到的目标候选框其实位置不算是那么的准确,所以需要通过回归器修正位置。


对NMS处理后剩余的建议框进一步筛选。具体做法是,保留与真实标准的边界框有相交的,并且iou要大于某一个阈值,不满足就要将其删除掉。


接着分别用20个回归器对上述20个类别中剩余的建议框进行回归操作,最终得到每个类别的修正后的得分最高的bounding box。这是针对卷积神经网络输出的特征向量进行预测的。利用每一个边界框4096维的特征信息来进行预测的。


通过回归分类器之后,会得到四个参数,分别得到目标建议框中心的x偏移量与y偏移量,以及边界框的高度缩放因子与宽度缩放因子。一共四个值,通过这四个值来对建议框进行调整,得到一个红色的建议框。


如图,黄色框口P表示通过ss算法得到的候选建议框Region Proposal,绿色窗口G表示实际框Ground Truth,红色窗口表示Region Proposal进行回归后的预测窗口,可以用最小二乘法解决的线性回归问题。

image.png

R-CNN框架

image.png


3.R-CNN存在的问题


  1. 测试速度慢:

测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大量重叠,提取特征操作冗余。因为得到的这些候选框会有很多重叠的部分。

  1. 训练速度慢:

过程及其繁琐。不仅要训练图像分类网络,还有训练SVM分类器,还有训练回归器,这几个模型的训练都是独立的,所以费时费力。

  1. 训练所需空间大:

对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。


参考资料:

b站u主视频:https://www.bilibili.com/video/BV1af4y1m7iL

https://blog.csdn.net/briblue/article/details/820125 75

目录
相关文章
|
2月前
|
监控 安全 算法
137_安全强化:输入过滤与水印 - 实现输出水印的检测算法与LLM安全防护最佳实践
随着大语言模型(LLM)在各行业的广泛应用,安全问题日益凸显。从提示注入攻击到恶意输出生成,从知识产权保护到内容溯源,LLM安全已成为部署和应用过程中不可忽视的关键环节。在2025年的LLM技术生态中,输入过滤和输出水印已成为两大核心安全技术,它们共同构建了LLM服务的安全防护体系。
|
3月前
|
传感器 资源调度 算法
DDMA-MIMO雷达多子带相干累积目标检测算法——论文阅读
本文提出一种多子带相干累积(MSCA)算法,通过引入空带和子带相干处理,解决DDMA-MIMO雷达的多普勒模糊与能量分散问题。该方法在低信噪比下显著提升检测性能,实测验证可有效恢复目标速度,适用于车载雷达高精度感知。
478 4
DDMA-MIMO雷达多子带相干累积目标检测算法——论文阅读
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
6月前
|
机器学习/深度学习 运维 监控
实时异常检测实战:Flink+PAI 算法模型服务化架构设计
本文深入探讨了基于 Apache Flink 与阿里云 PAI 构建的实时异常检测系统。内容涵盖技术演进、架构设计、核心模块实现及金融、工业等多领域实战案例,解析流处理、模型服务化、状态管理等关键技术,并提供性能优化与高可用方案,助力企业打造高效智能的实时异常检测平台。
478 1
|
5月前
|
存储 监控 算法
基于跳表数据结构的企业局域网监控异常连接实时检测 C++ 算法研究
跳表(Skip List)是一种基于概率的数据结构,适用于企业局域网监控中海量连接记录的高效处理。其通过多层索引机制实现快速查找、插入和删除操作,时间复杂度为 $O(\log n)$,优于链表和平衡树。跳表在异常连接识别、黑名单管理和历史记录溯源等场景中表现出色,具备实现简单、支持范围查询等优势,是企业网络监控中动态数据管理的理想选择。
158 0
|
10月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
本研究基于MATLAB 2022a,使用GRU网络对QAM调制信号进行检测。QAM是一种高效调制技术,广泛应用于现代通信系统。传统方法在复杂环境下性能下降,而GRU通过门控机制有效提取时间序列特征,实现16QAM、32QAM、64QAM、128QAM的准确检测。仿真结果显示,GRU在低SNR下表现优异,且训练速度快,参数少。核心程序包括模型预测、误检率和漏检率计算,并绘制准确率图。
289 65
基于GRU网络的MQAM调制信号检测算法matlab仿真,对比LSTM
|
6月前
|
机器学习/深度学习 监控 算法
面向办公室屏幕监控系统的改进型四叉树屏幕变化检测算法研究
本文提出一种改进型四叉树数据结构模型,用于优化办公室屏幕监控系统。通过动态阈值调节、变化优先级索引及增量更新策略,显著降低计算复杂度并提升实时响应能力。实验表明,该算法在典型企业环境中将屏幕变化检测效率提升40%以上,同时减少资源消耗。其应用场景涵盖安全审计、工作效能分析及远程协作优化等,未来可结合深度学习实现更智能化的功能。
120 0
|
9月前
|
机器学习/深度学习 存储 算法
基于MobileNet深度学习网络的活体人脸识别检测算法matlab仿真
本内容主要介绍一种基于MobileNet深度学习网络的活体人脸识别检测技术及MQAM调制类型识别方法。完整程序运行效果无水印,需使用Matlab2022a版本。核心代码包含详细中文注释与操作视频。理论概述中提到,传统人脸识别易受非活体攻击影响,而MobileNet通过轻量化的深度可分离卷积结构,在保证准确性的同时提升检测效率。活体人脸与非活体在纹理和光照上存在显著差异,MobileNet可有效提取人脸高级特征,为无线通信领域提供先进的调制类型识别方案。
|
9月前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
10月前
|
机器学习/深度学习 数据采集 算法
基于WOA鲸鱼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB 2022a实现时间序列预测,采用CNN-GRU-SAM网络结构,结合鲸鱼优化算法(WOA)优化网络参数。核心代码含操作视频,运行效果无水印。算法通过卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征,全连接层整合输出。数据预处理后,使用WOA迭代优化,最终输出最优预测结果。

热门文章

最新文章