当前位置: 首页 > news >正文

【CV 目标检测】②R-CNN模型

二、R-CNN网络基础

2.R-CNN模型

2014年提出R-CNN!网络,该网络不再使用暴力穷举的方法,而是使用候选区域方法(region proposal method)创建目标检测的区域来完成目标检测的任务,R-CNN是以深度神经网络为基础的目标检测的模型,以R-CNN为基点,后续的Fast R-CNN,Fast R-CNN模型都延续了这种目标检测思路

(1)算法流程

步骤:

  1. 候选区域生成:使用选择性搜索(Selective Search,SS)的方法找出图片中可能存在目标的候选区域
  2. CNN网络提取特征:选取预训练卷积神经网络(AlexNet或VGG)用于进行特征提取
  3. 目标分类:训练支持向量机(SVM)来辨别目标物体和背景,对每个类别,都要训练一个二元SVM。
  4. 目标定位:训练一个线性回归模型(修正坐标),为每个辨识到物体生成更精确的边界框

(1)候选区域生成

选择性搜索中,使用语义分割的方法,它将颜色,边界,纹理等信息作为合并条件,采用多尺度的综合方法,将图像在像素级上划分出一系列的区域,这些区域要远少于传统的滑动窗口的穷举法产生的候选区域。(根据图像像素点的相似性,分成不同的子区域,获取外包矩形)

SelectiveSearch在一张图片上提取出来约2000个候选区域,需要注意的是这些候选区域的长宽不固定。而使用CNN提取候选区域的特征向量,需要接受固定长度的输入,所以需要对候选区域做一些尺寸上的修改。

(2)CNN网络提取特征

采用预训练模型(AlexNet或VGG)在生成的候选区域上进行特征提取,将提取好的特征保存在磁盘中,用于后续步骤的分类和回归

  1. 全连接层的输入数据的尺寸是固定的,因此在将候选区域送入CNN网络时,需进行裁剪或变形为固定的尺寸,再进行特征提取。
  2. 预训练模型在ImageNet数据集上获得,最后的全连接层是1000,在这里我们需要将其改为N+1(N为目标类别的数目,例如VOC数据集中N = 20,COCO数据集中N= 80,1是加一个背景)后,进行微调即可。

VGG16

  1. 利用微调后的CNN网络,提取每一个候选区域的特征,获取一个4096维的特征(将最后的全连接层去掉,该4096维特征即表示某一个候选区域的结果),一幅图像就是2000x4096维特征存储到磁盘中。(有2000个候选区域)

(3)目标分类(SVM)

对于N个类别的检测任务,需要训练N(目标类别数目)个SVM分类器,对候选区域的特征向量(4096维)进行二分类,判断其是某一类别的目标,还是背景来完成目标分类

(4)目标定位

通过选择性搜索获取的目标位置不是非常准确,实验证明,训练一个线性回归模型在给定的候选区域的结果上去预测一个新的检测窗口,能够获得更精确的位置。修正过程如下图所示:

通过训练一个回归器来对候选区域的范围进行一个调整,这些候选区域最开始只是用选择性搜索的方法粗略得到的,通过调整之后得到更精确的位置

(5)预测过程

使用选择性搜索的方法从一张图片中提取2000个候选区域,将每个区域送入CNN网络中进行特征提取,然后保存至磁盘中,然后送入到SVM中进行分类,并使用候选框回归器,计算每个候选区域的位置。候选区域较多,有2000个,需要剔除掉部分检测结果。针对每个类,通过计算IOU,采取非极大值抑制NMS方法,保留比较好的检测结果。

算法总结

  1. 训练阶段多,训练耗时:微调CNN网络+训练SVM+训练边框回归器
  2. 预测速度慢:使用GPU,VGG16模型处理一张图像需要47s
  3. 占用磁盘空间大:5000张图像产生几百G的特征文件。
  4. 数据的形状变化:候选区域要经过缩放来固定大小,无法保证目标的不变形
http://www.dtcms.com/a/333055.html

相关文章:

  • C# 中的计时器:Stopwatch 用法解析
  • diffusers学习--stable diffusion的管线解析
  • 第五天~提取Arxml的模板信息
  • react项目性能优化的hook
  • UGUI源码剖析(9):布局的实现——LayoutGroup的算法与实践
  • java程序打包成exe,再打成安装包,没有jdk环境下可运行
  • 【完整源码+数据集+部署教程】孔洞检测系统源码和数据集:改进yolo11-RetBlock
  • 金刚石基植入体新突破!Adv. Funct. Mater. 报道首例增材制造固态摩擦电能量收集器
  • 【FastGTP✨】[01] 使用 FastGPT 搭建简易 AI 应用
  • 部署Qwen-Image,通过API返回可访问的图像URL
  • 以下是对智能电梯控制系统功能及系统云端平台设计要点的详细分析,结合用户提供的梯控系统网络架构设计和系统软硬件组成,分点论述并补充关键要点:
  • 一文打通 AI 知识脉络:大语言模型等关键内容详解
  • 铨林接纸机学习记录1
  • AI智能文档生成系统需求规格说明书
  • Linux 进程、线程与 exec/系统调用详解
  • MySQL中的字符串函数
  • PowerShell 格式化系统完全掌握(下):自定义列/格式字符串/对齐与宽度 + 实战模板
  • 抗日胜利80周年 | HTML页面
  • 智和信通全栈式运维平台落地深圳某学院,赋能运维管理提质提效
  • TCP传输层协议(4)
  • 微信实名认证组件
  • 二十四、Mybatis-基础操作-删除(预编译SQL)
  • SAP ALV导出excel 报 XML 错误的 /xl/sharedStrings.xml
  • Android协程的用法大全
  • 汽车电子:现代汽车的智能核心
  • Unity_数据持久化_Json
  • 使用原生css实现word目录样式,标题后面的...动态长度并始终在标题后方(生成点线)
  • 第七十章:告别“手写循环”噩梦!Trainer结构搭建:PyTorch Lightning让你“一键炼丹”!
  • Codeforces Deque工艺
  • 用 FreeMarker 动态构造 SQL 实现数据透视分析