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

目标检测-R-CNN

R-CNN在2014年被提出,算法流程可以概括如下:

  • 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal)

  • CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络)

  • 目标分类:训练分类模型(如svm等)识别目标物体和背景,对于每个类别都会有一个二元SVM

  • 目标定位:训练回归模型,预测每个被识别物体的边界框

综上所述,可以概括为选取候选区域-》提取特征-》分类模型-》回归模型。R-CNN的整体设计思路,与传统图像目标检测很相似,只是将传统特征提取(HOG等方法)变为了卷积网络提取。

候选区域

候选区域(region proposal)选择方法有很多,比如EdgeBox、MSER、MCG和SelectivSearch等,其中SelectivSearch是比较有代表性的一种。

SelectiveSearch方法通常一张图像生成2000~3000左右的候选区域,通过SelectiveSearch产生的区域数量远远少于滑动窗口的穷举法产生的候选区域。具体过程如下:

  • 使用语义分割的方法,将图片中的每一个像素作为一组,利用颜色、纹理和边界等多尺度综合方法,将像素相近的组合为一个像素组。

  • 继续将各个像素组合并,直到整张图片合并完毕。

为了保证候选区域划分更加合理,Selective Search进行了如下设计:

  1. 多样性策略

为了保证候选区域的准确性,SelectiveSearch主要通过颜色空间变换和距离计算方式进行优化。

  • 颜色空间变化:将颜色空间可以转换为八种色彩空间。

  • 距离计算:距离计算包括了颜色距离、纹理距离、尺度相似度衡量、形状重合度衡量和最终相似度衡量。

    • 颜色距离:1)每一个区域用三通道的颜色直方图表示,每个颜色通道设定25bins的直方图,这样每个区域就有3*25=75维的向量;2)对75维进行L1-normal归一化,每个颜色通道累加和为1,三个通道累计和为3;3)如果区域i和区域j直方图一样,则颜色相似度为3;4)如果区域i和区域j直方图差别较大,由于累加取两个区域bin的最小值,因为差距越大,累加和越小,相似度越小

    • 纹理距离:1)论文采用SIFT方法,将每个颜色通道的8个方向计算方差为1的高斯微分;2)用L1-Normal

          对每个颜色通道的每个方向的10bins的直方图,得到8*10*3=240维向量;3)两个区域相似度越高,纹理距离越大,反之越小

    • 尺度相似度衡量:通过颜色距离和纹理距离进行合并,容易使得合并后的区域不断吞并周围的区域,导致多尺度只应用在那个局部,不是全局的多尺度。尺度相似度衡量,就是给小区域更高的权重,保证每个位置都是多尺度在合并

    • 区域重合度衡量:区域重合度主要是为了衡量两个区域的“吻合”程度,不能合并后出现断崖的区域。

    • 最终相似度衡量:将上述四种衡量方式加权合并,得到最终相似度衡量数值

特征提取

利用预训练模型(AlexNet、VGG、GoogLeNet、ResNet等)对候选区域进行特征提取,候选区域提取的图像尺寸大小不一,当时特征提取的网络大多需要将输入图像的大小进行统一。

以AlexNet网络为例,输入图像大小为227*227,通过CNN对候选区域进行特征提取,2000个候选区域组成2000*4096特征矩阵。

特征提取阶段主要涉及以下几个步骤:

  • 设计网络结构

网络结构可以有很多参照,例如AlexNet、VGG、GoogLeNet、ResNet等均可进行特征提取。

  • 有监督训练

相比于随机的初始化网络参数,使用预训练模型可以更快的让模型收敛,取得更好的效果。

  • fine-tune

为了使预训练模型更加适用于当前场景,需要对模型进行再训练,一般仅改变末基层网络参数或结构。

其中,特征提取需要注意以下几点:

  • 全连接层的输入数据尺寸都是固定的,因此在进行特征提取前,需要将输入图像进行裁剪或形变转为固定尺寸

如何裁剪更合理?

论文中尝试了3种裁剪方式,图中A是我们的候选区域,1)将bounding box扩展为正方形,然后进行裁剪,如果延伸到了图片外,使用bounding box中的颜色均值进行替代,如B)所示;2)先将bounding box裁剪出来,然后用bounding box中的颜色均值填充为裁剪的大小,如C)所示;3)直接将原始图像形变为需要的形状,如D。

什么是预训练模型(pre-train)?

预训练模型是指在其他训练集上已经训练好的初始模型,可以将此类模型迁移到现有问题,公用层的参数保持与原本相同,仅对部分网络层进行微调,也就是fine-tune(在训练)

为什么不在fine-tune后进行softmax分类,反而又进行svm分类器训练?

先上结论,论文中也进行添加softmax尝试,发现效果要低于svm。cnn模型相对比较容易过拟合,训练时需要较多的样本,因此在cnn训练阶段,标注是相对宽松的,一个bounding box可能仅包含了物体的一部分,也会被当做正样本。但在SVM阶段,需要bounding box将整个物体都包含进来才算正样本,这样能训练的数据量就很少,而svm在小样本上训练效果还可以,所以最终分类效果更好一些。

目标分类

假设需要检测的类别有N个,则需要训练N个分类器(常见SVM等),对每个图片中的候选区域的特征向量进行识别,假设有2000个候选区域,则产生[2000, N]的得分矩阵。

对2000*N的矩阵中每一列进行非极大值抑制(NMS),剔除重叠建议框,得到该类中得分高相对较高的建议框。

NMS是如何工作的?

假设在识别动物任务中,一张图片中一个猫有5个矩形框,矩形框中是猫的概率从低到高是a、b、c、d、e。

  • 将矩形框分别a、b、c、d与概率最大的e进行判断,计算IOU是否大于某个阈值

  • 假设a、b分别与e的IOU值都大于阈值,则丢弃a、b,e成为第一个被保留的矩形框

  • 从剩余的矩形框c、d中选择概率最大的d,计算c与d的IOU是否大于某个阈值,大于则保留d,丢弃c;小于则保留或丢弃c

  • 按照上述步骤进行重叠建议框剔除

IOU的阈值如何确定?

论文中尝试了0~0.5,在0.3是效果更好一些,小于0.3被标记为负样本;不同数据集阈值大小并不固定,需要进行尝试。

目标定位

Bounding Box Regression(边框回归):SelectiveSearch方法获得的区域相对粗略,使用回归模型对给定的区域结果进行预测得到一个更加准确的位置。

如图所示,黄色框是预测的Region Proposal,希望通过回归算法让黄色框更加接近真实的绿色框,即Ground Truth。

为什么回归可以用来目标定位?

当输入的Proposal和Ground Truth相差较小时(RCNN设置为IOU>0.6),认为此时是一种线性变换,此时可以用线性回归来对窗口进行微调,当IOU较小时,此时可能使用线性回归效果不理想。

RCNN存在一下问题:

  • 候选区域的提取,需要较多的磁盘空间来计算与存储;

  • 传统CNN等一些网络,要求输入图像尺寸统一,因此需要对输入图像做形变,可能会导致部分信息缺失

  • 大量的ProposalRegion存在重叠部分,每个ProposalRegion都需要通过主干网络(CNN等)进行计算,因此有很多重复性的计算

  • CNN网络、分类器、回归模型这三个流程,导致整体计算时间长、参数多等问题,训练流程不够迅捷。

相关文章:

目标检测-R-CNN

R-CNN在2014年被提出,算法流程可以概括如下: 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal) CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络) 目…...

【持续更新】Github实用命令

Intro 最近高强度使用github,遂小计于此作为备忘。 Basic github是一个代码管理软件,能够track文件变动并且管理版本,是当代coding必不可少的工具。当你安装好github在本地以后,你可以通过以下命令初始化当前文件夹&#xff08…...

docker 容器的基本使用

docker 容器 一、docker是什么? 软件的打包技术,就是将算乱的多个文件打包为一个整体,打包技术在没有docker容器之前,一直是有这种需求的,比如上节课我把我安装的虚拟机给你们打包了,前面的这种打包方式是…...

css让按钮放在最右侧

要将 el-button 按钮放在最右侧,可以使用多种方法,具体取决于使用的布局方式和样式库。以下是几种常见的解决方案: 方法 1:使用 CSS Flexbox Flexbox 是一种非常灵活的布局方式,可以轻松实现水平或垂直对齐。你可以将…...

8K+Red+Raw+ProRes422分享5个影视级视频素材网站

Hello,大家好,我是后期圈! 在视频创作中,电影级的视频素材能够为作品增添专业质感,让画面更具冲击力。无论是广告、电影短片,还是品牌宣传,高质量的视频素材都是不可或缺的资源。然而&#xff…...

Linux网络——UDP的运用

Linux网络——UDP的运用 文章目录 Linux网络——UDP的运用一、引入二、服务端实现2.1 创建socket套接字2.2 指定网络接口并bind2.3 接收数据并处理2.4 整体代码2.5 IP的绑定的细节 三、用户端实现3.1 创建套接字3.2 指定网络接口3.3 发生数据并接收3.4 绑定问题 四、代码五、UD…...

项目亮点案例

其实对我来说是日常操作,但是如果在面试的时候面试者能把日常的事情总结好发出来,其实足矣。 想让别人认同项目,选取的示例需要包含以下要素: 亮点项目四要素:明确的目标,问题点,解决方法和结果…...

Retrofit源码分析:动态代理获取Api接口实例,解析注解生成request,线程切换

目录 一,Retrofit的基本使用 1.定义api接口 2.创建Retrofit实例 3.获取api接口实例发起请求 二,静态代理和动态代理 1,静态代理 2,动态代理 三,动态代理获取Api接口实例 四,解析接口方法注解&…...

范德蒙矩阵(Vandermonde 矩阵)简介:意义、用途及编程应用

参考: Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares Stephen Boyd and Lieven Vandenberghe 书的网站: https://web.stanford.edu/~boyd/vmls/ Vandermonde 矩阵简介:意义、用途及编程应用 在数学和计算科学中&a…...

【中标麒麟服务器操作系统实例分享】java应用DNS解析异常分析及处理

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 情况描述 中标麒麟服务器操作系统V7运行在 ARM…...

网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析

国内外要闻 Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析 在网络安全的复杂战场中,近期出现了一个值得关注的动态:名为 Rockstar 2FA 的钓鱼即服务(PhaaS)工具包遭遇变故,意外推动了另一个新生服务 Flo…...

玩转OCR | 探索腾讯云智能结构化识别新境界

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 玩转OCR 腾讯云智能结构化识别产品介绍服务应用产品特征行业案例总结 腾讯云智能结构化识别 腾讯云智能结构化OCR产品分为基础版与高级版&am…...

idea2024创建JavaWeb项目以及配置Tomcat详解

今天呢,博主的学习进度也是步入了JavaWeb,目前正在逐步杨帆旗航,迎接全新的狂潮海浪。 那么接下来就给大家出一期有关JavaWeb的配置教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正…...

外连接转AntiJoin的应用场景与限制条件 | OceanBase SQL 查询改写系列

在《SQL 改写系列:外连接转内连接的常见场景与错误》一文中,我们了解到谓词条件可以过滤掉连接结果中的 null 情形的,将外连接转化为内连接的做法是可行的,正如图1中路径(a)所示。此时,敏锐的你或许会进一步思考&#…...

华为实训课笔记 2024 1223-1224

华为实训 12/2312/24 12/23 [Huawei]stp enable --开启STP display stp brief --查询STP MSTID Port Role STP State Protection 实例ID 端口 端口角色 端口状态 是否开启保护[Huawei]display stp vlan xxxx --查询制定vlan的生成树计算结…...

MySQL超详细安装配置教程(亲测有效)

目录 1.下载mysql 2.环境配置 3.安装mysql ​4.navicat工具下载与连接 ​5总结 1.下载mysql mysql下载--MySQL :: 下载 MySQL 社区服务器 下载的时候这里直接逃过就行 我这里的版本是最新的mysql8.0.37 下载完成之后,将压缩包进行解压 这里我建议大…...

MySQL 8.0:explain analyze 分析 SQL 执行过程

介绍 MySQL 8.0.16 引入一个实验特性:explain formattree ,树状的输出执行过程,以及预估成本和预估返 回行数。在 MySQL 8.0.18 又引入了 EXPLAIN ANALYZE,在 formattree 基础上,使用时,会执行 SQL &#…...

信管通低代码信息管理系统应用平台

目前,国家统一要求事业单位的电脑都要进行国产化替代,替代后使用的操作系统都是基于linux的,所有以前在WINDOWS下运行的系统都不能使用了,再者,各单位的软件都很零散,没有统一起来。需要把日常办公相关的软…...

git推送本地仓库到远程(Gitee)

目录 一、注册创建库 二、创建仓库 三、推送本地仓库到远程 1.修改本地仓库用户名和邮箱 2.本地库关联远程仓库 3.拉取远程仓库的文件 4.推送本地库的文件 5.查看远程仓库 四、远程分支查看 1.查看远程分支 2.修改test.txt文件 一、注册创建库 Gitee官网&#xff1…...

【C++语言】多态

一、多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某种行为,当不同的对象去完成时会产生出不同的状态。 我们可以举一个例子: 比如买票这种行为,当普通人买票时,是全价买票&am…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

小木的算法日记-多叉树的递归/层序遍历

🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...

sshd代码修改banner

sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...