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

计算机视觉目标检测-2

文章目录

  • 摘要
  • abstract
  • 1.Fast R-CNN
    • 1.1 RoI pooling
    • 1.2 End-to -End model
    • 1.3 多任务损失-Multi-task loss
    • 1.4 R-CNN、SPPNet、Fast R-CNN效果比对
  • 2.Faster R-CNN
    • 2.1 RPN原理
    • 2.2 效果对比
    • 2.3 Faster R-CNN总结
  • 3.总结
  • 4.参考文献

摘要

本周学习了Fast R-CNN和Faster R-CNN算法的核心思想、技术细节和创新点,并对其性能进行比较。Fast R-CNN通过引入ROI Pooling层解决了R-CNN中重复计算特征的问题,同时采用多任务损失函数将分类和边框回归整合为一个端到端的模型。相比于Fast R-CNN,Faster R-CNN进一步提出了区域生成网络(RPN),取代了耗时的Selective Search,显著提升了候选区域生成的效率。并讨论了两种算法在实际应用中的优势与不足,尤其是Faster R-CNN在端到端整合和实时检测方面的潜力。同时,对训练过程和改进方向,如YOLO系列算法的快速检测,进行了简要展望。

abstract

This week, we studied the core ideas, technical details and innovations of Fast R-CNN and Faster R-CNN algorithms, and compared their performance. Fast R-CNN solves the problem of repeated calculation features in R-CNN by introducing ROI Pooling layer, and integrates classification and border regression into an end-to-end model by using multi-task loss function. Compared with Fast R-CNN, Faster R-CNN further proposes region generation network (RPN), which replaces time-consuming Selective Search and significantly improves the efficiency of candidate region generation. The advantages and disadvantages of the two algorithms in practical applications are discussed, especially the potential of Faster R-CNN in end-to-end integration and real-time detection. At the same time, the training process and improvement direction, such as the fast detection of YOLO series algorithms, are briefly prospected.

1.Fast R-CNN

相对于上一周的R-CNN改进的地方:

  1. 提出了一个ROI pooling
  2. 分类使用softmax计算:K个类别加上”背景“类
  3. 与SPPNet一样的地方:
    • 首相将整个图片输入到一个基础卷积网络,得到整张图的feature map
    • 将选择性搜索算法的结果region proposal(RoI)映射到feaure map 中
  4. ROI pooling layer提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个RoI特征向量

R-CNN与Fast R-CNN的区别有哪些呢?
先说R-CNN的缺点:即使使用了Selective Search等预处理步骤来提取潜在的边界框bounding box作为输入,但是R-CNN仍会有严重的速度瓶颈,原因也很明显,就是计算机对所有region进行特征提取时会有重复计算,Fast-RCNN正是为了解决这个问题诞生的。
在这里插入图片描述
与R-CNN框架图对比,可以发现主要有两处不同:一是最后一个卷积层后加了一个ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到CNN网络中训练。

  • 这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量,而conv、pooling、relu等操作都不需要固定size的输入,因此,在原始图片上执行这些操作后,虽然输入图片size不同导致得到的feature map尺寸也不同,不能直接接到一个全连接层进行分类,但是可以加入这个神奇的ROI Pooling层,对每个region都提取一个固定维度的特征表示,再通过正常的softmax进行类型识别。
  • R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。

也就是说,之前R-CNN的处理流程是先提取proposal,然后CNN提取特征,之后使用SVM分类器,最后再做box regression,在Fast R_CNN中,作者将box regression 放进神经网络内部,与region 分类和并成一个muti-task模型,实际验证也证明:这两个任务能够共享卷积特征,并互相促进。

1.1 RoI pooling

RoI pooling本质上是一个简单的SPP,目的是为了减少计算时间并得出固定长度的向量。使用一种4*4=16空间盒数。

  • RoI pooling使用最大池化将任何有效的RoI区域内的特征转换成具有H*W的固定空间范围的小feature map,其中H和W是超参数,它们独立于任何特定的RoI.

为什么要设置单个尺度(SPP金字塔–多尺度以及single scale)

  • single scale ,直接将image定为某种scale,直接输入网络中进行训练(Fast R-CNN)
  • muti scale:使用金字塔模型

== 后者比前者更加准确些,虽然没有很明显,但是第一种时间要省很多,在实际中采用第一个策略,因此 Fast R-CNN要比SPPNet快很多的原因。==

1.2 End-to -End model

从输入端到输出端直接用一个神经网络连接,整体优化目标函数。
思考:为什么后面的整个网络能进行统一训练?
特征提取CNN和SVM分类器的训练在时间上是有先后顺序的,两者的训练方式独立,在SVM的训练Loss无法更新SPP层之前的卷积层参数,去掉了SVM分类这一过程,所有特征都存储在内存中,不占用硬盘空间,形成了End-to-End模型。
在这里插入图片描述
Fast-RCNN很重要的一个贡献是成功的让人们看到了Region Proposal + CNN这一框架实时检测的希望,原来多类检测可以在保证准确率的同时提升处理速度,也为后来的Faster R-CNN做下了铺垫。

1.3 多任务损失-Multi-task loss

两个loss

  • 对于分类loss,是一个N+1个softmax输出,其中N是类别的个数,1为背景,使用交叉熵损失
  • 对于回归loss,是一个4*N个输出的regressor,对于每个类别都会训练一个单独的regressor,使用平均绝对误差损失-L1损失

fine-tuning训练:

  • 再微调时,调整CNN+RoI pooling+softmax
  • 调整bbox regressor回归当中的参数

1.4 R-CNN、SPPNet、Fast R-CNN效果比对

在这里插入图片描述
缺点:使用Selective Search提取Region Proposals,没有实现真正意义上的端到端,操作也十分耗时。

2.Faster R-CNN

在Faster R-CNN中加入一个提取边缘的神经网络,相当于找候选框的工作交给了神经网络来操作。这样,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)被统一放到一个深度网络框架之内。
Faster R-CNN可以简单的看成区域生成网络+Fast R-CNN模型,用区域生成网络(RPN)来代替Fast R-CNN中的选择性搜索方法。
在这里插入图片描述
Faster R-CNN步骤:

  1. 向CNN网络中输入图片,Faster RCNN使用一组基础的conv+relu+pooling层提取feature map.该feature map被共享用于后续RPN层和全连接层。
  2. Region Proposal Networks:RPN网络用于生成region proposals,Faster R-CNN中称为anchors。
    • 通过softmax 判断anchors属于foreground 或者background
    • 再利用bonding box regression 修正anchors获得精确的proposals,输出其Top-N(默认为300)的区域给RoI pooling。
    • 生成anchors ->softmax分类器提取fg anchors-> bbox reg回归fg anchors ->Proposal Layer生成proposals
    • 后续就是Fast R-CNN操作
      在这里插入图片描述

2.1 RPN原理

RPN网络主要作用是得出比较准确的候选区域。整个过程分为两步:
首先,使用nn(默认为33=9)的大小窗口去扫描特征图,每个滑窗位置映射到一个低维的向量(默认为256维),并为每个滑窗位置考虑k种(在论文设计种为9)可能的参考窗口(论文中称为anchors)
在这里插入图片描述
每个特征图中像素对应的9个窗口大小?
三种尺度{128,256,512},三种长宽比{1:1,1:2,2:1}得到3*3=9种不同大小的候选框。输出N个256维的窗口,做分类判断是否是背景,N个候选框与自己对应目标值GT做回归,修正位置。之后将更好的候选区域提供给RoI pooling使用。

2.2 效果对比

在这里插入图片描述

2.3 Faster R-CNN总结

优点:

  • 提出了RPN网络
  • 端到端网络模型

缺点:
训练参数过大

可以改进的需求:
速度提升,如YOLO系列算法,删去RPN,直接对proposal进行分类回归,极大的提升了网络的速度。
代码结果:
在这里插入图片描述
运行结果如下图:
在这里插入图片描述
在这里插入图片描述

3.总结

Fast R-CNN通过引入ROI Pooling和多任务损失函数,优化了目标检测流程,提高了计算效率和检测精度。Faster R-CNN进一步结合区域生成网络(RPN),在深度学习框架内实现了候选区域生成、特征提取和分类的统一训练。这种端到端设计不仅提高了检测速度,也在准确率上达到了新的高度。然而,Faster R-CNN模型的训练参数较多,对硬件资源要求较高,适应性仍有待提升。

4.参考文献

[1] R. Girshick, “Fast R-CNN,” 2015 IEEE International Conference on Computer Vision (ICCV), Santiago, Chile, 2015, pp. 1440-1448.DOI: 10.1109/ICCV.2015.169
[2] S. Ren, K. He, R. Girshick and J. Sun, “Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 39, no. 6, pp. 1137-1149, June 2017.DOI: 10.1109/TPAMI.2016.2577031

相关文章:

计算机视觉目标检测-2

文章目录 摘要abstract1.Fast R-CNN1.1 RoI pooling1.2 End-to -End model1.3 多任务损失-Multi-task loss1.4 R-CNN、SPPNet、Fast R-CNN效果比对 2.Faster R-CNN2.1 RPN原理2.2 效果对比2.3 Faster R-CNN总结 3.总结4.参考文献 摘要 本周学习了Fast R-CNN和Faster R-CNN算法…...

爬虫数据存储:Redis、MySQL 与 MongoDB 的对比与实践

爬虫的核心任务是从网络中提取数据,而存储这些数据是流程中不可或缺的一环。根据业务需求的不同,存储的选择可能直接影响数据处理的效率和开发体验。本文将介绍三种常用的存储工具——Redis、MySQL 和 MongoDB,分析它们的特点,并提…...

深入解析MySQL索引结构:从数组到B+树的演变与优化

前言: 在数据库查询中,索引是一种关键的性能优化工具。然而,索引的失效可能导致查询效率大幅下降。为了更好地理解索引的工作原理及规避其失效,深入了解索引结构的演变过程尤为重要。 MySQL 的索引数据结构从简单到复杂&#xff0…...

【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?

今天在开发一个HarmonyOS NEXT的应用的时候,发现http接口如果返回的状态码是424时,我在axios中定义的拦截器失效了。直接走到了业务调用的catch中。 问题表现: 我的拦截器代码如下: 解决办法: 先说解决办法&#xff…...

jmeter并发用户逐步递增压测找性能拐点

jmeter并发用户逐步递增压测找性能拐点 目的: 使用逐层递增的并发压力进行测试,找到单功能的性能拐点(一般需要包含四组测试结果,拐点前一组,拐点一组,拐点后两组),统计响应时间、…...

【PostgreSQL使用】最新功能逻辑复制槽的failover,大数据下高可用再添利器

逻辑复制的failover ​专栏内容: postgresql入门到进阶手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. ✅ &#x1f52…...

【开源免费】基于SpringBoot+Vue.JS租房管理系统(JAVA毕业设计)

本文项目编号 T 102 ,文末自助获取源码 \color{red}{T102,文末自助获取源码} T102,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

Linux下Nvidia显卡GPU开启驱动持久化

GPU开启驱动持久化的原因 GPU 驱动一直处于加载状态, 减少运行程序时驱动加载的延迟。不开启该模式时,在程序每次调用完 GPU 后, GPU 驱动都会被卸载,下次调用时再重新加载, 驱动频繁卸载加载, GPU 频繁被…...

MS SQL Server 实战 排查多列之间的值是否重复

目录 需求 范例运行环境 数据样本设计 功能实现 上传EXCEL文件到数据库 SQL语句 小结 需求 在日常的应用中,排查列重复记录是经常遇到的一个问题,但某些需求下,需要我们排查一组列之间是否有重复值的情况。比如我们有一组题库数据&am…...

【玩转MacBook】Git安装

Git 官网也提到了MacBook 可以使用 Homebrew 安装 Git,所以在此使用 Homebrew 安装。 1、安装 Homebrew 执行安装脚本 在 Terminal 中执行如下命令: /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.…...

【优先算法】双指针 --(结合例题讲解解题思路)(C++)

今日鸡汤: “无人负我青云志,我自踏雪至山巅。” -徐霞客《青云志》 释义:没有人能够帮助我实现我的理想,即使面对再大的困难,我也要踏着积雪,一步步,到达山巅。 目录 1.快乐数 2.盛最多的…...

简述css中z-index的作用?如何用定位使用?

z-index是一个css属性,用于控制元素的堆叠顺序, 如何使用定位用index 1、position:relative; z-index; 相对于自己来定位的,可以根据top,bottom,right,left&#xff…...

Redis——数据淘汰策略

文章目录 1. 引入2. 讲解2.1 Redis 中的 8 种数据淘汰策略2.2 LRU 和 LFU 算法2.3 建议 3. 总结 1. 引入 在 Redis——数据过期策略 的“引入”部分讲解过,Redis 的数据存在内存中,而内存容量相对较小,不能将大量数据 无限期 地缓存。然而&a…...

机器学习之KNN算法预测数据和数据可视化

机器学习及KNN算法 目录 机器学习及KNN算法机器学习基本概念概念理解步骤为什么要学习机器学习需要准备的库 KNN算法概念算法导入常用距离公式算法优缺点优点:缺点︰ 数据可视化二维界面三维界面 KNeighborsClassifier 和KNeighborsRegressor理解查看KNeighborsRegr…...

前端node.js

一.什么是node.js 官网解释:Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。 二.初步使用node.js 需要区分开的是node.js和javascript互通的只有console和定时器两个API. 三.Buffer Buffer 是一个类似于数组的对象,用于表示固定长度的字节序列。 Buffer…...

Excel基础知识

一:数组 一行或者一列数据称为一维数组,多行多列称为二维数组,数组支持算术运算(如加减乘除等)。 行:{1,2,3,4} 数组中的每个值用逗号分隔列:{1;2;3;4} 数组中的每个值用分号分隔行列&#xf…...

Spring Boot对访问密钥加密解密——RSA

场景 用户无需登录,仅仅根据给定的访问keyId和keySecret就可以访问接口。 keyId 等可以明文发送(不涉及机密),后端直接从请求头读取。keySecret 不可明文,需要加密后放在另一个请求头(或请求体&#xff0…...

Vue介绍

一、Vue框架简介 Vue.js是一个用于构建用户界面的渐进式JavaScript框架。它的核心库只关注视图层,易于上手,并且可以与其他库或现有项目进行整合。其特点包括响应式数据绑定、组件化开发和虚拟DOM等。 响应式数据绑定 Vue通过Object.defineProperty()方法来进行数据劫持。当…...

表单元素(标签)有哪些?

HTML 中的表单元素&#xff08;标签&#xff09;用于收集用户输入的数据&#xff0c;常见的有以下几种&#xff1a; 文本输入框 <input type"text">&#xff1a;用于单行文本输入&#xff0c;如用户名、密码等。可以通过设置maxlength属性限制输入字符数&…...

人工智能与云计算的结合:如何释放数据的无限潜力?

引言&#xff1a;数据时代的契机 在当今数字化社会&#xff0c;数据已成为推动经济与技术发展的核心资源&#xff0c;被誉为“21世纪的石油”。从个人消费行为到企业运营决策&#xff0c;再到城市管理与国家治理&#xff0c;每个环节都在生成和积累海量数据。然而&#xff0c;数…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...