经典目标检测R-CNN系列(2)Fast R-CNN

news2024/11/28 13:56:55

经典目标检测R-CNN系列(2)Fast R-CNN

  • Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。

  • 同样使用VGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66%(Pascal VOC数据集上)。

1 Fast R-CNN的前向过程

Fast R-CNN算法流程可分为3个步骤

  • 一张图像生成1K~2K个候选区域(使用Selective Search方法)

  • 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上,获得相应的特征矩阵

  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

在这里插入图片描述

Fast R-CNN除了先以一个相对独立的步骤生成区域建议之外,其余4个主要环节均以整合在一起的神经网络结构来实现:卷积特征提取RoI特征提取类别预测和位置预测。目标检测的最后还包括后处理环节,实现包围框绝对位置计算、类别-位置绑定和基于NMS的冗余包围框去除。

在这里插入图片描述

1.1 卷积特征提取

  • R-CNN依次将候选框区域输入卷积神经网络得到特征。

  • Fast-RCNN将整张图像送入网络,紧接着从特征图像上提取相应的候选区域。这些候选区域的特征不需要再重复计算

在这里插入图片描述

  • Fast-RCNN不限制输入图像的尺寸。

  • 原始图像整体以全卷积(fully convolutional)方式输入CNN得到卷积特征图,以某一卷积层的特征图作为最终输出,得到卷积特征。

    • 例如,主干网络结构采用VGG16,以卷积层conv5_3的输出作为特征图,则得到的特征图具有512个通道,降采样倍率为16【卷积特征提取仅使用conv1至conv5部分】。

在这里插入图片描述

1.2 RoI特征提取

  • RoI池化层以卷积特征和经过对应比例缩小的区域建议(在Fast R-CNN中称为RoI)作为输入,对投射在特征图上的RoI进行W×H的网格划分(W和H为RoI池化层的超参数,分别表示网格的宽度和高度,也就是输出特征图的宽度和高度),逐通道在每个网格上做最大池化,各个通道独立操作。

  • 与SPP-Net不同的是,RoI池化层的网格划分仅在一个固定尺度上进行。即RoI池化可以看作是SPP-Net中SPP层的单一尺度版本。

  • RoI池化得到的特征图随后输入若干层全连接层,进行进一步的特征变换。

在这里插入图片描述

1.3 类别预测和位置预测

1.3.1 类别预测

得到的RoI特征“兵分两路”,分别进行类别预测与位置预测。

在类别预测分支中,RoI特征被输入一个输出维度为目标类别数 K 的全连接层、配有softmax分类器的分支网络,得到类别分布预测,从而实现类别判定。

在这里插入图片描述

1.3.2 位置预测

  • 位置预测分支中,RoI特征被输入以全连接层表示的包围框回归器

  • 该全连接层的输出为C×4,这里 C 为目标检测类别数,这里的4表示形如(dx§,dy§,dw§,dh§)的包围框位置变换参数

  • 可以看出Fast R-CNN包围框位置也是类别相关的

在这里插入图片描述

1.3.3 后处理

实现包围框绝对位置计算、类别-位置绑定和基于NMS的冗余包围框去除。

1.3.4 奇异值分解

  • 在Fast R-CNN中,类别预测与位置预测均通过全连接层实现,全连接操作的本质为向量的线性变换。

  • 例如产生的RoI数量为2000个(参考R-CNN中选择性搜索得到的区域建议个数),用于位置预测分支全连接层的乘法计算量将超过6.8亿次(具体为2000×84×4096=688128000次),如此大规模的计算需要大量的时间开销,严重限制了目标检测的速度。

  • 所以为了提高目标检测速度,Fast R-CNN采用基于奇异值分解。实践表明,Fast R-CNN利用该方法,以MAP损失0.3%的代价换来30%的速度提升。

2 Fast R-CNN的损失函数

2.1 分类损失

在这里插入图片描述

Fast R-CNN类别预测分支为每个RoI预测C个类别的概率分布p=(p0,p1,…,pC−1)

在基于神经网络的模型中,概率分布一般由具有C个输出的全连接层配合softmax函数得到

设与RoI相关的GT类别为u(u=0,1,…,C−1),则类别预测的损失可以定义为交叉熵误差
L c l s ( p , u ) = − l o g ⁡ p u L_{cls}(p,u)=−log⁡p_u Lcls(p,u)=logpu

2.2 边界框回归损失

在这里插入图片描述

从上述函数定义可以看出,与R-CNN和SPP-Net使用的 L2 损失相比,平滑 L1 损失对包围框位置偏差的惩罚、尤其是对偏差很大情况下(离群点,outliers)的惩罚更加平滑,从而防止梯度过大造成梯度爆炸(exploding gradients)。

2.3 Fast R-CNN的优缺点

优点

  • Fast R-CNN借鉴了SPP-Net的思路,保持了支持任意尺寸输入这一优良特性。

  • 将类别预测与位置预测结果作为模型的平行输出,与之对应的训练环节也以多任务模式同步完成。

  • 除了区域建议生成,其他大部分环节实现端到端,训练和测试速度均得到大幅提升。

  • 除此之外,Fast R-CNN在目标检测的准确率方面也达到很高的水平。

缺点

  • 在速度方面,从利用CNN提取卷积特征到获得最终结果,Fast R-CNN处理一幅图像的时间大约为0.3秒,但是如果以基于选择搜索的方法进行区域建议生成,仅此一步操作就需要2至3秒,可以说区域建议生成成为制约Fast R-CNN整体速度的瓶颈。

  • 在流程方面,无论在训练阶段还是测试阶段,区域建议环节生成还是独立于CNN之外,还是没有完全实现端到端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java List 与数组互转

前言 略 数组转 List 方法1 Employee[] array new Employee[]{emp1, emp2, emp3}; List<Employee> list Arrays.asList(array);Arrays.asList 返回的是固定长度的数组&#xff0c;扩大或缩小列表的操作将返回UnsupportedOperationException。 数组转 List 方法2 E…

【C++STL】“vector“容器的模拟实现

vector的模拟实现 模拟实现成员变量构造函数无参构造函数初始化n个val的构造函数迭代器区间构造函数 拷贝构造析构函数begin&#xff08;&#xff09;end&#xff08;&#xff09;swap&#xff08;&#xff09;reserve()resize()capacity()size()重载[]运算符重载赋值运算符ins…

自学网络安全(黑客)为什么火了?

网安专业从始至终都是需要学习的&#xff0c;大学是无法培养出合格的网安人才的。这就是为啥每年网安专业毕业生并不少&#xff0c;而真正从事网安岗位的人&#xff0c;寥寥无几的根本原因。 如果将来打算从事网安岗位&#xff0c;那么不断学习是你唯一的途径。 网络安全为什…

应对 618、双十一等大促期间的高负载,API 性能测试应该怎么做?负载测试、基线测试、冒烟测试、浸泡测试、峰值测试和尖峰测试详解

随着应用程序和服务交付速度的不断提高&#xff0c;在按时交付应用程序的竞赛中&#xff0c;性能测试往往会退居其次。但是&#xff0c;在节假日期间&#xff0c;购物额都会大幅增长。在这种一年中的成败时刻&#xff0c;公司是无法接受他们的应用程序在高负载下变得不可靠的。…

第四章 云原生架构之Kubernetes基础知识

1、K8S整体架构 1.1、概述 ​ Kubernetes是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;简称 K8S。K8S的本质是一组服务器集群&#xff0c;可以在对应服务器集群的每个节点上运行程序&#xff0c;来对节点中的容器进行管理。类似Mas…

Pytest+Jenkins+Allure的接口自动化测试

目录 生成Allure 两种形式 一 项目内直接生成不依赖Jenkins 1.先安装好allure 将allure\bin配置到环境变量中 cmd 命令行输入&#xff1a;allure 校验是否安装成功 2. 将json文件生成html文件 执行 allure generate report/ -o report/html其中的report/ 为生成的json路径&a…

OCPM和CPM有什么区别?

CPM和OCPM这两种收费模式的对比 Cpm&#xff1a;表示千次展示费用&#xff0c;是数据指标&#xff0c;也是一种出价方式。代表展现一千次的消费&#xff0c;也就是你展现1000次要给媒体多少钱 例如某企业广告曝光量是50万&#xff0c;总广告价格为10000元&#xff0c;那么千人…

matplotlib 笔记:marker 款式

1 ec 边缘颜色 marker 边缘的颜色 import numpy as np import matplotlib.pyplot as pltxnp.linspace(0,10) ynp.sin(x)1.5 plt.figure(figsize(10,10)) plt.scatter(x,y,ecC9) plt.show() 2 fc 填充颜色 face color 填充颜色 3 lw 边缘宽度 4 s 点的大小 5 marker 点款式 i…

设计模式 ~ 工厂模式

工厂模式 工厂模式是一种设计模式&#xff0c;指在通过使用工厂函数或构造函数来创建对象&#xff1b; 它提供了一种灵活的方式来创建对象实例&#xff0c;而无需直接调用构造函数或使用new关键字&#xff1b; 可以分类&#xff0c;解耦&#xff1b; 可以扩展多个类&#xff0…

Baidu——基于大模型的优质Prompt开发课-写代码

软件开发产业趋势与技术革新 大模型驱动的软件开发 代码辅助开发模型 实际操作 你是一名非常专业的产品经理&#xff0c;请问如果我要做一个图片字符画的工具的调研&#xff0c;需要哪些步骤 你是一名编程大牛&#xff0c;目前我想做一个图像字符画的工具&#xff0c;这个工具要…

前缀、中缀、后缀表达式及简易运算实现总结

title: 前缀、中缀、后缀表达式及简易运算实现总结 date: 2023-06-30 10:25:50 tags: 表达式 categories:开发知识及其他 cover: https://cover.png feature: false 1. 概念 1.1 什么是前缀、中缀、后缀表达式&#xff1f; 前缀表达式&#xff1a;又称波兰式&#xff08;Pol…

代码随想录day5 | 242.有效的字母异位词 349. 两个数组的交集 202.快乐数

文章目录 一、有效的字母异位词二、两个数组的交集三、快乐数 一、有效的字母异位词 242.有效的字母异位词 代码随想录知识点 哈西法可以选取的三种数据结构&#xff1a; 数组setmap class Solution { public:bool isAnagram(string s, string t){int hash[26] {0};// 1f…

CMS系统访问权限限制

创建一些全局的通用方法 const USER_KEY "USER_KEY" const TOKEN_KEY "JWT_TOKEN_KEY"class Auth {constructor() {this.token nullthis.user nullthis.token localStorage.getItem(TOKEN_KEY)const userJson localStorage.getItem(USER_KEY)if (use…

Redis连接报错:ERR Client sent AUTH, but no password is set

如果在redis.windows.conf或者redis.conf&#xff08;我的是这个配置文件&#xff09; 文件夹中设置了密码&#xff0c;但是会报错 ERR Client sent AUTH, but no password is set 用记事本打开redis.windows.conf或者redis.conf &#xff08;我的是这个配置文件&#xff09;…

一次性讲清楚常考面试题:进程和线程的区别

进程是程序的一次动态执行&#xff0c;它对应着从代码加载&#xff0c;执行至执行完毕的一个完整的过程&#xff0c;是一个动态的实体&#xff0c;它有自己的生命周期。它因创建而产生&#xff0c;因调度而运行&#xff0c;因等待资源或事件而被处于等待状态&#xff0c;因完成…

今天实习第三天,vue(vue-cli部分,webpack部分,vue-router部分,elementUI部分)

01.创建第一个vue-cli。这里用的是node.js。早上的时候&#xff0c;就需要把node.js安装上去 02.node.js安装 第一步.去官网下载node.js https://nodejs.org/en 第二步.运行官网下载的node.js的msi文件&#xff08;记住所有的node.js文件的安装包都是msi文件的形式&#xff0…

(学习笔记-TCP连接建立)IP层会分片,为什么TCP层还需要MSS呢?

前提知识&#xff1a; 网络层最常用的是IP协议&#xff0c;IP协议会将传输层的报文作为数据部分&#xff0c;再加上IP包头组装成IP报文&#xff0c;如果IP报文大小超过了MTU(1500字节)就会再次分片&#xff0c;得到一个即将发送到网络的IP报文 MTU和MSS: MTU&#xff1a;一个网…

如何在 Excel 中快速生成随机密码?

有时&#xff0c;我们可能想创建随机密码来保护某些重要内容。 但是&#xff0c;您有什么技巧可以在Excel中快速生成随机密码&#xff1f; 在这里&#xff0c;我有一些可以在Excel工作表中处理的方法。 用公式生成随机密码 使用插入随机数据生成随机密码​编辑 用公式生成随机…

普通人的姓名可以注册为商标吗?

商标是商品的生产者、经营者在其生产、制造、加工或者经销的商品上或者服务使用的标志&#xff0c;用于区别商品或服务来源。商标由文字、图形、字母、数字、三维标志、颜色组合和声音等组合而成&#xff0c;以姓名注册商标属于文字商标&#xff0c;因此&#xff0c;个人的名字…

第十二章:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS——通过膨胀卷积的多尺度上下文聚合

0.摘要 目前用于语义分割的先进模型是基于最初设计用于图像分类的卷积网络的改进。然而&#xff0c;像语义分割这样的密集预测问题在结构上与图像分类不同。在这项工作中&#xff0c;我们开发了一个专门为密集预测设计的新的卷积网络模块。所提出的模块使用膨胀卷积来系统地聚合…